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 — это фундаментальный выпуск, который оптимизирует архитектуру проекта, делая его более модульным и легким для поддержки и расширения в долгосрочной перспективе. Хотя он требует некоторых корректировок в рабочих процессах пользователей, особенно в отношении импорта данных, он закладывает основу для будущего развития этого мощного инструмента учета.