Scala Marshalling Library
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Pack is a blatant ripoff cut and paste of SBinary with the following tweaks with the primary goal of making the library more accessible.
 - Gratuitously renamed Format[T] to Pack[T] everywhere.
 - Moved things up one level regarding primitives.  No longer the Byte but the entire set of primitives found in Java's DataInput and DataOutput which were being duplicated anyway.
 - Refactored into logically associated traits.
 - Use self types in lieu of web of inheritance.
 - Where feasible simplified syntax.
   * Removed ';'
   * Leveraged [S:T] context bounds syntax.
 - Commented things a bit here and there.
 - Removed the scripted code generation for Tuple<N> and Product<N>.

The original license is retained.

The README from David's original version of SBinary.

SBinary is a library for describing binary protocols, in the form of mappings between Scala types and binary formats. It can be used as a robust serialization mechanism for Scala objects or a way of dealing with existing binary formats found in the wild.

It started out life as a loose port of Haskell's Data.Binary. It's since evolved a bit from there to take advantage of the features Scala implicits offer over Haskell type classes, but the core idea has remained the same.

SBinary was written by David MacIver.  You can find his introduction here:

= Getting SBinary =

SBinary is in the Scala Tools Repository.  If you are using sbt with Scala 2.7.7:
  val sbinary = "org.scala-tools.sbinary" %% "sbinary" % "0.3"

For Maven users, use "sbinary_2.7.7" for the artifact ID.

= Build instructions =

SBinary uses sbt to build.  Get sbt at

To build and run the example:
sbt update publish-local 'project Binary Tree Example' run

This will retrieve dependencies and compile, package, and publish SBinary to your ~/.ivy2/local repository.   If you just want to use the jar directly, it is in the `target/` directory.

You can find the source for the example is in the examples/bt/ directory.