Pallene is a statically typed and ahead-of-time compiled sister language to Lua, with a focus on performance. It is intended for writing performance-sensitive code that interacts with Lua, a space that is currently filled by C modules and by LuaJIT. Compared to C, Pallene should offer better support for interacting with Lua data types, bypassing the unfriendly syntax and performance overhead of the Lua-C API. Compared to LuaJIT, Pallene aims to offer more predictable run-time performance.
Before you are able to build and install Pallene, you'll need to run the configure script.
You can also, optionally, modify the installation location via the configure
script. See ./configure --help for details. The default location is
/usr/local.
./configure
makeTo install Pallene and all of its dependencies:
sudo make installInstalling Pallene will put pallenec and pallene-lua on your PATH, along with the plua
and pluac binaries that Pallene uses internally.
pallenec is for compiling Pallene programs and pallene-lua is for running Lua programs
that load Pallene modules.
To compile a foo.pln file to a foo.so module:
pallenec foo.plnThe resulting foo.so can be loaded via the usual require mechanism:
pallene-lua -l fooIt is possible to change the compiler optimization level, for the Pallene compiler and C compiler. Here are some examples:
# disable Pallene optimization passes
pallenec test.pln -O0
# disable C compiler optimization
export CFLAGS='-O0'
pallenec test.plnFor more compiler options, see pallenec --help.
If you want to contribute to Pallene, it is helpful to know how to run our test suite and how to configure your text editor to preserve our style standard. For all the details, please consult the CONTRIBUTING file.
Pallene has a Strict No LLM / No AI Policy
- No LLMs for issues.
- No LLMs for patches / pull requests.
- No LLMs for comments on the bug tracker, including translation.
- English is encouraged, but not required. You are welcome to post in your native language and rely on others to have their own translation tools of choice to interpret your words.