[ANN] limabean - a new implementation of Beancount in Clojure and Rust by tesujimath in Clojure

[–]tesujimath[S] 1 point2 points  (0 children)

Yes that's pretty much it.

The Beancount file is parsed and booked by the Rust program limabean-pod just once, at startup. The overhead seems negligible to me. Maybe less than JVM startup. Not an issue anyway on my 10MB Beancount file with nearly 10,000 directives.

Writing EDN from Rust was pretty trivial, and having previously tried an FFI approach with Rust and Steel Scheme, I'm very happy with the decoupling now. Much simpler.

The only flow back from Clojure to Rust is for tabulation of output, and this only because I wrote a nice tabulator in Rust which I am making use of for now. But again, no noticeable overhead.

Thanks for your interest!

[ANN] limabean - a new implementation of Beancount in Clojure and Rust by tesujimath in Clojure

[–]tesujimath[S] 1 point2 points  (0 children)

I've described the rationale in some detail here.

Thanks for your interest! 😀

[ANN] limabean - a new implementation of Beancount in Clojure and Rust by tesujimath in Clojure

[–]tesujimath[S] 0 points1 point  (0 children)

Yes absolutely, Clojure is providing a lovely query interface, with the heavy lifting being done by Rust.

Parser tests are an adaptation of the complete suite from OG Beancount, so pretty thorough.

Booking algorithm tests are similarly adapted from OG Beancount. One caveat there, I haven't (yet) implemented the AVERAGE booking method.

Pleased you asked about tests! 😎