GitHub Actions Bot 0cb795aaea Project import generated by Copybara. 8 mesi fa
..
src 0cb795aaea Project import generated by Copybara. 8 mesi fa
test-jams 5228bfb83b organized: crown is now nockapp, sword is now nockvm, choo is now hoonc 8 mesi fa
tests 5228bfb83b organized: crown is now nockapp, sword is now nockvm, choo is now hoonc 8 mesi fa
Cargo.toml 5854fd885b open-sourcing 8 mesi fa
README.md 5228bfb83b organized: crown is now nockapp, sword is now nockvm, choo is now hoonc 8 mesi fa
rustfmt.toml 0399db879c Initial open-sourcing 9 mesi fa

README.md

NockApp

DEVELOPER ALPHA

NockApp

NockApps are pure-functional state machines with automatic persistence and modular IO.

The NockApp framework provides two modules, Crown and Sword:

  1. Crown provides a minimal Rust interface to a Nock kernel.
  2. Sword is a modern Nock runtime that achieves durable execution.


Get Started

To test compiling a Nock kernel using the hoonc command-line Hoon compiler, run the following commands:

cargo build
cd apps/hoonc
cargo run --release bootstrap/kernel.hoon ../hoon-deps
yes | mv out.jam bootstrap/hoonc.jam
cargo run --release bootstrap/kernel.hoon ../hoon-deps

For large builds, the rust stack might overflow. To get around this, increase the stack size by setting: RUST_MIN_STACK=838860.

Building NockApps

The nockapp library is the primary framework for building NockApps. It provides a simple interface to a Kernel: a Nock core which can make state transitions with effects (via the poke() method) and allow inspection of its state via the peek() method.

For compiling Hoon to Nock, we're also including a pre-release of hoonc: a NockApp for the Hoon compiler. hoonc can compile Hoon to Nock as a batch-mode command-line process, without the need to spin up an interactive Urbit ship. It is intended both for developer workflows and for CI. hoonc is also our first example NockApp. More are coming!

Logging Configuration

Basic Usage

# Run with default settings (production mode)
cargo run

# Use minimal log format
MINIMAL_LOG_FORMAT=true cargo run

TLDR

Use MINIMAL_LOG_FORMAT=true for compact logging format

Minimal Log Format Features

The minimal log format (MINIMAL_LOG_FORMAT=true) provides:

  • Single-letter colored log levels (T, D, I, W, E)
  • Simplified timestamps in HH:MM:SS format
  • Abbreviated module paths (e.g., 'nockapp::kernel::boot' becomes '[cr] kernel::boot')
  • Special handling for slogger messages (colored by log level)

Environment Variables

The following environment variables can be used to configure logging:

# Set log level
RUST_LOG="nockapp::kernel=trace" cargo run

# Enable minimal log format
MINIMAL_LOG_FORMAT=true cargo run

# Combine environment variables
RUST_LOG="nockapp::kernel=trace" MINIMAL_LOG_FORMAT=true cargo run