Parser

The current parser used in Pris is a hand-written parser. See src/parser.rs for more information.

Previously, a parser generated by lalrpop was used. This parser was replaced mainly because of the long compile times caused by lalrpop and its many dependencies. The opportunity for better error messages and reduced binary size are other advantages.

Build time

Build times on Rust 1.19.0-beta.1, median and standard deviation of 3 clean builds, excluding crate download time:

Version Mode Build time (s)
b504558 debug 83.2 ± 2.2
4bb1e60 debug 16.2 ± 0.5
b504558 release 225.9 ± 3.9
4bb1e60 release 36.8 ± 1.9

b504558 is the lalrpop-based revision, 4bb1e60 uses the new parser.

Binary size

The binary size for a release build, after stripping:

Version Binary size (KiB)
b504558 1644.0
4bb1e60 1380.0

That is almost a 20% reduction in binary size.