Lua libraries for use by other mods and submods that are parts of a larger mod.
Version: 0.1.5 Date: 2023-10-03 Bugfixes: - Fix error when the optional '--ignore' argument was not specified
Version: 0.1.4 Date: 2023-02-10 Minor Features: - Add `--version` argument - Add a human readable header stating the Phobos version in output files with `--use-load` - Add `--custom-header` to include a little extra description in the header mentioned above - Support files with a shebang - Handle invalid nodes in the formatter - Implement parsing and compiling as 32 bit signed integer numbers instead of doubles Changes: - Change output of `--use-load` making it 40-50% smaller, a little bit bigger than raw bytecode - Cleanup, improve and update the README and add a docs folder - Emit null strings in bytecode wherever null is valid instead of falling back to "" - Replace `stat_elem` internally everywhere by using intrusive linked lists - Parse malformed numbers just like Lua parses them resulting in more useful syntax errors Bugfixes: - Fix 'lua.exe' not finding 'lua52.dll' because it was called 'lua.dll' - Fix `(foo())` being a valid statement - Fix strings in invalid contexts generating invalid AstTokenNodes or failing assertions - Fix the local variable for 'fornum' being in the parent scope in the AST - Fix unterminated block strings with leading newlines missing said newline in the invalid node - Fix unterminated block comments not emitting invalid nodes, so no syntax errors - Fix potentially invalid or broken bytecode in functions with more than 256 constants - Fix hexadecimal numbers with hex letters in their exponent (malformed) failing assertions
Version: 0.1.3 Date: 2022-02-17 Minor Features: - Add error codes. Makes errors much easier to distinguish when using Phobos as a library - Keep all data about the source in the AST regardless of how many syntax errors there might be Bugfixes: - Fix every package missing the 'lib' and 'optimize' sub directories. 0.1.2 was/is unusable - Fix '\r' and '\r\n' resulting in '\r' instead of '\n' in blank tokens - Fix unescaped '\r' in strings not causing syntax errors and breaking line numbers - Fix too large decimal escape sequences crashing in the tokenizer. For example '\256' - Fix string and comment tokens sometimes having incorrect line:column positions - Fix ']' inside block strings disappearing - Fix `(foo..bar)..baz` performing `bar..baz` first. Only matters when using __concat - Fix parenthesis inside of concat chains not being representable inside the AST (data loss) - Fix the condition for repeatstat resolving references starting at the parent scope For example the condition in `repeat local foo; until foo` would index into `_ENV` - Fix scope bodies referring to the parent scope instead of the current scope - Fix 'goto's to the end of a repeatstat block being allowed no matter what - Fix jump_linker attempting to concatenate nil when the given AST does not have debug information and contains an invalid jump - Fix backwards 'goto' jumping to the outer most label with the same name instead of inner
Version: 0.1.2 Date: 2022-01-29 Features: - Add continuing parsing after encountering syntax errors Changes: - Set linux lua executable flag [PR#1](https://github.com/JanSharp/phobos/pull/1) Bugfixes: - Fix error when requiring files using non normalized module names in Factorio - Fix vararg expressions sometimes not assigning values properly (for example `local foo, bar; foo, bar = ...`, while `local foo, bar = ...` worked) - Fix call or vararg expressions wrapped in `()` not forcing single results and potentially not even assigning to the right registers (for example `local foo, bar; foo, bar = (...)`) - Fix '\r\n' (or '\n\r' which shouldn't - but can - exist) breaking escaped newlines in strings In fact '\r' was mostly unhandled. Now all newlines get properly normalized to '\n' just like they do in regular Lua
Version: 0.1.1 Date: 2021-10-25 Changes: - Add missing thumbnail on mod portal
Version: 0.1.0 Date: 2021-10-25 Major Features: - Add command line tool for compiling - Implement parsing of Lua 5.2 source code to AST - Implement formatting AST to Lua 5.2 source code without making any format changes (except concats with parenthesis in the middle of them) - Implement compiling AST to Lua 5.2 bytecode - Implement disassembling Lua 5.2 bytecode to AST Features: - Add Factorio in game commands to execute phobos code similar to regular Lua commands - Add cmd option to compile to bytecode files or text files that `load` a bytecode string - Add cmd option to change the `source` name used for compiled bytecode functions for debugging - Add cmd option to monitor memory during compilation - Add cmd option to ignore and continue past files with syntax errors - Add WIP cmd option for build profiles (debug or release) Minor Features: - Add Phobos Debug Symbols v0 for use by third party tools (not Lua itself) Optimizations: - Implement folding pure const expressions - Implement folding control statements with pure const conditions Scripting: - Add WIP cmd AST injection scripts during compilation