0.12.1
======
- INFRA: Improved GitHub Actions Pipeline
0.12.0
======
- INTERFACE: add `--append-period` flag
0.11.0
======
- INTERFACE: add `-b/--as-bert` flag to output back into BERT
- INTERFACE: in verbose mode, times are displayed in ns, µs, ms, and seconds instead of just seconds
- INTERNALS: add a `prelude` module to easily `use` the most common items
- INTERNALS: move parsers to their own modules
- INTERNALS: move pretty printers to their own modules
- INTERNALS: implement `Iterator` for parsers
- INTERNALS: add `PrettyPrinter` trait
- INTERNALS: improve error messages for invalid magic number and invalid disk log values
- INFRA: remove the build_musl.sh script
- PERF: the new PrettyPrinter with its `io::Write` trait object is sometimes faster,
sometimes slower than the previous parametrized pretty printers. Since the new
approach gives more flexibility at a modest performance cost, we'll accept this
performance regression.
0.10.0
======
- INTERFACE: Use file extension to decide which parser to use
0.9.4
=====
- INTERNALS: fix warnings about Error::description() starting from Rust 1.42.0
0.9.3
=====
- BUGFIX: Properly escape double quotes and backslashes in binary and string literals
- FEATURE: Display the atoms true and false as the JSON booleans rather than the strings "true" and "false
0.9.2
=====
- INFRA: Add a GitHub Actions pipeline to create Linux, macOS and Windows binaries
0.9.0
=====
- REMOVE: `bert-convert`; I never used it, and it wasn't getting the love it deserved.
- CODE: `ppbert` now uses `getopts` for command-line parsing.
- REMOVE: `rayon` and `clap`; makes builds much faster, a nearly 3x speed-up on my machine.
0.8.5
=====
- BUGFIX: Call `Write::flush()` to ensure that IO errors are propagated; necessary to exit early when a pipe is closed. This causes a performance regression from 0.8.4.
- PERF: Use `ryu` to print floating point numbers.
0.8.4
=====
- BUGFIX: Ensure that `ppbert` exits when a BrokenPipe error is encountered.
- PERF: Wrap `stdout` in a `BufWriter`; this improves the performance of outputting as Erlang by 2x and JSON by 1.15x.
0.8.3
=====
- INTERNALS: The parsing and the prettying printing for .bert2 and disk_log files are interleaved
- FEATURE: The filename is included in verbose messages (e.g., how long the parsing took)
0.8.2
=====
- FEATURE: Add `-t` as a short-hand for `--transform-proplists`
0.8.0
=====
- INTERNALS: Replace `BertTerm::dump_term` with `BertTerm::write_as_bert`.
- DOC: Add API documentation in bertterm
0.7.0
=====
- PERF: Use `itoa` crate to write integers a bit faster.
- PERF: Use `fs::read` to read input files almost two times faster.
- PERF: Remove some heap allocations.
- INTERNALS: Simplify pretty printing API: `BertTerm` has two new functions, `write_as_erlang` and `write_as_json`, they accept an io::Write object.
- INTERNALS: The structs `PrettyPrinter` and `JsonPrettyPrinter` are no longer public.
0.6.1
=====
- PERF: A number of unsafe function usages (e.g., `Vec::set_len()`) have been removed and replaced with safer alternatives. It turns out that it gives a slight increase in the performance of parsing. Win-win!
0.6.0
=====
- FEATURE: Support for `disk_log` files. The Erlang module, `disk_log`, writes BERT-encoded terms to files on disk; the new `--disk-log` (`-d`) flag allows ppbert to read this file format.
0.5.2
=====
- PERF: Nearly halved the time it takes to pretty print my benchmark .bert files by manually buffering the output of strings and binaries.
0.5.1
=====
- INFRA: Added a small shell script, build_musl.sh, to create a musl binary.
0.5.0
=====
- INTERNALS: clap's extra features (e.g., flag name suggestions) have been removed.
- INTERNALS: A warning's format was changed to conform to usual Unix style.
- INTERNALS: The 's' (for 'seconds') after times in verbose mode has been removed.
- INTERNALS: The time required to read a file has been added to ppbert's verbose mode.
0.4.2
=====
- BUGFIX: A parse error in bert-convert will show an error message rather than panic.
- BUGFIX: Piping ppbert into another command will not cause a broken pipe error if the stream is not consumed entirely.
0.4.1
=====
- FEATURE: A new binary, `bert-convert`, was added to convert bertconf's .bert files to rig's .bert2 files.
0.4.0
=====
- PERF: A number of micro-optimizations have been applied to the parser; in our tests, parsing is now nearly twice as fast as before.
- INTERNALS: BertError::EOF has been removed and replaced with BertError::NotEnoughData; this new error contains more information: the number of bytes that needed to be read, and the number of bytes that were available.
0.3.1
=====
- BUGFIX: Ensure that only strings, binaries, and atoms are used as keys in a proplist.
0.3.0
=====
- FEATURE: The `-j/--json` flag can be used to output JSON rather than Erlang terms.
- FEATURE: The `--transform-proplists` flag can be used to output Erlang proplists as JSON objects.
- COMPAT: The `-s/--skip-pretty-print` has been renamed to `-p/--parse`.
0.2.6
=====
- BUGFIX: `--verbose` would not print the parse time if `--skip-pretty-print` was set.
0.2.5
=====
- FEATURE: add support for .bert2 files.
- BUGFIX: fix the times reported by the `--verbose` flags were wrong; the leading zeros were missing.
0.2.4
=====
- FEATURE: add command-line flag (-v) to show how long each phase (parsing and pretty printing) takes.
- FEATURE: add command-line flag (-s) to stop after parsing.
- INTERNALS: improve performance of the parsing methods for atoms, strings, and binaries by avoiding bounds checking.
0.2.3
=====
- PERF: Improve performance of pretty printer
0.2.2
=====
- FEATURE: add command-line option (-i) to control the indentation width
- FEATURE: add command-line option (-m) to control the maximum number of basic terms on a single line
- FEATURE: update manpage to reflect new command line options
- FEATURE: update manpage to describe the supported term types
0.2.1
=====
- BUGFIX: ppbert 0.2.0 showed its version number as "0.1.3"; now it prints the version defined in Cargo.toml
0.2.0
=====
- FEATURE: maps are now supported
- FEATURE: nil (empty list) now has its own BertTerm item
- FEATURE: ppbert returns 0 when all files have successfully parsed, 1 if at least one parsed incorrectly
- FEATURE: ppbert now has a man page
- FEATURE: ppbert now has release notes
0.1.3
=====
- FEATURE: ppbert now accepts filenames on the command-line, following the convention of most Unix tools
- BUGFIX: escaped characters are now correctly printed in hexadecimal notation