Skip to main content


Showing posts from June, 2013

Sasa.Enums - Typed Enum API

Sasa 0.9.4 Released

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 .NETSasa 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:AssemblyDescriptionDependenciesSasa.dllTuples, sums, generic operators, LINQ extensions, string extensions, thread-safe and null-safe events, and moreSasa.Arrow.dllArrow computations for .NETSasa.dllSasa.Binary.dllLow-level functions on bitdata, fast endian conversions, untagged unions, and moreSasa.Collections.dllPurely functional lists, tre…

Sasa-0.9.4-RC5 Uploaded to Sourceforge and Nuget

Since I recently finished documenting the core Sasa assembly, I decided to upload -RC4. Of course, then I ran into an issue with Nuget, which forced me to update my version number to -RC5 in order to overwrite an improperly uploaded package. So here is Sasa 0.9.4-RC5:Sourceforge: download all assemblies and ilrewrite in one package. CHM documentation file available as a separate download. Documentation available online here.Sasa on Nuget: the core Sasa.dll (no dependencies)Sasa.Arrow on Nuget: arrows for .NET (depends on Sasa.dll)Sasa.Binary on Nuget: low-level functions on bitdata (no dependencies)Sasa.Collections on Nuget: purely functional lists, trees, stacks (depends on Sasa.dll, Sasa.Binary.dll)Sasa.Concurreny on Nuget: concurrent abstractions including faster thread-local data and software transactional memory (depends on Sasa.dll)Sasa.Contracts on Nuget: a simple reimplementation of Microsoft's code contracts (no dependencies)Sasa.FP on Nuget: more obscure functional abstr…

Sasa Wrap-Up - Lazy<T>, Value, and Dictionary Extensions

Sasa.TypeConstraint and IL Rewriting - Generic Constraints (No Longer) Forbidden in C#

Sasa.IO.DisposableFile - Simple Temporary File Handling

Hash Array Mapped Trie Optimizations

It's been awhile since I posted about Sasa's new immutable hash-array mapped trie (HAMT), and I've only just gotten around to running some benchmarks and profiling the code. I just pushed a new project under the "Sasa/Bench" in the repo where I will place all Sasa benchmarks going forward.Initially the benchmarks were disappointing, but 2 minutes with the profiler revealed the problem was the Tree.Add method, which was using a very simple but poor implementation. Basically, it was checking if the key was already in the tree before attempting to update, thus performing the traversal twice for every addition. I refactored this to share the same implementation as Tree.Update which performs only a single traversal, and the results are now more reasonable.The benchmarks were run on an FX-8120 performing 200,000 individual inserts and 200,000 individual membership checks on a set of unique integers, ie. treating the dictionaries and trees as a set. The inserts were sep…

Sasa.Collections.Arrays - Purely Functional Array Combinators