Double-entry accounting system with a command-line reporting interface
Fix divide by zero (bugs #777 and #2207)
Increase string size limit in src/unistring.h assert (bug #2174)
Require tzdata for Nix flake build (bug #2213)
Fix regression leading to incorrect error about format
directives (bug #2205)
Add information about compile features to --version
Fix compiler warnings by minimizing the use of deprecated APIs
Update flake.nix to match nixpkgs ledger/default.nix
Remove unused Python server related code
Various documentation improvements
Use $PAGER
when environment variable is set (bug #1674)
Make --depth
correctly fold postings to accounts of greater depth into the parent at the specified level (bug #987)
When using wild-cards in the include
directive, include matched files in sorted order (bug #1659)
Ensure absolute path for include (bug #2075)
Try to use $XDG_HOME_CONFIG/ledger/ledgerrc
or ~/.config/ledger/ledgerrc
first
Improve Python 3 support and drop support for Python 2
Add support for automatically reading files encrypted with GPG (bug #1949)
Add support for a "debit" column in the convert
command (bug #1120)
Fix parsing of files without end of line (bug #516)
Fix incorrect parsing of expressions containing a -
without spaces (bug #2001)
Fix payee metadata on postings not being validated and payee aliases not being honored (bug #556 & bug #1892)
Fix ledger interpreting a posting with 0 difference as a null-posting, which leads to it auto-balancing the posting (bug #1942)
Correctly escape all string values in lisp report (bug #2034)
Fix a regression where empty commodities were shown (bug #1969)
Fix a regression where using multiple commodities in one transaction triggers an assertion (bug #1998)
Fix --time-colon
for negative time amounts
Use correct int return type for stream input operations (bug #2058)
Use amount_width for balance report
Remove some UTF-8 code that was having no effect (bug #2061)
Fix unrounding for equity
Fix SIGABRT when python subcommand raises an exception
Improve XML reports
Support building on older versions of CMAKE (less than 3.7)
Fix compilation with Boost 1.76 (bug #2030)
Fix Msys2 MinGW build (bug #1905)
Fix unicode problems on Windows (bug #1986)
Fix the issue that with Boost >= 1.77 include
directive cannot find the file to include for stdin (-f -
). Also for -f -
when include
cannot find the file it reports the error with full path now. (bug #2057 & bug #2092)
Fix Nix build
Rename quoted_rfc4180
to quoted_rfc
, as numbers used in function names confuses the parser (#2007).
Numbers are no longer permitted in value expression function names.
Various documentation improvements
Correction to the way parens are parsed in query expressions
(bug #1894)Change --invert to invert displayed amounts and totals, not amounts
(bug #1895)Compare price annotations using their textual rendering
(bug #1907)Port Python support to Python 3
Entities are no longer regarded as defined due to being part of a
cleared transaction. --explicit
is effectively enabled by default
and is now a no-op (PR #1819)
Add --average-lot-prices
to show the average of lot prices
Add support for %F
date format specifier (bug #1775)
Add commodity_price(NAME, DATE)
function
Add set_commodity_price(NAME, DATE)
function
Fix buffer overflow when evaluating date
Fix balance assertions on accounts with virtual posts (bug #543)
Fix segfault with ledger print
(bug #1850)
Ensure that apply
directives (like apply account
) have the
required argument (bug #553)
Format annotations using a date format that can be parsed
Change --invert
to invert displayed amounts and totals, not amounts
(bug #1803)
Correct the way parens are parsed in query expressions
Compare price annotations using their textual rendering
Fix build failure with utfcpp 3.0 (bug #1816)
Fix build failure due to ambiguous type (bug #1833)
Properly reject postings with a comment right after the flag (bug #1753)
Make sorting order of lot information deterministic (bug #1747)
Fix bug in tag value parsing (bug #1702)
Remove the org
command, which was always a hack to begin with (bug #1706)
Provide Docker information in README
Various small documentation improvements
Increase maximum length for regex from 255 to 4095 (bug #981)
Initialize periods from from/since clause rather than earliest transaction date (bug #1159)
Check balance assertions against the amount after the posting (bug #1147)
Allow balance assertions with multiple posts to same account (bug #1187)
Fix period duration of "every X days" and similar statements (bug #370)
Make option --force-color not require --color anymore (bug #1109)
Add quoted_rfc4180 to allow CVS output with RFC 4180 compliant quoting.
Add support for --prepend-format in accounts command
Fix handling of edge cases in trim function (bug #520)
Fix auto xact posts not getting applied to account total during journal parse (bug #552)
Transfer null_post flags to generated postings
Fix segfault when using --market with --group-by
Use amount_width variable for budget report
Keep pending items in budgets until the last day they apply
Fix bug where .total used in value expressions breaks totals
Make automated transactions work with assertions (bug #1127)
Improve parsing of date tokens (bug #1626)
Don't attempt to invert a value if it's already zero (bug #1703)
Do not parse user-specified init-file twice
Fix parsing issue of effective dates (bug #1722, TALOS-2017-0303, CVE-2017-2807)
Fix use-after-free issue with deferred postings (bug #1723, TALOS-2017-0304, CVE-2017-2808)
Fix possible stack overflow in option parsing routine (bug #1222, CVE-2017-12481)
Fix possible stack overflow in date parsing routine (bug #1224, CVE-2017-12482)
Fix use-after-free when using --gain (bug #541)
Python: Removed double quotes from Unicode values.
Python: Ensure that parse errors produce useful RuntimeErrors
Python: Expose journal expand_aliases
Python: Expose journal_t::register_account
Improve bash completion
Emacs Lisp files have been moved to https://github.com/ledger/ledger-mode
Fix build under MSYS (32-bit).
Fix build under Cygwin.
Various documentation improvements
--no-revalued
option./.ledgerrc
if ~/.ledgerrc
doesn't exist-M
option with empty result--auto-match
year 2015
and Y2014
directives--trace 10
or aboveFor details on the changes see NEWS.
This version represents a full rewrite, while preserving much of the original data format and command-line syntax. There are too many new features to describe in full, but a quick list: value expressions, complex date masks, binary caching of ledger data, several new reporting options, a simple way to specify payee regexps, calculation and display predicates, and two-way Python integration. Ledger also uses autoconf now, and builds as a library in addition to a command-line driver.