|
| 1 | +# MoonScript v0.6.0 (2026-01-10) |
| 2 | + |
| 3 | +## New Features |
| 4 | + |
| 5 | +### Command Line Improvements |
| 6 | + |
| 7 | +- **Switched from alt_getopt to argparse** - Both `moon` and `moonc` now use argparse for argument parsing, providing better help messages via `--help` and more robust option handling |
| 8 | +- **Added `-e/--execute` flag to `moon`** - Execute MoonScript code directly from the command line: |
| 9 | + ``` |
| 10 | + moon -e "print 'Hello World'" |
| 11 | + ``` |
| 12 | +- **New `--transform` option for `moonc`** - Allows custom AST transformations before compilation by specifying a module that receives and returns the syntax tree |
| 13 | +- **Improved `-` (stdin) handling** - Now properly enforces that `-` must be the only argument |
| 14 | + |
| 15 | +### moonc Option Renames |
| 16 | +- `-w` is now also available as `--watch` |
| 17 | +- `-l` is now also available as `--lint` |
| 18 | +- `-t` is now also available as `--output-to` |
| 19 | + |
| 20 | +### New Tools |
| 21 | + |
| 22 | +- **moon-tags** - New script for generating ctags-compatible tag files for MoonScript, with support for: |
| 23 | + - Class definitions |
| 24 | + - Class methods |
| 25 | + - Top-level function definitions (exported via `{:func}` pattern) |
| 26 | + - Lapis route detection (`--lapis` flag) |
| 27 | + - Optional line numbers (`--include-line` flag) |
| 28 | + - Optionally skip header (`--no-header` flag) |
| 29 | + |
| 30 | +### Utility Improvements |
| 31 | + |
| 32 | +- **`moon.p()` now prints multiple arguments** - Pass multiple values and each will be dumped |
| 33 | +- **`util.dump` shows class names** - When dumping objects, the class name is displayed (e.g., `<MyClass>{...}`) |
| 34 | + |
| 35 | +### Compiler Enhancements |
| 36 | + |
| 37 | +- **Lua keyword property access on self** - Properties with Lua keyword names (like `@then` or `@@then`) now compile correctly using bracket notation instead of invalid `self.then` |
| 38 | + |
| 39 | +## Bug Fixes |
| 40 | + |
| 41 | +- **Fixed ambiguous Lua generation after `import`** - Semicolons are now correctly inserted when the next line starts with `(`, preventing parsing ambiguity |
| 42 | +- **Fixed update operators with complex chain indexes** - Expressions like `a[func()].x += 1` now correctly lift the index expression to avoid double evaluation |
| 43 | +- **Exit with proper error code** - `moon` now exits with code 1 when the executed script fails |
| 44 | +- **Fixed `moonc -`** - Reading from stdin now works correctly |
| 45 | +- **Removed accidental debug print** - Removed stray `print file, time` in watcher code |
| 46 | +- **`dump.tree` returns string** - Now returns the string instead of printing directly |
| 47 | +- **Removed noisy "Built" message** - Single file compilation no longer prints "Built" to stderr |
| 48 | + |
| 49 | +## Internal Changes |
| 50 | + |
| 51 | +- Migrated CI from Travis to GitHub Actions |
| 52 | +- Added comprehensive compiler and transform specs |
| 53 | +- Improved binary building workflow for Windows and Linux |
| 54 | +- Better error messages for invalid destructure assignments |
| 55 | +- Updated `splat.moon` to use argparse, added `--strip-prefix` option |
1 | 56 |
|
2 | 57 |
|
3 | 58 | # MoonScript v0.5.0 (2016-9-25) |
|
0 commit comments