Chisel ported to Rust
I’ve been using Chisel for over 14 years now (2012–26). It’s predictable and reliable. I control the source; it has everything I want, and nothing I do not need. Also given the cadence here, I am unlikely to ever write a thousand notes. If I did, Chisel is capable of turning them into a bunch of neatly linked HTML pages in seconds. So I have no need for another publishing tool. But idle mind decided yesterday to port Chisel to Rust just to see if it could be done; and if successful, to see how fast.
I dropped chisel.py, a bunch of templates + a brief on what I wanted Claude to do. My instructions were to:
- use existing jinja2 templates
- render markdown in templates within delimiters
- use minijinja templating engine
- build missing filters in minijinja (
age,striptags,wordcount,tojson) - use borrow-checker — Rust’s memory safety feature
- use rayon to enable multicore and parallel processing
The first run was great; we missed the filters and picked up a few errors. By noon, code was successfully compiling. The result: a rocket ship — 8× faster than its python-based sibling. I’ve since re-compiled for the native CPU with:
RUSTFLAGS="-C target-cpu=native" cargo build --release
I realise this is the only publishing tool I’ll ever need, no matter how many thousand notes I may or may not write. With this now flying, I will retire my trusty old friend. What a run it has been.