mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-26 03:42:25 +03:00
doc: changelogs draft
And add big headings, for fun and to help me tell them apart.
This commit is contained in:
parent
a7ae5a1535
commit
43a909f824
50
CHANGES.md
50
CHANGES.md
@ -1,5 +1,51 @@
|
|||||||
General project-related changes and major/notable all-package releases.
|
hledger
|
||||||
For package-specific changes and minor releases, see the package changelogs.
|
_ _
|
||||||
|
_ __ _ __ ___ (_) ___ ___| |_
|
||||||
|
| '_ \| '__/ _ \| |/ _ \/ __| __|
|
||||||
|
| |_) | | | (_) | | __/ (__| |_
|
||||||
|
| .__/|_| \___// |\___|\___|\__|
|
||||||
|
|_| |__/
|
||||||
|
|
||||||
|
General changes in the hledger project (and notable all-package releases).
|
||||||
|
For package-specific changes and minor releases, see the hledger package changelogs.
|
||||||
|
|
||||||
|
# d1cd4dda0
|
||||||
|
|
||||||
|
Docs:
|
||||||
|
|
||||||
|
- The info manuals now have the proper metadata so you or your
|
||||||
|
packager can install them with `install-info` and they will appear
|
||||||
|
in info's Directory. We also provide a `dir` file making it easy
|
||||||
|
for developers to see the latest dev manuals in their info Directory.
|
||||||
|
(#1585) (Damien Cassou, Simon Michael)
|
||||||
|
|
||||||
|
Chat:
|
||||||
|
|
||||||
|
- The hledger IRC channels (in matrix syntax: #hledger:libera.chat,
|
||||||
|
#hledger-bots:libera.chat) have moved to Libera.chat, like the rest
|
||||||
|
of the FOSS universe.
|
||||||
|
|
||||||
|
- The hledger Matrix room (#hledger:matrix.org), is now on at least
|
||||||
|
equal "official" footing with the IRC channel, perhaps even a bit
|
||||||
|
more. I think Matrix is the future, with IRC sticking around as the
|
||||||
|
trusty backup technology.
|
||||||
|
|
||||||
|
- I briefly bridged the two rooms, but stopped due to current
|
||||||
|
bridge/matrix issues. I hope to try again at some point, because
|
||||||
|
having two chats (four if we consider #plaintextaccounting) is a
|
||||||
|
pain.
|
||||||
|
|
||||||
|
- I upgraded the matrix room to a newer version of the Matrix
|
||||||
|
protocol. This effectively splits it into an old (read only) room
|
||||||
|
and a new room. If you are joined to the old room, you might not
|
||||||
|
have noticed; in your matrix client, please follow the link to the
|
||||||
|
new room, ie #hledger:matrix.org.
|
||||||
|
|
||||||
|
Software
|
||||||
|
|
||||||
|
- I have dropped official support for GHC 8.0/8.2/8.4; building
|
||||||
|
hledger now requires GHC 8.6 or newer. GHC 9.0 support has been
|
||||||
|
added.
|
||||||
|
|
||||||
# 1.21 2021-03-10
|
# 1.21 2021-03-10
|
||||||
|
|
||||||
|
@ -1,6 +1,219 @@
|
|||||||
|
hledger
|
||||||
|
_ _ _
|
||||||
|
| (_) |__
|
||||||
|
| | | '_ \
|
||||||
|
| | | |_) |
|
||||||
|
|_|_|_.__/
|
||||||
|
|
||||||
|
|
||||||
Internal/api/developer-ish changes in the hledger-lib (and hledger) packages.
|
Internal/api/developer-ish changes in the hledger-lib (and hledger) packages.
|
||||||
For user-visible changes, see the hledger package changelog.
|
For user-visible changes, see the hledger package changelog.
|
||||||
|
|
||||||
|
# d1cd4dda0
|
||||||
|
|
||||||
|
- Added support for GHC 9.0. Dropped support for GHC 8.0, 8.2, 8.4;
|
||||||
|
we now require GHC 8.6 or greater.
|
||||||
|
|
||||||
|
- Add now-required lower bound on containers. (#1514)
|
||||||
|
|
||||||
|
- Added useColor, colorOption helpers usable in pure code, eg for debug output.
|
||||||
|
|
||||||
|
- Added a Show instance for AmountDisplayOpts and WideBuilder, for debug logging.
|
||||||
|
|
||||||
|
Many internal refactorings/improvements/optimisations by Stephen Morgan,
|
||||||
|
including:
|
||||||
|
|
||||||
|
- Don't infer a txn price with same-sign amounts. (#1551)
|
||||||
|
|
||||||
|
- Clean up valuation functions, and make clear which to use where. (#1560)
|
||||||
|
|
||||||
|
- Replace journalSelectingAmountFromOpts with journalApplyValuationFromOpts.
|
||||||
|
This also has the effect of allowing valuation in more reports, for
|
||||||
|
example the transactionReport.
|
||||||
|
|
||||||
|
- Refactor to eliminate use of printf.
|
||||||
|
|
||||||
|
- Remove unused String, Text utility functions.
|
||||||
|
|
||||||
|
- Replace concat(Top|Bottom)Padded with textConcat(Top|Bottom)Padded.
|
||||||
|
|
||||||
|
- Export Text.Tabular from Text.Tabular.AsciiWide, clean up import lists.
|
||||||
|
|
||||||
|
- When matching an account query against a posting, don't try to match
|
||||||
|
against the same posting twice, in cases when poriginal is Nothing.
|
||||||
|
|
||||||
|
- Create mixedAmountApplyValuationAfterSumFromOptsWith for doing any
|
||||||
|
valuation needed after summing amounts.
|
||||||
|
|
||||||
|
- Create journalApplyValuationFromOpts. This does costing and
|
||||||
|
valuation on a journal, and is meant to replace most direct calls of
|
||||||
|
costing and valuation. The exception is for reports which require
|
||||||
|
amounts to be summed before valuation is applied, for example a
|
||||||
|
historical balance report with --value=end.
|
||||||
|
|
||||||
|
- Remove unused (amount|mixedAmount|posting|transaction)ApplyCostValuation functions.
|
||||||
|
|
||||||
|
- Remove unnecessary normalisedMixedAmount; replace
|
||||||
|
normaliseMixedAmountSquashPricesForDisplay with
|
||||||
|
mixedAmountStripPrices.
|
||||||
|
|
||||||
|
- Remove `showAmounts*B` functions, replacing them entirely with
|
||||||
|
`showMixedAmount*B` functions.
|
||||||
|
|
||||||
|
- Strip prices in MultiBalanceReport and PostingsReport whenever we
|
||||||
|
know we won't need them. Knowing whether we need them is
|
||||||
|
accomplished by pulling the "show-costs" option used by the Close
|
||||||
|
command up into ReportOpts.
|
||||||
|
|
||||||
|
- Use uniform naming for stripping prices. Creates a new function
|
||||||
|
amountStripPrices, and renames removePrices to postingStripPrices.
|
||||||
|
|
||||||
|
- Add more efficient toEncoding for custom ToJSON declarations.
|
||||||
|
|
||||||
|
- Fix ledgerDateSpan, so that it considers both transaction and
|
||||||
|
posting dates. (#772)
|
||||||
|
|
||||||
|
- Move reportPeriodName to Hledger.Reports.ReportOptions, use it for
|
||||||
|
HTML and CSV output for compound balance reports.
|
||||||
|
|
||||||
|
- Simplify the JSON representation of AmountPrecision. It now uses the
|
||||||
|
same JSON representation as Maybe Word8. This means that the JSON
|
||||||
|
serialisation is now broadly compatible with that used before the
|
||||||
|
commit f6fa76bba7530af3be825445a1097ae42498b1cd, differing only in
|
||||||
|
how it handles numbers outside Word8 and that it can now produce
|
||||||
|
null for NaturalPrecision.
|
||||||
|
|
||||||
|
- A number of AccountName and Journal functions which are supposed to
|
||||||
|
produce unique sorted results now use Sets internally to be slightly
|
||||||
|
more efficient. There is also a new function journalCommodities.
|
||||||
|
|
||||||
|
- More efficiently check whether Amounts are or appear to be zero.
|
||||||
|
Comparing two Quantity (either with == or compare) does a lot of
|
||||||
|
normalisation (calling roundMax) which is unnecessary if we're
|
||||||
|
comparing to zero. Do things more directly to save work.
|
||||||
|
For `reg -f examples/10000x10000x10.journal`, this results in
|
||||||
|
|
||||||
|
- A 12% reduction in heap allocations, from 70GB to 62GB
|
||||||
|
- A 14% reduction in (profiled) time, from 79s to 70s
|
||||||
|
|
||||||
|
Results for bal -f examples/10000x10000x10.journal are of the same
|
||||||
|
order of magnitude.
|
||||||
|
|
||||||
|
- In sorting account names, perform lookups on HashSets and HashMaps,
|
||||||
|
rather than lists. This is probably not an enormous performance sink
|
||||||
|
in real situations, but it takes a huge amount of time and memory in
|
||||||
|
our benchmarks (specifically 10000x10000x10.journal). For
|
||||||
|
`bal -f examples/10000x10000x10.journal`, this results in
|
||||||
|
|
||||||
|
- A 23% reduction in heap allocation, from 27GiB to 21GiB
|
||||||
|
- A 33% reduction in (profiled) time running, from 26.5s to 17.9s
|
||||||
|
|
||||||
|
- Minor refactor, using foldMap instead of asum . map . toList.
|
||||||
|
|
||||||
|
- Do not call showAmount twice for every posting. For print -f
|
||||||
|
examples/10000x10000x10.journal, this results in a 7.7% reduction in
|
||||||
|
heap allocations, from 7.6GB to 7.1GB.
|
||||||
|
|
||||||
|
- Some efficiency improvements in register reports. Strip prices after
|
||||||
|
valuing postings in PostingsReport. Use renderRow interface for
|
||||||
|
Register report.
|
||||||
|
|
||||||
|
For `reg -f examples/10000x10000x10.journal`, this results in:
|
||||||
|
|
||||||
|
- Heap allocations decreasing by 55%, from 68.6GB to 31.2GB
|
||||||
|
- Resident memory decreasing by 75%, from 254GB to 65GB
|
||||||
|
- Total (profiled) time decreasing by 55%, from 37s to 20s
|
||||||
|
|
||||||
|
- Split showMixedAmountB into showMixedAmountB and showAmountsB, the
|
||||||
|
former being a simple wrapper around the latter. This removes the
|
||||||
|
need for the showNormalised option, as showMixedAmountB will always
|
||||||
|
showNormalised and showAmountsB will never do so.
|
||||||
|
|
||||||
|
We also strip prices from MixedAmount before displaying, if not
|
||||||
|
displaying prices.
|
||||||
|
|
||||||
|
- Change internal representation of MixedAmount to use a strict Map
|
||||||
|
instead of a list of Amounts. No longer export Mixed constructor, to
|
||||||
|
keep API clean. (If you really need it, you can import it directly
|
||||||
|
from Hledger.Data.Types). We also ensure the JSON representation of
|
||||||
|
MixedAmount doesn't change: it is stored as a normalised list of
|
||||||
|
Amounts.
|
||||||
|
|
||||||
|
This commit improves performance. Here are some indicative results:
|
||||||
|
|
||||||
|
hledger reg -f examples/10000x1000x10.journal
|
||||||
|
- Maximum residency decreases from 65MB to 60MB (8% decrease)
|
||||||
|
- Total memory in use decreases from 178MiB to 157MiB (12% decrease)
|
||||||
|
|
||||||
|
hledger reg -f examples/10000x10000x10.journal
|
||||||
|
- Maximum residency decreases from 69MB to 60MB (13% decrease)
|
||||||
|
- Total memory in use decreases from 198MiB to 153MiB (23% decrease)
|
||||||
|
|
||||||
|
hledger bal -f examples/10000x1000x10.journal
|
||||||
|
- Total heap usage decreases from 6.4GB to 6.0GB (6% decrease)
|
||||||
|
- Total memory in use decreases from 178MiB to 153MiB (14% decrease)
|
||||||
|
|
||||||
|
hledger bal -f examples/10000x10000x10.journal
|
||||||
|
- Total heap usage decreases from 7.3GB to 6.9GB (5% decrease)
|
||||||
|
- Total memory in use decreases from 196MiB to 185MiB (5% decrease)
|
||||||
|
|
||||||
|
hledger bal -M -f examples/10000x1000x10.journal
|
||||||
|
- Total heap usage decreases from 16.8GB to 10.6GB (47% decrease)
|
||||||
|
- Total time decreases from 14.3s to 12.0s (16% decrease)
|
||||||
|
|
||||||
|
hledger bal -M -f examples/10000x10000x10.journal
|
||||||
|
- Total heap usage decreases from 108GB to 48GB (56% decrease)
|
||||||
|
- Total time decreases from 62s to 41s (33% decrease)
|
||||||
|
|
||||||
|
If you never directly use the constructor Mixed or pattern match against
|
||||||
|
it then you don't need to make any changes. If you do, then do the
|
||||||
|
following:
|
||||||
|
|
||||||
|
- If you really care about the individual Amounts and never normalise
|
||||||
|
your MixedAmount (for example, just storing `Mixed amts` and then
|
||||||
|
extracting `amts` as a pattern match, then use should switch to using
|
||||||
|
[Amount]. This should just involve removing the `Mixed` constructor.
|
||||||
|
- If you ever call `mixed`, `normaliseMixedAmount`, or do any sort of
|
||||||
|
amount arithmetic (+), (-), then you should replace the constructor
|
||||||
|
`Mixed` with the function `mixed`. To extract the list of Amounts, use
|
||||||
|
the function `amounts`.
|
||||||
|
- If you ever call `normaliseMixedAmountSquashPricesForDisplay`, you can
|
||||||
|
replace that with `mixedAmountStripPrices`. (N.B. this does something
|
||||||
|
slightly different from `normaliseMixedAmountSquashPricesForDisplay`,
|
||||||
|
but I don't think there's any use case for squashing prices and then
|
||||||
|
keeping the first of the squashed prices around. If you disagree let
|
||||||
|
me know.)
|
||||||
|
- Any remaining calls to `normaliseMixedAmount` can be removed, as that
|
||||||
|
is now the identity function.
|
||||||
|
|
||||||
|
- Create a new API for MixedAmount arithmetic. This should supplant
|
||||||
|
the old interface, which relied on the Num typeclass. MixedAmount
|
||||||
|
did not have a very good Num instance. The only functions which were
|
||||||
|
defined were fromInteger, (+), and negate. Furthermore, it was not
|
||||||
|
law-abiding, as 0 + a /= a in general. Replacements for used
|
||||||
|
functions are:
|
||||||
|
|
||||||
|
0 -> nullmixedamt / mempty
|
||||||
|
(+) -> maPlus / (<>)
|
||||||
|
(-) -> maMinus
|
||||||
|
negate -> maNegate
|
||||||
|
sum -> maSum
|
||||||
|
sumStrict -> maSum
|
||||||
|
|
||||||
|
Also creates some new constructors for MixedAmount:
|
||||||
|
|
||||||
|
mixedAmount :: Amount -> MixedAmount
|
||||||
|
maAddAmount :: MixedAmount -> Amount -> MixedAmount
|
||||||
|
maAddAmounts :: MixedAmount -> [Amount] -> MixedAmount
|
||||||
|
|
||||||
|
Add Semigroup and Monoid instances for MixedAmount.
|
||||||
|
Ideally we would remove the Num instance entirely.
|
||||||
|
|
||||||
|
The only change needed have nullmixedamt/mempty substitute for 0
|
||||||
|
without problems was to not squash prices in
|
||||||
|
mixedAmount(Looks|Is)Zero. This is correct behaviour in any case.
|
||||||
|
|
||||||
|
|
||||||
# 1.21 2021-03-10
|
# 1.21 2021-03-10
|
||||||
|
|
||||||
- Building Hledger.Data.Journal no longer fails if the monad-extras
|
- Building Hledger.Data.Journal no longer fails if the monad-extras
|
||||||
|
@ -1,6 +1,34 @@
|
|||||||
|
hledger
|
||||||
|
_
|
||||||
|
_ _(_)
|
||||||
|
| | | | |
|
||||||
|
| |_| | |
|
||||||
|
\__,_|_|
|
||||||
|
|
||||||
|
|
||||||
User-visible changes in hledger-ui.
|
User-visible changes in hledger-ui.
|
||||||
See also the hledger changelog.
|
See also the hledger changelog.
|
||||||
|
|
||||||
|
# d1cd4dda0
|
||||||
|
|
||||||
|
- Add support for kakoune editor; fix some issues with editor invocation.
|
||||||
|
(crocket)
|
||||||
|
|
||||||
|
- The accounts screen is a little smarter at allocating space to columns.
|
||||||
|
(Stephen Morgan)
|
||||||
|
|
||||||
|
- The --version flag shows more detail (git tag/patchlevel/commit
|
||||||
|
hash, platform/architecture). (Stephen Morgan)
|
||||||
|
|
||||||
|
- In the register screen, fix queries, which had broken in 1.21. (#1523)
|
||||||
|
|
||||||
|
- Don't write a debug.log file when toggling V. (#1556)
|
||||||
|
|
||||||
|
- Add now-required lower bound on containers. (#1514)
|
||||||
|
|
||||||
|
- Added support for GHC 9.0. Dropped support for GHC 8.0, 8.2, 8.4;
|
||||||
|
we now require GHC 8.6 or greater.
|
||||||
|
|
||||||
# 1.21 2021-03-10
|
# 1.21 2021-03-10
|
||||||
|
|
||||||
- Register screen: also show transactions below the depth limit, as in
|
- Register screen: also show transactions below the depth limit, as in
|
||||||
|
@ -1,6 +1,29 @@
|
|||||||
|
hledger
|
||||||
|
_
|
||||||
|
__ _____| |__
|
||||||
|
\ \ /\ / / _ \ '_ \
|
||||||
|
\ V V / __/ |_) |
|
||||||
|
\_/\_/ \___|_.__/
|
||||||
|
|
||||||
|
|
||||||
User-visible changes in hledger-web.
|
User-visible changes in hledger-web.
|
||||||
See also the hledger changelog.
|
See also the hledger changelog.
|
||||||
|
|
||||||
|
# d1cd4dda0
|
||||||
|
|
||||||
|
- In the add form, fix a bug where extra posting rows were not added
|
||||||
|
when needed in certain web browsers. (charukiewicz)
|
||||||
|
|
||||||
|
- The --version flag shows more detail (git tag/patchlevel/commit
|
||||||
|
hash, platform/architecture). (Stephen Morgan)
|
||||||
|
|
||||||
|
- Allow yesod-form 1.7 (Felix Yan)
|
||||||
|
|
||||||
|
- Add now-required lower bound on containers. (#1514)
|
||||||
|
|
||||||
|
- Added support for GHC 9.0. Dropped support for GHC 8.0, 8.2, 8.4;
|
||||||
|
we now require GHC 8.6 or greater.
|
||||||
|
|
||||||
# 1.21 2021-03-10
|
# 1.21 2021-03-10
|
||||||
|
|
||||||
- Register: a date range can be selected by dragging over a region on
|
- Register: a date range can be selected by dragging over a region on
|
||||||
|
@ -1,6 +1,179 @@
|
|||||||
|
hledger
|
||||||
|
_ _
|
||||||
|
___| (_)
|
||||||
|
/ __| | |
|
||||||
|
| (__| | |
|
||||||
|
\___|_|_|
|
||||||
|
|
||||||
|
|
||||||
User-visible changes in the hledger command line tool and library.
|
User-visible changes in the hledger command line tool and library.
|
||||||
|
|
||||||
|
|
||||||
|
# d1cd4dda0
|
||||||
|
|
||||||
|
- performance: many internal optimisations have been applied
|
||||||
|
(the hledger-lib changelog has more detail). (Stephen Morgan)
|
||||||
|
In general, you can expect most reports to be about 20% faster.
|
||||||
|
The register report is more than 2x quicker and 4x more memory efficient.
|
||||||
|
|
||||||
|
~/src/hledger$ quickbench -w hledger-1.21,hledger
|
||||||
|
Running 5 tests 1 times with 2 executables at 2021-06-29 13:13:26 HST:
|
||||||
|
|
||||||
|
Best times:
|
||||||
|
+----------------------------------------------------++--------------+---------+
|
||||||
|
| || hledger-1.21 | hledger |
|
||||||
|
+====================================================++==============+=========+
|
||||||
|
| -f examples/10000x1000x10.journal print || 1.18 | 0.90 |
|
||||||
|
| -f examples/10000x1000x10.journal register || 12.82 | 5.95 |
|
||||||
|
| -f examples/10000x1000x10.journal balance || 1.38 | 0.86 |
|
||||||
|
| -f examples/1000x1000x10.journal balance --weekly || 0.96 | 0.78 |
|
||||||
|
| -f examples/10000x1000x10.journal balance --weekly || 13.07 | 10.79 |
|
||||||
|
+----------------------------------------------------++--------------+---------+
|
||||||
|
|
||||||
|
- register: Fix the running total when there is a report interval (broken
|
||||||
|
since 1.19) (#1568). (Stephen Morgan)
|
||||||
|
|
||||||
|
- balance reports: Fix empty cells when amounts are too wide to fit
|
||||||
|
(broken since 1.20) (#1526). (Stephen Morgan)
|
||||||
|
|
||||||
|
- csv: Fix the escaping of double quotes in CSV output (broken since
|
||||||
|
1.21). (Stephen Morgan)
|
||||||
|
|
||||||
|
- check: Rename the `autobalanced` check to
|
||||||
|
`balancedwithautoconversion`. Add the `balancednoautoconversion`
|
||||||
|
check, which requires transactions to balance without the use of
|
||||||
|
inferred transaction prices. (Explicit transaction prices are
|
||||||
|
allowed.) This check is included in --strict mode. (Stephen Morgan)
|
||||||
|
|
||||||
|
- csv: Tolerate spaces when parsing amounts from CSV. (Eric Mertens)
|
||||||
|
|
||||||
|
- json: Avoid adding unnecessary decimal places in JSON output.
|
||||||
|
Previously, our decimal values would always have 10 decimal places.
|
||||||
|
(Stephen Morgan)
|
||||||
|
|
||||||
|
- json: Simplify amount precision (asprecision) in JSON output.
|
||||||
|
It is now just the number of decimal places, rather than an object.
|
||||||
|
(Stephen Morgan)
|
||||||
|
|
||||||
|
- stats: No longer gets confused by posting dates. (#772) (Stephen Morgan)
|
||||||
|
|
||||||
|
- cli: ANSI color is now also disabled by -o/--output-file
|
||||||
|
ANSI color on stdout (not stderr) is now disabled if the
|
||||||
|
-o/--output-file option is detected (and its value is not "-").
|
||||||
|
(#1533)
|
||||||
|
|
||||||
|
- cli: debug output now respects --color/NO_COLOR/ANSI support
|
||||||
|
Debug output now selects color or monochrome in the same way as normal
|
||||||
|
output.
|
||||||
|
|
||||||
|
- cli: debug output checks for color support on stderr, not stdout
|
||||||
|
This is more accurate.
|
||||||
|
useColor is replaced by useColorOnStdout, useColorOnStderr.
|
||||||
|
|
||||||
|
- Fix the error message when all transaction amounts have the same
|
||||||
|
sign (don't show an inferred price). (#1551) (Stephen Morgan)
|
||||||
|
|
||||||
|
- fix: When performing a summary posting report without depth limiting, report exclusive balances rather than inclusive balances (#1568). (Stephen Morgan)
|
||||||
|
|
||||||
|
- cli: Make sure full account name is used (possibly including dropping) for csv output. (#1566) (Stephen Morgan)
|
||||||
|
|
||||||
|
- The --version flag shows more detail (git tag/patchlevel/commit
|
||||||
|
hash, platform/architecture). (Stephen Morgan)
|
||||||
|
|
||||||
|
- Infer prices correctly even when there are only balance assignments. (Stephen Morgan)
|
||||||
|
|
||||||
|
- perf: Change internal representation of MixedAmount to use a strict Map instead of a list of Amounts. No longer export Mixed constructor, to keep API clean (if you really need it, you can import it directly from Hledger.Data.Types). We also ensure the JSON representation of MixedAmount doesn't change: it is stored as a normalised list of Amounts. (Stephen Morgan)
|
||||||
|
This commit improves performance. Here are some indicative results.
|
||||||
|
|
||||||
|
hledger reg -f examples/10000x1000x10.journal
|
||||||
|
- Maximum residency decreases from 65MB to 60MB (8% decrease)
|
||||||
|
- Total memory in use decreases from 178MiB to 157MiB (12% decrease)
|
||||||
|
|
||||||
|
hledger reg -f examples/10000x10000x10.journal
|
||||||
|
- Maximum residency decreases from 69MB to 60MB (13% decrease)
|
||||||
|
- Total memory in use decreases from 198MiB to 153MiB (23% decrease)
|
||||||
|
|
||||||
|
hledger bal -f examples/10000x1000x10.journal
|
||||||
|
- Total heap usage decreases from 6.4GB to 6.0GB (6% decrease)
|
||||||
|
- Total memory in use decreases from 178MiB to 153MiB (14% decrease)
|
||||||
|
|
||||||
|
hledger bal -f examples/10000x10000x10.journal
|
||||||
|
- Total heap usage decreases from 7.3GB to 6.9GB (5% decrease)
|
||||||
|
- Total memory in use decreases from 196MiB to 185MiB (5% decrease)
|
||||||
|
|
||||||
|
hledger bal -M -f examples/10000x1000x10.journal
|
||||||
|
- Total heap usage decreases from 16.8GB to 10.6GB (47% decrease)
|
||||||
|
- Total time decreases from 14.3s to 12.0s (16% decrease)
|
||||||
|
|
||||||
|
hledger bal -M -f examples/10000x10000x10.journal
|
||||||
|
- Total heap usage decreases from 108GB to 48GB (56% decrease)
|
||||||
|
- Total time decreases from 62s to 41s (33% decrease)
|
||||||
|
|
||||||
|
If you never directly use the constructor Mixed or pattern match against
|
||||||
|
it then you don't need to make any changes. If you do, then do the
|
||||||
|
following:
|
||||||
|
|
||||||
|
- If you really care about the individual Amounts and never normalise
|
||||||
|
your MixedAmount (for example, just storing `Mixed amts` and then
|
||||||
|
extracting `amts` as a pattern match, then use should switch to using
|
||||||
|
[Amount]. This should just involve removing the `Mixed` constructor.
|
||||||
|
- If you ever call `mixed`, `normaliseMixedAmount`, or do any sort of
|
||||||
|
amount arithmetic (+), (-), then you should replace the constructor
|
||||||
|
`Mixed` with the function `mixed`. To extract the list of Amounts, use
|
||||||
|
the function `amounts`.
|
||||||
|
- If you ever call `normaliseMixedAmountSquashPricesForDisplay`, you can
|
||||||
|
replace that with `mixedAmountStripPrices`. (N.B. this does something
|
||||||
|
slightly different from `normaliseMixedAmountSquashPricesForDisplay`,
|
||||||
|
but I don't think there's any use case for squashing prices and then
|
||||||
|
keeping the first of the squashed prices around. If you disagree let
|
||||||
|
me know.)
|
||||||
|
- Any remaining calls to `normaliseMixedAmount` can be removed, as that
|
||||||
|
is now the identity function.
|
||||||
|
|
||||||
|
- When displaying amounts on a single line, always display at least one amount, even if that would exceed the requested maximum width. Addresses #1526. (Stephen Morgan)
|
||||||
|
|
||||||
|
- timeclock: print shows timeclock amounts with just 2 decimals, like pre-1.21 (#1527)
|
||||||
|
|
||||||
|
- Do not round Decimal before applying JSON representation if existing representation is small enough. (Stephen Morgan)
|
||||||
|
Previously the JSON representation of Decimal was rounded to 10 points
|
||||||
|
of precision before serialising. This sometimes results in an
|
||||||
|
unnecessary increase of precision.
|
||||||
|
|
||||||
|
- bal: keep csv column and row labels consistently lower case
|
||||||
|
It was reported on #hledger that bal -O csv capitalises "account"
|
||||||
|
differently for single and multi-period reports. All lower case seems
|
||||||
|
to be the most common, so I have dropped the capitalisation. Also
|
||||||
|
the trailing colon from --transpose's "total:".
|
||||||
|
|
||||||
|
- Simplify the JSON representation of AmountPrecision. (Stephen Morgan)
|
||||||
|
It now uses the same JSON representation as Maybe Word8. This means that
|
||||||
|
the JSON serialisation is now broadly compatible with that used before the
|
||||||
|
commit f6fa76bba7530af3be825445a1097ae42498b1cd, differing only in
|
||||||
|
how it handles numbers outside Word8 and that it can now produce null
|
||||||
|
for NaturalPrecision.
|
||||||
|
|
||||||
|
- lib: Properly escape quotes in csv output. (Stephen Morgan)
|
||||||
|
|
||||||
|
- Do not call showAmount twice for every posting. (Stephen Morgan)
|
||||||
|
For print -f examples/10000x10000x10.journal, this results in
|
||||||
|
- A 7.7% reduction in heap allocations, from 7.6GB to 7.1GB.
|
||||||
|
|
||||||
|
- Some efficiency improvements in register reports. (Stephen Morgan)
|
||||||
|
Strip prices after valuing postings in PostingsReport.
|
||||||
|
Use renderRow interface for Register report.
|
||||||
|
|
||||||
|
For reg -f examples/10000x10000x10.journal, this results in:
|
||||||
|
- Heap allocations decreasing by 55%, from 68.6GB to 31.2GB
|
||||||
|
- Resident memory decreasing by 75%, from 254GB to 65GB
|
||||||
|
- Total (profiled) time decreasing by 55%, from 37s to 20s
|
||||||
|
|
||||||
|
- Clean up some references to old man pages. (Felix Yan)
|
||||||
|
|
||||||
|
- Add now-required lower bound on containers. (#1514)
|
||||||
|
|
||||||
|
- Added support for GHC 9.0. Dropped support for GHC 8.0, 8.2, 8.4;
|
||||||
|
we now require GHC 8.6 or greater.
|
||||||
|
|
||||||
# 1.21 2021-03-10
|
# 1.21 2021-03-10
|
||||||
|
|
||||||
## general
|
## general
|
||||||
|
Loading…
Reference in New Issue
Block a user