-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchangelog.txt
111 lines (111 loc) · 6.44 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
---------------------------------------------------------------------------------------------------
Version: 0.2.0
Major Features:
- Add build profiles
- Add incremental builds
Minor Features:
- Add partial EmmyLua parser for documentation generation from source code
Changes:
- Remove the vast majority of cmd args in favor of build profiles
---------------------------------------------------------------------------------------------------
Version: 0.1.6
Changes:
- Remove "return results starting at" for return disassembly when there are no return values
- Add list of upvals to disassembly function description header
---------------------------------------------------------------------------------------------------
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