rninja v0.1.1
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
0.1.1 - 2026-05-07
Fixed
- Cache restore now works: cache hits actually restore output files from blob storage instead of being a no-op stub.
- Environment variables in cache keys:
CC,CXX,CFLAGS,LDFLAGS, etc. are now included in action keys, preventing stale cache hits after compiler flag changes. - State machine enforcement for
NodeState,SessionState,ConnectionState, andWatcherState— invalid transitions are now rejected at compile time or logged at runtime. - Removed
panic!in production path in cache server handler. BuildLog::savenow resets the dirty flag after successful writes.- Blocking NNG calls moved off the async runtime via
tokio::task::spawn_blocking. - Admin tools no longer
unwrapJSON serialization. handle_querydeduplication in daemon server.
Added
- Homebrew formula available via
brew tap neul-labs/tap. - Pre-built binaries for macOS (Intel & Apple Silicon) and Linux (x86_64 & aarch64).
- NPM wrapper for global installation via
npm install -g rninja-cli. - PyPI wrapper for installation via
pip install rninja-cli.
0.1.0 - 2024-12-01
Added
- Initial release of rninja
- Full Ninja build file compatibility
- Local build cache with BLAKE3 hashing
- Content-addressed blob storage using sled
- Remote cache support via nng transport
- Daemon mode for faster subsequent builds
- All standard ninja subtools (
clean,compdb,graph,deps,query, etc.) - Cache management tools (
cache-stats,cache-gc,cache-health) - Configuration via TOML files and environment variables
- Chrome trace output for build profiling
- JSON output mode for scripting and automation
- CMake, Meson, and GN generator compatibility
Performance
- 23x faster no-op builds compared to ninja
- 2-5x faster warm incremental builds with caching
- 1.3-2x faster cold builds with improved parallelism