0.7.0 (2012-04-18)
------------------

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]
* Implemented case-insensitive literal and class matching. [GH-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).

Small Changes:

* Fixed reported error position when part of the input is not consumed. [GH-48]
* Fixed incorrect disjunction operator in |computeErrorPosition| (original patch
  by Wolfgang Kluge).
* Fixed regexp for detecting command-line options in /bin/pegjs. [GH-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]
* Fixed a typo in JavaScript example grammar. [GH-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 (2011-08-20)
------------------

Small Changes:

* Reset parser position when action returns |null|.
* Fixed typo in JavaScript example grammar.

0.6.1 (2011-04-14)
------------------

Small Changes:

* Use --ascii option when generating a minified version.

0.6.0 (2011-04-14)
------------------

Big Changes:

* 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-ine 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.

Small Changes:

* 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 (2010-11-28)
------------------

Small Changes:

* Fixed a problem where "SyntaxError: Invalid range in character class." error
  appeared when using command-line version on Widnows (GH-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 (2010-06-10)
----------------

Big Changes:

* 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).
* Fixed bug causing incorrect error messages (issue #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 (2010-04-17)
----------------

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 (2010-03-14)
----------------

* 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 (2010-03-08)
------------------

* Added "pegjs-" prefix to the name of the minified runtime file.

0.2 (2010-03-08)
----------------

* Added Rakefile that builds minified runtime using Google Closure Compiler API.
* Removed trailing commas in object initializers (Google Closure does not like
  them).

0.1 (2010-03-08)
----------------

* Initial release.
