Wednesday, October 30, 2013

Sasa v0.11 Released

A new release of Sasa is now available on Sourceforge and Nuget. This release contains few bugfixes and some minor new convenience features.


  • MailMessage extension method Reply() now considers the media type of the original body, and if it's not text/plain, then the original body is attached to the reply message as an inline attachment
  • if original e-mail doesn't specify sufficient content-type information, generate it and reset the original e-mail's header
  • new IEnumerable extensions, SingleSelect and FirstSelect, which select a component of the only or first items in a sequence, respectively, that match an optional predicate, even if the item returned is null refactored ToRaw extension to simplify and generalize MIME output
  • more rigourous MIME parsing tests
  • parsing MIME views now properly propagates the transfer encoding and contentId
  • Html parser element tags and content can now be mutated

You can also view the full documentation online.

Friday, October 4, 2013

Sasa v0.10 Released

I just uploaded v0.10 of Sasa, my open source class libraries. This release features a few small bugfixes and enhancements to MIME parsing, and some useful new concurrency features. .NET 4.0 binaries are now also provided.


  • bugfix: added some runtime fixes due to semantic changes in .NET 4.0 base class libraries
  • bugfix: multipart/alternative MIME messages are now parsed into the containing message's alternate views
  • bugfix: set a MailMessage reply's From property if a source address is available
  • bugfix: ThreadScoped now properly reclaims data across threads
  • bugfix: more efficient and safer Lazy initializer


  • new: provided builds for .NET 4.0
  • new: added Atomics.Read and Atomics.Write thread-safe read/write operations that perform atomic reads larger-than-word structs without locks [1]
  • new: added simple load-linked/store-conditional operations, under Atomics.LoadLinked/StoreCondition, and Sasa.Concurrency.LLSC
  • new: added a LockSet object which takes locks in hashcode order to avoid deadlocks
  • new: added Pad64 and Pad128 structs which place 64 bytes, and 128 bytes of padding after a value in order to address false sharing