Towel  by ZacharyPatten

.NET library for general-purpose, modern coding

created 6 years ago
751 stars

Top 47.2% on sourcepulse

GitHubView on GitHub
Project Summary

Towel is a comprehensive .NET library designed to enhance developer productivity by providing a wide array of data structures, algorithms, mathematical functions, and utility extensions. It targets developers seeking to incorporate robust, well-tested components into their .NET applications, aiming to make coding more "towelerable" with a focus on modern practices.

How It Works

Towel leverages generic programming and .NET's System.Span<T> for high-performance operations. It implements numerous algorithms, including a wide variety of sorting and searching methods, graph traversal (A*, Dijkstra, BFS), and sequence permutations/combinations. The library also features advanced data structures like AVL trees, Red-Black trees, B-trees, Skip Lists, Tries, and multi-dimensional Omnitrees for spatial partitioning. Mathematical operations utilize runtime compilation via System.Linq.Expressions for efficient, type-safe generic math.

Quick Start & Requirements

  • Install via NuGet: Install-Package Towel
  • Target .NET version must be the same or newer than the Towel package.
  • Examples are included in the repository for direct building and testing.
  • Official API documentation and benchmarks are available via GitHub Pages.

Highlighted Details

  • Extensive collection of sorting algorithms (e.g., QuickSort, MergeSort, RadixSort) and search algorithms (e.g., Binary Search).
  • Advanced data structures: Omnitree (N-dimensional spatial partitioning), AVL Tree, Red-Black Tree, B-Tree, Skip List, Trie.
  • Generic mathematics with runtime expression compilation for performance.
  • Measurement types with automatic unit conversion and type safety (e.g., Angle, Speed, Force).
  • Utility extensions for System.Random, string manipulation, reflection, and console interaction.

Maintenance & Community

The project is actively maintained by Zachary Patten. Community engagement is encouraged through GitHub Discussions, Issues, and Pull Requests.

Licensing & Compatibility

The library is licensed under the MIT License, permitting commercial use and integration into closed-source projects.

Limitations & Caveats

The project explicitly states it does not adhere to Semantic Versioning and may introduce breaking changes to keep up with modern .NET practices. Some advanced features, like ValueLazy<T>, are noted as potentially unsafe if the struct is copied.

Health Check
Last commit

1 year ago

Responsiveness

1 day

Pull Requests (30d)
0
Issues (30d)
0
Star History
7 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.