ppbert 0.9.0

Simple pretty printer for Erlang's External Term Format
Documentation
# 0.9.0
- `bert-convert` has been removed; I never used it, and it wasn't getting the love it deserved.
- `ppbert` now uses `getopts` for command-line parsing.
- Removing `rayon` and `clap` makes builds much faster, a nearly 3x speed-up on my machine.


# 0.8.5
## Bug fixes
- 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.
## Performance improvements
- Use `ryu` to print floating point numbers.

# 0.8.4
## Bug fixes
  - Ensure that `ppbert` exits when a BrokenPipe error is encountered.
## Performance improvements
  - Wrap `stdout` in a `BufWriter`; this improves the performance of outputting as Erlang by 2x and JSON by 1.15x.


# 0.8.3
## New features
  - The parsing and the prettying printing for .bert2 and disk_log files are interleaved
  - The filename is included in verbose messages (e.g., how long the parsing took)


# 0.8.2
## New features
  - Add `-t` as a short-hand for `--transform-proplists`


# 0.8.0
## API change
  - Replace `BertTerm::dump_term` with `BertTerm::write_as_bert`.
## Other changes
  - Add API documentation in bertterm


# 0.7.0
## Performance improvement
  - Use `itoa` crate to write integers a bit faster.
  - Use `fs::read` to read input files almost two times faster.
  - Remove some heap allocations.
## API change
  - Simplify pretty printing API: `BertTerm` has two new functions, `write_as_erlang` and `write_as_json`, they accept an io::Write object.
  - The structs `PrettyPrinter` and `JsonPrettyPrinter` are no longer public.


# 0.6.1
## Performance improvement
  - 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
## New features
  - 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
## Performance improvement
  - 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
## Tooling changes
  - Added a small shell script, build_musl.sh, to create a musl binary.


# 0.5.0
## Interface changes
  - clap's extra features (e.g., flag name suggestions) have been removed.
  - A warning's format was changed to conform to usual Unix style.
  - The 's' (for 'seconds') after times in verbose mode has been removed.
  - The time required to read a file has been added to ppbert's verbose mode.


# 0.4.2
## Bug fixes
  - A parse error in bert-convert will show an error message rather than panic.
  - Piping ppbert into another command will not cause a broken pipe error if the stream is not consumed entirely.


# 0.4.1
## New features
  - A new binary, bert-convert, was added to convert bertconf's .bert files to rig's .bert2 files.


# 0.4.0
## Performance improvements
  - A number of micro-optimizations have been applied to the parser; in our tests, parsing is now nearly twice as fast as before.
## Interface changes
  - 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
## Bug fixes
  - Ensure that only strings, binaries, and atoms are used as keys in a proplist.


# 0.3.0
## New features
  - The `-j/--json` flag can be used to output JSON rather than Erlang terms.
  - The `--transform-proplists` flag can be used to output Erlang proplists as JSON objects.
## Interface changes
  - The `-s/--skip-pretty-print` has been renamed to `-p/--parse`.


# 0.2.6
## Bug fixes
  - fix bug where `--verbose` would not print the parse time if `--skip-pretty-print` was set.


# 0.2.5
## New features
  - add support for .bert2 files.
## Bug fixes
  - fix the times reported by the `--verbose` flags were wrong; the leading zeros were missing.


# 0.2.4
## New features
  - add command-line flag (-v) to show how long each phase (parsing and pretty printing) takes.
  - add command-line flag (-s) to stop after parsing.
## Improvements
  - improve performance of the parsing methods for atoms,
      strings, and binaries by avoiding bounds checking.


# 0.2.3
  - Improve performance of pretty printer


# 0.2.2
## New features
  - add command-line option (-i) to control the indentation width
  - add command-line option (-m) to control the maximum number of basic terms on a single line
  - update manpage to reflect new command line options
  - update manpage to describe the supported term types


# 0.2.1
## Bug fixes
  - ppbert 0.2.0 showed its version number as "0.1.3"; now it prints the version defined in Cargo.toml


# 0.2.0
## New features
  - maps are now supported
  - nil (empty list) now has its own BertTerm item
  - ppbert returns 0 when all files have successfully parsed, 1 if at least one parsed incorrectly
  - ppbert now has a man page
  - ppbert now has release notes


# 0.1.3
## New features
  - ppbert now accepts filenames on the command-line, following the convention of most Unix tools
## Bug fixes
  - escaped characters are now correctly printed in hexadecimal notation