Hexa.NET.Utilities 2.2.1

dotnet add package Hexa.NET.Utilities --version 2.2.1                
NuGet\Install-Package Hexa.NET.Utilities -Version 2.2.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Hexa.NET.Utilities" Version="2.2.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Hexa.NET.Utilities --version 2.2.1                
#r "nuget: Hexa.NET.Utilities, 2.2.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Hexa.NET.Utilities as a Cake Addin
#addin nuget:?package=Hexa.NET.Utilities&version=2.2.1

// Install Hexa.NET.Utilities as a Cake Tool
#tool nuget:?package=Hexa.NET.Utilities&version=2.2.1                

Hexa.NET.Utilities

This repository provides a collection of high-performance utilities designed to address common programming needs while maintaining low GC pressure and maximizing performance.

Features

UTF-8 String formatting

  • Utf8Formatter
    • A low level implementation for maximum performance.
    • Number primitives incl. short ushort int uint long ulong float double and culture specifics
    • Hexadecimal formatting
    • Data size formatting eg. 1024 ⇒ 1 KiB.
    • DateTimes full format string support and culture specifics
    • TimeSpans full format string support and culture specifics
  • StrBuilder:
    • a lightweight string builder allowing use of stackalloc for temporary strings to prevent GC-Pressure.

IO Utilities

  • Faster File System Enumeration with prefetching metadata

Data Structures

  • Standard-like Strings:
    • StdWString (UTF-16)
    • StdString (UTF-8)
  • Standard-like Containers:
    • List (UnsafeList)
    • Map (UnsafeDictionary)
    • Set (UnsafeHashSet)
    • Queue (UnsafeQueue)
    • Stack (UnsafeStack)

Memory Management

  • Custom Allocation Callbacks: Define your own memory allocation strategies.
  • Pointer Wrapper Types: Utilize with generics for safer and more efficient pointer operations.
  • Utility Functions:
    • Memory allocation, freeing, copying, and moving
    • String operations
    • Memory setting (e.g., Memset)
    • Sorting (e.g., QSort)

Thread Safety

  • Thread-Safe Pools:
    • Object pools
    • List pools

Getting Started

To get started with the HexaEngine Utilities library, follow these steps:

  1. Install the NuGet package:

    dotnet add package Hexa.NET.Utilities
    
  2. Include the library in your project:

    using Hexa.NET.Utilities;
    
  3. Initialize and utilize data structures:

    var myString = new StdString("Hello, HexaEngine!");
    var myList = new UnsafeList<int> { 1, 2 };
    
  4. Leverage memory management utilities:

    int* memory = Utils.AllocT<int>(1);
    Utils.Free(memory);
    

    or

     global using static Hexa.NET.Utilities.Utils;
    
     int* memory = AllocT<int>(1);
     Free(memory);
    
  5. Use thread-safe components for concurrent operations:

    var pool = new ObjectPool<MyObject>();
    var obj = pool.Rent();
    pool.Return(obj);
    

Contributions

Contributions are welcome! If you have ideas for new features or improvements, feel free to submit a pull request or open an issue.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

  • .NETStandard 2.1

  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on Hexa.NET.Utilities:

Package Downloads
Hexa.NET.ImGui.Widgets

Hexa.NET.ImGui.Widgets is a comprehensive library of custom widgets for the ImGui graphical user interface library. This package includes a variety of pre-built widgets that enhance the functionality and usability of ImGui in your .NET applications. Each widget is designed to be easy to integrate, with consistent styling and behavior. This library is an extension of the Hexa.NET.ImGui wrapper, providing additional UI components for a seamless user experience.

Hexa.NET.KittyUI

A Cross-Platform UI-Framework build upon ImGui, simplifying ImGui management in C#.

Hexa.NET.DebugDraw

This library is a simple 3D debug drawing library for the HexaEngine in Immediate-mode

Hexa.NET.Logging

The logging library for HexaEngine.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.2.1 162 12/8/2024
2.2.0 110 12/8/2024
2.1.14 282 11/14/2024
2.1.13 92 11/14/2024
2.1.12 91 11/13/2024
2.1.11 89 11/13/2024
2.1.10 171 11/6/2024
2.1.9 88 11/5/2024
2.1.8 298 10/23/2024
2.1.7 83 10/23/2024
2.1.6 281 8/30/2024
2.1.5 238 8/13/2024
2.1.4 225 8/11/2024
2.1.3 121 8/11/2024
2.1.2 148 8/10/2024
2.1.1 260 8/7/2024
2.1.0 98 8/7/2024
2.0.1 247 7/27/2024
2.0.0 116 7/25/2024
1.0.0 81 7/25/2024