Do not create empty hashes in get_X_keyed_str vtables
[parrot.git] / NEWS
blobfb42ac69f742b43010c62789dffa2182f3865580
1 # $Id$
3 New in 2.7.0
4 - Core
5   + cleanups in packfile and freeze/thaw handling
6   + Hash optimizations that improve HLL startup and run time
7   + As always, many bug fixes and other optimizations
8 - Runtime
9   + some runtime library cleanups
10 - Testing
11   + added more tests to improve coverage
12   + new codingstd test for documentation in .pmc files
13 - Documentation
14   + added documentation to .pmc files (some still missing but headers in place)
15   + general documentation improvements and bringing up-to-date
16 - NQP-rx
17   + Updated version included from http://github.com/perl6/nqp-rx includes
18     speed improvements
20 New in 2.6.0
21 - Core
22   + Plug some memory leaks
23   + As always, bug fixes and some optimizations
24 - Runtime
25   + added (experimental) URI::Escape
26 - Testing
27   + Improved test coverage of core parrot
28 - Documentation
29   + Updated the Squaak tutorial to use modern NQP-rx and PCT
30 - Platforms
31   + The Fedora package 'parrot-devel' install the files for syntax-highlighting
32     and automatic indenting for the vim editor
33 - NQP-rx
34   + Updated version included from http://github.com/perl6/nqp-rx includes
35     new or improved: regex backtracking, named assertions, interactive mode,
36     and setting (a minimal but useful runtime library)
38 New in 2.5.0
39 - Core
40   + Added ByteBuffer PMC to allow direct byte manipulation
41   + Modified some PMC vtable functions to reduce complexity, simplifying coverage.
42   + Modified PAST to generate symbolic PASM constants in PIR output.
43   + General STRING API cleanups
44   + Increased test coverage of core PMCs
45   + Fixed up 'exit' opcode, added CONTROL_EXIT exception type.
46   + Experimental 'unroll' opcode renamed to 'finalize'
47 - NQP-rx
48   + Added proper support for multisubs and multimethods
49   + Fixed sigspace handling ** quantifier in regexes
50   + Added \e strings
51   + Added use of inversion lists for charclass lists in regexes
52 - Platforms
53   + EPEL (Extra Packages for Enterprise Linux) packages for RHEL6.beta are available
54 - Begin moving towards Lorito, the ops refactor to enable pervasive self-hosting and JIT compilation.
55   + All ops are now built with the self-hosted opsc compiler.
56   + For more Information about Lorito see:
57       http://trac.parrot.org/parrot/wiki/Lorito
58       http://trac.parrot.org/parrot/wiki/LoritoRoadmap
60 New in 2.4.0
61 - Core
62   + Various long-standing bugs in IMCC were fixed
63   + STRINGs are now immutable.
64   + use STRINGNULL instead of NULL when working with strings
65   + Fixed storage of methods in the NameSpace PMC
66   + Added :nsentry flag to force method to be stored in the NameSpace
67   + Added StringBuilder and PackfileDebug PMCs
68   + Added experimental opcodes find_codepoint and unroll
69 - Compilers
70   + Fixed reporting of line numbers in IMCC
71   + Removed deprecated NQP compiler, replaced with new NQP-RX
72   + Removed NCIGen compiler
73 - Deprecations
74   + Tools to distribute on CPAN were removed
75   + Deprecated dynpmcs have been removed to external repositories
76   + Removed RetContinuation PMC
77   + Removed CGoto, CGP, and Switch runcores
78 - Tests
79   + Many tests for the extend/embed interface were added
80   + done_testing() is now implemented in Test::More
81 - Tools
82   + The fakexecutable tapir is renamed parrot-prove
83   + Performance fixes to the pbc_to_exe tool
84   + Fix data_json to work outside of trunk
85   + The dynpmc GzipHandle (zlib wrapper) was added
86   + The library Archive/Tar.pir was added.
87   + The library Archive/Zip.pir was added.
88   + The libraries LWP.pir, HTTP/Message.pir & URI.pir were added.
89 - Miscellaneous
90   + Six Parrot-related projects accepted to GSoC
91   + Improve use of const and other compiler hints
93 New in 2.3.0
94 - Core
95   + Allow passing parameters to the dynamic linker ('dlopen' improved)
96   + loadlib opcode added
97   + Calling conventions are now much more consistent, and follows natural
98     semantics of handling arguments and return values
99   + Recursive make for src/dynpmc removed
100   + Datatype STRINGNULL for a single Null STRING added
101   + config_lib.pasm replaced with config_lib.pir
102 - Platforms
103   + Improved handling of new compilers
104   + Cygwin packages will be updated again with Parrot releases
105   + Fedora packages add desktop files
106   + gzip and bzip2 compressed tar files for releases
107 - Tools
108   + tapir executable added; tapir is a TAP test harness
109   + Added TAP options --merge --ignore-exit
110 - Miscellaneous
111   + 3 month cycle for supported releases
112   + Review and vote of GSoC applications
114 New in 2.2.0
115 - Core changes
116   + Most internal allocations now use the GC
117   + RNG non-randomnes fixes
118   + Elimination of much dead code
119 - API changes
120   + PMCs can now be initialized from an int
121   + Many legacy ops are removed
122 - Platforms
123   + Sun cc and Intel icc support have been restored
124   + Compiler invocation no longer goes through a Perl script
125 - Tools
126   + NCI thunks are now generated by self-hosted PIR code
128 New in 2.1.0
129 - Core changes
130   + GC performance and encapsulation were greatly improved.
131   + PMC freeze refactored.
132   + More Makefile and build improvements.
133 - API Changes
134   + The Array PMC was removed.
135   + Several deprecated vtables were removed.
136   + The OrderedHash PMC was substantialy improved.
137 - Platforms
138   + Packaging improvements on some operating systems.
139 - Tools
140   + Some cases in pbc_merge are now handled.
141   + Improvements were made to the dependency checker.
142   + New tool nativecall.pir added.
144 New in 2.0.0
145 - Features
146   + Context PMCs now support attribute-based introspection
147   + Context and CallSignature PMCs merged into CallContext
148   + .lex directive throws exceptions when used with incorrect register types
149 - Platforms
150   + Packaging improved for free OS distributions
151   + PPC, PPC64, and ARM now tested when running Linux
152 - Performance
153   + Minor improvements to the profiling runcore
154   + Improvements from the CallContext PMC merge
155 - New deprecations
156   + In/out parameters in STRING modification functions
157   + Void handling in NCI signatures
158   + Parameter passing opcodes order in PBC
159 - Tests
160   + Continued migration of core tests from Perl 5 to PIR
161 - Tools
162   + dependency checker improved
163 - Miscellaneous
164   + Deprecation cycle length changed to three months from six
165   + GC accuracy improved
166   + PMC freeze improvements; much more reliable
167   + Makefile improvements for dependency handling
169 New in 1.9.0
170 - Core
171   + Made profiling runcore output format configurable and extensible
172     options include "pprof" and "none" ("binary" and "callgrind" are planned)
173   + Added environment variables to specify profiling output type and filename
174     (PARROT_PROFILING_OUTPUT and PARROT_PROFILING_FILENAME)
175   + Began merging Freeze/Thaw and Bytecode generator/loader
176 - Compilers
177   + Included latest nqp-rx compiler, with many improvements
178     - GLOBAL:: package identifier
179     - dynamic variables look in global namespace
180     - $obj."$method" syntax
181     - :p(os) and :c(ontinue) option on regexes
182     - try/CATCH/CONTROL handling
183     - support leading & on subroutine declarations
184     - allow "category:<symbol>" names (for builtin operators)
185     - simple version of smartmatch operator
186     - simple regex matches
187     - updated HLL::Compiler with new import/export methods
188 - Miscellaneous
189   + Portability updates for RTEMS, and Intel architectures with GNU compilers
190   + Completed conversion of ticket tracking system from RT to Trac
191   + New draft of PDD31 for HLL export API and import implementation
192   + Several (build time, runtime) performance improvements
193   + Converted many tests to PIR, reducing test execution time
194   + Various bugfixes, code cleanups, and coding standard fixes
196 New in 1.8.0
197 - Functionality
198   + The FileHandle PMC now exposes the exit code of child process that was run as pipe.
199   + Experimental support for overriding VTABLE invoke in PIR objects was added.
200   + The method 'type' was added to the PackfileAnnotations PMC.
201   + The internals of the parrot calling conventions, PCC, were reworked.
202     All call paths now use a CallSignature object for passing arguments and return values.
203   + The new API-function  'Parrot_ext_call' was added for calling into C-land.
204   + The fixed-size allocator was improved.
205   + The files installed by 'make install-dev' are now covered by 'make install' as well.
206   + The experimental ops 'fetch' and 'vivify' were added.
207   + The -I option to the command 'parrot' now prepends items to the search path.
208   + The Context struct was substituted with auto attributes (context_auto_attrs branch).
209   + Use the osname determined in auto::arch in subsequent configuration steps (convert_OSNAME branch).
210   + Eliminated dependence on Perl 5 '%Config' in auto::format (auto_format_no_Config branch).
211   + MultiSub PMCs now stringify to the name of their first candidate,
212     instead of the number of candidates.
213   + The platform detection at the start of the configuration process was improved.
214   + The 'lineof' method on CodeString objects now precomputes line number information
215     to be more efficient on variable-width encoded strings.
216   + P6object now supports .WHO and .WHERE methods on protoobjects.
217 - Compilers
218   + A shiny new self-hosting implementation of NQP has been added in ext/nqp-rx.
219     - New NQP available as nqp-rx.pbc or parrot-nqp fakecutable.
220     - NQP includes direct support for grammars and regexes, including protoregexes.
221     - NQP has a new PAST-based regex engine (intended to replace PGE).
222     - Regexes may contain code assertions, parameters, lexical declarations, and more.
223     - Double-quoted strings now interpolate scalar variables and closures.
224     - Subroutine declarations are now lexical by default.
225   + PCT
226     - PAST::Block now supports an 'nsentry' attribute.
227     - PAST::Var allows 'contextual' scope.
228     - Attribute bindings now return the bound value.
229 - Platforms
230   + Fixes for the port of Parrot to RTEMS were applied. Yay, first port to a real time OS!
231   + On NetBSD, shared libs are now used.
232 - Performance
233   + Use the the fixed-sized allocator in the Context and the CallSignature PMC.
234   + Many small speed improvements.
235 - New deprecations
236   + MT19937, the Mersenne twisted pseudorandom number generator, is now hosted on github and
237     will be removed from the Parrot core. (eligible in 2.1)
238   + The 'Parrot_call_*' functions for invoking a sub/method object from C are
239     deprecated. They are replaced by 'Parrot_ext_call'. (eligible in 2.1)
240   + All bitwise VTABLE functions are deprecated. (eligible in 2.1)
241   + All bitwise ops will become dynops. (eligible in 2.1)
242 - Realized deprecations
243   + The slice VTABLE entry was removed.
244   + The last traces of the 'malloc' garbage collector were removed.
245   + Parrot_pcc_constants() was renamed to Parrot_pcc_get_constants().
246   + The deprecated functions from the Embedding/Extension interface were removed.
247   + The library YAML/Parser/Syck.pir was removed.
248   + The VTABLE function instantiate_str() was removed.
249   + Building of parrot_nqp was removed.
250 - Tests
251   + The test coverage of the time-related ops was much improved.
252   + New testing functions in Test::More: lives_ok() and dies_ok().
253   + The Perl 5 based test scripts t/op/bitwise.t, t/op/comp.t, t/op/inf_nan.t,
254     t/op/literal.t, t/op/number.t, t/op/sprintf2.t, and t/op/00ff-dos.t were converted to PIR.
255   + The test scripts t/op/annotate.t and t/op/time.t have begun
256     to be translated from Perl 5 to PIR.
257   + In some tests the dependency on %Config from Perl 5 was eliminated.
258 - Documentation
259   + The meaning of 'p' means in NCI function call signatures was clarified.
260 - Tools
261   + The stub for a new language, as created by mk_language_shell.pl,
262     now relies on the PIR-based tools, which are replacing the Perl 5-based tools.
263   + The library Configure.pir was added.
264   + The library distutils.pir was added.
265 - Miscellaneous
266   + The mailing list parrot-users and a corresponding google group was created,
267     http://groups.google.com/group/parrot-users.
268   + Many bugfixes, code cleanups, and coding standard fixes.
270 New in 1.7.0
271 - Functionality
272   + Parrot_capture_lex has been added to the PARROT_EXPORT API
273   + PARROT_MAX_ARGS has been increased from 8 to 16 to allow for ops that take more than 8 args
274 - Performance
275   + The profiling runcore now caches metadata for improved performance
276 - Maintenance and cleanup
277   + Expanded the Parrot debugger documentation
278   + Parrot debugger now uses the new Parrot STRING API
279   + Continue to port rest of internals to use the STRING API
280 - Deprecations
281   + The JIT subsystem has been removed and is being written from the ground up. More
282     information can be found at https://trac.parrot.org/parrot/wiki/JITRewrite
283   + Implicit optional named parameters (eligible in 2.1)
284   + Continuation-based ExceptionHandlers (eligible in 2.1)
285   + Use of undocumented variables in class_init (eligible in 2.1)
286   + Parrot_oo_get_namespace (eligible in 2.1)
287 - Bugfix
288   + Improved line number tracking in IMCC
289 - Tests
290   + Converted many more Perl 5 tests to PIR
291   + Expanded test coverage of the CallSignature, Namespace, FixedPMCArray,
292     ResizeableIntegerArray and ExceptionHandler PMCs
294 New in 1.6.0
295 - Functionality
296   + Added a fixed-size structure allocator to the Garbage Collector
297   + Added a "lazy" mode to the PObj and Fixed-Size memory allocators
298   + Added a profiling runcore, which generates Callgrind-compatible output
299   + Added lexical subsystem opcodes: find_dynamic_lex, store_dynamic_lex
300   + Converted Contexts to garbage-collectable PMC structures
301   + Created a new Context API
302   + Enhanced the PMC allocator to automatically allocate ATTR structures
303 - Performance
304   + Optimized opcodes to cache the current Context for subsequent lookups
305   + Reduced string comparisons in VTABLE_isa
306 - Maintenance and cleanup
307   + Began proper encapsulation of STRING API
308   + Unified all PMC destruction functions
309   + Unified Continuation PMC and Parrot_cont structure
310   + Unified Sub PMC and Parrot_sub structure
311   + Removed PMC_EXT structure
312   + Removed PMC_Sync from PMC
313   + Removed UnionVal from PMC structure
314 - Bugfix
315   + Fixed several stack-walking bugs in Garbage Collector code
316   + Fixed bug when copying a NULL STRING, now returns empty STRING struct
317 - Tests
318   + Converted several Perl5 tests to PIR
319   + Expanded test coverage of NameSpace PMC
320 - Compilers
321   + Made Parrot Compiler Toolkit available in the base install
323 New in 1.5.0
324 - Core
325   + Removed several deprecated functions and features
326   + Removed bsr, jsr, branch_cs, and ret opcodes
327   + Removed global stacks system
328   + Changed OPS file format to include explicit preamble
329   + Changed all "new 'Iterator'" instructions into 'iter' instructions
330   + Removed Configure.pl options for specifying non-working GC cores
331   + Removed unexecuting code as found by Coverity
332   + Improvements to the Parrot Debugger
333   + Added experimental fixed-size structure allocator to the GC
334   + Added experimental lazy arena allocation to the GC
335   + Refactored hashes, keys, and iterators
336   + Added "corevm" make target to build Parrot without all the supporting libraries
337   + Removed Random PMC type and added in a "rand" dynop
338   + Optimization and Improvements to the NCI thunk generator
339   + New include file libpaths.pasm
340 - Compilers
341   + Multiple .local with same name and different type is now an error on IMCC.
342 - Platforms
343   + Improved support for detecting Fink and Macports
344   + Updated search directories for libraries
345 - Documentation
346   + "Parrot Developers Guide: PIR" released to publisher and available to purchase
347   + Improved documentation about Parrot Debugger
348   + Update PGE Documentation
349 - Miscellaneous
350   + Deprecate 'PASM1' compiler object, update to warn instead of segfault
351   + Added tests
352   + Fixes to code, documentation, and standards
354 New in 1.4.0
355 - Core
356   + Key and Iterator refactor
357   + Major pbc_to_exe generated code speed improvement
358   + New "Infinite Memory" GC core for demonstration purposes
359   + gc_debug runcore and GC-related heisenbug fixes
360   + Elimination of variable expansion in parrot_config
361   + CLI arguments are processed as Unicode by default
362   + Substantial optimizations in NCI
363   + Parrot builds on Win64
364   + Hashes can use native types as keys and values
365   + Fixed installed pbc_to_exe
366   + Simplification of PMC generation code
367   + Improved GC encapsulation and API documentation
368 - Documentation
369   + List of candidates for embedding API (docs/embed.pod)
370   + PIR book sent to publisher
371 - Testing
372   + Several conversions of Perl test to pure PIR.
373   + C indentation coding standards test improvement
374   + Improved test coverage of example code
375 - Deprecations
376   + Removal of PGE rules: <null> <fail> <sp> <lt> <gt> <dot>
377   + Removal of PGE methods: .text .item .result_object
378   + Deprecation of most dynops
379 + Miscellaneous
380   + Beginnings of OpenGL::Math library; OpenGL bindings and library marked experimental
381   + Localizing and consting fixes
382   + Many memory and thread-related leaks plugged
384 New in 1.3.0
385 - Core
386   + Optimized parts of the IO system
387   + Fixed inheritance hierarchy of FileHandle and Socket PMC types
388   + Fixed leaks involving subroutines and Parrot_Context
389   + Cleaned up and refactored GC internals, including fixes and optimizations
390   + Optimized PMC class manipulations to use type numbers instead of string names
391   + Fixed problems involving hashval calculations in strings
392   + Removed unnecessary MULTI dispatches in built-in PMCs
393   + Fixed memory leaks involving PMCs that were not properly destroyed
394   + Fixed creation of PMCProxy PMCs in correct namespaces
395   + Added preliminary Pipe support
396   + Fixed cloning of Object PMCs
397   + Added root_new opcode
398   + Added initial versions of Packfile PMCs with read/write capabilities
399 - Compilers
400   + Fixed several memory leaks in IMCC
401   + Updated PCT to use root_new opcode
402   + Added support for keyword "self" in NQP
403 - Documentation
404   + Improved and expanded /docs/book
405   + Updated project documentation
406   + Defined 'experimental' status and procedures in DEPRECATED.pod
407 - Miscellaneous
408   + Cleaned code and improved code-level documentation
409   + Various bugfixes, code cleanups, and coding standard fixes
410   + Added an experimental compiler library to help use PIR libraries from HLLs
411   + Updated OpenGL library and examples to support experimental HLL import
413 New in 1.2.0
414 - Core
415   + Fixes for pir classes inheriting from core pmcs.
416   + Cleaned up headers and reorganized some sources into subsystem directories.
417   + Clean up PMCs so libparrot.so exports far fewer vtable/method symbols.
418   + Clean up the GC API.
419   + Several unicode identifier improvements in IMCC.
420 - Deprecations
421   + Protoobject stringification is gone.
422 - Documentation
423   + Rewrite several core documents.
424   + Many reworks, improvements & additions to the Parrot Book.
425   + Installation PDD is launched out of draft.
426 - Tools
427   + Fixes for running the language shell generator outside the parrot tree.
428   + Several fixes for developing and building HLLs from an installed parrot.
429   + Configure.pl now has a --no-line-directives option to ease source level debugging.
430 - Miscellaneous
431   + Portability updates for macports, netbsd, mingw32, hpux.
432   + Several (build time, runtime) performance improvements.
433   + Lots of updates to examples and tests.
434   + Various bugfixes, code cleanups, and coding standard fixes.
436 New in 1.1.0
437 - Core
438   + Added op: load_language, find_caller_lex
439   + Socket IO are back as PMC
440   + Refactor some PMC: Hash, ManagedStruct
441   + Refactor GC API
442 - Compiler
443   + PGE
444     - Allow \x, \c, and \o in enumerated character classes (incl ranges)
445     - Add initial greedy-only version of ** <exp> quantifier
446   + PCT
447     - Add HLL source line bytecode annotations
448     - Add another dumper format to assist syntax highlighters
449     - Revise mk_language_shell.pl to updated create_language.pl
450 - Deprecations
451   + Removed ops: gcd, exec, classname, need_finalize, runinterp, substr_r
452   + Removed dynamic op: mul
453   + Removed .HLL_map directive; use interp's .hll_map() instead
454   + Removed PMCs: slice, bound_nci, ref
455   + Removed Configure.pl option: --pmc
456   + Removed PMC union struct
457 - Documentation
458   + Book
459     - Reorganization and many improvements & additions
460 - Tools
461   + Add a parrot-fuzzer
462 - Miscellaneous
463   + Improve Debian/Ubuntu package
464   + various bugfixes, code cleanups, and coding standard fixes
467 New in 1.0.0
468 - Documentation
469   + New user documentation for exceptions.
470   + Updates to Chapters 4 & 5 of the Parrot book.
471   + Improved and expanded generated HTML documentation, as the input for
472     http://docs.parrot.org.
473   + Added Compiled HTML Help (.chm) version of documentation.
474   + Cleanups and fixes.
475 - Languages
476   + Pynie
477     - left the nest and is now at http://pynie.googlecode.com/
478   + Cardinal
479     - left the nest and is now at http://github.com/cardinal
480   + APL
481     - left the nest and is now at http://paraplegic.googlecode.com/
482   + ABC, Squaak, and Befunge moved to examples/.
483   + All remaining languages moved to https://svn.parrot.org/languages/
484 - Tools
485   + Support for language builds from an installed Parrot.
486   + Expanded language shell generator for new languages.
487   + 'parrotbug' utility repurposed for the Trac interface.
488 - Deprecations
489   + Removed deprecated Tqueue and Closure PMCs.
490   + String, Key, NCI, LexPad, Iterator, Sub, Continuation, RetContinuation,
491     ExceptionHandler, ParrotLibrary, ParrotInterpreter, ParrotThread,
492     ParrotRunningThread, Rational, FixedPMCArray, ResizablePMCArray, and
493     GDBMHash PMCs now use declared attributes (ATTR), in place of the
494     deprecated UnionVal.
497 New in 0.9.1
498 - Implementation
499   + Support for portable 'Inf', 'NaN' and -0.0
500   + pbc_disassemble prints constants in constants table
501   + New experimental BigNum implementation
502   + Pair is now a dynamic loadable PMC
503   + Various function name sanification
504   + New implementation of Strings component
505   + Replace various PMC value union access code by VTABLE method invocations
506   + Replace various PMC value unions by ATTRibutes
507   + Removed SArray PMC. Use FixedPMCArray instead.
508 - Documentation
509   + Book
510     - updates to Chapter 2 (getting started)
511     - updates to Chapter 3 (PIR basics)
512     - updates to Chapter 4 (PIR subroutines)
513     - updates to Chapter 10 (HLLs)
514     - updates to Chapter 12 (opcodes)
515   + Function documentation
516   + Pod documentation style modernized; no longer Perl 5 style.
517   + PMC has an additional acronym: Poly Morphic Container
518   + The DOD (Dead Object Detection) acronym is no longer used;
519     use 'GC' to refer to the Garbage Collector component.
520 - Compilers
521   + IMCC
522     - :named flag can now take string registers as argument
523     - A single '=cut' directive is now ignored (without initial Pod directive)
524     - :vtable subs now have proper access to 'self' pseudo variable
525 - Languages
526   + add new 'Pod' documentation parser
527   + Pipp (PHP implementation):
528     - Pipp is now at http://github.com/bschmalhofer/pipp
529     - support for 'print', 'dirname', 'implode', 'str_replace',
530     - various grammar fixes
531   + ECMAScript
532     + add 'quit', 'readline' builtins
533     + fix 'Boolean' type and 'print' builtin
534   + Lua
535     - left the nest and is now at http://github.com/fperrad/lua/
536   + Rakudo
537     - left the nest and is now at http://github.com/rakudo/rakudo/
538     - build instructions can be found at http://tinyurl.com/rakudo
539   + lazy-k
540     - left the nest and is now at http://github.com/bschmalhofer/lazy-k.git
541   + unlambda
542     - left the nest and is now at http://github.com/bschmalhofer/unlambda/
543   + WMLScript
544     - left the nest and is now at http://github.com/fperrad/wmlscript.git
545   + removed Zcode implementation
546 - Tools
547   + pmc2C
548     - ATTRs are now inherited automatically in subclassing PMCs
549 - Deprecations
550   + Parrot_readbc, Parrot_loadbc renamed to Parrot_pbc_read, Parrot_pbc_load.
551   + .HLL_map directive in favour of 'hll_map' method on Parrot interpreter
552   + Data::Escape library
553 - Tools
554   + pbc_disassemble options added
555   + pbc_dump renamed from pdump
556 - Miscellaneous
557   + Parrot is now Copyright Parrot Foundation
558   + Parrot's SVN repository is now hosted at https://svn.parrot.org
559   + Various code cleanups, consting, 64-bit incompatibilities and other bug fixes
562 New in January 2009 release (0.9.0)
563 - Implementation
564   + Implemented bytecode annotations
565   + Role composition is now aware of multi-subs
566   + Unbuffered IO PMCs now autopromote when buffering is necessary
567   + Installation parrot binary and libparrot shared library now supported
568   + Class registry now respects HLLs
569 - Compilers
570   + IMCC
571     - removed keyed string indexing, e.g. $S0[1].
572     - removed slice syntax, e.g. $P0[1..2]
573     - removed .namespace <ident>/.endnamespace <ident> pair
574     - fixed 'new $P0, [classname]' syntax
575   + PIRC
576     - refactoring of various data structures
577     - various bug fixes and updates
578     - complete bytecode generation
579     - add '-x' commandline option to run compiled code
580   + PCT
581     - add 'hll' and 'subid' attributes to PAST::Block
582     - refactor loop handling code to handle last/redo/next
583     - add :pasttype('stmts') and :pasttype('null')
584     - improve "scope not found" error message
585     - allow PAST::Val nodes to contain block references
586   + PGE
587     - add "skipkey" option to PGE::OPTable
588     - allow spaces before modifiers in regexes
589     - add '(' ~ ')' goal matching syntax
590     - skip creating a class/grammar if it already exists
591 - Languages
592   + Rakudo
593     - improved error mesages in multi dispatch
594     - implemented clone method for all objects
595     - implemented MAIN sub
596     - Unicode versions of infix hyper operators
597     - refactored IO.readline
598     - basic support for Inf and NaN
599     - list and array slices with whatever star
600     - hash slices
601     - implemented last and redo
602     - pointy blocks as terms
603     - refactored variable and parameter passing
604     - improved assignment semantics
605     - improved parsing of type names and subs
606     - mostly implemented parametric roles
607     - separate types for blocks, subs and methods
608     - basic support for submethods
609     - implemented Junction autothreading of user code (not builtins yet)
610     - eval supports :lang attribute
611     - proto makes other subs in scope multis, including in role composition
612   + Befunge
613     - back to working state
614     - ported to pir
615   + Pipp
616     - add support for predefined constant __CLASS__ and __METHOD__
617     - add initial support for static members
618     - add support for namespaced constants
619     - constants are now handled as package vars
620     - variables are now lexical variables
621     - add support for superglobals in functions
622     - Call the class __constructor when there is one
623     - added incomplete support for closures
624     - removed support for the alternative parsing strategies
625     - added support for 'elsif'
626     - added support for 'do-while'
627   + HQ9+
628     - left the nest and is now at https://github.com/bschmalhofer/hq9plus/
629   + Eclectus
630     - left the nest and is now at http://github.com/bschmalhofer/eclectus/
631   + m4
632     - left the nest and is now at http://github.com/bschmalhofer/m4/
633   + Lua:
634     - add a minimalist user back trace
635   + PIR
636     - "does" and "morph" VTABLE interfaces are now overridable from PIR
637 - Miscellaneous
638   + Infrastructure
639     - 'make smoke' now generates Smolder reports sent to
640       http://smolder.plusthree.com/app/public_projects/smoke_reports/8
641   + Improved const and null correctness for C function parameters
642   + Sped up STRING manipulation (append, chop), improving PGE about 30%
643   + BOOK
644     - Added sections about Classes, OO programming, and methods.
645     - Added information about Annotations, Exceptions, and Handlers
646   + STM
647     - Removed non-functional STM subsystem
650 New in 0.8.2
651 - Implementation
652   + fixed lexical semantics
653   + added the 'capture_lex' opcode
654   + added automatic resume for nonfatal exceptions
655   + added multidispatch cache
656   + applied miscellaneous performance improvements, including startup time
657   + fixed several bugs and leaks found by Coverity Scan
658   + removed race conditions from parallel testing
659 - Compilers
660   + IMCC
661     - removed undocumented .param int <stringc> => <ident> syntax
662     - .line directive now only takes an integer argument
663     - new .file directive to specify the file name being compiled
664   + PCT
665     - properly handles lexical generation and closure semantics
666     - uses :subid instead of name lookups to reference PAST::Block nodes
667     - added PAST::Control node type (exception handlers)
668   + PGE
669     - add support for <?{{...}}> and <!{{...}}> assertions
670     - Match objects use Capture PMC instead of Capture_PIR
671   + PIRC
672     - add macro handling to PASM mode
673     - disable vanilla register allocation in PASM mode, but do allow optimization
674     - add tests and bug fixes
675     - first bits of bytecode generation. No sub calling/returning yet.
676 - Languages
677   + Rakudo
678     - fixed lexical handling and recursion
679     - refactored subtypes implementation
680     - support for quotes with multi-character delimiters
681     - implemented list slices (Positional role)
682     - list assignment
683     - reduction meta operators
684     - hyper meta operators
685     - cross meta operators
686     - more builtin functions
687     - added Nil type
688     - basic support for protos
689     - iterator on filehandle objects
690     - basic support for exception handlers
691     - warn
692   + Lua
693     - added complex & mathx libraries
694     - merged LuaClosure & LuaFunction PMC
695   + Pipp
696     - added support for a return value from user defined functions
697     - added incomplete implemention of 'require_once'
698   + Ecmascript
699     - parser fixes, parses spidermonkey's top level test/shell.js
700 - Deprecations
701   + PARROT_API is now PARROT_EXPORT
702   + PIR
703     - :lexid is now :subid
704     - .arg is now .set_arg
705     - .result is now .get_result
706     - .yield (in .begin/end_yield) is now .set_yield
707     - .return (in .begin/end_return) is now .set_return
708     - .namespace x / .endnamespace x syntax is removed
709   + Capture_PIR (runtime/parrot/library/Parrot/Capture_PIR.pir)
711 New in 0.8.1
712 - Implementation
713   + added CPAN module Storable 2.12 as a configuration and build dependency
714   + removed the pseudo PIR opcode 'addr'
715   + added the 'box' opcode
716   + fixed 'pop_eh' handling in PIR libraries and examples
717   + removed usage of .return for tailcalls (use .tailcall instead)
718   + removed 'get_hash' and 'get_array' from Capture PMC and Capture_PIR
719   + improved debugger and HLL coordination
720   + allowed MMD primitive autoboxing
721   + fixed all known memory leaks in PIR "Hello, world!"
722   + NCI signatures now JITted on x86-32 platforms (Windows and Linux)
723   + made the .const directive take a quoted type name instead of a constant
724   + made IMCC more re-entrant
725 - Languages
726   + Rakudo
727     - refactored Junctions implementation
728     - added "fire and forget" tool to rebase/rebuild/test Parrot and Rakudo
729     - updated container/reference semantics
730     - added more builtin methods and functions
731     - improved support for multilevel namespaces
732     - added support for .Str, .succ, .pred in user-defined classes
733     - implemented pointy blocks on if/loops
734     - increased STD.pm convergence
735     - added %*VM hash
736     - improved MMD candidate sorting
737     - improved integration of Num and Int
738     - implemented increment on protoobjects
739     - added initial support for MAIN subs
740     - added .PARROT method
741   + Pipp
742     - added some predefined constants
743     - added implemention of the function basename()
744   + Cardinal (Ruby)
745     - Added initial support for the classes Proc, Continuation, Queue, Dir, File, and FileStat
746     - fixed various minor bugs
747     - fixed broken Regexes
748 - Compilers
749   + PCT
750     - added '.isa' method to PCT::Node
751     - cleaned up 'immediate block' handling
752     - allowed arguments to immediate blocks in loops/conditionals
753     - metaclass objects can now 'add_method'
754   + PIRC
755     - integrated macro processing in PIRC's lexer
756     - integrated heredoc lexer in PIRC executable
757     - added preprocess and heredoc-preprocess commandline options
758     - integrated the PASM grammar into PIRC
759     - added a register allocator to optimize the built-in vanilla allocator
760     - code cleanups and documentation
761     - added 'make test' target
762    + TGE
763     - updated to work with new namespace/classname syntax
764 - Deprecations
765   + PARROT_API will become PARROT_EXPORT
766   + :lexid will become :subid
767 - Miscellaneous
768   + Documentation
769     - updates and additions to the Parrot book (see docs/book/)
770   + OpenGL
771     - minor fixes to Parrot's base OpenGL bindings
772     - converted OpenGL PIR examples to Perl 6 (two complete, one WIP)
773     - added simplified OpenGL PIR example for NCI JIT testing
774   + Tests
775     - further improvements to parallel tests
776     - tests no longer leave filesystem breadcrumbs
777     - more thorough testing of Parrot::Test itself
779 New in 0.8.0
780 - Implementation
781   + float precision expanded to 15 significant digits from 6
782   + large integers autopromoted in PIR so as not to lose precision
783   + improved precision of complex square root
784   + exception handlers can register types of exceptions they catch
785 - Languages
786   + Cardinal (Ruby)
787     - implemented gather, take, and yield builtins
788     - Range, Time, Math, GC, Kernel classes
789     - many more tests
790     - added a new committer
791   + Markdown : new lightweight markup language
792     - start implementation with PCT/NQP
793   + partcl (Tcl 8.5.4)
794     - Moved to its own repository: http://code.google.com/p/partcl/
795   + Rakudo (Perl 6)
796     - split() works with regexes
797     - implemented Str.comb
798     - ord() and chr() builtins
799     - improved parsing of literal numbers
800     - support for hyphens and dashes in identifiers
801     - next() on for-loops
802     - fixed floating point constant precision
803     - improved namespace handling, closer to STD.pm model
804     - support for exporting symbols
805 - Compilers
806   + P6object
807     - now generates classes in nested namespaces instead of :: names
808     - supports class creation in caller's HLL namespace
809   + PCT / PGE
810     - now using true nested namespaces instead of :: names
811     - cleaned up HLLCompiler interactive prompts and readline mode
812     - updated to use typed exception handler registration
813     - added initial support for loop control exceptions
814   + PIRC
815     - fixed Heredoc preprocessor
816     - cleaned up Macro preprocessor
817     - many code clean-ups, warning fixes and consting
818     - updated Makefile for easier compilation
819   + IMCC
820     - Added .tailcall syntax to replace .return in tailcall context
821 - Examples
822   + pirric (BASIC)
823     - an old style line numbered Basic interpreter able to use parrot objects
824     - example connecting to mysql via nci
825     - example using classes to write and run an embedded Basic program
826 - Documentation
827   + Book
828     - Added chapters for PCT, PMCs, and Opcodes/Runcores
829     - Expanded and improved formatting in various chapters
830     - Renumbered chapters
833 New in 0.7.1
834 - Implementation
835   + add -I and -L command line options
836   + support for null strings in NCI calls
837   + preliminary support for resumable exceptions
838   + add '.hll_map' method for dynamic HLL type mapping
839   + more parrot_debugger fixes
840   + remove obsolete '.past' extension
841 - Languages
842   + Rakudo (Perl 6)
843     - now over 3300 passing spectests
844     - precompiled modules
845     - precompiled scripts  (--target=pir can now be executed standalone)
846     - Support for @*INC and %*INC varialbes
847     - additional builtin methods and subs
848     - added 'fail' function, warnings on use of undefined values
849     - m/.../ regexes
850     - qq, qw, q quoting forms
851     - run tests in parallel
852     - gather/take
853     - Perl6MultiSub
854   + Cardinal (Ruby):
855     - 'require' and precompiled modules
856     - many new tests
857     - all Array tests pass
858     - regexes
859     - default arguments to functions
860     - new committer
861 - Compilers
862   + PCT:
863     - add :loadinit attribute for PAST::Block
864   + PIRC:
865     - major refactoring to allow all PIR keywords as identifiers
866     - links to libparrot now, so all Parrot ops are recognized as such
867     - implemented .loadlib, .HLL_map, .HLL
868 - Miscellaneous
869   + add Xlib and Mysql modules and test programs to NCI examples
870   + many updates and cleanups to PDD documents
872 New in 0.7.0
873 - Specification
874   + PDD27: add multisub lookup
875 - Implementation
876   + new concurrency implementation (see PDD25)
877   + Exception PMC now captures a return continuation
878   + improved PMC encapsulation (Iterator, Key, Pair)
879 - Languages
880   + Cardinal (Ruby):
881     - class variables
882     - parsing improvements
883     - minor additions to class builtins
884     - add support for block parameters to functions
885   + Lua:
886     - various language fixes
887     - refactor all libraries (namespace, method registration)
888     - add a OpenGL binding (still incomplete)
889     - lost user back trace (see ppd25 & pushaction)
890   + Pipp (PHP):
891     - add support for while- and for-loops
892     - add support for increment and decrement
893     - designate PHP 5.3 as the reference implementation
894     - improve support for string literals
895   + Pugs (Perl 6):
896     - removed due to bit rot
897   + Rakudo (Perl 6):
898     - now over 2200 passing spectests
899     - updated the Rakudo roadmap
900     - Perl 6 multi dispatch
901     - dispatch with slurpies
902     - class attributes ("my $.x")
903     - anonymous classes
904     - OO and metaclass improvements (.WHAT, .WHICH, .WHENCE)
905     - additional builtin methods and subs
906     - improved make test targets and harness
907   + Tcl:
908     - implement [lreverse], [lsort -command]
909     - allow [incr] to autovivify
910     - update tclsh spec target to 8.5.3
911     - fix bug in TclDict PMC, allowing ~200 more [dict] spec tests to pass
912     - update 'make spectest' fudging, using TODO instead of SKIP if possible
913 - Compilers
914   + PCT:
915     - :scope('register') for PAST::Var nodes
916     - allow invocant specification in attribute scope PAST::Var nodes
917     - correct ordering of sub generation from POST
918     - add 'loadinit' attribute to PAST::Block for block initialization
919   + PIRC:
920     - PIR registers now use the vanilla register allocator
921     - all PASM output now uses PASM registers
922     - all .locals and $registers are mapped
923     - clean-up of grammar, back-end and documentation
924     - implemented constant folding
925     - implemented instruction selection
926 - Configuration
927   + tests now clean up after themselves
928   + improved parallel test support
929   + ports/cygwin added
930   + Darwin problems fixed
931 - Tools
932   + parrot_debugger renamed from pdb, numerous tweaks
933 - Miscellaneous
934   + IMCC cleanups
935   + :vtable implies self in PIR
936   + modest core speed improvements
937   + Cygwin support improved
938   + "say" now an opcode (was dispatched to a method; see Deprecations)
939 - Deprecations
940   + ".pragma n_operators" is deprecated
941   + old PASM register syntax (without "$") is deprecated
942   + bare (unquoted) method names are deprecated
943   + "#line" will be replaced with ".line"
944   + ".HLL_map" syntax will change
945   + ".loadlib" is now separate from ".HLL"
946   + mmdvtregister and mmdvtablefind opcodes are deprecated
947   + removed getfd, getclass opcodes
948   + removed IMCC syntax that treated some methods as builtins
949   + removed numeric get_attr and set_attr vtable entries
951 New in 0.6.4
952 - Documentation
953   + removed a lot of old information from the FAQ
954   + improved function level documentation
955 - Configuration
956   + removed the configuration item 'has_gnu_m4'
957   + refactored ICU-detection
958 - Languages
959   + ChitChat
960     - improved the Smalltalk implementation
961   + Pipp
962     - renamed Plumhead to Pipp
963     - support for a lot of builtin functions.
964     - Pipp now uses PHP specific data types.
965     - converted from PCT with TGE to PCT with NQP actions
966     - improvements in the PCT variant by using optok parsing
967     - start of object support
968   + pir
969     - simple assignments work
970   + json
971     - added a PCT-based implementation of JSON parsing
972   + lolcode
973     - improved handling of symbols
974     - added support for block handling
975     - added support for globals
976   + Lua
977     - more tests
978   + Rakudo
979     - updated Range implementation
980     - added enums
981     - added generic type declarations (::T)
982     - added runtime mixing of roles with 'does' and 'but'
983     - fixed handling of implicit lexicals ($_, $!, and $/)
984     - fixed implicit method calls on $_
985     - improved complex math builtins, added Complex
986     - moved many builtins to class Any
987     - declaration of lists of variables now work
988     - improved test infrastructure
989     - 910 additional passing spec tests since last release
990     - more convergence with STD.pm grammar
991     - added named 0-ary parsing and ops
992 - Compilers
993   + PCT:
994     - allowed subroutine and method names to be a PAST tree that produces the name
995     - Improved lexical handling
996 - Tools
997   + pbc_disassemble renamed from disassemble
998 - Implementation
999   + allowed .macro_const in PIR
1000   + added the flag :lexid(...) for subroutines
1001   + made multiple dispatch work for sub types
1002   + fixed garbage collection bug related to the metadata attached to a PMC_EXT structure
1003   + added a warning when using deprecated opcodes
1004   + simplified the stacks implementation
1005   + fixed C++ build
1006   + improved closure and lexical support
1007   + improved IMCC register allocator
1008   + added cache for all runtime-constant strings, reducing memory usage
1009 - Miscellaneous
1010   + improved OpenGL/GLU/GLUT bindings
1011   + added a standard profile for Perl::Critic coding standard testing
1012   + added support for smoke testing with Smolder
1013   + enabled use of Test::Harness 3.0 if available, but don't require it for 'make test'
1014   + added the executable 'parrot_config' to query Parrot configuration
1016 New in 0.6.3
1017 - Specification
1018   + updated pdd09_gc.pod
1019 - Languages
1020   + Cardinal:
1021     - dramatically improved parsing speed
1022     - added support for defining and instantiating classes
1023     - started fleshing out the builtin class hierarchy
1024     - added support for hashes and arrays
1025   + Chitchat: added the start of a smalltalk compiler
1026   + Pheme: updated to match PGE changes
1027   + Pynie: return statement, other minor updates
1028   + Rakudo:
1029     - added working list and hash contexts
1030     - added 'return' statements
1031     - added => pair constructor
1032     - added ?? !! ternary
1033     - added Range, range operators, Complex
1034     - added common List, Hash methods
1035     - refactored base classes
1036     - added Mutable, Perl6Scalar classes
1037     - added type-checking, is readonly/rw/copy for parameters
1038     - added make localtest, docs/spectest-progress.csv
1039     - fix named unaries
1040   + Squaak: implement return statement
1041   + Tcl: updated control flow exceptions to use new builtin types
1042 - Compilers
1043   + All tools converted to P6object metamodel
1044   + PGE:
1045     - <?foo> is now a zero-width match
1046     - reduced backtracking to improve parsing speed
1047   + PCT:
1048     - added "return" PAST.op node type for subroutine returns
1049     - added "keyed_int" scoping to PAST::Var
1050     - fixed calls to closures
1051     - automatically transcode 7-bit unicode to ascii for faster processing
1052   + NQP: added "return" statement, ?? !! ternary operator
1053 - Configuration
1054   + expanded step gen::opengl
1055 - Implementation
1056   + updated function and macro names to match pdd09_gc.pod
1057   + removed Super PMC
1058   + add ".namespace []" as alternative to ".namespace"
1059   + "make codetest" target runs standard coding tests
1060 - Miscellaneous
1061   + added P6object class for Perl 6 interfaces to objects in Parrot
1062   + ported OpenGL/GLU/GLUT bindings to Win32, BSD, and more Mac OS X variants
1063   + generate OpenGL/GLU/GLUT bindings by parsing system headers
1064   + new OpenGL example shapes.pir, covering basic OpenGL 1.1 / GLUT 3 APIs
1065   + new float4.pir structure-packing benchmark
1066   + reduced memory use for variables
1067   + improved constant string caching
1068   + made code g++ and gcc (with optimizations) safe
1069   + the usual collection of bugfixes and optimizations
1071 New in 0.6.2
1072 - Specification
1073   + updated and launched pdd28_strings.pod
1074   + updated pdd19_pir.pod
1075 - Implementation
1076   + added implementation of Rational PMC.
1077   + simplified ops control flow syntax
1078   + enabled backtrace on non-glibc platforms too
1079   + improved some PIR error reporting
1080   + removed user stack opcodes
1081     (save, restore, lookback, entrytype, depth, rotate_up)
1082     (NOTE: This was scheduled to occur after 0.7.0, moved up to this release)
1083   + removed register stack, saveall, and restoreall opcodes
1084   + removed various deprecated features and unused code
1085 - Languages
1086   + Amber: retired
1087   + C99: grammar updated
1088   + Cardinal: resurrected, method calls and do blocks work now
1089   + Eclectus: use NQP as PAST generating code
1090   + Lua:
1091     - added big number library
1092     - updated to match PGE changes
1093     - added a bytecode disassembler & a Lua 5.1 VM bytecode translator
1094   + Pheme: updated to match PGE/PCT changes
1095   + Plumhead:
1096     - use NQP as PAST generating code
1097     - use riaxpander for macro expansion
1098   + Rakudo:
1099     - updated ROADMAP
1100     - conditional and loop statement modifiers
1101     - lots of class, object, role, and method improvements
1102     - Str increment and decrement
1103     - improved spectest reporting
1104     - type checking on assignment
1105     - regexes and grammars
1106     - undef and self
1107     - placeholder vars
1108 roadmap updated
1109   + Squaak: added to repository
1110   + TAP: retired
1111 - Compilers
1112   + PGE: updated to match Synopsis 5, deprecated features removed
1113   + PCT:
1114     - improve handling of register types, conversion between registers
1115     - improved error diagnostics
1116     - add 'arity' to for loops
1117 - Configuration
1118   + added step auto::opengl
1119   + added step gen::opengl
1120   + added step gen::call_list
1121 - Miscellaneous
1122   + still more optimizations and performance improvements, especially in GC
1123   + new libraries: OpenGL/GLU/GLUT bindings (small subset working)
1124   + new dump_pbc.pl utility: PBC disassembly/source code weaver
1125   + improved C++ compiler support
1126   + optimized builds work again
1129 New in 0.6.1
1130 - Specification
1131   + drafted pdd29_compiler_tools.pod
1132   + updated pdd28_character_sets.pod draft
1133   + updated pdd19_pir.pod draft
1134 - Languages
1135   + c99: added independent C pre-processor
1136   + HQ9+: reimplemented with PCT
1137   + Lua:
1138     . reimplementation with PCT, using PAST and POST
1139     . behavior aligned wih 5.1.3
1140   + Rakudo:
1141     . implemented basic I/O, including '$*IN', '$*OUT', '$*ERR', 'prefix:='
1142     . implemented simple typing and runtime type checking
1143     . added basic multi-method dispatch
1144     . expanded named argument handling, including Pair and colonpairs
1145     . added 'Whatever' and 'Capture' classes
1146     . implemented 'handles' trait verb
1147     . added 'loop' statement
1148     . implemented 'given', 'when', 'for', 'while', 'until' statement modifiers
1149     . implemented Hash methods '.keys' and '.values'
1150     . fixed bug to get '.WHAT' working correctly
1151     . initial implementation of 'eval'
1152 - Compilers
1153   + NQP:
1154     . created a bootstrapped build, see 'make boot'
1155     . added 'infix:<', 'infix:<=', 'infix:>', 'infix:>=' relational operators
1156     . added 'postfix:++', 'postfix:--' operators
1157   + PCT:
1158     . added methods specifying default behaviors in PAST, reducing repeated code
1159     . improved symbol table lookup
1160   + PGE:
1161     . removed deprecated code including: P6Regex, P6Grammar, PAST-pm
1162 - Miscellaneous
1163   + notable speedups during compilation and execution of parrot and HLLs
1164   + pdb (the parrot debugger) can now catch parrot exceptions
1165   + better detection of glibc and gettext during configuration
1166   + various bugfixes, code cleanups, deprecations, and coding standard fixes
1169 New in 0.6.0
1170 - Specification
1171   + launched pdd18_security.pod
1172   + updated pdd17_pmc.pod
1173   + launching draft of pdd28_character_sets.pod
1174 - Documentation
1175   + cleanup of IMCC documentation
1176 - Configuration
1177   + add step auto::gettext
1178   + add step auto::crypto
1179 - Compilers
1180   + PCT:
1181     . Fix '-e' option
1182     . Phase out P6Regex in favor of Perl6Regex
1183   + IMCC:
1184     '.local Array my_arr' is illegal now
1185 - Languages
1186   + C99: reimplementation with PCT
1187   + lolcode:
1188     . various updates
1189     . add support for functions with params
1190     . add math functions
1191   + Rakudo:
1192     . support for 'say'
1193     . first cut at smart matching
1194     . indirect method calls
1195     . support for Pairs
1196     . added methods 'grep' and 'first'
1197     . implement auto{increment,decrement}
1198     . initial implementation of 'perl6doc'
1199   + Lua:
1200     . various updates
1201     . add base64 library
1202   + Cardinal: basic support for functions with parameters
1203   + Pheme: various updates
1204   + Ecmascript: various updates
1205   + Tcl: now targeting tcl 8.5.1, no more expected failures in test suite.
1206     (No, this doesn't mean everything's implemented. =-)
1207   + Eclectus: various updates
1208   + WMLScript: various updates
1209 - Implementation
1210   + PDD17 (PMCs)
1211   + Add library YAML::Dumper
1212   + Add the MD2, MD4, MD5, RIPEMD160, SHA & SHA1 PMC, as a wrapper
1213      around libcrypto
1214 - Miscellaneous
1215   + various bugfixes, code cleanups and coding standard fixes
1216   + consting
1217   + remove external Perl 5 modules from the Parrot distribution
1219 New in 0.5.3
1220 - Documentation
1221   + PDD09 (garbage collection) - approved
1222   + PDD28 (character sets) - draft started
1223   + added function documentation to some core functions
1224   + PCT beginners guide, optable guide and PAST nodes guide, bug fixes
1225 - Compilers
1226   + IMCC: plugged various memory leaks and other cleanups
1227   + PCT:
1228     . add "attribute" as a scope variant to PAST::Var nodes
1229     . add 'shift' and 'pop' methods to PAST:: nodes
1230   + NQP: add '=:=' op, tests for scalar and list contextualizers, \x escapes
1231 - Languages
1232   + APL: reimplementation with PCT
1233   + Cardinal (Ruby): reimplemention with PCT
1234   + Ecmascript: reimplementation with PCT
1235   + lolcode: improved expression parsing, ifthen, IT, YARN
1236   + lua:
1237     . aligned with Lua official release 5.1.3.
1238     . added initial PCT-based implementation.
1239   + Punie (Perl 1): refactor to use standard PCT-based filenames
1240   + Pynie (Python): add functions
1241   + Rakudo (Perl 6):
1242     . rebranded, formerly known as 'perl6'
1243     . passes many more official Perl 6 Specification tests
1244     . added 'perl6doc' utility
1245     . oo including meta?classes, objects, methods, attributes, role composition
1246     . match variables, while/until statements, traits
1247     . many new methods for Str, List, Hash, Junction
1248 - Implementation
1249 - Deprecations
1250   + PCCINVOKE syntax for named arguments using []; use () instead.
1251   + see DEPRECATED.pod for details
1252 - Miscellaneous
1253   + pbc_to_exe refactored for code reduction, portability, and maintainability
1254   + various bug fixes
1255   + #line directives added to generated JIT files, improving debugging
1256   + consting, attribute marking, refactoring, warnings cleanup
1258 New in 0.5.2
1259 - Documentation
1260   + PDD27 (multiple dispatch) - debut of new design
1261   + Numerous small updates to glossary.pod, etc
1262 - Compiler Toolkit
1263   + NQP: optional, named, and named/required parameters
1264   + PIRC: cleanups
1265   + PAST: "defined-or"
1266 - Languages
1267   + New mk_language_shell.pl script creates language stubs
1268   + LOLCODE: new
1269   + Lua: various
1270   + Eclectus: start with support for local variables and procedures,
1271     use SXML as intermediate representation
1272   + Perl 6: list builtins, compiler directives, command-line options, etc.
1273   + "make perl6" now builds a Perl 6 executable
1274   + punie: more builtins, control structures, code refactoring
1275   + pynie: builtin stubs, more tests
1276 - Implementation
1277   + New "pbc_to_exe" utility turns bytecode to executables
1278   + New set_outer method for subs
1279   + Further configuration refactoring for testability
1280   + All functions now completely headerized
1281   + Concurrency: interpreter schedulers
1282 - Deprecations
1283   + DYNSELF (changes to SELF; SELF to STATICSELF)
1284   + METHOD (replaced by renaming PCCMETHOD)
1285   + pmcinfo op (superseded by 'inspect')
1286   + get_attr, set_attr, and 8 other vtable methods
1287   + See DEPRECATED.pod for details
1288 - Miscellaneous
1289   + Many bug fixes
1290   + Minor speed enhancements with UTF-8 string handling
1291   + Debian packaging
1292   + consting, attribute marking, warnings cleanup, memory leaks plugged ...
1294 New in 0.5.1
1295 - Documentation
1296   + PDD19 (PIR) - reflect state on the ground; incorporate old IMCC docs
1297   + PDD25 (Concurrency) - launch out of draft
1298   + Improve documentation of deprecated parrot features.
1299 - Compilers
1300   + PCT: Parrot Compiler Toolkit redesigned and updated
1301   + NQP: major updates, including support for namespaces,
1302     module/class declarations, methods
1303   + IMCC: remove .sym as alias for .local. Remove .pcc_
1304     prefix for calling directives (.pcc_begin became .begin_call).
1305   + PIRC: creates an AST during the parse.
1306   + PGE: more updates to match S05 syntax.
1307 - Languages
1308   + perl6: re-implemented using PCT and NQP, new object subsystem
1309   + abc: re-implemented using PCT and NQP
1310   + eclectus: initial implementation
1311   + plumhead: add PCT variant
1312   + punie: re-implemented using PCT and NQP, extended to handle subroutines
1313     Happy 20th Birthday, Perl!
1314   + pynie: re-implemented using PCT and NQP
1315   + PIR: start conversion to NQP (under construction)
1316 - Implementation
1317   + new opcodes: 'die', 'addhandler', 'copy'
1318   + Initial implementation of Concurrency PDD
1319   + Add 'arity' method to Sub and NCI PMCs
1320 - Miscellaneous
1321   + Bug cleanup
1322   + consting, attribute marking, warnings cleanup, memory leaks, GC...
1323   + dead code removal (includes some defunct languages)
1325 New in 0.5.0
1326 - Implementation
1327   + PDD15 (OO) branch merged with trunk; this release contains a working,
1328     tested implementation of the latest OO model
1329   + Added pop_eh/push_eh_p/count_eh opcodes
1330   + Add --runcore command line option
1331   + Add gcdebug runcore to help track down GC bugs
1332   + minor improvements to IA-32 JIT
1333 - Documentation
1334   + PDD19 (PIR): updates to macros, .pcc* directives
1335   + PDD25 (Concurrency): updated
1336   + PDD26 (AST):  draft approved
1337   + PDD23 (Exceptions): draft approved
1338   + Copyright cleanups
1339 - Languages/Compilers
1340   + languages/APL: minor updates, PDD15 conformance
1341   + languages/dotnet: minor updates
1342   + languages/lua: minor updates, PDD15 conformance
1343   + languages/lisp: minor updates
1344   + languages/perl6: minor updates, PDD15 conformance
1345   + languages/plumhead: minor updates
1346   + languages/punie: minor updates, PDD15 conformance
1347   + languages/nqp: minor updates
1348   + languages/scheme: many updates, PDD15 conformance, improved tests, use
1349     PMCs instead of primitive registers to represent values
1350   + languages/tcl: bugfixes, PDD15 conformance
1351   + languages/WMLScript: minor updates
1352   + compilers/pirc: updates from PDD19, PDD06
1353   + compilers/pct: minor updates, PDD15 conformance
1354   + compilers/pge: PDD15 conformance
1355   + compilers/tge: PDD15 conformance
1356 - Configuration
1357   + Improve test coverage
1358   + Improve reporting when a step fails; allow abort on failure
1359 - Miscellaneous
1360   + More coding standard conformance, tests, cleanup, speedups,
1361     warnings cleanup
1362   + Bug cleanup, esp. GC bugs
1363   + Eliminate .imc extension (use .pir)
1364   + Simplify some core config steps to not allow interactive prompting
1365 - Removed
1366   + clear_eh opcode
1368 New in 0.4.17
1369 - Implementation
1370  + Bug fixes (including Coverity IDs 20, 22, 30, 119-122, 124-126, 129-131)
1371    Also various GC, memory, and segfault issues
1372  + Fix & reenable CGP core
1373  + Parrot's -r flag now works again (compile to and execute bytecode)
1374  + Updates to pmc2c & PIR syntaxes
1375  + Fix Complex PMC
1376  + Minor performance improvements, especially in PGE
1377 - Documentation
1378  + PDD02 "Vtables" - superceded by PDD17
1379  + PDD06 "PASM" - minor updates
1380  + PDD17 "PMC" - add VTABLE syntax, update core PMC struct, restore UnionVal
1381  + PDD19 "PIR" - early review started
1382  + PDD21 "Namespaces" - cleanup
1383  + PDD24 "Events" - draft approved
1384  + PDD25 "Concurrency" - minor updates
1385  + PDD26 "AST" - draft version begun
1386  + PIR tutorials updated
1387 - Languages/Compilers
1388  + Make scheme work with the current calling conventions, other major work.
1389  + Updates to m4, lua, compilers/pirc, languages/PIR, dotnet, tcl
1390 - Miscellaneous:
1391  + make -j functional again
1392  + Code cleanup (refactoring, optimizations)
1394 New in 0.4.16
1395 - Implementation:
1396  + Performed code review on every PMC
1397  + Modified PMC code generation to use Storable, reducing compile times
1398  + Added a makefile target to generate test coverage data of C sources
1399 - Languages:
1400  + NQP: added lists, for loops, operators, comparison and multiplicative operators
1401  + Announced Kea-CL, Kea Common Lisp, an ANSI Common Lisp implementation
1402    The repository is available at https://rgrjr.dyndns.org/svn/kea-cl/trunk/
1403 - Documentation
1404  + PDD17 "PMCs" - draft approved, the design is complete
1405  + Added more PIR tutorials, see examples/tutorial/00_README.pod
1406 - Miscellaneous:
1407  + Many bugfixes, enhancements, documentation, and coding standard updates
1408  + Deprecated PMC constants and other crufty syntax, see DEPRECATED.pod
1409  + Improved icc compiler compatibility for error line reporting
1411 New in 0.4.15
1412 - Implementation:
1413  + Lots of code review, many bugs fixed
1414  + Many more code cleanups and compiler warning levels
1415  + Started a new jit engine for 64-bit processors
1416  + Refactored configure process, with tests and new diagnostic options
1417  + Added new CodeString PMC for dynamic generation of PIR code
1418  + More pdd15 support for object metamodel.
1419 - Languages:
1420  + Added NQP ("Not Quite Perl"), a very lightweight Perl 6-like language
1421  + Significant improvements and refactors to PCT (Parrot Compiler Toolkit)
1422  + perl6 passes more spec tests
1423  + Lua works now with a PGE/TGE/PAST-pm based compiler, lives in one pbc,
1424    and the interpreter has same behavior as original.
1425 - Documentation
1426  + Added a committers' HOWTO
1427  + More PIR tutorial examples
1428  + Added PAUSE guide
1430 New in 0.4.14
1431 - Now, with Seat Belts!
1432  + added makefile targets for Sun lint, BSD lint, and splint
1433  + corrected many errors picked up by these tools
1434  + decorated source code with compiler hints, assertions, and attribute macros
1435  + automated creation of function declarations to prevent common errors
1436  + increased compiler warnings levels
1437  + converted more exceptions to a recoverable form
1438 - Languages:
1439  + updated Lisp, Lua, Perl 6, tcl, regex, Scheme ("Pheme")
1440  + Perl 6 now fetches selected tests from pugs, and even passes some
1441  + PGE modified to handle {*} action subs for top-down and bottom-up parsers,
1442    and to allow grammar subclassing
1443  + HLLCompiler now has better exception, eval, and exit support
1444  + Introduced PCT, a refactor of HLLCompiler and PAST-pm
1445 - Design:
1446  + PDD15 "Objects" - details added to 'new' and 'getattribute' opcodes
1447  + PDD17 "PMCs" - notes added on instantiation and dynamic extention in PIR
1448 - Documentation:
1449  + added Parrot-related text from "Perl 6 and Parrot Essentials" book,
1450    tutorial examples from "Learning PIR" talk, and PDD15 metamodel diagrams
1451 - Implementation:
1452  + reduced memory footprint when using named registers
1453  + implemented overridding of vtable methods by PDD15 classes
1454  + improved PDD15 support for 'new', 'instantiate', and others
1455  + added makefile targets to ease core and HLL makefile regeneration
1456  + updated parrot dubugger, "pdb", to allow loading of commands from file
1457 - Misc:
1458  + many bugfixes, enhancements, documentation, and coding standard updates
1460 New in 0.4.13
1461 - Languages:
1462  + Updated Lisp, Lua, PHP ("Plumhead"), Python ("Pynie"), ABC,
1463    WMLScript, and Tcl ("ParTcl").
1464  + Perl 6 passes all of the sanity tests.
1465  + PGE supports latest Perl 6 grammar syntax. Perl 6, Python
1466    ("Pynie"), and ABC parsers updated to match.
1467  + Updated PHP ("Plumhead") to Antlr 3.0.
1468  + Lua added the beginnings of a PGE/TGE based compiler (not yet
1469    replacing the Perl/Yapp compiler).
1470  + Lisp updated for current features, added a test suite.
1471 - Core Implementation:
1472  + Filled in features and backward compatibility for PDD 15 objects.
1473    New object metamodel passes 85% of old test suite.
1474  + GCC API symbols are visible externally only when explicitly exported.
1475  + Added generated GCC compiler attributes to increase warnings, and
1476    cleaned up resulting warnings.
1477  + Code cleanup efforts and fixed memory leaks by the cage cleaners,
1478    resulting in notable speed increases.
1479 - Misc:
1480  + Updated Parrot distribution to Artistic License 2.0, from dual
1481    Artistic 1/GPL license.
1482  + SDL examples brought up-to-date with current features.
1484 New in 0.4.12
1485 - Build:
1486  + even more refactorings and improvements in configuration system
1487  + improved tests and documentation for configuration system
1488 - Languages:
1489  + Updated abc, PHP ("Plumhead"), Lua, Tcl
1490  + Reclaimed Lisp
1491 - Design:
1492  + new PMC PDD draft partially completed
1493 - Implementation:
1494  + continued implementation of PDD 15 (Objects)
1495  + minor garbage collector and memory management improvements
1496  + several memory leaks resolved
1497  + extended support for compilers other than GCC
1498  + improved C++ compiler compatibility
1499  + enhanced support for Solaris, non-MSVC Win32, and other platforms
1501 New in 0.4.11
1503 - Compilers:
1504  + IMCC: added documentation for C-based Parrot Calling Conventions,
1505    refactorings and bug fixes
1506  + PGE: new perl6regex front end reflecting recent S05 syntax changes
1507  + PIRC: new prototype PIR parser
1508 - Languages:
1509  + Updated Lua, PHP ("Plumhead"), BASIC, pynie
1510  + Lua implements environment
1511 - Design:
1512  + PDD15 "Objects" - details added, and draft approved
1513 - Documentation:
1514  + Added guidelines for PMC documentation
1515 - Implementation:
1516  + PDD15 implementation is largely complete, including role-based composition,
1517    introspection, and C3 method resolution order
1518  + new Exporter PMC for importing globals between namespaces
1519  + new string utilities for radix conversion
1520  + PCCINVOKE and Parrot_PCCINVOKE allow calling using the full Parrot Calling
1521    Conventions from PMCs and C code respectively
1522 - Build:
1523  + Refactorings and improvements in test coverage for 'Configure.pl'
1524 - Misc:
1525  + many bugfixes, enhancements, and code cleanup
1526  + added example subversion config file
1527  + extended support for gcc, icc, and other compilers
1528  + extended support for Solaris and other platforms
1531 New in 0.4.10
1533 - Compilers:
1534  + IMCC: Parrot calling conventions now available between two C PMCs (PMINVOKE)
1535  + PGE: Match object improvements
1536  + smop: added Attribute and Class PMCs
1537  + HLLCompiler: improvements for interactive mode
1538 - PAST:
1539  + extended binding to a list of variables
1540 - Languages:
1541  + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), Ruby ("Cardinal")
1542  + Update PIR, regex, Zcode
1543  + New language: Pynie - a Python compiler for Parrot
1544  + Lua implements require and many other ops, improved regex support
1545  + Remove parakeet
1546 - Design:
1547  + PDD01 "Overview" - updated architecture and platform information
1548  + PDD15 "Objects" - details on roles, objects, and classes added
1549  + PDD22 "I/O" - added async ops and Status PMC details
1550 - Documentation:
1551  + Added guides for Metacommitter, Relase Manager, and Cage Cleaner roles
1552 - Implementation:
1553  + Object, Class, Role, and Attribute PMC implementation has begun
1554  + Perl 5 module "Parrot::Embed" now compiles and links on all platforms
1555 - Build:
1556  + Major improvements in test coverage for 'ops2c.pl'
1557 - Misc:
1558  + New utility: Crow, a template processor
1559  + New library module: Config/JSON for reading/writing JSON files
1560  + many bugfixes, enhancements, and coding standard updates, code cleanup
1562 New in 0.4.9
1564 - Compilers:
1565    + IMCC: Parrot calling conventions now available in C PMCs, allowing
1566      named, optional, slurpy, and flat parameter passing
1567    + PGE: extended support for Perl 5 Regexes
1568    + smop: prototype object model implementation
1569    + hllcompiler: refactored to run a configurable set of compilation stages
1570 - PAST:
1571    + redesigned assign/binding to support Perl 6 binding semantics
1572 - Languages:
1573    + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), perl6, perl5
1574    + New language: PIR - a PGE-based implementation of Parrot PIR
1575    + perl6 now supports binding (':=') and 'join'
1576    + lua generates tail calls, and supports its own regex flavor (PGE-based)
1577    + Pheme still works, huzzah!
1578 - Design:
1579    + PDD21 "Objects" - rewritten
1580    + PDD22 "I/O" - updated and 'TODO' tests added
1581 - Documentation:
1582    + Interface stability classification standards approved
1583    + Roles and Responsibilities documented approved
1584    + Official 'drafts' directory created (was 'clip')
1585 - Implementation:
1586    + More NameSpace and OS PMC methods implemented
1587    + Parrot executable fullname and basename now available in PIR/PASM code
1588    + new 'chomp' library function
1589 - Build:
1590    + Major improvements in test coverage for 'ops2pm.pl'
1591 - Misc:
1592    + many bugfixes, enhancements, and coding standard updates
1593    + extended support for Sun Workshop Compilers
1594    + Parrot now builds on PocketPC platform
1596 New in 0.4.8
1598 - Compilers:
1599    + HLLCompiler: added tracing options, modified api
1600    + PGE & TGE bugfixes and updates
1601 - PAST:
1602    + added global and lexical variable support
1603    + added looping constructs, arrays, hashes
1604 - Languages:
1605    + Updated PHP ("Plumhead"), Tcl ("ParTcl"),
1606      forth, perl6, lua, abc, APL, WMLScript, punie
1607    + ParTcl is passing > 24.9% of Tcl cvs-latest test suite
1608    + perl6 now supports hashes, arrays, method calls, arity-based
1609      multisubs, quoted terms, ranges (non-lazy), try blocks, $!
1610 - Design:
1611    + PDD01 "Overview" - updated
1612    + PDD22 "I/O" - rewritten and approved
1613 - Test Suite:
1614    + Converted Perl 5 Regex tests to PIR, with notable speedup
1615    + Added tests for opcodes, compilers, languages, and coding standards
1616 - Build:
1617    + Major improvements in test coverage for 'pmc2c.pl'
1618 - Misc:
1619    + many bugfixes, enhancements, and coding standard updates
1620    + extended support for non-core platforms including Cygwin, Tru64
1622 New in 0.4.7
1624 - New languages: PHP ("Plumhead"), Forth
1625 - Updated languages: Ruby ("Cardinal"), Tcl, Lua
1626 - Remove old Python implementation from Parrot repository; the new Python
1627   language code is hosted at http://pirate.tangentcode.com
1628 - Compilers:
1629    + PGE updated with more expressions, latest changes to S05
1630    + new Perl 6 grammar compiler
1631 - Integration:
1632    + Perl 5 module "Parrot::Embed" allows easy embedding of a Parrot
1633      runtime into a Perl 5 program
1634 - PIR:
1635    + new :init pragma for subs that must run before the main function
1636    + new :vtable pragma to identify subs that override PMC vtable methods,
1637      eliminating the need for special subroutine names
1638    + PIR parser/compiler does not stop on first syntax error
1639    + Vanilla register allocator ("register alligator") greatly improves
1640      performance compiling large functions
1641    + Eliminated limit on number of PIR macros
1642 - PMCs:
1643    + hash lookups return null instead of None for missing keys
1644 - Design:
1645    + PDD13 "Bytecode files: format and manipulation" - new
1646    + PDD10 "Embedding" - new
1647    + PDD25 "Concurrency" - rewritten
1648    + PDD15 "Objects" - new section on redesign requirements
1649    + PDD07 "Coding standards" - significant updates and automated tests
1650 - Test Suite:
1651    + Many many more new tests
1652 - Build Process:
1653    + autoconf compatible install options
1654 - Misc:
1655    + Namespace refinements
1656    + Coroutine improvements
1657    + An impressive swarm of other bugfixes and enhancements
1659 New in 0.4.6
1661 - New languages: Ruby ("Cardinal"), Javascript ("ecmascript")
1662 - Updated languages: Tcl, dotnet, bc, Pheme, Punie, WMLScript
1663 - Updated compilers: PGE, TGE
1664 - IMCC updates:
1665    + ".loadlib" directive expresses dependencies
1666    + ".namespace" with no parameter goes to HLL root
1667    + lexer is reentrant (reentrant grammar in progress)
1668 - Namespace improvements:
1669    + new suite of opcodes to access namespaces and globals
1670      ("find_global" and "store_global" will be phased out)
1671    + namespace '' no longer means HLL root
1672 - Design document updates:
1673     namespaces (pdd23), basic types (pdd17), embedding
1674 - Updated tool requirements for developers:
1675     flex 2.5.33, bison 2.1, perl 5.6.1
1676 - New to-do list for people new to Parrot:
1677     cage/todo.pod
1678 - The usual plethora of bugfixes and enhancements
1680 New in 0.4.5
1682 - unicode subroutine names
1683 - hierarchical class names finished including MMD support
1684 - new dotnet CLI to PIR translator
1685 - improved TGE code and compiler
1686 - APL: vector handling
1687 - new STM branch in the svn repository
1688 - the usual bugfixes and enhancements
1690 New in 0.4.4
1692 - hierarchical class names
1693 - APL compiler
1694   - under development
1695   - understands simple vector ops, strings
1696   - demonstrates use of Unicode in Parrot
1697 - pgc, a compiler for rules and operator precedence parsers
1698 - Major redesign and improvements for PGE
1699   - compilers understand named parameter options
1700   - :ratchet option implemented to support non-backtracking quantifiers
1701 - TGE (tree grammar engine) for tree transformations
1702   - tgc, tree grammar compiler
1703 - perl6 compiler
1704   - support for many operators, lexical scalars, regex matches
1705 - new pheme (Parrot scheme) compiler
1707 New in 0.4.3
1709 - namespaces partially implemented
1710 - rulec, Perl 6 rule compiler
1711 - PGE improvements including return values for closure
1712 - parts of a Perl 6 parser based on PGE
1713 - complex trigonometric methods
1714 - type of Sub PMC is now overridable by HLL
1715 - NetBSD support
1716 - many bug fixes and improvements
1718 New in 0.4.2
1720 - improved PPC and x86 JIT support including JIT compilation
1721   of very simple PASM/PIR subroutines
1722 - preliminary libreadline support
1723 - better trace and debug features
1724 - pkgconfig support
1725 - META.yml to support proper indexing on CPAN
1726 - new opcode: hcf (in "my_ops" in dynamic op library)
1727 - new File pmc for file specific ops (is_dir, is_file, copy, rename...)
1728 - named arguments and parameters (both :named("") and => syntaxes)
1729 - ongoing config improvements
1730 - tons of bug fixes and other small improvements - too much to list all
1732 New in 0.4.1
1734 - Installation: 'make install' is using standard locations now
1735   (/usr/local is the default --prefix)
1736 - Produce static and shared libraries on some systems
1737 - Configure system rearragement
1738 - OS pmc started (mkdir,cd,cwd,rm,umask,stat)
1739 - Shootout examples
1740 - Test files are now testable with 'prove'
1741 - Smoke (and smokej) outputs progress
1742 - PIR supports: I = A < B (>,<=,>=,==,!=)
1743 - Add support for octal number constants
1744 - partcl updates:
1745   - almost finish [string]; start [file]
1746   - add build tool for generating inline'd tcl builtins from templates.
1747 - Jako updates: NCI, subroutines, global variables and constants all work.
1748   (Gregor)
1750 New in 0.4.0
1752 - New lexical handling and closure support including better
1753   introspection for caller and outer
1754 - PGE (Parrot Grammar Engine) provides now compilers for P6Rule,
1755   P6Grammar, P5Regexp, and Glob
1756 - ca. 1000 new tests including 800 for Perl5 regexp
1757 - Improved unicode charset and encoding support
1758 - Calling conventions for exception handlers
1759 - Punie (Perl 1) uses TGE (Tree Grammar Engine) to convert from
1760   PGE match objects to AST via two steps of tree transformation grammars
1761 - New languages: amber and lua
1762 - The usual code fixes, cleanup, and improvements, including an overhaul
1763   of the config and test framework
1765 New in 0.3.1
1767 - Variable sized register frames are finished. Each subroutine gets
1768   the amount of registers that it actually needs. No more spilling.
1769 - Vastly improved PGE (Parrot Grammar Engine) including shift-reduce,
1770   precedence-based expression parser and support for matching of
1771   bracketed text delimited by e.g. ()[]{}'"
1772 - uniccode character classification (is_upper ...)
1773 - support for heredoc syntax in assembler
1774 - improved examples, basic JSON support
1775 - debian packaging support
1776 - the usual improvements, bug fixes, and cleanup
1777 - test count exceeds 3000
1779 New in 0.3.0
1781 - New calling conventions implemented: see PDD03 for details
1782 - Merge multiple Parrot bytecode (PBC) files into a singe PBC file
1783 - 'make smoke' target going beta
1784 - bc now supports if statements, comparison ops, prefix inc/dec
1785 - ParTcl adds [lassign], [switch] (partially); [expr] converted to a compiler
1786 - Many exciting doc updates, tests, and bugfixes, too numerous to mention
1788 New in 0.2.3
1790 - Dynamic classes now compile on Windows (including ParTcl)
1791 - New Super PMC allows easy access to superclass methods
1792 - Implement C3 method resolution order (just like Perl 6 & Python)
1793 - ParTcl has new PIR-based parser and passes more Tcl tests
1794 - added character class support in Globs to PGE
1795 - added language implementations of unlambda, Lazy-k
1796 - many bugfixes, including GC and memory leaks
1797 - the new calling scheme continued to evolve in branches/leo-ctx5
1799 New in 0.2.2
1801 - new call scheme: docs/pdds/pdd03_calling_conventions.pod
1802 - partial implementation of the new calling conventions
1803   PASM only, don't mix PIR foo() call syntax with the new scheme
1804 - grammar and rule support in PGE - the Parrot Grammar Engine
1805 - TCL passes >10% of the tcl test suite
1806 - the usual bugfixes and improvements
1808 New in 0.2.1
1810 - better HLL support (short names for object attributes, and
1811   .HLL and n_operators pragmas)
1812 - string encoding and charset can now be set independently
1813 - experimental mmap IO layer for slurping files
1814 - distinct debug and trace flag settings
1815 - glob support in PGE
1816 - new character classification opcodes and interfaces
1818 New in 0.2.0
1820 - parrot repository is now under subversion
1821 - MMD (Multi Method Dispatch) enhanced
1822 - new unary and infix opcodes that return new result PMCs
1823 - dynamic scalar PMCs inherit now almost all from Parrot core PMCs
1824 - more unification of PMCs and ParrotObjects
1825 - tailcalls for functions and methods
1826 - PGE (Parrot Grammar Engine) reworked
1827 - Pugs creates Parrot code and Pugs is a registered compiler now
1828 - new languages/lisp
1829 - the usual bug fixes and improvements
1831 New in 0.1.2
1833 - New string handling code. Strings now have charset and encoding
1834 - Parts of a generation garbage collector
1835 - Better Python code, separated in dynclasses
1836 - Parrot Grammar Engine
1837 - Improved test coverage and documentation
1839 New in 0.1.1
1841 Parrot 0.1.1 is an intermediate release with tons of updates and fixes.
1842  - Python support: Parrot runs 4/7 of the pie-thon test suite
1843  - Better OS support: more platforms, compiler, OS functions
1844  - Improved PIR syntax for method calls and <op>= assignment
1845  - Dynamic loading reworked including a "make install" target
1846  - MMD - multi method dispatch for binary vtable methods
1847  - Library improvement and cleanup
1848  - BigInt, Complex, *Array, Slice, Enumerate, None PMC classes
1849  - IA64 and hppa JIT support
1850  - Tons of fixes, improvements, new tests, and documentation updates.
1851 A lot is unfinished and keeps changing. Nethertheless Parrot is stable
1852 and usable at the surface, while internals are moving.
1854 New in 0.1.0
1855  - "Ladies and gentlemen, I give you... objects!"
1856  - Huge documentation overhaul
1857  - More supported platforms, s. PLATFORMS
1858  - Basic thread support for pthread based architectures
1859  - Basic event handling for timers and signals including:
1860  - PASM callbacks for NCI (native C) functions.
1861  - Improved platform configuration
1862  - COW stacks now working, stacks code redone
1863  - Structure handling vastly improved
1864  - Random PMC and rand primitives
1865  - Better subroutine call syntax in PIR
1866  - Make PIR subroutines compliant with pdd03
1867  - Improved profiling (DOD, GC timings)
1868  - Hash code improvements, incl. random key order support
1869  - Experimental freeze/thaw code for some PMC types
1870  - IO improvements for buffered layer and Win32
1871  - String iterators
1872  - String bitwise vtables
1873  - Many new opcodes
1874  - Support for JIT, where malloced memory isn't executable
1875  - Priority DOD scheme for objects that need timely destruction
1876  - Improved byte code loading (e.g. onLoad functions)
1877  - Language updates: forth, Perl 6/P6C, m4
1878  - Libraries: Getopt_Long, SDL, Dumper, Sort
1879  - new JAPH examples
1880  - Unified imcc and parrot test handling
1881  - Many new tests (make test reports 1386 tests)
1882  - Numerous bug fixes
1884 New in 0.0.13
1885  - The Big Move: Parrot source and build files rearranged into sub dirs
1886  - Build imcc as parrot
1887  - Objects more finished
1888  - Delegate vtable methods to byte code
1889  - Binary multi-method dispatching
1890  - Isa and does methods for PMCs
1891  - Call byte code from C
1892  - Start of extension interface
1893  - Experimental struct handling
1894  - Catch access to NULL PMCs
1895  - Experimental network socket interface code and opcodes
1896  - IO fixes and improvements
1897  - Dynamic opcode libraries
1898  - Fix-assigned opcode numbers
1899  - Argument flattening for function calls
1900  - More native call interface (NCI) signatures
1901  - Ncurses, postgres, and pcre interface libraries
1902  - Forth language is vastly improved
1903  - BSD and Win32 build improvements
1904  - Many new tests and fixes
1906 New in 0.0.12
1907  - This number intentionally left blank
1909 New in 0.0.11
1910  - Executable output
1911  - Dynamic PMC registration
1912  - Trial exception system
1913  - Beginnings of object system
1914  - Iterators
1915  - Ordered hashes
1916  - I/O system improvements
1917  - References
1918  - Documentation for basic PMC types
1919  - IMCC support of Parrot Calling Conventions
1920  - Runtime loading of chartypes (and other string improvements)
1921  - Conditional breakpoints
1922  - Dramatically accelerated sweeps for finalizable objects
1923  - Small PMCs (PMCs split into core and extensions)
1924  - Loadable bytecode packfiles
1925  - Constant PMCs
1926  - Sub variants that deal with the stack correctly
1927  - Switched runops core
1928  - Line numbers in warnings
1929  - Environment access
1930  - Many documentation cleanups
1931  - Conversion to CPS style!
1932  - BASIC debugger and many other wacky features
1933  - Filename, line number parsing support in IMCC
1935 New in 0.0.10
1936  - IMCC integration
1937  - eval
1938  - some more benchmarking
1939  - cgp core
1940  - optimized math ops
1941  - intersegment branches
1942  - more complete use of PObjs
1943  - beefed up packfiles
1944  - sub/continuation/coroutine fixes
1945  - better NCI (native calling interface)
1946  - many imcc improvements
1947  - jako improvements
1949 New in 0.0.9
1951 - Native function calling interface (Dan)
1952 - Stack/list aggregate rewrite (Leo)
1953 - Scratchpads (Jonathan Sillito)
1954 - Preliminary DotGNU support -- type conversion ops (Gopal V + Leo)
1955 - Buffer/PMC unification (Leo)
1956 - stabs debugging support for JIT (Leo)
1957 - Jako overhaul (Gregor)
1958 - Optional Lea allocator (Leo)
1959 - Parrot sprintf (Brent)
1960 - Miniparrot (Josh)
1961 - PMC Properties (Dan)
1962 - Various JIT improvements (D. Grunblatt + Leo)
1963 - Extensible packfiles (Juergen)
1964 - Restructured PMC hierarchy (Leo)
1965 - Real Scheme (Juergen)
1967 New in 0.0.8
1969 - Several new grammars and a BNF -> perl5 and perl6 converter (Jeff)
1970 - Working Perl 6 REs (Sean)
1971 - Keyed Access (Tom Hughes et al)
1972 - New PMCs (Alberto et al)
1973 - Better Documentation
1974 - New COW semantics
1975 - GC acceleration (Mike Lambert)
1976 - Lexical scope (Jonathan Sillito)
1977 - IMCC patches
1978 - JIT for the ARM
1980 New in 0.0.7
1982 - Perl 6 Grammar and Compiler (Sean)
1983 - Subroutines, coroutines, and continuations (Melvin)
1984 - GC improvements (Peter Gibbs, Mike Lambert)
1985 - Global variables (Melvin)
1986 - Intermediate bytecode compiler (Melvin, Angel)
1987 - And much, much more.
1989 New in 0.0.6
1991 - New assembler that support keyed types (Jeff)
1992 - New macro layer, allowing constants (Jeff)
1993 - New Configure.pl (Brent)
1994 - Changes to bytecode format, endian issues resolved (Melvin)
1995 - GC improvements and bug fixes (Peter Gibbs, Mike Lambert)
1996 - JIT compiler rewrite (Jason and Daniel)
1997 - Parrot assembler in Parrot (Daniel)
1998 - Parrot debugger (Daniel)
1999 - BASIC polished, Eliza.bas is new (Clint)
2000 - Cola compiler committed and working, with limited OOP (Melvin)
2001 - Keyed aggregates (Steve Fink)
2002 - Global ops (Melvin)
2003 - Compile-time speedup (Melvin)
2004 - Much documentation
2005 - New PDDs (Dan)
2006 - Contributed tetris and lzw files
2007 - And many more, from the cast of thousands
2009 New in 0.0.5
2011 - Full GC
2012 - Perl Scalar support in PMCs
2013 - Array and Hash types almost ready for prime-time
2014 - Internal support for keyed types
2015 - EMACS editing mode
2016 - New PDDs
2017 - New Language - BASIC
2018 - Regular expression compiler
2019 - More tests
2020 - Many, many bug fixes, enhancements, and speedups
2022 New in 0.0.4
2024 - Arena-based memory allocation system
2025 - Copying GC
2026 - New IO subsystem
2027 - "Predereferencing" mode - ./parrot -P - 22% speedup
2028 - JIT compiler - ./parrot -j
2029 - Parrot now builds warnings-clean on many platforms
2030 - Many more PMC methods implemented
2031 - Regular expression operations
2032 - Added a FAQ
2033 - Basic support for embedding Parrot in other programs
2034 - Warnings support
2035 - Added PDDs to distribution
2036 - Bignum library
2038 - PMC inheritance
2039 - Added an assembly optimizer
2040 - Improved string encoding/type support
2041 - Many more tests
2042 - Source reformatting
2043 - Major refactoring in packfile library
2044 - More Miniperl functionality
2045 - New PMC "clone" operator
2046 - Beginnings of key-based access to PMCs - arrays and hashes
2047 - MOPS comparisons in examples/mops/
2049 New in 0.0.3
2051 - PMCs!
2052 - Perl base scalar types implemented
2053 - A new minilanguage, Scheme
2054 - Much improved documentation
2055 - Register stacks pushing and popping
2056 - User stack pushing, popping and rotating
2057 - Jako updates: subroutines, more example programs, optimizations
2058 - test_prog renamed to 'parrot'
2060 - Added features to the assembler: @ for current location, and global
2061   labels
2062 - Build tweaks for VMS
2063 - Bytecode typing clean-ups
2064 - More platforms: OS X, HPUX, OS/2
2065 - The proliferation of runops cores reduced to one fast and one slow one
2066 - Opcode tracing, bounds checking, profiling
2067 - Vastly improved string support, with separation of encoding and
2068   charset
2069 - Lots more tests
2070 - Multiple interpreter creation support - the beginnings of threading
2071 - Much better resource handling - the beginnings of GC
2073 New in 0.0.2
2075 - Parrot now works on all core platforms
2076 - A large number of tests, in the standard Perl testing framework
2077 - A new minilanguage (Jako) which compiles to Parrot assembly
2078 - Documentation about the assembly language (docs/parrot_assembly.pod)
2080 - Separate modules for assembly (Parrot::Assemble) and bytecode
2081   manipulation (Parrot::PackFile::*, packfile.c)
2082 - Assembler completely rewritten
2083 - Better operand-type guessing in the assembler
2084 - Assembler support for '\n' etc. in string constants
2085 - Code reformatted to match the coding standards
2086 - New ops for register-constant INTEGER comparisons
2087 - Macro expansion in the assembler
2088 - IVs and NVs renamed to more friendly INTVAL and NUMVAL
2089 - Hard-coded pack("") formats removed
2090 - Better handling of floating-point numbers in assembler
2091 - Moved floats to constant table (fixing many alignment issues)