SwiftCollections 2.0.0

dotnet add package SwiftCollections --version 2.0.0
                    
NuGet\Install-Package SwiftCollections -Version 2.0.0
                    
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="SwiftCollections" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SwiftCollections" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="SwiftCollections" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SwiftCollections --version 2.0.0
                    
#r "nuget: SwiftCollections, 2.0.0"
                    
#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.
#:package SwiftCollections@2.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SwiftCollections&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=SwiftCollections&version=2.0.0
                    
Install as a Cake Tool

SwiftCollections

==============

SwiftCollections Icon

.NET CI

SwiftCollections is a high-performance collection library for performance-sensitive .NET workloads, including game systems, simulations, and spatial queries.


๐Ÿ› ๏ธ Key Features

  • Optimized for Performance: Designed for low time complexity and minimal memory allocations.
  • Unity-Compatible: Fully functional within Unity's ecosystem.
  • Fast core collections: SwiftDictionary, SwiftHashSet, SwiftList, SwiftQueue, SwiftStack, SwiftSortedList
  • Specialized containers: SwiftBucket, SwiftGenerationalBucket, SwiftPackedSet, SwiftSparseMap, SwiftBiDictionary
  • Flat 2D/3D storage: SwiftArray2D, SwiftArray3D, SwiftBoolArray2D, SwiftShortArray2D
  • Pools: SwiftObjectPool, SwiftArrayPool, SwiftCollectionPool, and typed pool helpers
  • Observable collections for change-tracking scenarios
  • Spatial queries via SwiftBVH with both System.Numerics and FixedMathSharp bounds

Installation

NuGet

dotnet add package SwiftCollections

Source

git clone https://github.com/mrdav30/SwiftCollections.git

Then reference src/SwiftCollections/SwiftCollections.csproj or build the package locally.

Unity

Unity support is maintained separately:

SwiftCollections-Unity


๐Ÿงฉ Dependencies


๐Ÿ“ฆ Library Overview

Core Data Structures

  • SwiftDictionary: A high-performance dictionary optimized for O(1) operations and minimal memory usage.
  • SwiftBiDictionary: A bidirectional dictionary for efficient forward and reverse lookups in O(1).
  • SwiftHashSet: An optimized set for unique values with fast operations.
  • SwiftBucket: High-performance collection for O(1) addition and removal with stable indexing.
  • SwiftGenerationalBucket: A bucket variant that tracks generations to prevent stale references.
  • SwiftPackedSet: A compact set implementation for dense integer keys.
  • SwiftSparseMap: A memory-efficient map for sparse key distributions.
  • SwiftQueue: Circular-buffer-based queue for ultra-low-latency operations.
  • SwiftList: A dynamic list optimized for speed-critical applications.
  • SwiftSortedList: Dynamically sorted collection with O(log n) operations.
  • SwiftStack: Fast array-based stack with O(1) operations.
  • SwiftArray2D / SwiftArray3D: Efficient, flat-mapped arrays for 2D and 3D data.
  • SwiftBVH: A Bounding Volume Hierarchy optimized for spatial queries.

Pools

  • SwiftObjectPool: Thread-safe generic object pooling for improved memory usage and performance.
  • SwiftArrayPool: Array-specific pool for efficient reuse of arrays.
  • SwiftCollectionPool: Pool for reusable collection instances (e.g., List, HashSet).

Spatial Data Structures

  • SwiftBVH: Bounding Volume Hierarchy for efficient spatial queries.

Observable Collections

  • SwiftObservableArray / SwiftObservableList / SwiftObservableDictionary: Reactive, observable collections with property and collection change notifications.

๐Ÿ“– Usage Examples

SwiftBVH for Spatial Queries

var bvh = new SwiftBVH<int>(100);
var volume = new BoundingVolume(new Vector3(0, 0, 0), new Vector3(1, 1, 1));
bvh.Insert(1, volume);

var results = new List<int>();
bvh.Query(new BoundingVolume(new Vector3(0, 0, 0), new Vector3(2, 2, 2)), results);
Console.WriteLine(results.Count); // Output: 1

SwiftArray2D

var array2D = new Array2D<int>(10, 10);
array2D[3, 4] = 42;
Console.WriteLine(array2D[3, 4]); // Output: 42

SwiftQueue

var queue = new SwiftQueue<int>(10);
queue.Enqueue(5);
Console.WriteLine(queue.Dequeue()); // Output: 5

Populating Arrays

var array = new int[10].Populate(() => new Random().Next(1, 100));

๐Ÿงช Development

Build the solution:

dotnet build SwiftCollections.sln -c Debug

Run the unit tests:

dotnet test tests/SwiftCollections.Tests/SwiftCollections.Tests.csproj -c Debug --no-build

Run benchmarks:

dotnet run --project tests/SwiftCollections.Benchmarks/SwiftCollections.Benchmarks.csproj -c Release -f net8

Useful benchmark runner commands:

dotnet run --project tests/SwiftCollections.Benchmarks/SwiftCollections.Benchmarks.csproj -c Release -f net8 -- list
dotnet run --project tests/SwiftCollections.Benchmarks/SwiftCollections.Benchmarks.csproj -c Release -f net8 -- dictionary
dotnet run --project tests/SwiftCollections.Benchmarks/SwiftCollections.Benchmarks.csproj -c Release -f net8 -- hashset --filter "*Contains*"
dotnet run --project tests/SwiftCollections.Benchmarks/SwiftCollections.Benchmarks.csproj -c Release -f net8 -- all --list flat

With no extra arguments, BenchmarkDotNet's default switcher behavior is used. Leading non-option arguments are treated as benchmark selection aliases, and any remaining arguments are forwarded to BenchmarkDotNet.

Compatibility

  • netstandard2.1
  • net8.0
  • Windows, Linux, and macOS

FixedMathSharp is used for the fixed-point BVH path.

License

MIT. See LICENSE.md.


๐Ÿ‘ฅ Contributors

  • mrdav30 - Lead Developer
  • Contributions are welcome! Feel free to submit pull requests or report issues.

๐Ÿ’ฌ Community & Support

For questions, discussions, or general support, join the official Discord community:

๐Ÿ‘‰ Join the Discord Server

For bug reports or feature requests, please open an issue in this repository.

We welcome feedback, contributors, and community discussion across all projects.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  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 was computed.  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 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen 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.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on SwiftCollections:

Package Downloads
GridForge

A high-performance, deterministic voxel grid system for spatial partitioning, simulation, and game development.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0 137 3/9/2026
1.0.9 251 6/18/2025
1.0.8 213 6/17/2025
1.0.7 199 6/16/2025
1.0.6 254 6/14/2025
1.0.5 183 6/8/2025
1.0.4 209 2/21/2025
1.0.3 231 2/17/2025
1.0.2 181 2/17/2025
1.0.1 178 2/4/2025
1.0.0 187 1/2/2025