The Loyc .NET Core project is a set of general-purpose .NET libraries. LoycCore is especially focused on collections: classes, interfaces, adapters, and extension methods.
Contributors are welcome: more unit tests, code reviews, and new features are desired, anything relatively small (under about 3000 lines of code) that fits the theme “things that should be built into the .NET framework, but aren’t”.
I strive to meet any 4 of the following 5 criteria for all code in these libraries: well-designed, well-documented, well-tested, well-written (concise/beautiful), and high-performance.
The libraries are:
- Loyc.Essentials.dll: a library of interfaces, extension methods, and small bits of functionality that are useful in virtually any software project. At least half of Loyc.Essentials is devoted to collections: collection interfaces, collection adapters, collection extension methods and even a couple of collection implementations (most notably
DList<T>). The other half includes a variety of things including
Symbols, localization, “message sinks”, a miniature NUnit clone and more.
- Loyc.Collections.dll: a library of sophisticated data structures including ALists, VLists, and my favorite, the hash tree types
MMap<T>. Learn more.
- Loyc.Math.dll: Additional functionality beyond
MathEx; basic geometrical interfaces and structures (points, lines, rectangles); numeric interfaces and “trait” types for doing arithmetic in generic code; fixed-point structures; 128-bit integer arithmetic.
- Loyc.Syntax.dll: Contains a parser for Loyc Expression Syntax (LES), and various interfaces and base classes for Loyc Languages and for users of LLLPG.
- Loyc.Utilities.dll: Additional functionality that is either (A) not important enough to be placed in Loyc.Essentials.dll or (B) takes Loyc.Collections.dll as a dependency.
They are available as a NuGet package.
Low-level libraries on top:
Loyc.Essentials ^ ^ | | | +----------------+ | | Loyc.Collections Loyc.Math ^ ^ | | Loyc.Syntax | ^ | | | +---------+----------+ | Loyc.Utilities
Transitive dependencies are not shown, e.g. Loyc.Utilities actually references all four other DLLs.
Note: the .NET 3.5 versions of these libraries depend on the compatibility library Theraot.Core.dll.