Hi all,

I'd like to share a project I'm working on: A from-scratch implementation of
Beancount that is fast and independent of the Python ecosystem.

https://github.com/themoritz/turbobean

*Why?*

I love Beancount, but as my journal has grown, processing takes a 
considerable
amount of time. I came across the Beancount Vnext: Goals & Design 
<http://furius.ca/beancount/doc/v3> document
which talks about how to address this with re-implementing the core in C++. 
And
since Martin has so little time working on Beancount these days, I thought 
why
not work on this evolved version of Beancount myself? I added some of my own
design ideas to the mix and the result is TurboBean.

*Philosophy*

My vision is to have this very minimalist and fast core Beancount
implementation that is not tied to any language or ecosystem. It has some
essentials included (in particular the LSP) to get started quickly but then
mainly just interfaces with other languages via Protobuf.

- Single binary, zero dependencies. You download one small binary and it 
just
  works — no Python environment, no pip, no virtualenvs.
- Instant processing. Even large journals are parsed and processed in
  milliseconds.
- Plugins in Lua. Extend and customize processing without the overhead of
  a full Python runtime.
- Interop with other languages. Just use templating to generate .bean files.
  Pipe the output of processed transactions into any other language via
  Protobufs.
- LSP and formatter built in. Every editor gets first-class support out of 
the
  box — jump to account definitions, hover for balances, auto-completion and
  renaming for accounts/tags/links.
- Practical Web UI included. A built-in web server gives you basic journal,
  balance sheet, and income statement views to get started quickly. Similar 
to
  Fava.

*Compatibility*

TurboBean aims to be as compatible with existing .bean files as possible. 
Most
files should work without changes. Where breaking changes exist, they stem 
from
the redesigned booking system inspired by Vnext. The key changes are 
described
in this document 
<https://github.com/themoritz/turbobean/blob/master/docs/inventories.md>.

*Current Status*

The project is at a point where I use the LSP for editing all my .bean files
and the Web UI for basic reports.

I plan to work next on Lua plugins, the formatter as well as Protobuf 
output.

The project is definitely still exploratory so it would be great to have 
people
play with it, and get feedback on design decisions since that's always the
toughest part.

Best,
Moritz

-- 
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/beancount/a2b794df-0e57-4bbb-abe3-1df34db824e3n%40googlegroups.com.

Reply via email to