Monday, September 10, 2012

Crack 0.7 Released

After the release of version 0.6.1 early this year, we were hoping that our next release would be 1.0. Unfortunately, implementing compiled module caching (a featured we deemed critical for 1.0) proved to be more difficult than expected, and we've ended up doing several big coding sprints interspersed with lots of other smaller scale improvements without ever quite making it happen.

We've been trying to release no less frequently than quarterly, but as a result of all of these efforts and our focus on the bigger, 1.0 release, we found ourselves in a position of being well overdue for a release. So now that we've cleared up some really hard bugs, I've taken a break for a few days to release 0.7. The new version features lots of improvements:

  • Switched licensing from LGPLv3 to MPL 2.0.
  • Upgraded to LLVM 3.1
  • Added 16-bit integer types.
  • Added the "alias" statement (a more general replacement for "typedef").
  • Implemented a version of cast that returns a default instead of throwing an exception when the cast fails.
  • Added indented string constants.
  • Added support for virtual methods in extension classes.
  • Added an "assert" annotation.
  • Added extensions for midi, alsa, SDL drawing, fluidsynth and Crossroads IO.
  • Added support for XML parsing.
  • Added an OrderedHashmap collection type.
  • Added support for process multiplexing using Poller. 
  • Lots of bug-fixes and small enhancements.
  • Various changes to support caching (which still doesn't work).
I'm personally quite happy with where the language is at right now, when I write Crack code these days I'm finding myself thinking "damn, that really sucks" only very rarely, possibly less often than when I write Python code and certainly less than when I write Java or C++ code.  So for me, at least, the project is now at the pay-off point: I can say that Crack is my preferred language for general-purpose coding.

That said, we hope you enjoy the new release and find it useful.  We're currently hoping to release 1.0 (with caching, damn it!) by the end of the year, but we're not going to compromise on quality to make it happen.  Our  only guarantee is that when 1.0 comes, it will be unquestionably awesome :-)