5.5 named vararg support
Opmap (mostly just using the patterns compared to the default opmap, not checked closely, but decompiles at least): .op 0 add .op 1 sub .op 2 mul .op 3 mod .op 4 pow .op 5 div .op 6 idiv .op 7 band .op 8 bor .op 9 bxor .op 10 shl .op 11 shr .op 12 unm .op 13 bnot .op 14 not .op 15 len .op 16 concat .op 17 move .op 18 loadk .op 19 loadkx .op 20 loadbool .op 21 loadnil .op 22 getupval .op 23 gettabup .op 24 gettable .op 25 settabup .op 26 setupval .op 27 settable .op 28 newtable .op 29 self .op 30...
I just remembered, someone has posted code like this before: https://sourceforge.net/p/unluac/discussion/general/thread/ef8a1e0455/?limit=25#5607 I had cleaner handling of the line number change, but otherwise I think I said about the same thing.
Non-standard binary format. Line numbers in debug info are only 1 byte each (looks like maybe delta encoded, but unluac doesn't care what the line numbers are anyway). Right after that there is another list. I didn't look at it much, but seems like entries are 8 bytes (probably two 4-byte ints). This quick patch will let unluac parse (and thus --disassemble): # HG changeset patch # User tehtmi # Date 1769420022 28800 # Mon Jan 26 01:33:42 2026 -0800 # Node ID ffffffffffffffffffffffffffffffffffffffff...
Fix local _ENV not doing syntax sugar
Very initial 5.5 global support (global assignment check forces global keyword)
shli / shri swapped in 5.5
Some changes for 5.5 dead closes