Beancount v3: Что нового?
Beancount версии 3, выпущенный в середине 2024 года, знаменует собой значительную архитектурную эволюцию для популярного инструмента текстового учета. Хотя он сохраняет обратную совместимость для файлов учета пользователей, базовая структура и сопутствующие инструменты претерпели существенные изменения. Вот обзор того, что нового в Beancount v3.
Более модульная и оптимизированная архитектура
Наиболее значительным изменением в Beancount v3 является переход к более модульной экосистеме. Несколько ключевых функций, которые ранее входили в состав ядра, были выделены в отдельные, независимые проекты. Это делает ядро Beancount более компактным и позволяет сосредоточиться на разработке отдельных компонентов.
Ключевые компоненты, которые теперь являются отдельными пакетами, включают:
- beanquery: Мощный SQL-подобный инструмент запросов для ваших файлов учета теперь находится в отдельном пакете.
- beangulp: Это новое место для фреймворка импорта данных, заменяющее бывший модуль
beancount.ingest
. - beanprice: Специализированный инструмент для получения цен на товары и акции.
Это разделение означает, что пользователям потребуется установить эти пакеты в дополнение к самому beancount
, чтобы сохранить полную функциональность, к которой они привыкли в версии 2.
Изменения в инструментах командной строки и рабочих процессах
Отражая новую модульную архитектуру, произошл и некоторые заметные изменения в инструментах командной строки:
bean-report
удален: Этот инструмент был удален. Теперь пользователям рекомендуется использоватьbean-query
(из пакетаbeanquery
) для своих потребностей в отчетности.- Новый рабочий процесс импорта: Команды
bean-extract
иbean-identify
были удалены из ядра. Новый подход сbeangulp
основан на скриптах. Теперь пользователи будут создавать свои собственные скрипты Python для обработки импорта данных из внешних источников, таких как банковские выписки.
Улучшения синтаксиса и функций
Хотя основные принципы бухгалтерского учета остаются прежними, Beancount v3 вводит некоторую приветствуемую гибкость в свой синтаксис:
- Более гибкие коды валют: Предыдущие ограничения на длину и символы для названий валют были ослаблены. Теперь поддерживаются односимвольные о бозначения валют.
- Расширенные флаги транзакций: Теперь пользователи могут использовать любую заглавную букву от A до Z в качестве флага для транзакций, что позволяет осуществлять более детальную категоризацию.
Важно отметить, что эти изменения обратно совместимы, поэтому ваши существующие файлы учета Beancount v2 будут работать без каких-либо изменений.
Перезапись на C++ и производительность
Одной из долгосрочных целей Beancount была перезапись его критически важных для производительности компонентов на C++. Хотя эта работа продолжается, первоначальный выпуск Beancount v3 не включает ядро на базе C++. Это означает, что на данный момент производительность v3 сопоставима с v2. Код C++ остается в отдельной ветке разработки для будущей интеграции.
Миграция с v2 на v3
Для большинства пользователей миграция с Beancount v2 на v3 относительно проста:
- Файлы учета: Изменения для ваших файлов
.beancount
не требуются. - Установка: Вам потребуется установить новые, отдельные пакеты, такие как
beanquery
иbeangulp
, используяpip
. - Скрипты импорта: Если у вас есть пользовательские импортеры, вам потребуется обновить их для использования нового API
beangulp
. Это в основном включает изменение базового класса, от которого наследуют ваши импортеры, и корректировку некоторых сигнатур методов. - Fava: Популярный веб-интерфейс для Beancount, Fava, был обновлен для совместимости с v3. Убедитесь, что у вас установлена последняя версия Fava для бесперебойной работы.
По сути, Beancount v3 — это фундаментальный выпуск, который оптимизирует архитектуру проекта, делая его более модульным и легким для поддержки и расширения в долгосрочной перспективе. Хотя он требует некоторых корректировок в рабочих процессах пользователей, особенно в отн ошении импорта данных, он закладывает основу для будущего развития этого мощного инструмента учета.