From d74f9df7ddd5e676bdf61eaec549707f51c27b3e Mon Sep 17 00:00:00 2001 From: David Majda Date: Sat, 21 Dec 2013 12:40:28 +0100 Subject: [PATCH] Make CHANGELOG.md less dense While the additional spacing makes lists with one-line items uglier, it also makes lists with multi-line items much more readable. --- CHANGELOG.md | 91 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 87 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a41b9fe..81f6b94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,30 +6,41 @@ Released: April 18, 2012 ### Big Changes * Added ability to pass options to `PEG.buildParser`. + * Implemented the `trackLineAndColumn` option for `PEG.buildParser` (together with the `--track-line-and-column` command-line option). It makes the generated parser track line and column during parsing. These are made available inside actions and predicates as `line` and `column` variables. + * Implemented the `cache` option for `PEG.buildParser` (together with the `--cache` command-line option). This option enables/disables the results cache in generated parsers, resulting in dramatic speedup when the cache is disabled (the default now). The cost is breaking the linear parsing time guarantee. + * The current parse position is visible inside actions and predicates as the `offset` variable. + * Exceptions thrown by the parser have `offset`, `expected` and `found` properties containing machine-readable information about the parse failure (based on a patch by Marcin Stefaniuk). + * Semantic predicates have access to preceding labels. [[GH-69](https://github.com/dmajda/pegjs/issues/69)] + * Implemented case-insensitive literal and class matching. [[GH-34](https://github.com/dmajda/pegjs/issues/34)] + * Rewrote the code generator — split some computations into separate passes and based it on a proper templating system (Codie). + * Rewrote variable handling in generated parsers in a stack-like fashion, simplifying the code and making the parsers smaller and faster. + * Adapted to Node.js 0.6.6+ (no longer supported in older versions). + * Dropped support for IE < 8. + * As a result of several optimizations, parsers generated by 0.7.0 are ~6.4 times faster and ~19% smaller than those generated by 0.6.2 (as reported by `/tools/impact`). @@ -38,28 +49,42 @@ Released: April 18, 2012 * Fixed reported error position when part of the input is not consumed. [[GH-48](https://github.com/dmajda/pegjs/issues/48)] + * Fixed incorrect disjunction operator in `computeErrorPosition` (original patch by Wolfgang Kluge). + * Fixed regexp for detecting command-line options in `/bin/pegjs`. [[GH-51](https://github.com/dmajda/pegjs/issues/51)] + * Generate more efficient code for empty literals (original patch by Wolfgang Kluge). + * Fixed comment typos (patches by Wolfgang Kluge and Jason Davies). [[GH-59](https://github.com/dmajda/pegjs/issues/59)] + * Fixed a typo in JavaScript example grammar. [[GH-62](https://github.com/dmajda/pegjs/issues/62)] + * Made copy & paste inclusion of the PEG.js library into another code easier by changing how the library is exported. + * Improved the copyright comment and the “Generated by...” header. + * Replaced `Jakefile` with `Makefile`. + * Added `make hint` task that checks all JavaScript files using JSHint and resolved all issues it reported. All JavaScript files and also generated parsers are JSHint-clean now. + * Fixed output printed during test failures (expected value was being printed instead of the actual one). Original patch by Wolfgang Kluge. + * Added a `/tools/impact` script to measure speed and size impact of commits. + * Various generated code improvements and fixes. + * Various internal code improvements and fixes. + * Improved `README.md`. 0.6.2 @@ -70,6 +95,7 @@ Released: August 20, 2011 ### Small Changes * Reset parser position when action returns `null`. + * Fixed typo in JavaScript example grammar. 0.6.1 @@ -91,13 +117,17 @@ Released: April 14, 2011 * Rewrote the command-line mode to be based on Node.js instead of Rhino — no more Java dependency. This also means that PEG.js is available as a Node.js package and can be required as a module. + * Version for the browser is built separately from the command-line one in two flavors (normal and minified). + * Parser variable name is no longer required argument of `bin/pegjs` — it is `module.exports` by default and can be set using the `-e`/`--export-var` option. This makes parsers generated by `/bin/pegjs` Node.js modules by default. + * Added ability to start parsing from any grammar rule. + * Added several compiler optimizations — 0.6 is ~12% faster than 0.5.1 in the benchmark on V8. @@ -105,16 +135,25 @@ Released: April 14, 2011 * Split the source code into multiple files combined together using a build system. + * Jake is now used instead of Rake for build scripts — no more Ruby dependency. + * Test suite can be run from the command-line. + * Benchmark suite can be run from the command-line. + * Benchmark browser runner improvements (users can specify number of runs, benchmarks are run using `setTimeout`, table is centered and fixed-width). + * Added PEG.js version to “Generated by...” line in generated parsers. + * Added PEG.js version information and homepage header to `peg.js`. + * Generated code improvements and fixes. + * Internal code improvements and fixes. + * Rewrote `README.md`. 0.5.1 @@ -127,8 +166,11 @@ Released: November 28, 2010 * Fixed a problem where “SyntaxError: Invalid range in character class.” error appeared when using command-line version on Widnows ([GH-13](https://github.com/dmajda/pegjs/issues/13)). + * Fixed wrong version reported by `bin/pegjs --version`. + * Removed two unused variables in the code. + * Fixed incorrect variable name on two places. 0.5 @@ -140,31 +182,49 @@ Released: June 10, 2010 * Syntax change: Use labeled expressions and variables instead of `$1`, `$2`, etc. + * Syntax change: Replaced `:` after a rule name with `=`. + * Syntax change: Allow trailing semicolon (`;`) for rules + * Semantic change: Start rule of the grammar is now implicitly its first rule. + * Implemented semantic predicates. + * Implemented initializers. + * Removed ability to change the start rule when generating the parser. + * Added several compiler optimizations — 0.5 is ~11% faster than 0.4 in the benchmark on V8. ### Small Changes * `PEG.buildParser` now accepts grammars only in string format. + * Added “Generated by ...” message to the generated parsers. + * Formatted all grammars more consistently and transparently. + * Added notes about ECMA-262, 5th ed. compatibility to the JSON example grammar. + * Guarded against redefinition of `undefined`. - * Made `bin/pegjs` work when called via a symlink ([issue - #1](https://github.com/dmajda/pegjs/issues/1)). - * Fixed bug causing incorrect error messages ([issue - #2](https://github.com/dmajda/pegjs/issues/2)). + + * Made `bin/pegjs` work when called via a symlink + ([issue #1](https://github.com/dmajda/pegjs/issues/1)). + + * Fixed bug causing incorrect error messages + ([issue #2](https://github.com/dmajda/pegjs/issues/2)). + * Fixed error message for invalid character range. + * Fixed string literal parsing in the JavaScript grammar. + * Generated code improvements and fixes. + * Internal code improvements and fixes. + * Improved `README.md`. 0.4 @@ -175,25 +235,38 @@ Released: April 17, 2010 ### Big Changes * Improved IE compatibility — IE6+ is now fully supported. + * Generated parsers are now standalone (no runtime is required). + * Added example grammars for JavaScript, CSS and JSON. + * Added a benchmark suite. + * Implemented negative character classes (e.g. `[^a-z]`). + * Project moved from BitBucket to GitHub. ### Small Changes * Code generated for the character classes is now regexp-based (= simpler and more scalable). + * Added `\uFEFF` (BOM) to the definition of whitespace in the metagrammar. + * When building a parser, left-recursive rules (both direct and indirect) are reported as errors. + * When building a parser, missing rules are reported as errors. + * Expected items in the error messages do not contain duplicates and they are sorted. + * Fixed several bugs in the example arithmetics grammar. + * Converted `README` to GitHub Flavored Markdown and improved it. + * Added `CHANGELOG`. + * Internal code improvements. 0.3 @@ -202,17 +275,26 @@ Released: April 17, 2010 Released: March 14, 2010 * Wrote `README`. + * Bootstrapped the grammar parser. + * Metagrammar recognizes JavaScript-like comments. + * Changed standard grammar extension from `.peg` to `.pegjs` (it is more specific). + * Simplified the example arithmetics grammar + added comment. + * Fixed a bug with reporting of invalid ranges such as `[b-a]` in the metagrammar. + * Fixed `--start` vs. `--start-rule` inconsistency between help and actual option processing code. + * Avoided ugliness in QUnit output. + * Fixed typo in help: `parserVar` → `parser_var`. + * Internal code improvements. 0.2.1 @@ -229,6 +311,7 @@ Released: March 8, 2010 * Added `Rakefile` that builds minified runtime using Google Closure Compiler API. + * Removed trailing commas in object initializers (Google Closure does not like them).