Tooling
Working on Luwu takes a few tools beyond a C++ compiler: the command-line tools the build produces, luwu-lsp's build script, the seal runtime for scripts, and the Python scripts in tools/. A bug in any of them is a development tooling bug.
Command-line tools
luwuis a REPL that also runs files. It runs sandboxed, so it canrequiremodules but can't otherwise reach the file system.luwu-analyzetype checks and lints files the way an editor does.--defs=<path>loads a host's globals from a definition file and can be repeated.
Both come from the build on the Development page.
luwu-lsp
luwu-lsp builds with rebuild.luau, a seal script. It needs CMake, git and seal 0.8.x:
git clone https://github.com/luwu-community/luwu-lsp.git --recurse-submodules
cd luwu-lsp
seal ./rebuild.luau --releaseSet LUWU_TEST_PATH to a checkout of luwu to build against it instead of the submodule. seal ./rebuild.luau --help lists the other options.
seal
seal is a Luau and Luwu runtime, maintained separately from Luwu. Luwu's scripts, like luwu-lsp's build script and its installer, run on it.
Luna
Luna is a DSL for writing Luwu's native code generation. It's still a pull request.
Python scripts
Most of the scripts in tools/ come from Luau. They profile heap and stack use, print VM values in gdb and lldb, process fuzzer output and bisect FFlags (flag-bisect.py). New scripts should be written in Luwu instead.