State of v3

510 views
Skip to first unread message

redst...@gmail.com

unread,
Feb 13, 2021, 5:57:26 AM2/13/21
to Beancount

I noticed a few posts of late mentioning tidbits about the state of v3. Given I haven't been following v3 closely, would someone be kind enough to help me and perhaps others understand:

- what is the overall development state of v3?
- is there a benefit in moving to v3 right now? Have core C++ rewrites made it much faster than v2?
- will fava work with v3 out of the box?
- is there plugin or other breakage to expect with v3 currently?

Thank you!

Martin Blais

unread,
Feb 13, 2021, 7:40:07 AM2/13/21
to Beancount


On Sat, Feb 13, 2021, 05:57 redst...@gmail.com <redst...@gmail.com> wrote:

I noticed a few posts of late mentioning tidbits about the state of v3. Given I haven't been following v3 closely, would someone be kind enough to help me and perhaps others understand:

- what is the overall development state of v3?

Ongoing. Progress in spurts. Not a whole lot of time to code these days. 

- A new parser had been written over the holidays, is 90% done. New language features haven't been added to it yet. That's the next thing I'll finish
- The beancount.core library is in the progress of being rewritten in c++, maybe only 10% into it, figured out how to reuse all the python tests on top of the c++ code so porting will be easy. Settled on a decimal representation. 
- Figured out the right mechanics to expose c++ autogenerated data structures to python, prototyped, still needs tbd.
Neither of these two pieces are hooked up by default, they live alongside the python code. This means if you're in that branch it's using the same code paths as before. I'm on v3 in all my day to day usage.

bean-web, bean-report are gone. Holdings code has been removed and replaced by simple inventory usage. Beanprice has moved to its own repo. Ingest too. All the experimental prototype only plugins are gone too. And the returns code moved to beangrow repo.


- is there a benefit in moving to v3 right now?

Not really so far. You can wait. You should probably wait.


Have core C++ rewrites made it much faster than v2?

Oh yes. Parsing is roughly 10x faster. Night and day. (But there's no booking yet and no core library yet, so there's no point.)


- will fava work with v3 out of the box?

I haven't tried. Depends what it uses.
I think Fava should wait until the new code is the default code path before doing anything.



- is there plugin or other breakage to expect with v3 currently?

Only the generic plugins that are part of the core remain. 

I hope this helps, 


Thank you!

--
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 beancount+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/5bffd92f-9f02-4395-adbd-99bb1074a5f7n%40googlegroups.com.

Ben Blount

unread,
Feb 13, 2021, 12:48:03 PM2/13/21
to Beancount
Fava does work on v3 currently. I've been using v3 successfully on my personal ledger for a month or so but as Martin says not much of the new code is lit up. I depend on average cost booking so I will continue on v3 (merging PR #591 on my local copy).

Martin I got reasonably familiar with the thorny booking problem doing the average cost booking method. I'd be happy to help port booking over to C++. I took a look at the c core, I'd benefit from syncing up with you on the order of development from getting from HEAD to the vision in the v3 doc.





Martin Blais

unread,
Feb 13, 2021, 4:03:50 PM2/13/21
to Beancount
On Sat, Feb 13, 2021 at 12:48 PM Ben Blount <b...@bben.us> wrote:
Fava does work on v3 currently. I've been using v3 successfully on my personal ledger for a month or so but as Martin says not much of the new code is lit up. I depend on average cost booking so I will continue on v3 (merging PR #591 on my local copy).

Martin I got reasonably familiar with the thorny booking problem doing the average cost booking method. I'd be happy to help port booking over to C++. I took a look at the c core, I'd benefit from syncing up with you on the order of development from getting from HEAD to the vision in the v3 doc.

This is going to be heart surgery!
There's a couple of things we need to do before we can do that, as it is built on top of the core, which hasn't been completely finished yet, if you'd like I can fill you in over VC if you have time,

 


 

redst...@gmail.com

unread,
Feb 13, 2021, 6:55:33 PM2/13/21
to Beancount
Thank you for the comprehensive response, Martin (and Ben too, for sharing)! It's helpful to know what's been done and the rough things in the pipeline next, not to mention, super exciting!

For other curious users:
  • I installed v3 just to check it out, though I'll probably stick with v2 simply because I don't have enough time in the day currently to deal with even minor breakage, but YMMV. My experience is below:
  • Martin's post confirms v3 is being developed by replacing code paths in v2 as opposed to being built from scratch. This is what enables you to switch to v3 any time you want (and are willing to risk occasional breakage)
  • I installed using "pip install ." in master
  • fava works fine with v3, though it needs a trivial patch to account for beancount.ingest moving over to beangulp (sed 's/from beancount.ingest/from beangulp/' fava/core/ingest.py)
  • as Martin mentioned, booking and core are the same as v2, so you'll see no performance difference

Have core C++ rewrites made it much faster than v2?

Oh yes. Parsing is roughly 10x faster. Night and day. (But there's no booking yet and no core library yet, so there's no point.)

Very cool!

nug get

unread,
Jul 8, 2021, 4:17:47 AM7/8/21
to Beancount
Dear all!
whats the news on the topic? especially, is there an update to

>> - is there a benefit in moving to v3 right now?
>> Not really so far. You can wait. You should probably wait.

Thanks!
Best,
nugget

Martin Blais

unread,
Jul 8, 2021, 8:27:26 AM7/8/21
to Beancount
Nothing new. I've been trying to get promoted, worked like an animal. Then I got promoted. Then I've been working to finish something to go on vacay (which usually translates to Beancount progress because, well, COVID, so vacay is at home).
I'm about to go in a week. Hoping to get back on the treadmill with a goal to finish the core library and a new API. I actually need it for another project too. The dream is very much alive.
Still no point to update yet.


--
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 beancount+...@googlegroups.com.

Lover O'Bean

unread,
Jul 22, 2021, 3:21:48 PM7/22/21
to Beancount
Congratulations on the promotion, Martin.  Do you plan to solicit further discussion from the community on the design of the multiple dates functionality before diving into that?  I feel like it is critical and there are some nuances around edge cases that could easily be missed, especially since they do not affect your personal use case much.  Specifically, the asymmetry around checks.  Without extensive experience, it seems that a structure somewhat like this with the Zerosum plugin would work best:

Assets:US:ZerosumPendingDeposits

Assets:US:Checking:GloboBank:Checking1234
Assets:US:Checking:GloboBank:Checking1234:Cleared
Assets:US:Checking:GloboBank:Checking1234:ZerosumPendingWithdrawals

Assets:US:Checking:PottersvilleCU:Checking5678
Assets:US:Checking:PottersvilleCU:Checking5678:Cleared
Assets:US:Checking:PottersvilleCU:Checking5678:ZerosumPendingWithdrawals

Here the parent accounts ("Checking1234" and "Checking5678") represent the funds which are safely available to spend.  Martin Michlmayr seems to have worked pretty extensively on this problem.  There is a related issue of using  Accounts Payable / Accounts Receivable to consider (and how to enter the AP/AR transactions: I am thinking of inserting scheduled transactions by a cron job), but I'm not sure right now if that is really related to multiple dates or not.

Thanks for giving us such an excellent program!
Reply all
Reply to author
Forward
0 new messages