La versione 3 di Beancount, rilasciata a metà del 2024, segna un'evoluzione architetturale significativa per il popolare strumento di contabilità in testo semplice. Sebbene mantenga la retrocompatibilità per i file dei libri mastri degli utenti, la struttura sottostante e gli strumenti di accompagnamento hanno subito modifiche sostanziali. Ecco una panoramica delle novità di Beancount v3.
Un'architettura più modulare e snella
Il cambiamento più significativo in Beancount v3 è il passaggio a un ecosistema più modulare. Diverse funzionalità chiave che in precedenza erano raggruppate con il core sono state scorporate in progetti separati e indipendenti. Ciò rende il core di Beancount più snello e consente uno sviluppo più mirato sui singoli componenti.
I componenti chiave che ora sono pacchetti separati includono:
- beanquery: Il potente strumento di interrogazione simile a SQL per i tuoi file del libro mastro ora è nel suo pacchetto.
- beangulp: Questa è la nuova sede per il framework di importazione dati, che sostituisce il precedente modulo
beancount.ingest. - beanprice: uno strumento dedicato per il recupero dei prezzi di materie prime e azioni.
Questa separazione significa che gli utenti dovranno installare questi pacchetti oltre a beancount stesso per mantenere la piena funzionalità a cui erano abituati nella versione 2.
Modifiche agli strumenti da riga di comando e ai flussi di lavoro
Riflettendo la nuova architettura modulare, ci sono alcune modifiche degne di nota agli strumenti da riga di comando:
bean-reportnon è più disponibile: questo strumento è stato rimosso. Ora si consiglia agli utenti di utilizzarebean-query(dal pacchettobeanquery) per le loro esigenze di reporting.- Nuovo flusso di lavoro per l'importazione: I comandi
bean-extractebean-identifysono stati rimossi dal core. Il nuovo approccio conbeangulpè basato su script. Gli utenti ora creeranno i propri script Python per gestire l'importazione di dati da fonti esterne come estratti conto bancari.
Miglioramenti alla sintassi e alle funzionalità
Sebbene i principi contabili di base rimangano gli stessi, Beancount v3 introduce alcune gradite flessibilità alla sua sintassi:
- Codici valuta più flessibili: Le precedenti restrizioni sulla lunghezza e sui caratteri per i nomi delle valute sono state allentate. Ora sono supportati i simboli di valuta a carattere singolo.
- Flag di transazione ampliati: Gli utenti ora possono utilizzare qualsiasi lettera maiuscola dalla A alla Z come flag per le transazioni, consentendo una categorizzazione più granulare.
È importante notare che queste modifiche sono retrocompatibili, quindi i tuoi file di libro mastro esistenti di Beancount v2 funzioneranno senza alcuna modifica.
La riscrittura in C++ e le prestazioni
Uno degli obiettivi a lungo termine per Beancount è stata la riscrittura dei suoi componenti critici per le prestazioni in C++. Sebbene questo lavoro sia in corso, il rilascio iniziale di Beancount v3 non include il core basato su C++. Ciò significa che, per ora, le prestazioni di v3 sono paragonabili a v2. Il codice C++ rimane in un ramo di sviluppo separato per un'integrazione futura.
Migrazione dalla v2 alla v3
Per la maggior parte degli utenti, la migrazione da Beancount v2 a v3 è relativamente semplice:
- File del libro mastro: non sono necessarie modifiche per i tuoi file
.beancount. - Installazione: Dovrai installare i nuovi pacchetti separati come
beanqueryebeangulpusandopip. - Script di importazione: Se hai importatori personalizzati, dovrai aggiornarli per utilizzare la nuova API di
beangulp. Ciò comporta principalmente la modifica della classe base da cui ereditano i tuoi importatori e la regolazione di alcune firme di metodi. - Fava: La popolare interfaccia web per Beancount, Fava, è stata aggiornata per essere compatibile con v3. Assicurati di avere l'ultima versione di Fava per un'esperienza senza intoppi.
In sostanza, Beancount v3 è un rilascio fondamentale che semplifica l'architettura del progetto, rendendolo più modulare e più facile da mantenere ed estendere a lungo termine. Sebbene richieda alcuni aggiustamenti ai flussi di lavoro degli utenti, specialmente per quanto riguarda l'importazione dei dati, getta le basi per lo sviluppo futuro di questo potente strumento contabile.