Liminate

Local setup

Install Liminate locally.

You can download a standalone binary, install the command-line tool, or clone the repo to work on the language itself.

Liminate ships standalone release binaries, a liminate console script, editable contributor installs, pack execution extensions, and a build command for packaging programs.

Download a binary

Standalone builds are published on the GitHub Releases page. No Python install is required.

PlatformBinary
macOS Apple Siliconliminate-macos-arm64
Linux x64liminate-linux-x64
Windows x64liminate-windows-x64.exe
chmod +x liminate-macos-arm64
./liminate-macos-arm64 --version
./liminate-macos-arm64 program.limn

Install the CLI

For everyday terminal use, install the liminate command. pipx keeps it isolated from other Python packages.

pipx install liminate
# or:
pip install liminate
liminate --version

Work from source

Use the editable install when you want to run tests or modify the interpreter.

git clone https://github.com/rmichaelthomas/liminate.git
cd liminate
python -m venv venv
source venv/bin/activate
pip install -e ".[dev]"

Run the tests

pytest tests/

Run an example file

liminate examples/program1_basics.limn

Quiet output

liminate --quiet examples/dogfood_v2a_14_realistic.limn

Run with packs

liminate --pack examples/pack_ui.json --quiet \
    examples/dogfood_navigate_test.limn

liminate --pack examples/pack_test_execution_types.json --quiet \
    examples/dogfood_v2_execution_types.limn

printf "hello\nworld\n" | liminate examples/dogfood_stdin_echo.limn \
    --pack '{"type": "stdin"}' --quiet

The UI pack demonstrates navigate. The execution-types pack exercises set_value, substring_check, append_to_list, set_field, and compare_values. File watcher packs are also built in: pass --pack '{"type": "file-watcher", "path": "./inbox", "max_events": 1}' to poll a directory for created, modified, and deleted files.

Build a standalone program

pip install "liminate[build]"
liminate build demo.limn --output demo
./demo
./demo --inspect
liminate inspect ./demo

Requires Python 3.10+ for Python installs. python -m liminate remains equivalent when the console script is not on PATH.