Exactly 3 months ago I released MoonScript. The CoffeeScript inspired language that compiles to Lua. Since then I've both written a lot of MoonScript and enhanced the MoonScript compiler.
Today I'm proud to release v0.2.0. I've got a handful of new features and bug fixes:
Thanks for checking it out, follow me on twitter for updates or complaints.
,is used instead of
:for delimiting table slice parts.
- Class objects store the metatable of their instances in
__baseis also used in inheritance when chaining metatables.
- Added key-value table comprehensions.
- Added a
- The body of a class can contain arbitrary expressions in addition to
selfin this scope refers to the class itself.
- Class objects themselves support accessing the properties of the superclass they extend (like instances).
- Class objects store their name as a string in the
- Enhanced the
superkeyword in instance methods.
- Bound methods can be created for an object by using
object\function_nameas a value. Called function stubs.
export *statement to export all assigned names following the statement.
export ^statement to export all assigning names that begin with a capital letter following the statement.
exportcan be used before any assignment or class declaration to export just that assignment (or class declaration).
- Argument lists can be broken up over several lines with trailing comma.
:hellois short hand for
hello: helloinside of table literal.
..=for string concatenation.
table.insertno longer used to build accumlated values in comprehensions.
moonscriptmodule to load/run MoonScript code.
moonscriptmodule to convert a MoonScript code string to Lua string.
- Created prebuilt MoonScript Windows executables.
- Wrote a Textmate/Sublime Text bundle.
- Wrote a SciTE syntax highlighter with scintillua.
- Created a SciTE package for Windows that has everything configured.
- Created an online compiler and snippet site using emscripten.
- Watch mode works on all platforms now. Uses polling if
inotifyis not available.
I'm now including a small set of useful functions in a single module called
Documentation is available here.
- Windows line endings don’t break the parser.
- Fixed issues when using
...within comprehensions when the compiled code uses an intermediate function in the output.
- Names whose first characters happen to be a keyword don’t break parser.
- Return statement can have no arguments
- argument names prefixed with
@in function definitions work outside of classes work with default values.
- Fixed parse issues with the shorthand values within a
- Numerous other small fixes. See commit log.
Since the first release, I've written one other project in MoonScript (other than the compiler). It’s a static site generator called sitegen. It’s what I now use to generate all of my project pages and this blog.