diff --git a/CHANGELOG.md b/CHANGELOG.md index 8637ce2..2212735 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,75 @@ Change Log This file documents all notable changes to PEG.js. The releases follow [semantic versioning](http://semver.org/). +0.9.0 +----- + +Released: August 30, 2015 + +### Major Changes + + * **Tracing support.** Parsers can be compiled with support for tracing their + progress, which can help debugging complex grammars. This feature is + experimental and is expected to evolve over time as experience is gained. + [More details](https://github.com/pegjs/pegjs/commit/da57118a43a904f753d44d407994cf0b36358adc) + + * **Infinite loop detection.** Grammar constructs that could cause infinite + loops in generated parsers are detected during compilation and cause errors. + + * **Improved location information API.** The `line`, `column`, and `offset` + functions available in parser code were replaced by a single `location` + function which returns an object describing the current location. Similarly, + the `line`, `column`, and `offset` properties of exceptions were replaced by + a single `location` property. The location is no longer a single point but a + character range, which is meaningful mainly in actions where the range + covers action’s expression. + [More details](https://github.com/pegjs/pegjs/compare/e75f21dc8f0e66b3d87c4c19b3fcb8f89d9c3acd...eaca5f0acf97b66ef141fed84aa95d4e72e33757) + + * **Improved error reporting.** All exceptions thrown when generating a parser + have associated location information. And all exceptions thrown by generated + parser and PEG.js itself have a stack trace (the `stack` property) in + environments that support `Error.captureStackTrace`. + + * **Strict mode code**. All PEG.js and generated parser code is written using + [JavaScript strict mode](https://developer.mozilla.org/cs/docs/Web/JavaScript/Reference/Strict_mode). + +### Minor Changes + + * Labels behave like block-scoped variables. This means parser code can see + labels defined outside expressions containing code. + + * Empty sequences are no longer allowed. + + * Label names can’t be JavaScript reserved words. + + * Rule and label names can contain Unicode characters like in JavaScript. + + * Rules have to be separated either by `;` or a newline (until now, any + whitespace was enough). + + * The PEG.js grammar and all the example grammars were completely rewritten. + This rewrite included a number of cleanups, formatting changes, naming + changes, and bug fixes. + + * The parser object can now be accessed as `parser` in parser code. + + * Location information computation is faster. + + * Added support for Node.js >= 0.10.x, io.js, and Edge. Removed support for + Node.js < 0.10.x. + +### Bug Fixes + + * Fixed left recursion detector which missed many cases. + + * Fixed escaping of U+0100—U+107F and U+1000—U+107F in generated code and + error messages. + + * Renamed `parse` and `SyntaxError` to `peg$parse` and `peg$SyntaxError` to + mark them as internal identifiers. + +[Complete set of changes](https://github.com/pegjs/pegjs/compare/v0.8.0...v0.9.0) + 0.8.0 -----