;update changelogs

This commit is contained in:
Simon Michael 2020-11-17 10:51:57 -08:00
parent 3662977c84
commit 5f9635c784
5 changed files with 162 additions and 78 deletions

View File

@ -1,15 +1,21 @@
General/project-related changes in the hledger project.
For package-specific changes, see the package changelogs.
# 093c11ec
# f39938d7
- examples: stripe csv
- The functional tests in tests/ have been moved into the respective
packages, eg hledger/test/ and hledger-ui/test/.
- benchmarks: run just the slowest commands; add some large tabular reports
- Shake cabalfiles: now gives an error when it fails
- tools: use pretty-simple for ghci output
- make bench: add some large tabular reports;
run just the slowest commands by default;
run after make (func)test
- tools: add hie.yaml, hls now works with hledger
- a hie.yaml file has been added, so hledger source loads
easily in IDEs supporting haskell-language-server
# 1.19.1 2020-09-07

View File

@ -1,7 +1,24 @@
Internal/api/developer-ish changes in the hledger-lib (and hledger) packages.
For user-visible changes, see the hledger package changelog.
# 093c11ec
# 3662977c
- Reverted a stripAnsi change in 1.19.1 that caused a 3x slowdown of amount rendering
in terminal reports. (#1350)
- Amount and table rendering has been improved, so that stripAnsi is no longer needed.
This speeds up amount rendering in the terminal, speeding up some reports by 10% or more since 1.19.
(Stephen Morgan)
- global commodity display styles can now be set in InputOpts or Journal,
overriding all others (declared or inferred). This is used by the import
command and probably command-line options in future.
- Journal keeps a new piece of parsing state, a decimal mark character,
which can optionally be set to force the number format expected by all
amount parsers.
- Remove Empty Query constructor, which does nothing and has done so for a very long time. (Stephen Morgan)
- In ReportOpts, store query terms term-by-term in a list in querystring_. (Stephen Morgan)
This helps deal with tricky quoting issues, as we no longer have to make
@ -25,73 +42,81 @@ For user-visible changes, see the hledger package changelog.
- Export some MultiBalanceReport helper functions. (Stephen Morgan)
- Introduce ReportSpec, which holds ReportOpts, the day of the report, and the parsed Query. (Stephen Morgan)
- Remove old impure ReportOpts date functions. (Stephen Morgan)
- Make Default instances clearer, remove Default instance for Bool. (Stephen Morgan)
- Store the original query string in ReportOpts, provide a function for regenerating ReportOpts. (Stephen Morgan)
- Many ReportOpts-related changes, such as the addition of ReportSpec, aimed
at preventing runtime errors (from parsing: regexps, dates, format strings;
from not having today's date set; etc.)
ReportSpec holds a ReportOpts, the day of the report, and the Query generated from these.
- Ensure ReportOpts always has today_ set. (Stephen Morgan)
- Make sure reportspan doesn't interfere with correctly determining valuation date. (Stephen Morgan)
- Store parsed Query in ReportOpts, rather than an unparsed String. (Stephen Morgan)
- Store StringFormat in ReportOpts, rather than unparsed String. (Stephen Morgan)
StringFormat now also takes an optional overline width, which is
currently only used by defaultBalanceLineFormat.
- Remove checkReportOpts and checkRawOpts. (Stephen Morgan)
checkRawOpts has been a no-op for at least four years, and
checkReportOpts only makes sure that depth_ is positive, which is taken
care of by the maybeposintopt parser.
- For ymd date parsing, don't consume invalid date components. (Stephen Morgan)
- StringFormat now takes an optional overline width, which is
currently only used by defaultBalanceLineFormat. (Stephen Morgan)
- quoteIfNeeded should not escape the backslashes in unicode code points. (Stephen Morgan)
- fix error when P directive has a zero price (#1373)
- Export OrdPlus and constructors. (Stephen Morgan)
- fix a slowdown with report rendering in 1.19.1 (#1350)
stripAnsi is called many times during rendering (by strWidth), so
should be fast. It was originally a regex replacement, and more
recently a custom parser. The parser was slower, particularly the one
in 1.19.1. See #1350, and this rough test:
- Debug output now uses pretty-simple instead pretty-show.
This hopefully gives overall nicer debug output (eg in colour),
including for values which don't have Read-able Show output.
This means that we can start removing custom Show instances
that were a workaround for pretty-show. Eg account names
in debug output no longer show their colons as underscores.
time118ish = timeIt $ print $ length $ concat $ map (fromRight undefined . regexReplace (toRegex' "\ESC\\[([0-9]+;)*([0-9]+)?[ABCDHJKfmsu]") "") testdata
time119 = timeparser (many (takeWhile1P Nothing (/='\ESC') <|> "" <$ ansi))
time1191 = timeparser (many ("" <$ try ansi <|> pure <$> anySingle))
timeparser p = timeIt $ print $ length $ concat $ map (concat . fromJust . parseMaybe p) testdata
testdata = concat $ replicate 10000
[ "2008-01-01 income assets:bank:checking $1 $1"
, "2008-06-01 gift assets:bank:checking $1 $2"
, "2008-06-02 save assets:bank:saving $1 $3"
, " assets:bank:checking ..m$-1\ESC[m\ESC[m $2"
, "2008-06-03 eat & shop assets:cash ..m$-2\ESC[m\ESC[m 0"
, "2008-12-31 pay off assets:bank:checking ..m$-1\ESC[m\ESC[m ..m$-1\ESC[m\ESC[m"
]
Here's some old pretty-show output:
ghci> time118ish
4560000
CPU time: 0.17s
ghci> time119
4560000
CPU time: 0.91s
ghci> time1191
4560000
CPU time: 2.76s
CsvRules
{ rdirectives = [ ( "skip" , "1" ) ]
, rcsvfieldindexes = [ ( "date" , 1 ) , ( "amount" , 2 ) ]
, rassignments = [ ( "amount" , "%2" ) , ( "date" , "%1" ) ]
, rconditionalblocks = []
}
Possibly a more careful parser could beat regexReplace. Note the
latter does memoisation, which could be faster and/or could also use
more resident memory in some situations.
And the new pretty-simple output:
Ideally we would calculate all widths before adding ANSI colour codes,
so we wouldn't have to wastefully strip them.
CsvRules
{ rdirectives=
[ ( "skip", "1" ) ]
, rcsvfieldindexes=
[ ( "date", 1 ), ( "amount", 2 ) ]
, rassignments=
[ ( "amount", "%2" ), ( "date", "%1" ) ]
, rconditionalblocks= []
}
We require pretty-simple 4.0.0.0 to get this compact output.
It's a little less compact than pretty-show, but not too bad.
Non-compact pretty-simple output would be:
CsvRules
{ rdirectives=
[
( "skip"
, "1B"
)
]
, rcsvfieldindexes=
[
( "date"
, 1
)
,
( "amount"
, 2
)
]
, rassignments=
[
( "amount"
, "%2"
)
,
( "date"
, "%1"
)
]
, rconditionalblocks=[]
}
# 1.19.1 2020-09-07

View File

@ -1,13 +1,21 @@
User-visible changes in hledger-ui.
See also the hledger changelog.
# 093c11ec
# 3662977c
- When entering a query with `/`, malformed queries/regular expressions
no longer cause the program to exit. (Stephen Morgan)
- Eliding of multicommodity amounts now makes better use of available space. (Stephen Morgan)
- E ignores file extension, should help positioning on windows
- `E` now parses the `HLEDGER_UI_EDITOR` or `EDITOR` environment variable
correctly on Windows (ignoring the file extension), so if you have that set
it should be better at opening your editor at the correct line.
- E supports positioning when EDITOR is code (VS Code) (#1359)
- `E` now supports positioning when `HLEDGER_UI_EDITOR` or `EDITOR`
is VS Code ("`code`") (#1359)
- hledger-ui now has a (human-powered) test suite.
# 1.19.1 2020-09-07

View File

@ -1,18 +1,19 @@
User-visible changes in hledger-web.
See also the hledger changelog.
# 093c11ec
# 3662977c
- Re-enable hledger-web's test suite, and include it in the main executable.
hledger-web --test [-- HSPECARGS] runs it.
- Fix --forecast, broken in hledger-web since 1.18 (#1390)
- Fix hledger-web description (TANIGUCHI Kohei)
Slashes need to be escaped or they introduce unexpected italic style
due to Haddock markup.
- Fix unescaped slashes in hledger-web description on hackage (TANIGUCHI Kohei)
- The hledger version string, as JSON, is provided at /version (#1152)
- The hledger-web version string is now provided at /version, as JSON (#1152)
- Write the session file (hledger-web_client_session_key.aes) in
$XDG_DATA_DIR rather than in the current directory.
- The session file (hledger-web_client_session_key.aes) is now written in
$XDG_DATA_DIR rather than the current directory.
Eg on non-Windows systems this is ~/.cache/ by default (cf
https://hackage.haskell.org/package/directory/docs/System-Directory.html#t:XdgDirectory).
(#1344) (Félix Sipma)

View File

@ -1,25 +1,69 @@
User-visible changes in the hledger command line tool and library.
# 093c11ec
# 3662977c
- Query terms containing quotes (eg to match account names containing quotes)
now work properly (#1368, Stephen Morgan)
## general
- Console rendering is more efficient, speeding up some reports by
10% or more (Stephen Morgan)
- Reverted a stripAnsi change in 1.19.1 that caused a 3x slowdown of amount rendering
in terminal reports. (#1350)
- Amount and table rendering has been improved, so that stripAnsi is no longer needed.
This speeds up amount rendering in the terminal, speeding up some reports by 10% or more since 1.19.
(Stephen Morgan)
- Amount eliding no longer displays corrupted ANSI codes (#1352, Stephen Morgan)
- Eliding of multicommodity amounts now makes better use of available space,
avoiding unnecessary eliding. (Stephen Morgan)
avoiding unnecessary eliding (showing as many amounts as possible within
32 characters). (Stephen Morgan)
- --no-elide's help now mentions that it also disables eliding of
- Command line help for --no-elide now mentions that it also disables eliding of
multicommodity amounts.
- bal: --budget reports no longer insert an extra space inside the brackets (Stephen Morgan)
- Query terms containing quotes (eg to match account names containing quotes)
now work properly. (#1368, Stephen Morgan)
- journal: forecasted transactions are now affected by commodity styles (#1371)
- cli, journal: Date range parsing is more robust, fixing failing/incorrect cases such as: (Stephen Morgan)
- a hyphenated range with just years (`2017-2018`)
- a hyphenated date with no day in a hyphenated range (`2017-07-2018`)
- a dotted date with no day in a dotted range (`2017.07..2018.02`)
- Debug output is prettier (eg, in colour), using pretty-simple instead of pretty-show.
## commands
- add: number style (eg thousands separators) no longer disturbs the value
that is offered as default. (#1378)
- bal: --invert now affects -S/--sort-amount, reversing the order. (#1283, #1379) (Stephen Morgan)
- bal: --budget reports no longer insert an extra space inside the brackets. (Stephen Morgan)
- bal, is, bs --change:
Valued multiperiod balance change reports now show changes of value,
rather than the value of changes. (#1353, Stephen Morgan)
- import: The journal's commodity styles (declared or inferred) are now applied
to imported amounts, overriding their original number format.
## journal format
- The journal's commodity styles are now applied to forecasted transactions. (#1371)
- journal, csv: commodity style is now inferred from the first amount, as documented,
not the last. This was "working wrongly" since hledger 1.12..
- A zero market price no longer causes "Ratio has zero denominator" error
in valued reports. (#1373)
## csv format
- The new `decimal-mark` rule allows reliable number parsing
when CSV numbers contain digit group marks (eg thousands separators).
- The CSV reader's verbose "assignment" debug output is now at level 9.
# 1.19.1 2020-09-07