Today marks MoonScript version 0.2.2, the CoffeeScript inspired language that compiles to Lua. It’s been approximately 11 months since the last release, and I'd like to apologize for the long gap. Hopefully we'll see more frequent updates in the future.
We've got a handful of new features and fixes:
- Compiled files will now implicitly
last statement. Be careful, this might change what
continuekeyword for skipping the current iteration in a loop.
- Added string interpolation.
doexpression and block.
unlessas a block and line decorator. Is the inverse of
- Assignment can be used in an
@@can be prefixed in front of a name to access that name within
@@can be used as values to reference
- In class declarations it’s possible to assign to the class
object instead of the
instance metatable by prefixing the key with
- Class methods can access locals defined within the body of the class declaration.
- Super classes are notified when they are
extended from with an
- Classes can now implicitly return and be expressions.
localkeyword returns, can be used for forward declaration or shadowing a variable.
- String literals can be used as keys in table literals.
- Call methods on string literals without wrapping in parentheses:
- Table comprehensions can return a single value that is unpacked into the key and value.
- The expression in a
withstatement can now be an assignment, to give a name to the expression that is being operated on.
loadfunctions can take an optional last argument of options.
- The online compiler now runs through a web service instead of emscripten, should work reliably on any computer now.
- Windows binaries have been updated.
- Significantly improved the line number rewriter. It should now accurately report all line numbers.
forloops correctly parse for multiple values as defined in Lua.
- Update expressions don’t fail with certain combinations of precedence.
- All statements/expressions are allowed in a class body, not just some.
x = "hello" if somethingwill extract the declaration of
xif it’s not in scope yet. Preventing an impossible to access variable from being created.
..., correctly bubble up through automatically generated anonymous functions.
- Compiler doesn’t crash if you try to assign something that isn’t assignable.
- Numerous other small fixes. See commit log.
Since the past release I've written quite a bit of MoonScript. I wrote four games, feel free to check out the source code:
I've written a tutorial for installing MoonScript on the three main platforms, Windows, OSX, and Linux.
I've written a script and guide for running Lua on Heroku. Which lets us also run MoonScript. This opens up quite a few opportunities, more on that later.
That’s all for this release. Thanks to everyone who submitted bugs and patches and provided feedback on GitHub. See you next release.