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.
