Cassowary.net

An incremental constraint solver for .NET

Cassowary.net is a port of the Cassowary constraint solving toolkit to the .NET platform. It is based on the Java version by Greg J. Badros, which in turn is based on the Smalltalk version by Alan Borning.

Cassowary.net is free software: it is licensed under the GNU LGPL.

Quoting the Cassowary website:

Cassowary is an incremental constraint solving toolkit that efficiently solves systems of linear equalities and inequalities. Constraints may be either requirements or preferences. Client code specifies the constraints to be maintained, and the solver updates the constrained variables to have values that satisfy the constraints.

I created this software for my Master's thesis. It is used to support constraint-based layout management. More information at my publications page.

This project also has a DOAP description.

Contact

Feedback and bug reports are greatly appreciated. Cassowary.net has a Launchpad page where you can post bug reports and ask questions. Do not hesitate to contact me.

Jo Vermeulen
email: jo.vermeulen@uhasselt.be
homepage: http://jozilla.net/

Requirements

The only requirement is version 2.0 of a .NET platform. Cassowary.net was tested with Microsoft's .NET implementation as well as with the free Mono implementation. It can also be used on the Compact version of the .NET platform.

Download

Stable version

The current stable version is 0.2.3.

It passes the original ClTests test case from the Java version, and an additional layout management test case. In my experience it is very stable. Of course, there might still be a few bugs around. If you experience strange behavior, I would appreciate a bug report.

Source (C#) (also includes a Visual Studio project):

Binary:

Development version

The latest, bleeding edge version is available in a bzr repository, located at http://code.jozilla.net/Cassowary.net. Beware, this version may be buggy!

The best way to contribute to Cassowary.net (or have a look at the current developments) is to check out its Launchpad page.

Documentation

Currently there is not much documentation available. For now, you can have a look at an example session [.cs] [.html] to see how Cassowary.net can be used.

There is also a Boo example that uses the Cassowary.Parsing library [.boo].

Have a look at the source code for the test cases too.

Links