Skip to main content

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 abstractions like binomial collections, lenses and function currying (depends on Sasa.dll and Sasa.Collections.dll)
  • Sasa.IoC on Nuget: a simple inversion of control container based on delegates (no dependencies)
  • Sasa.Linq on Nuget: extensions on LINQ expressions, including a faster evaluator/compiler, expression substitutions, and base classes for query providers and expression visitors (depends on Sasa.dll)
  • Sasa.Mime on Nuget: extended media type directory and mappings between file extensions and media types (no dependencies)
  • Sasa.Net on Nuget: network extensions, including a POP3 client, MIME message parsing, and a preliminary HTTP session state machine (depends on Sasa.dll and Sasa.Collections.dll)
  • Sasa.Numerics on Nuget: analytical extensions for .NET, including statistical functions, minimal steiner tree approximations and dense matrix math (no dependencies)
  • Sasa.Parsing on Nuget: typed, extensible lexing and parsing library (depends on Sasa.dll)
  • Sasa.Reactive on Nuget: reactive properties (named and unnamed) and futures (depends on Sasa.dll)
  • Sasa's ilrewrite on Nuget: Sasa's IL rewriter (no dependencies)

Please let me know if there are problems with any of the downloads, or with Sasa itself.

Comments

John Zabroski said…
Do you know how to test nuget packages?
Sandro Magi said…
Not really. I was just using the nuget UI program which makes it easy to publish. Too easy even, since I made a few mistakes and published too soon. If you have any suggestions, I'm all ears!

Popular posts from this blog

Easy Reverse Mode Automatic Differentiation in C#

Continuing from my last post on implementing forward-mode automatic differentiation (AD) using C# operator overloading , this is just a quick follow-up showing how easy reverse mode is to achieve, and why it's important. Why Reverse Mode Automatic Differentiation? As explained in the last post, the vector representation of forward-mode AD can compute the derivatives of all parameter simultaneously, but it does so with considerable space cost: each operation creates a vector computing the derivative of each parameter. So N parameters with M operations would allocation O(N*M) space. It turns out, this is unnecessary! Reverse mode AD allocates only O(N+M) space to compute the derivatives of N parameters across M operations. In general, forward mode AD is best suited to differentiating functions of type: R → R N That is, functions of 1 parameter that compute multiple outputs. Reverse mode AD is suited to the dual scenario: R N → R That is, functions of many parameters t...

async.h - asynchronous, stackless subroutines in C

The async/await idiom is becoming increasingly popular. The first widely used language to include it was C#, and it has now spread into JavaScript and Rust. Now C/C++ programmers don't have to feel left out, because async.h is a header-only library that brings async/await to C! Features: It's 100% portable C. It requires very little state (2 bytes). It's not dependent on an OS. It's a bit simpler to understand than protothreads because the async state is caller-saved rather than callee-saved. #include "async.h" struct async pt; struct timer timer; async example(struct async *pt) { async_begin(pt); while(1) { if(initiate_io()) { timer_start(&timer); await(io_completed() || timer_expired(&timer)); read_data(); } } async_end; } This library is basically a modified version of the idioms found in the Protothreads library by Adam Dunkels, so it's not truly ground bre...

Blue-eyed Islander Puzzle - an analysis

Many people find themselves stumped by the so-called Blue-Eyed Islanders puzzle . There is also much controversy over its supposed solution. I'm going to analyze the problem and the solution, and in the process, explain why the solution works. To begin, let's modify the problem slightly and say that there's only 1 blue-eyed islander. When the foreigner makes his pronouncement, the blue-eyed islander looks around and sees no other blue eyes, and being logical, correctly deduces that his own eyes must be blue in order for the foreigner's statement to make sense. The lone blue-eyed islander thus commits suicide the following day at noon. Now comes the tricky part, and the source of much confusion. Let's say there are 2 blue-eyed islanders, Mort and Bob. When the foreigner makes his pronouncement, Mort and Bob look around and see only each other. Mort and Bob thus both temporarily assume that the other will commit suicide the following day at noon. Imagine their chagrin...