I decided to take a break after the last release to get some more energy, thus this one was delayed and doesn't contain as many changes, some of them are interesting nevertheless.
Tesseract added support for procedural sky/atmosphere. It's now used by default in OF, too (instead of shipping a skybox). You can control it using the atmo vars. It doesn't have clouds, so you'll have to supply a cloudbox if needed.
Scripting library organization changes
There is a new library called "games". It contains only subdirectories, each belonging to a separate game. The current ones are "drawing" and "octacraft".
Initial code for the OF demo game
The "octacraft" demo game is starting to materialize. I pushed initial code for it. For now you can place and delete blocks. More changes will come next release and the game will be properly announced.
More game code changes
The game manager module got improved so that spawn stages can be controlled more flexibly. I also added a new "health" module to control health/damage - it's built around the game manager module and is fully reusable.
Faster core API
I rewrote most of the core API (and all performance sensitive functions) to use the LuaJIT FFI for binding rather than the plain Lua C API. That makes them faster (they're simply function pointers). They're still safe though - they either take only primitive arguments or are wrapped in standard Lua functions that take care of making them safe.
Alongside this there were some related changes - such as transformation of particle and texture APIs fully to the FFI.
New procedural editing API
During the making of octacraft I found the procedural editing API was suboptimal (too slow and limited). I thus expanded and revamped it. It now has two parts - a high level API that consists of standard functions like before (create_cube etc.) and a low level API. The high level API was improved mainly performance-wise (better validation) and new functions were added (vslot manipulation). The low level API works with "selection objects" that represent literally selections (of one or more cubes). On those selections you can then call methods (such as extrusion, pushing, corner changing, vslot tweaking etc.) that are not validated (you need to validate the selection if you're not sure if it's correct). The low level API is much faster (because fewer checks) but you need to be aware of possible bugs.
I fixed some things in the UI (empty fields). Vectors in geom.lua now use floats instead of doubles. I fixed lots of bugs. That's it for now.