0.1.5.1 (27 January 2006)
-------------------------
Patch to make phc compile on systems with old versions of Flex. 

0.1.5 (26 January 2006)
-----------------------
This is mainly a clean-up release. Lots of minor improvements and bug fixes. The
most important improvements ones are mentioned below.

* Changed the license from GPL to BSD. Detailed licensing information can be
  found in the directory "license".
* Made the parser re-entrant (removed all globals). This is the first step
  towards an implementation of "include". However, this feature is still
  EXPERIMENTAL.
* Added automated testing (both regression tests and unit tests). "make test"
  will run all test and show how many passed/failed. To get verbose output, run
  "make verbose-test" instead. You will need PHP5 to run the tests. Made a few
  minor changes to the code to make regression tests possible.
* Changed the build process; source files generated by tools (flex, bison, 
  gperf or gengetopt) are now create in the directory "generated/". All of these
  files are included in the release tarballs, so that users will only need gcc
  to compile phc (and don't need flex, bison, gperf or gengetopt). Also, object
  files are created in the directory "build/", to avoid cluttering up the root
  directory.
* Added a new make target "phc-nogc" which will build a version of phc with no
  garbage collector built-in. Make sure to run "make cleanall" before switching
  from "make phc" to "make phc-nogc" and back.
* Minor modification to the grammar: arguments to static local variable
  declarations in methods are optional.
* Modified the DOT unparser to give slightly better readable output
  (distinguishes booleans from Tokens graphically and optionally inserts line
  numbers if the option --use-line-numbers is passed to phc)
* Upgraded the garbage collector to version 6.6.

This release incorporates the following bug fixes:

* Unary plus (e.g, +$x) caused the parser to crash.
* Due to an uninitialised (private) variable in AST_variable, variables were
  sometimes recognised as method invocations instead (sometimes this crashed the
  parser, too)
* Calls to "echo" now generate calls to "echo", rather than "print". Moreover,
  extraneous brackets in the arguments to echo (and similar built-ins) are
  avoided.
* Class attributes were not given a dollar sign by the PHP unparser.
* The PHP unparser wasn't unparsing complex function names correctly (function
  names that are actually expressions)
* Throw statements were not terminated by a semi-colon by the unparser
* Sometimes reference assignments were recognised as "global" statements
* \" in HEREDOC strings should be interpreted as two characters, rather than
  just one (") - i.e., " does not need to be escaped in HEREDOC strings.
* HEREDOC strings were not dealt with in a binary safe way.
* Windows style newlines were still not handled perfectly (especially at the end
  of a script)
* The generated syntax tree was not strictly linear (some nodes in the tree were
  "shared" by multiple parent nodes)
* Older versions of Bison wrote their output to the wrong directory; the output
  of bison is now explicitly specified.

0.1.4 (9 January 2006)
----------------------

* "global" declarations are no longer explicitly represented in the tree. See
  "Converting PHP" for a detailed explanation of how they are now represented. 
* Added deep_clone methods to all classes in the Object hierarchy.
* Bug fix: __METHOD__ crashed the parser 
* Bug fix: Line numbers weren't counted properly
* Replaced the single SCALAR terminal symbol in the grammar by five separate
  terminal symbols (INT, REAL, STRING, BOOL, and NULL). Updated the class
  hierarchy, tree transform API, parser and unparser and documentation to
  reflect this change. Note that the structure of all Token_xxx classes have
  changed; they no longer inherit from String, but have an attribute called
  "value" instead, which will be of type String for most (but not all) tokens.
  Refer to the grammar formalism (or ast.h) for details.
* Removed the transform_children methods for the token symbols from the tree
  transform class (tokens do not have children).
* Modified the tree transform API so that if a pre transform returns a new
  node, phc will call the pre transform _again_ on that new node. This is
  detailed in the completely rewritten tutorial 3.
* Renamed FUNCTION_NAME to METHOD_NAME and function_call to method_invocation
  to bring the terminology in line with the rest of phc.
* Updated "Converting PHP" so that it explains variable and function targets.
  Also, the explanation of variables in the old tutorial 3 has been moved here.
* Documented the _implementation_ of the tree transform API. Also wrote an
  article "Memory layout for Multiple and Virtual Inheritance" to provide some
  background information. 

0.1.3 (1 December 2005)
-----------------------
Fixed a few bugs:
* Null vectors are now unparsed properly by the dot unparser
* RETURN and RETURN_OP in the lexer were broken (i.e, --dump-tokens wasn't
  working) - they were referring to source column numbers that we no longer keep
  track off.
* We now deal with Windows-style line-breaks.

0.1.2 (17 November 2005)
------------------------
Added functionality to the TreeTransform API to enable the programmer to change
the order in which the children of a node are visited, avoid visiting some
children, or execute a piece of code in between visiting two children.

0.1.1 (2 November 2005)
-----------------------
Fixed a bug in the lexer (PHP in-string syntax).

0.1 (29 September 2005)
-----------------------
First release.
