I've just uploaded the final Sasa v0.9.4 release to Sourceforge and Nuget. The full API documentation for all assemblies in the Sasa framework is available here. The full changelog is available in the Sourceforge download, or directly in the repo here. Suffice it to say, changes since v0.9.3 include hundreds of bugfixes, and many, many new features.
A brief overview of what Sasa is, and what features it provides is covered on the wiki, and reproduced below.
Sasa Class Libraries for .NET
Sasa is a set of organized class libraries for the .NET framework 3.5 or higher. Here's an overview of the assemblies available and the features they provide:
Assembly | Description | Dependencies |
---|---|---|
Sasa.dll | Tuples, sums, generic operators, LINQ extensions, string extensions, thread-safe and null-safe events, and more | |
Sasa.Arrow.dll | Arrow computations for .NET | Sasa.dll |
Sasa.Binary.dll | Low-level functions on bitdata, fast endian conversions, untagged unions, and more | |
Sasa.Collections.dll | Purely functional lists, trees, stacks | Sasa.dll, Sasa.Binary.dll |
Sasa.Concurrency | Concurrency abstractions including faster thread-local data and simple software transactional memory in pure C# | Sasa.dll |
Sasa.Contracts.dll | A simple API-complete reimplementation of Microsoft's code contracts (rewriter not yet provided) | |
Sasa.FP.dll | More obscure functional abstractions like binomial collections, lenses and function currying | Sasa.dll, Sasa.Collections.dll |
Sasa.IoC.dll | A simple, efficient inversion of control container based on delegates | |
Sasa.Linq.dll | Extensions on LINQ expressions, including a faster expression compiler, expression substitutions, and base classes for query providers and expression visitors | Sasa.dll |
Sasa.Mime.dll | Extended media type directory and mappings between file extensions and media types | |
Sasa.Net.dll | Network extensions, including a POP3 client, MIME message parsing, and a preliminary HTTP session state machine | Sasa.dll, Sasa.Collections.dll |
Sasa.Numerics.dll | Analytical extensions for .NET, including statistical functions, minimal Steiner tree approximations and dense matrix math | |
Sasa.Parsing.dll | Typed, extensible lexing and parsing library | Sasa.dll |
Sasa.Reactive.dll | Named and anonymous reactive values and properties | Sasa.dll |
ilrewrite.exe | Sasa's IL rewriter performs type erasure on type constraints |
Blog Series
My blog posts on Sasa cover some of the features in various assemblies:
- Sasa.Parsing.dll - type-safe, extensible lexing and parsing framework
- Sasa.Dynamics.dll - type-safe polytypic/reflective programming
I recently completed a blog series covering the core Sasa.dll assembly:
- Sasa.Func - Type-Safe Delegate Combinators
- Sasa.Option - Handling Optional Values
- Sasa.Result - Handling Exceptional Values
- Sasa.Numbers - Generic Number Extensions
- Sasa.Strings - General String Extensions
- Sasa.Types - Runtime Types And CLR Metadata
- Sasa.Weak - Typed Weak References
- Sasa's Tuples
- Sasa's Core Interfaces
- Sasa.Events - Type-Safe, Null-Safe, Thread-Safe Events
- Sasa.Web.Url64 - URL-Safe Base64 Encoding
- Sasa.Operators<*> - Generic Arithmetic and Logical Operators
- Sasa.IO.FilePath - Easy and Safe Path Manipulations
- Sasa.IO.Streams - Convenient Stream Extensions
- Sasa.Linq.Enumerables - Extensions on IEnumerable<T>
- Sasa.Either - Simple Sums for .NET
- Sasa.Atomics - Simpler, More Scalable Atomic Operations
- Sasa.Collections.Arrays - Purely Functional Array Combinators
- Sasa.IO.DisposableFile - Simple Temporary File Handling
- Sasa.TypeConstraint and IL Rewriting - Generic Constraints (No Longer) Forbidden in C#
- Sasa Wrap-Up - Lazy
, Value, and Dictionary Extensions - Sasa.Enums - Typed Enum API
If anyone has any problems with the code or the documentation, please post here or in the Sasa forums. I'm happy to help!
Comments