After a long journey, I'm proud to present to you...
parens-8 v3!
...Along with the obligatory demo, a cart that stores its entire game code in ROM:
Parens-8 is a tool for bypassing the pico-8 token limit. It takes up 5% of the allowed 8192 tokens, and gives you practically infinite code space in return: store extra code in strings or cart ROM, load it during init, run it like regular Lua code.
Parens-8 is designed for maximum interoperability with Lua. Functions, tables, values and coroutines can be passed and used seamlessly between Lua and parens-8. Think of parens-8 as Lua semantics with Lisp syntax.
local a, b, c = parens8("1 2 3") ?(b == 2) -- true local myfunction = parens8"(fn(x) (print x))" myfunction(42) -- prints 42 -- use the lua multiline string syntax: [[]] parens8[[ (set foo 256) (set bar (fn (a b) (when a (print b) (print "a was false or nil") ) )) ]] bar(foo, "hello") -- prints "hello" bar(false, "goodbye") -- prints "a was false or nil" |
The new v3 implementation greatly improves on previous versions:
- significantly faster (50-100% speedup)
- lower memory usage
- more extensions (variadics, table constructors, field syntax)
- safer (no nil invisibility issue)
For more information and documentation, please refer to the parens-8 Github repository.
[Please log in to post a comment]