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