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