The implementation of the Meerkat language
This repository contains the Meerkat distributed reactive programming system, organized into the following packages:
Core libraries for the Meerkat runtime:
- net - Network layer with libp2p and circuit relay support for peer-to-peer communication
We use pre-commit to ensure code quality.
- Install pre-commit: Run
sudo apt install pre-commitorpip install pre-commitorbrew install pre-commit(see installation guide). - Set up hooks: Run
pre-commit installin the repository root before submitting a pull request.
# Build all packages
cargo build
# Run all tests
cargo test
# Test WASM compatibility
cargo check --locked -p meerkat-lib --target wasm32-unknown-unknown --all-features
# Run the REPL
cargo run
# Run a simple example network-accessible service; prints a URL to connect to
cargo run -- -s -f meerkat/tests/s1.mkt
# Connect to a remote service and run tests
cargo run -- -f meerkat/tests/test_client.mkt -i "<Service URL>"
# Run an integration test with a distributed server and client
python3 scripts/mkn.py scripts/manifest_dist_commit.json
# Watch def updates in real time
cargo run -- -s -f meerkat/tests/s1.mkt # (in terminal 1): sets up a server, prints a Service URL
cargo run -- -f meerkat/tests/test_client.mkt --watch -i <Service URL> # (in terminal 2): watches updates to local defs
cargo run -- -f meerkat/tests/test_client.mkt -i <Service URL> # (in terminal 3): modifies a var on s1, triggers an update to the test_client in terminal 2
MIT