The main new feature of 0.5 is Generics. Generics in Crack are somewhere between Java generics and C++ templates. Like C++ templates, they are essentially generated by re-compiling the original code with parameter substitution. Unlike C++ templates, parameters are limited to types. Also, only generic classes are supported at this time.
Other notable changes in 0.5:
- Support for first class functions and basic functors. Functions now have types, and user defined classed may now implement an "oper call" method in order to make instances of the class callable using function-call syntax.
- Implemented Platform Dependent Numeric Types (see http://code.google.com/p/crack-language/wiki/PlatformDependentNumericTypes) and reworked the numeric type system to conform to the specification.
- Added a command line parsing module.
- Converted all of the containers to generics, and added a HashMap generic.
- Added some date manipulation code.
- Refactored the cmake build.
- Added the "typeof()" operator.
- Added full support for "oper to" conversions.
- Enhancements to extension generation for class methods, constructors, and C function name specification.