The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
0.1.2 (10 Decemeber 2008)

	* Switch from GPL to LGPL 2.1 license.
	* Implement x86-64 backend (Klaus Treichel).
	* Fix interpreter backend (Klaus Treichel, Aleksey Demakov).
	* Introduce jit-unwind interface (Aleksey Demakov, Klaus Treichel).
	* Code cache pages can now grow if needed (Aleksey Demakov).
	* Various fixes (Klaus Treichel, Aleksey Demakov, Juan Jesus Garcia
	  de Soria, Dalibor Topic, Arto Bendiken)

0.1.0 (3 March 2007)

	General improvements:

	* Add on-demand compilation driver (Aleksey Demakov, Klaus Treichel).
	* Add jit_function_from_vtable_pointer function (Klaus Treichel).
        * Add jit_insn_mark_breakpoint_variable function (Radek Polak).
	* Add signal handlers (Kirill Kononenko).
	* Add JIT_OPTION_POSITION_INDEPENDENT context option (not supported
	  by the backends yet) (Aleksey Demakov).
	* Add function indirectors (Klaus Treichel).
	* Allocate function redirectors and indirectors in the code cache
	  (Aleksey Demakov).
	* Use mmap to allocate executable memory where available
	  (Klaus Treichel).
	* Now can dump to any stream not just stdout and stderr (Radek Polak).
	* Use a global lock during context initialization (Aleksey Demakov).
	* Fix problems that take place after compilation is restarted on cache
	  page overflow (Aleksey Demakov).

	Register allocation/instruction selection improvements (Aleksey Demakov):

	* Completely rewrite register allocator. The new allocator works with
	  three-value intermediate instructions rather than with individual
	  values. This allows to fully analyze the effect of the instruction
	  and makes it possible to optimize commutative instructions and 
	  eliminate in some cases redundant register spills and loads.
	* Support three-address architectures.
	* Add register classes.
	* The allocator may now allocate scratch registers for instructions.
	* The allocator now automatically handles cases when a global register
	  is clobbered by the instruction (which may happen on the register
	  constrained x86 architecture).
	* Implement value coalescing for copy instructions.
	* Provide for efficient handling of x87 floating point stack.
	* Add gen-rules program that supersedes gen-sel. It generates code for
	  new register allocator and extends the syntax of instruction selection
	  rules to make use of new features such as register classes, scratch
	  registers, etc.

	Alpha:

	* Add Alpha backend (not yet fully functional) (Thomas Cort).

	x86:

	* Update x86 instruction selector for new register allocator and rules
	  syntax. Take advantage of their new features to generate better code
	  and/or simplify rules (Aleksey Demakov).
	* optimize code generated by throw_builtin, JIT_OP_THROW, JIT_OP_LOAD_PC
	  if the position-independent option is not set (Kirill Kononenko).
	* Implement JIT_OP_IMIN_UN, JIT_OP_ISIGN, JIT_OP_LSIGN, JIT_OP_IABS,
	  JIT_OP_LABS, JIT_OP_LOW_WORD, JIT_OP_EXPAND_INT, JIT_OP_EXPAND_UINT,
	  JIT_OP_INT_TO_NFLOAT, JIT_OP_UINT_TO_NFLOAT, JIT_OP_LONG_TO_NFLOAT,
	  JIT_OP_ULONG_TO_NFLOAT rules (Aleksey Demakov, Kirill Kononenko).
	* optimize loading of zero constants. (Aleksey Demakov).

	Interpreter:

	* The interpreter backend does not use register stack and register
	  allocator anymore (Aleksey Demakov).

0.0.6 (15 January 2006)

	x86:

	* Be careful when using EBX in cpuid instructions so as not to confuse
	  gcc in PIC mode (Rhys W).
	* Fixes to floating point instruction selection (Rhys Weatherley).
	* Some support for structure copying (Rhys Weatherley).
	* Pointer-relative loads and stores (Rhys Weatherley).
	* Correct the offset for long-form backwards branches (Evin Robertson).
	* Constant pointers in relative offset operations (Rhys Weatherley).
	* Merge in Mono's changes to jit-gen-x86.h (Aleksey Demakov).
	* Array loads and stores for floating point values (Aleksey Demakov).
	* Memcpy, memset, and memmove operations (Aleksey Demakov).
	* Return buffer problems in apply function with gcc 4.0.2 (Aleksey Demakov).

	x86-64:

	* Use the correct library entry point when calling jit_memcpy from
	  compiled code (Klaus Treichel).

	Interpreter:

	* Return area pointers (Rhys Weatherley).
	* Prevent double push of indirect function pointers (Rhys Weatherley).

	Function/instruction core:

	* Clear block addresses and fixup lists if a function restart is needed
	  (Evin Robertson).
	* Use destination type for store type, not source type (Evin Robertson).
	* Tail call implementation (Rhys Weatherley).
	* Address of constants (Avinash Atreya, Aleksey Demakov).
	* Functions for locating the proper start of a function in the cache
	  (Aleksey Demakov).
	* New exception type for array out of bounds (Aleksey Demakov).
	* Jump tables (Aleksey Demakov).
	* Intrinsics that return exception codes should be labeled "int" (Aleksy D).
	* Spill both parts of a register pair properly (Aleksey Demakov).
	* Fixes to freeing of register pairs (Aleksey Demakov).

	Dpas:

	* Throw builtin exceptions (Aleksey Demakov).
	* Implement array expressions (Avinash Atreya).

	Other:

	* Sample VM for demonstrating libjit (Norbert Bellow).
	* Debug interface for line numbers and breakpoints (Rhys Weatherley).
	* Man page formatting issues (Peter Lund).
	* Wrong return value in jit_function_apply_vararg (Evin Robertson).
	* Make debug dumping work with cygwin (Aleksey Demakov).
	* Option to force use on long double on Win32 (Aleksey Demakov).

0.0.4 (8 August 2004)

	* Pluggable object models.
	* Problems with "gen-apply" on Win32 systems.
	* Optimize "if true goto" into "goto".
	* Peephole optimization on branches.
	* Adjust ARM codegen macros to support branch elimination instructions.
	* Redesign exception handling to use "setjmp" everywhere.
	* Remove C++ code from "libjit.so" so that it is a pure C library.
	* Use computed goto's in the interpreter if the compiler supports them.
	* Don't allow conditional branches to jump out of exception contexts.
	* Block movement to allow initialization code to be moved to the start
	  of a function, or loop condition code to be moved to the end.
	* Rewrite the exception region routines to make them easier to use.
	* Add the "gen-sel" program, for creating instruction selectors.
	* Write instruction selectors for x86 and ARM (only x86 is enabled).
	* Portability fixes for ARM, PPC, Alpha, IA64, and amd64.
	* Clarify the description of LLVM, at the request of LLVM's author.
	* Deferred argument popping after function calls.
	* Add "--enable-interpreter" to force the interpreter to be used.
	* Implement a simple global register allocator based on usage counts.
	* Recognise increment and decrement idioms.
	* Align cache flushes properly (Miroslaw Dobrzanski-Neumann).
	* Querying of x86 cpuid where necessary.
	* Add a constant pool for ARM, to make constant loads more efficient.
	* Handle register pairs for 64-bit values properly.
	* Support for parameter areas on the stack, to reduce push/pop overhead.
	* Avoid unnecessary register spills if a value won't be used again.
	* Implement tail calls from a function to itself.
	* Optimize x86 prologs and epilogs to avoid doing unnecessry work.
	* Centralise the code that handles parameter passing.
	* Support for parallel builds.

0.0.2 (13 May 2004)

	* Function and instruction building API basics in place, in C and C++.
	* Operations include arithmetic, overflow checking, conversion,
	  mathematical (sin, sqrt, etc), branching, exception handling,
	  function calls, structure types, and arrays.
	* Up-front or on-demand compilation and re-compilation.
	* Interpreter at par with instruction building requirements.
	* x86 and ARM in early stages (not enabled yet).
	* Register allocation for register-based and stack-based architectures.
	* Nested functions.
	* Dynamic Pascal language is usable, suitable for writing test cases.
	* Beginnings of ELF support for eventual ahead-of-time compilation.