Cakelisp Alpha 3 is now released.
It has been a while since I last pushed a release. This is solely because I didn't have any set milestone I was targeting for v0.3.0. Nevertheless, I got a lot done:
- Compile-time code uses a precompiled "CakelispComptime" header. This speeds up compile-time code compilation by about 50% in my tests
- `tokenize-push` was overhauled to be in a really good place going forwards. This was important to allow macros with unlimited token array sizes
- Types now support arbitrary keywords, which means `volatile`, `unsigned`, etc. are supported instead of just `const`
- Various C and C++ constructs are now included in `runtime/` such as `defenum` for `enum` support and a work-in-progress `class` generator
- Tokenizer is more robust to weird edge-cases
- Emacs support is improved
- Many bug fixes
Overall, the language is in a really good state. I have been working solidly on several projects (some completed) written in Cakelisp:
- GameLib, which serves as a great reference for various powerful features enabled by Cakelisp such as introspection, auto-instrumentation of functions for profiling (inspired by Jonathan Blow's Code Modification demo), and more
- Kitty Gridlock, an Android game written in Cakelisp
- File Helper, a treemap file organization application
I think the robustness of the language is proven by how productive I have been without having to make any large changes to Cakelisp itself. An important note is that I created Cakelisp as a means to an end, not the end itself. Cakelisp changes are driven by my personal projects requiring them, which I think proves feature usefulness unlike toy language features. I am getting things done using Cakelisp, and I believe I get things done faster and better than without it.
If you're interested in seeing the awesome stuff I'm learning and creating with Cakelisp, check out my website and Handmade Network page. As always, please feel free to email me at [email protected] with any comments, feedback, or questions.