Starting release 0.7.0
[parrot.git] / NEWS
blob644138fa88e1407dd47bac01231a2af0cd05fe70
1 # $Id$
3 New in 0.7.0 [r29473 through r30270]
4 - Implementation
5   + new concurrency implementation (see PDD25)
6   + Exception PMC now captures a return continuation
7   + improved PMC encapsulation (Iterator, Key, Pair)
8 - Specification
9   + PDD27: add multisub lookup
10 - Languages
11   + Cardinal (Ruby):
12     - Class variables
13     - Parsing improvements
14     - Minor additions to class builtins
15     - Add support for block parameters to functions
16   + Lua:
17     - various language fixes
18     - refactor all libraries (namespace, method registration)
19     - add a OpenGL binding (still incomplete)
20     - lost user back trace (see ppd25 & pushaction)
21   + Pipp (PHP):
22     - Add support for while- and for-loops
23     - Add support for increment and decrement
24     - Designate PHP 5.3 as the reference implementation
25     - Improve support for string literals
26   + Pugs (Perl 6):
27     - removed due to bit rot
28   + Rakudo (Perl 6):
29     - now over 2200 passing spectests
30     - updated the Rakudo roadmap
31     - Perl 6 multi dispatch
32     - dispatch with slurpies
33     - class attributes ("my $.x")
34     - anonymous classes
35     - OO and metaclass improvements (.WHAT, .WHICH, .WHENCE)
36     - additional builtin methods and subs
37     - improved make test targets and harness
38   + Tcl:
39     - implement [lreverse], [lsort -command]
40     - allow [incr] to autovivify
41     - Update tclsh spec target to 8.5.3
42     - Fix bug in TclDict PMC, allowing ~200 more [dict] spec tests to pass
43     - Update 'make spectest' fudging, using TODO instead of SKIP if possible
44 - Compilers
45   + PCT:
46     - :scope('register') for PAST::Var nodes
47     - allow invocant specification in attribute scope PAST::Var nodes
48     - correct ordering of sub generation from POST
49     - add 'loadinit' attribute to PAST::Block for block initialization
50   + PIRC:
51     - PIR registers now use the vanilla register allocator
52     - all PASM output now uses PASM registers
53     - all .locals and $registers are mapped
54     - clean-up of grammar, back-end and documentation
55     - implemented constant folding
56     - implemented instruction selection
57 - Configuration
58   + tests now clean up after themselves
59   + improved parallel test support
60   + ports/cygwin added
61   + Darwin problems fixed
62 - Tools
63   + parrot_debugger renamed from pdb, numerous tweaks
64 - Miscellaneous
65   + IMCC cleanups
66   + :vtable implies self in PIR
67   + modest core speed improvements
68   + Cygwin support improved
69   + "say" now an opcode (was dispatched to a method; see Deprecations)
70 - Deprecations
71   + ".pragma n_operators" is deprecated
72   + old PASM register syntax (without "$") is deprecated
73   + bare (unquoted) method names are deprecated
74   + "#line" will be replaced with ".line"
75   + ".HLL_map" syntax will change
76   + ".loadlib" is now separate from ".HLL"
77   + mmdvtregister and mmdvtablefind opcodes are deprecated
78   + removed getfd, getclass opcodes
79   + removed IMCC syntax that treated some methods as builtins
80   + removed numeric get_attr and set_attr vtable entries
82 New in 0.6.4
83 - Documentation
84   + removed a lot of old information from the FAQ
85   + improved function level documentation
86 - Configuration
87   + removed the configuration item 'has_gnu_m4'
88   + refactored ICU-detection
89 - Languages
90   + ChitChat
91     - improved the Smalltalk implementation
92   + Pipp
93     - renamed Plumhead to Pipp
94     - support for a lot of builtin functions.
95     - Pipp now uses PHP specific data types.
96     - converted from PCT with TGE to PCT with NQP actions
97     - improvements in the PCT variant by using optok parsing
98     - start of object support
99   + pir
100     - simple assignments work
101   + json
102     - added a PCT-based implementation of JSON parsing
103   + lolcode
104     - improved handling of symbols
105     - added support for block handling
106     - added support for globals
107   + Lua
108     - more tests
109   + Rakudo
110     - updated Range implementation
111     - added enums
112     - added generic type declarations (::T)
113     - added runtime mixing of roles with 'does' and 'but'
114     - fixed handling of implicit lexicals ($_, $!, and $/)
115     - fixed implicit method calls on $_
116     - improved complex math builtins, added Complex
117     - moved many builtins to class Any
118     - declaration of lists of variables now work
119     - improved test infrastructure
120     - 910 additional passing spec tests since last release
121     - more convergence with STD.pm grammar
122     - added named 0-ary parsing and ops
123 - Compilers
124   + PCT:
125     - allowed subroutine and method names to be a PAST tree that produces the name
126     - Improved lexical handling
127 - Tools
128   + pbc_disassemble renamed from disassemble
129 - Implementation
130   + allowed .macro_const in PIR
131   + added the flag :lexid(...) for subroutines
132   + made multiple dispatch work for sub types
133   + fixed garbage collection bug related to the metadata attached to a PMC_EXT structure
134   + added a warning when using deprecated opcodes
135   + simplified the stacks implementation
136   + fixed C++ build
137   + improved closure and lexical support
138   + improved IMCC register allocator
139   + added cache for all runtime-constant strings, reducing memory usage
140 - Miscellaneous
141   + improved OpenGL/GLU/GLUT bindings
142   + added a standard profile for Perl::Critic coding standard testing
143   + added support for smoke testing with Smolder
144   + enabled use of Test::Harness 3.0 if available, but don't require it for 'make test'
145   + added the executable 'parrot_config' to query Parrot configuration
147 New in 0.6.3
148 - Specification
149   + updated pdd09_gc.pod
150 - Languages
151   + Cardinal:
152     - dramatically improved parsing speed
153     - added support for defining and instantiating classes
154     - started fleshing out the builtin class hierarchy
155     - added support for hashes and arrays
156   + Chitchat: added the start of a smalltalk compiler
157   + Pheme: updated to match PGE changes
158   + Pynie: return statement, other minor updates
159   + Rakudo:
160     - added working list and hash contexts
161     - added 'return' statements
162     - added => pair constructor
163     - added ?? !! ternary
164     - added Range, range operators, Complex
165     - added common List, Hash methods
166     - refactored base classes
167     - added Mutable, Perl6Scalar classes
168     - added type-checking, is readonly/rw/copy for parameters
169     - added make localtest, docs/spectest-progress.csv
170     - fix named unaries
171   + Squaak: implement return statement
172   + Tcl: updated control flow exceptions to use new builtin types
173 - Compilers
174   + All tools converted to P6object metamodel
175   + PGE:
176     - <?foo> is now a zero-width match
177     - reduced backtracking to improve parsing speed
178   + PCT:
179     - added "return" PAST.op node type for subroutine returns
180     - added "keyed_int" scoping to PAST::Var
181     - fixed calls to closures
182     - automatically transcode 7-bit unicode to ascii for faster processing
183   + NQP: added "return" statement, ?? !! ternary operator
184 - Configuration
185   + expanded step gen::opengl
186 - Implementation
187   + updated function and macro names to match pdd09_gc.pod
188   + removed Super PMC
189   + add ".namespace []" as alternative to ".namespace"
190   + "make codetest" target runs standard coding tests
191 - Miscellaneous
192   + added P6object class for Perl 6 interfaces to objects in Parrot
193   + ported OpenGL/GLU/GLUT bindings to Win32, BSD, and more Mac OS X variants
194   + generate OpenGL/GLU/GLUT bindings by parsing system headers
195   + new OpenGL example shapes.pir, covering basic OpenGL 1.1 / GLUT 3 APIs
196   + new float4.pir structure-packing benchmark
197   + reduced memory use for variables
198   + improved constant string caching
199   + made code g++ and gcc (with optimizations) safe
200   + the usual collection of bugfixes and optimizations
202 New in 0.6.2
203 - Specification
204   + updated and launched pdd28_strings.pod
205   + updated pdd19_pir.pod
206 - Implementation
207   + added implementation of Rational PMC.
208   + simplified ops control flow syntax
209   + enabled backtrace on non-glibc platforms too
210   + improved some PIR error reporting
211   + removed user stack opcodes
212     (save, restore, lookback, entrytype, depth, rotate_up)
213     (NOTE: This was scheduled to occur after 0.7.0, moved up to this release)
214   + removed register stack, saveall, and restoreall opcodes
215   + removed various deprecated features and unused code
216 - Languages
217   + Amber: retired
218   + C99: grammar updated
219   + Cardinal: resurrected, method calls and do blocks work now
220   + Eclectus: use NQP as PAST generating code
221   + Lua:
222     - added big number library
223     - updated to match PGE changes
224     - added a bytecode disassembler & a Lua 5.1 VM bytecode translator
225   + Pheme: updated to match PGE/PCT changes
226   + Plumhead:
227     - use NQP as PAST generating code
228     - use riaxpander for macro expansion
229   + Rakudo:
230     - updated ROADMAP
231     - conditional and loop statement modifiers
232     - lots of class, object, role, and method improvements
233     - Str increment and decrement
234     - improved spectest reporting
235     - type checking on assignment
236     - regexes and grammars
237     - undef and self
238     - placeholder vars
239 roadmap updated
240   + Squaak: added to repository
241   + TAP: retired
242 - Compilers
243   + PGE: updated to match Synopsis 5, deprecated features removed
244   + PCT:
245     - improve handling of register types, conversion between registers
246     - improved error diagnostics
247     - add 'arity' to for loops
248 - Configuration
249   + added step auto::opengl
250   + added step gen::opengl
251   + added step gen::call_list
252 - Miscellaneous
253   + still more optimizations and performance improvements, especially in GC
254   + new libraries: OpenGL/GLU/GLUT bindings (small subset working)
255   + new dump_pbc.pl utility: PBC disassembly/source code weaver
256   + improved C++ compiler support
257   + optimized builds work again
260 New in 0.6.1
261 - Specification
262   + drafted pdd29_compiler_tools.pod
263   + updated pdd28_character_sets.pod draft
264   + updated pdd19_pir.pod draft
265 - Languages
266   + c99: added independent C pre-processor
267   + HQ9+: reimplemented with PCT
268   + Lua:
269     . reimplementation with PCT, using PAST and POST
270     . behavior aligned wih 5.1.3
271   + Rakudo:
272     . implemented basic I/O, including '$*IN', '$*OUT', '$*ERR', 'prefix:='
273     . implemented simple typing and runtime type checking
274     . added basic multi-method dispatch
275     . expanded named argument handling, including Pair and colonpairs
276     . added 'Whatever' and 'Capture' classes
277     . implemented 'handles' trait verb
278     . added 'loop' statement
279     . implemented 'given', 'when', 'for', 'while', 'until' statement modifiers
280     . implemented Hash methods '.keys' and '.values'
281     . fixed bug to get '.WHAT' working correctly
282     . initial implementation of 'eval'
283 - Compilers
284   + NQP:
285     . created a bootstrapped build, see 'make boot'
286     . added 'infix:<', 'infix:<=', 'infix:>', 'infix:>=' relational operators
287     . added 'postfix:++', 'postfix:--' operators
288   + PCT:
289     . added methods specifying default behaviors in PAST, reducing repeated code
290     . improved symbol table lookup
291   + PGE:
292     . removed deprecated code including: P6Regex, P6Grammar, PAST-pm
293 - Miscellaneous
294   + notable speedups during compilation and execution of parrot and HLLs
295   + pdb (the parrot debugger) can now catch parrot exceptions
296   + better detection of glibc and gettext during configuration
297   + various bugfixes, code cleanups, deprecations, and coding standard fixes
300 New in 0.6.0
301 - Specification
302   + launched pdd18_security.pod
303   + updated pdd17_pmc.pod
304   + launching draft of pdd28_character_sets.pod
305 - Documentation
306   + cleanup of IMCC documentation
307 - Configuration
308   + add step auto::gettext
309   + add step auto::crypto
310 - Compilers
311   + PCT:
312     . Fix '-e' option
313     . Phase out P6Regex in favor of Perl6Regex
314   + IMCC:
315     '.local Array my_arr' is illegal now
316 - Languages
317   + C99: reimplementation with PCT
318   + lolcode:
319     . various updates
320     . add support for functions with params
321     . add math functions
322   + Rakudo:
323     . support for 'say'
324     . first cut at smart matching
325     . indirect method calls
326     . support for Pairs
327     . added methods 'grep' and 'first'
328     . implement auto{increment,decrement}
329     . initial implementation of 'perl6doc'
330   + Lua:
331     . various updates
332     . add base64 library
333   + Cardinal: basic support for functions with parameters
334   + Pheme: various updates
335   + Ecmascript: various updates
336   + Tcl: now targeting tcl 8.5.1, no more expected failures in test suite.
337     (No, this doesn't mean everything's implemented. =-)
338   + Eclectus: various updates
339   + WMLScript: various updates
340 - Implementation
341   + PDD17 (PMCs)
342   + Add library YAML::Dumper
343   + Add the MD2, MD4, MD5, RIPEMD160, SHA & SHA1 PMC, as a wrapper
344      around libcrypto
345 - Miscellaneous
346   + various bugfixes, code cleanups and coding standard fixes
347   + consting
348   + remove external Perl 5 modules from the Parrot distribution
350 New in 0.5.3
351 - Documentation
352   + PDD09 (garbage collection) - approved
353   + PDD28 (character sets) - draft started
354   + added function documentation to some core functions
355   + PCT beginners guide, optable guide and PAST nodes guide, bug fixes
356 - Compilers
357   + IMCC: plugged various memory leaks and other cleanups
358   + PCT:
359     . add "attribute" as a scope variant to PAST::Var nodes
360     . add 'shift' and 'pop' methods to PAST:: nodes
361   + NQP: add '=:=' op, tests for scalar and list contextualizers, \x escapes
362 - Languages
363   + APL: reimplementation with PCT
364   + Cardinal (Ruby): reimplemention with PCT
365   + Ecmascript: reimplementation with PCT
366   + lolcode: improved expression parsing, ifthen, IT, YARN
367   + lua:
368     . aligned with Lua official release 5.1.3.
369     . added initial PCT-based implementation.
370   + Punie (Perl 1): refactor to use standard PCT-based filenames
371   + Pynie (Python): add functions
372   + Rakudo (Perl 6):
373     . rebranded, formerly known as 'perl6'
374     . passes many more official Perl 6 Specification tests
375     . added 'perl6doc' utility
376     . oo including meta?classes, objects, methods, attributes, role composition
377     . match variables, while/until statements, traits
378     . many new methods for Str, List, Hash, Junction
379 - Implementation
380 - Deprecations
381   + PCCINVOKE syntax for named arguments using []; use () instead.
382   + see DEPRECATED.pod for details
383 - Miscellaneous
384   + pbc_to_exe refactored for code reduction, portability, and maintainability
385   + various bug fixes
386   + #line directives added to generated JIT files, improving debugging
387   + consting, attribute marking, refactoring, warnings cleanup
389 New in 0.5.2
390 - Documentation
391   + PDD27 (multiple dispatch) - debut of new design
392   + Numerous small updates to glossary.pod, etc
393 - Compiler Toolkit
394   + NQP: optional, named, and named/required parameters
395   + PIRC: cleanups
396   + PAST: "defined-or"
397 - Languages
398   + New mk_language_shell.pl script creates language stubs
399   + LOLCODE: new
400   + Lua: various
401   + Eclectus: start with support for local variables and procedures,
402     use SXML as intermediate representation
403   + Perl 6: list builtins, compiler directives, command-line options, etc.
404   + "make perl6" now builds a Perl 6 executable
405   + punie: more builtins, control structures, code refactoring
406   + pynie: builtin stubs, more tests
407 - Implementation
408   + New "pbc_to_exe" utility turns bytecode to executables
409   + New set_outer method for subs
410   + Further configuration refactoring for testability
411   + All functions now completely headerized
412   + Concurrency: interpreter schedulers
413 - Deprecations
414   + DYNSELF (changes to SELF; SELF to STATICSELF)
415   + METHOD (replaced by renaming PCCMETHOD)
416   + pmcinfo op (superseded by 'inspect')
417   + get_attr, set_attr, and 8 other vtable methods
418   + See DEPRECATED.pod for details
419 - Miscellaneous
420   + Many bug fixes
421   + Minor speed enhancements with UTF-8 string handling
422   + Debian packaging
423   + consting, attribute marking, warnings cleanup, memory leaks plugged ...
425 New in 0.5.1
426 - Documentation
427   + PDD19 (PIR) - reflect state on the ground; incorporate old IMCC docs
428   + PDD25 (Concurrency) - launch out of draft
429   + Improve documentation of deprecated parrot features.
430 - Compilers
431   + PCT: Parrot Compiler Toolkit redesigned and updated
432   + NQP: major updates, including support for namespaces,
433     module/class declarations, methods
434   + IMCC: remove .sym as alias for .local. Remove .pcc_
435     prefix for calling directives (.pcc_begin became .begin_call).
436   + PIRC: creates an AST during the parse.
437   + PGE: more updates to match S05 syntax.
438 - Languages
439   + perl6: re-implemented using PCT and NQP, new object subsystem
440   + abc: re-implemented using PCT and NQP
441   + eclectus: initial implementation
442   + plumhead: add PCT variant
443   + punie: re-implemented using PCT and NQP, extended to handle subroutines
444     Happy 20th Birthday, Perl!
445   + pynie: re-implemented using PCT and NQP
446   + PIR: start conversion to NQP (under construction)
447 - Implementation
448   + new opcodes: 'die', 'addhandler', 'copy'
449   + Initial implementation of Concurrency PDD
450   + Add 'arity' method to Sub and NCI PMCs
451 - Miscellaneous
452   + Bug cleanup
453   + consting, attribute marking, warnings cleanup, memory leaks, GC...
454   + dead code removal (includes some defunct languages)
456 New in 0.5.0
457 - Implementation
458   + PDD15 (OO) branch merged with trunk; this release contains a working,
459     tested implementation of the latest OO model
460   + Added pop_eh/push_eh_p/count_eh opcodes
461   + Add --runcore command line option
462   + Add gcdebug runcore to help track down GC bugs
463   + minor improvements to IA-32 JIT
464 - Documentation
465   + PDD19 (PIR): updates to macros, .pcc* directives
466   + PDD25 (Concurrency): updated
467   + PDD26 (AST):  draft approved
468   + PDD23 (Exceptions): draft approved
469   + Copyright cleanups
470 - Languages/Compilers
471   + languages/APL: minor updates, PDD15 conformance
472   + languages/dotnet: minor updates
473   + languages/lua: minor updates, PDD15 conformance
474   + languages/lisp: minor updates
475   + languages/perl6: minor updates, PDD15 conformance
476   + languages/plumhead: minor updates
477   + languages/punie: minor updates, PDD15 conformance
478   + languages/nqp: minor updates
479   + languages/scheme: many updates, PDD15 conformance, improved tests, use
480     PMCs instead of primitive registers to represent values
481   + languages/tcl: bugfixes, PDD15 conformance
482   + languages/WMLScript: minor updates
483   + compilers/pirc: updates from PDD19, PDD06
484   + compilers/pct: minor updates, PDD15 conformance
485   + compilers/pge: PDD15 conformance
486   + compilers/tge: PDD15 conformance
487 - Configuration
488   + Improve test coverage
489   + Improve reporting when a step fails; allow abort on failure
490 - Miscellaneous
491   + More coding standard conformance, tests, cleanup, speedups,
492     warnings cleanup
493   + Bug cleanup, esp. GC bugs
494   + Eliminate .imc extension (use .pir)
495   + Simplify some core config steps to not allow interactive prompting
496 - Removed
497   + clear_eh opcode
499 New in 0.4.17
500 - Implementation
501  + Bug fixes (including Coverity IDs 20, 22, 30, 119-122, 124-126, 129-131)
502    Also various GC, memory, and segfault issues
503  + Fix & reenable CGP core
504  + Parrot's -r flag now works again (compile to and execute bytecode)
505  + Updates to pmc2c & PIR syntaxes
506  + Fix Complex PMC
507  + Minor performance improvements, especially in PGE
508 - Documentation
509  + PDD02 "Vtables" - superceded by PDD17
510  + PDD06 "PASM" - minor updates
511  + PDD17 "PMC" - add VTABLE syntax, update core PMC struct, restore UnionVal
512  + PDD19 "PIR" - early review started
513  + PDD21 "Namespaces" - cleanup
514  + PDD24 "Events" - draft approved
515  + PDD25 "Concurrency" - minor updates
516  + PDD26 "AST" - draft version begun
517  + PIR tutorials updated
518 - Languages/Compilers
519  + Make scheme work with the current calling conventions, other major work.
520  + Updates to m4, lua, compilers/pirc, languages/PIR, dotnet, tcl
521 - Miscellaneous:
522  + make -j functional again
523  + Code cleanup (refactoring, optimizations)
525 New in 0.4.16
526 - Implementation:
527  + Performed code review on every PMC
528  + Modified PMC code generation to use Storable, reducing compile times
529  + Added a makefile target to generate test coverage data of C sources
530 - Languages:
531  + NQP: added lists, for loops, operators, comparison and multiplicative operators
532  + Announced Kea-CL, Kea Common Lisp, an ANSI Common Lisp implementation
533    The repository is available at https://rgrjr.dyndns.org/svn/kea-cl/trunk/
534 - Documentation
535  + PDD17 "PMCs" - draft approved, the design is complete
536  + Added more PIR tutorials, see examples/tutorial/00_README.pod
537 - Miscellaneous:
538  + Many bugfixes, enhancements, documentation, and coding standard updates
539  + Deprecated PMC constants and other crufty syntax, see DEPRECATED.pod
540  + Improved icc compiler compatibility for error line reporting
542 New in 0.4.15
543 - Implementation:
544  + Lots of code review, many bugs fixed
545  + Many more code cleanups and compiler warning levels
546  + Started a new jit engine for 64-bit processors
547  + Refactored configure process, with tests and new diagnostic options
548  + Added new CodeString PMC for dynamic generation of PIR code
549  + More pdd15 support for object metamodel.
550 - Languages:
551  + Added NQP ("Not Quite Perl"), a very lightweight Perl 6-like language
552  + Significant improvements and refactors to PCT (Parrot Compiler Toolkit)
553  + perl6 passes more spec tests
554  + Lua works now with a PGE/TGE/PAST-pm based compiler, lives in one pbc,
555    and the interpreter has same behavior as original.
556 - Documentation
557  + Added a committers' HOWTO
558  + More PIR tutorial examples
559  + Added PAUSE guide
561 New in 0.4.14
562 - Now, with Seat Belts!
563  + added makefile targets for Sun lint, BSD lint, and splint
564  + corrected many errors picked up by these tools
565  + decorated source code with compiler hints, assertions, and attribute macros
566  + automated creation of function declarations to prevent common errors
567  + increased compiler warnings levels
568  + converted more exceptions to a recoverable form
569 - Languages:
570  + updated Lisp, Lua, Perl 6, tcl, regex, Scheme ("Pheme")
571  + Perl 6 now fetches selected tests from pugs, and even passes some
572  + PGE modified to handle {*} action subs for top-down and bottom-up parsers,
573    and to allow grammar subclassing
574  + HLLCompiler now has better exception, eval, and exit support
575  + Introduced PCT, a refactor of HLLCompiler and PAST-pm
576 - Design:
577  + PDD15 "Objects" - details added to 'new' and 'getattribute' opcodes
578  + PDD17 "PMCs" - notes added on instantiation and dynamic extention in PIR
579 - Documentation:
580  + added Parrot-related text from "Perl 6 and Parrot Essentials" book,
581    tutorial examples from "Learning PIR" talk, and PDD15 metamodel diagrams
582 - Implementation:
583  + reduced memory footprint when using named registers
584  + implemented overridding of vtable methods by PDD15 classes
585  + improved PDD15 support for 'new', 'instantiate', and others
586  + added makefile targets to ease core and HLL makefile regeneration
587  + updated parrot dubugger, "pdb", to allow loading of commands from file
588 - Misc:
589  + many bugfixes, enhancements, documentation, and coding standard updates
591 New in 0.4.13
592 - Languages:
593  + Updated Lisp, Lua, PHP ("Plumhead"), Python ("Pynie"), ABC,
594    WMLScript, and Tcl ("ParTcl").
595  + Perl 6 passes all of the sanity tests.
596  + PGE supports latest Perl 6 grammar syntax. Perl 6, Python
597    ("Pynie"), and ABC parsers updated to match.
598  + Updated PHP ("Plumhead") to Antlr 3.0.
599  + Lua added the beginnings of a PGE/TGE based compiler (not yet
600    replacing the Perl/Yapp compiler).
601  + Lisp updated for current features, added a test suite.
602 - Core Implementation:
603  + Filled in features and backward compatibility for PDD 15 objects.
604    New object metamodel passes 85% of old test suite.
605  + GCC API symbols are visible externally only when explicitly exported.
606  + Added generated GCC compiler attributes to increase warnings, and
607    cleaned up resulting warnings.
608  + Code cleanup efforts and fixed memory leaks by the cage cleaners,
609    resulting in notable speed increases.
610 - Misc:
611  + Updated Parrot distribution to Artistic License 2.0, from dual
612    Artistic 1/GPL license.
613  + SDL examples brought up-to-date with current features.
615 New in 0.4.12
616 - Build:
617  + even more refactorings and improvements in configuration system
618  + improved tests and documentation for configuration system
619 - Languages:
620  + Updated abc, PHP ("Plumhead"), Lua, Tcl
621  + Reclaimed Lisp
622 - Design:
623  + new PMC PDD draft partially completed
624 - Implementation:
625  + continued implementation of PDD 15 (Objects)
626  + minor garbage collector and memory management improvements
627  + several memory leaks resolved
628  + extended support for compilers other than GCC
629  + improved C++ compiler compatibility
630  + enhanced support for Solaris, non-MSVC Win32, and other platforms
632 New in 0.4.11
634 - Compilers:
635  + IMCC: added documentation for C-based Parrot Calling Conventions,
636    refactorings and bug fixes
637  + PGE: new perl6regex front end reflecting recent S05 syntax changes
638  + PIRC: new prototype PIR parser
639 - Languages:
640  + Updated Lua, PHP ("Plumhead"), BASIC, pynie
641  + Lua implements environment
642 - Design:
643  + PDD15 "Objects" - details added, and draft approved
644 - Documentation:
645  + Added guidelines for PMC documentation
646 - Implementation:
647  + PDD15 implementation is largely complete, including role-based composition,
648    introspection, and C3 method resolution order
649  + new Exporter PMC for importing globals between namespaces
650  + new string utilities for radix conversion
651  + PCCINVOKE and Parrot_PCCINVOKE allow calling using the full Parrot Calling
652    Conventions from PMCs and C code respectively
653 - Build:
654  + Refactorings and improvements in test coverage for 'Configure.pl'
655 - Misc:
656  + many bugfixes, enhancements, and code cleanup
657  + added example subversion config file
658  + extended support for gcc, icc, and other compilers
659  + extended support for Solaris and other platforms
662 New in 0.4.10
664 - Compilers:
665  + IMCC: Parrot calling conventions now available between two C PMCs (PMINVOKE)
666  + PGE: Match object improvements
667  + smop: added Attribute and Class PMCs
668  + HLLCompiler: improvements for interactive mode
669 - PAST:
670  + extended binding to a list of variables
671 - Languages:
672  + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), Ruby ("Cardinal")
673  + Update PIR, regex, Zcode
674  + New language: Pynie - a Python compiler for Parrot
675  + Lua implements require and many other ops, improved regex support
676  + Remove parakeet
677 - Design:
678  + PDD01 "Overview" - updated architecture and platform information
679  + PDD15 "Objects" - details on roles, objects, and classes added
680  + PDD22 "I/O" - added async ops and Status PMC details
681 - Documentation:
682  + Added guides for Metacommitter, Relase Manager, and Cage Cleaner roles
683 - Implementation:
684  + Object, Class, Role, and Attribute PMC implementation has begun
685  + Perl 5 module "Parrot::Embed" now compiles and links on all platforms
686 - Build:
687  + Major improvements in test coverage for 'ops2c.pl'
688 - Misc:
689  + New utility: Crow, a template processor
690  + New library module: Config/JSON for reading/writing JSON files
691  + many bugfixes, enhancements, and coding standard updates, code cleanup
693 New in 0.4.9
695 - Compilers:
696    + IMCC: Parrot calling conventions now available in C PMCs, allowing
697      named, optional, slurpy, and flat parameter passing
698    + PGE: extended support for Perl 5 Regexes
699    + smop: prototype object model implementation
700    + hllcompiler: refactored to run a configurable set of compilation stages
701 - PAST:
702    + redesigned assign/binding to support Perl 6 binding semantics
703 - Languages:
704    + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), perl6, perl5
705    + New language: PIR - a PGE-based implementation of Parrot PIR
706    + perl6 now supports binding (':=') and 'join'
707    + lua generates tail calls, and supports its own regex flavor (PGE-based)
708    + Pheme still works, huzzah!
709 - Design:
710    + PDD21 "Objects" - rewritten
711    + PDD22 "I/O" - updated and 'TODO' tests added
712 - Documentation:
713    + Interface stability classification standards approved
714    + Roles and Responsibilities documented approved
715    + Official 'drafts' directory created (was 'clip')
716 - Implementation:
717    + More NameSpace and OS PMC methods implemented
718    + Parrot executable fullname and basename now available in PIR/PASM code
719    + new 'chomp' library function
720 - Build:
721    + Major improvements in test coverage for 'ops2pm.pl'
722 - Misc:
723    + many bugfixes, enhancements, and coding standard updates
724    + extended support for Sun Workshop Compilers
725    + Parrot now builds on PocketPC platform
727 New in 0.4.8
729 - Compilers:
730    + HLLCompiler: added tracing options, modified api
731    + PGE & TGE bugfixes and updates
732 - PAST:
733    + added global and lexical variable support
734    + added looping constructs, arrays, hashes
735 - Languages:
736    + Updated PHP ("Plumhead"), Tcl ("ParTcl"),
737      forth, perl6, lua, abc, APL, WMLScript, punie
738    + ParTcl is passing > 24.9% of Tcl cvs-latest test suite
739    + perl6 now supports hashes, arrays, method calls, arity-based
740      multisubs, quoted terms, ranges (non-lazy), try blocks, $!
741 - Design:
742    + PDD01 "Overview" - updated
743    + PDD22 "I/O" - rewritten and approved
744 - Test Suite:
745    + Converted Perl 5 Regex tests to PIR, with notable speedup
746    + Added tests for opcodes, compilers, languages, and coding standards
747 - Build:
748    + Major improvements in test coverage for 'pmc2c.pl'
749 - Misc:
750    + many bugfixes, enhancements, and coding standard updates
751    + extended support for non-core platforms including Cygwin, Tru64
753 New in 0.4.7
755 - New languages: PHP ("Plumhead"), Forth
756 - Updated languages: Ruby ("Cardinal"), Tcl, Lua
757 - Remove old Python implementation from Parrot repository; the new Python
758   language code is hosted at http://pirate.tangentcode.com
759 - Compilers:
760    + PGE updated with more expressions, latest changes to S05
761    + new Perl 6 grammar compiler
762 - Integration:
763    + Perl 5 module "Parrot::Embed" allows easy embedding of a Parrot
764      runtime into a Perl 5 program
765 - PIR:
766    + new :init pragma for subs that must run before the main function
767    + new :vtable pragma to identify subs that override PMC vtable methods,
768      eliminating the need for special subroutine names
769    + PIR parser/compiler does not stop on first syntax error
770    + Vanilla register allocator ("register alligator") greatly improves
771      performance compiling large functions
772    + Eliminated limit on number of PIR macros
773 - PMCs:
774    + hash lookups return null instead of None for missing keys
775 - Design:
776    + PDD13 "Bytecode files: format and manipulation" - new
777    + PDD10 "Embedding" - new
778    + PDD25 "Concurrency" - rewritten
779    + PDD15 "Objects" - new section on redesign requirements
780    + PDD07 "Coding standards" - significant updates and automated tests
781 - Test Suite:
782    + Many many more new tests
783 - Build Process:
784    + autoconf compatible install options
785 - Misc:
786    + Namespace refinements
787    + Coroutine improvements
788    + An impressive swarm of other bugfixes and enhancements
790 New in 0.4.6
792 - New languages: Ruby ("Cardinal"), Javascript ("ecmascript")
793 - Updated languages: Tcl, dotnet, bc, Pheme, Punie, WMLScript
794 - Updated compilers: PGE, TGE
795 - IMCC updates:
796    + ".loadlib" directive expresses dependencies
797    + ".namespace" with no parameter goes to HLL root
798    + lexer is reentrant (reentrant grammar in progress)
799 - Namespace improvements:
800    + new suite of opcodes to access namespaces and globals
801      ("find_global" and "store_global" will be phased out)
802    + namespace '' no longer means HLL root
803 - Design document updates:
804     namespaces (pdd23), basic types (pdd17), embedding
805 - Updated tool requirements for developers:
806     flex 2.5.33, bison 2.1, perl 5.6.1
807 - New to-do list for people new to Parrot:
808     cage/todo.pod
809 - The usual plethora of bugfixes and enhancements
811 New in 0.4.5
813 - unicode subroutine names
814 - hierarchical class names finished including MMD support
815 - new dotnet CLI to PIR translator
816 - improved TGE code and compiler
817 - APL: vector handling
818 - new STM branch in the svn repository
819 - the usual bugfixes and enhancements
821 New in 0.4.4
823 - hierarchical class names
824 - APL compiler
825   - under development
826   - understands simple vector ops, strings
827   - demonstrates use of Unicode in Parrot
828 - pgc, a compiler for rules and operator precedence parsers
829 - Major redesign and improvements for PGE
830   - compilers understand named parameter options
831   - :ratchet option implemented to support non-backtracking quantifiers
832 - TGE (tree grammar engine) for tree transformations
833   - tgc, tree grammar compiler
834 - perl6 compiler
835   - support for many operators, lexical scalars, regex matches
836 - new pheme (Parrot scheme) compiler
838 New in 0.4.3
840 - namespaces partially implemented
841 - rulec, Perl 6 rule compiler
842 - PGE improvements including return values for closure
843 - parts of a Perl 6 parser based on PGE
844 - complex trigonometric methods
845 - type of Sub PMC is now overridable by HLL
846 - NetBSD support
847 - many bug fixes and improvements
849 New in 0.4.2
851 - improved PPC and x86 JIT support including JIT compilation
852   of very simple PASM/PIR subroutines
853 - preliminary libreadline support
854 - better trace and debug features
855 - pkgconfig support
856 - META.yml to support proper indexing on CPAN
857 - new opcode: hcf (in "my_ops" in dynamic op library)
858 - new File pmc for file specific ops (is_dir, is_file, copy, rename...)
859 - named arguments and parameters (both :named("") and => syntaxes)
860 - ongoing config improvements
861 - tons of bug fixes and other small improvements - too much to list all
863 New in 0.4.1
865 - Installation: 'make install' is using standard locations now
866   (/usr/local is the default --prefix)
867 - Produce static and shared libraries on some systems
868 - Configure system rearragement
869 - OS pmc started (mkdir,cd,cwd,rm,umask,stat)
870 - Shootout examples
871 - Test files are now testable with 'prove'
872 - Smoke (and smokej) outputs progress
873 - PIR supports: I = A < B (>,<=,>=,==,!=)
874 - Add support for octal number constants
875 - partcl updates:
876   - almost finish [string]; start [file]
877   - add build tool for generating inline'd tcl builtins from templates.
878 - Jako updates: NCI, subroutines, global variables and constants all work.
879   (Gregor)
881 New in 0.4.0
883 - New lexical handling and closure support including better
884   introspection for caller and outer
885 - PGE (Parrot Grammar Engine) provides now compilers for P6Rule,
886   P6Grammar, P5Regexp, and Glob
887 - ca. 1000 new tests including 800 for Perl5 regexp
888 - Improved unicode charset and encoding support
889 - Calling conventions for exception handlers
890 - Punie (Perl 1) uses TGE (Tree Grammar Engine) to convert from
891   PGE match objects to AST via two steps of tree transformation grammars
892 - New languages: amber and lua
893 - The usual code fixes, cleanup, and improvements, including an overhaul
894   of the config and test framework
896 New in 0.3.1
898 - Variable sized register frames are finished. Each subroutine gets
899   the amount of registers that it actually needs. No more spilling.
900 - Vastly improved PGE (Parrot Grammar Engine) including shift-reduce,
901   precedence-based expression parser and support for matching of
902   bracketed text delimited by e.g. ()[]{}'"
903 - uniccode character classification (is_upper ...)
904 - support for heredoc syntax in assembler
905 - improved examples, basic JSON support
906 - debian packaging support
907 - the usual improvements, bug fixes, and cleanup
908 - test count exceeds 3000
910 New in 0.3.0
912 - New calling conventions implemented: see PDD03 for details
913 - Merge multiple Parrot bytecode (PBC) files into a singe PBC file
914 - 'make smoke' target going beta
915 - bc now supports if statements, comparison ops, prefix inc/dec
916 - ParTcl adds [lassign], [switch] (partially); [expr] converted to a compiler
917 - Many exciting doc updates, tests, and bugfixes, too numerous to mention
919 New in 0.2.3
921 - Dynamic classes now compile on Windows (including ParTcl)
922 - New Super PMC allows easy access to superclass methods
923 - Implement C3 method resolution order (just like Perl 6 & Python)
924 - ParTcl has new PIR-based parser and passes more Tcl tests
925 - added character class support in Globs to PGE
926 - added language implementations of unlambda, Lazy-k
927 - many bugfixes, including GC and memory leaks
928 - the new calling scheme continued to evolve in branches/leo-ctx5
930 New in 0.2.2
932 - new call scheme: docs/pdds/pdd03_calling_conventions.pod
933 - partial implementation of the new calling conventions
934   PASM only, don't mix PIR foo() call syntax with the new scheme
935 - grammar and rule support in PGE - the Parrot Grammar Engine
936 - TCL passes >10% of the tcl test suite
937 - the usual bugfixes and improvements
939 New in 0.2.1
941 - better HLL support (short names for object attributes, and
942   .HLL and n_operators pragmas)
943 - string encoding and charset can now be set independently
944 - experimental mmap IO layer for slurping files
945 - distinct debug and trace flag settings
946 - glob support in PGE
947 - new character classification opcodes and interfaces
949 New in 0.2.0
951 - parrot repository is now under subversion
952 - MMD (Multi Method Dispatch) enhanced
953 - new unary and infix opcodes that return new result PMCs
954 - dynamic scalar PMCs inherit now almost all from Parrot core PMCs
955 - more unification of PMCs and ParrotObjects
956 - tailcalls for functions and methods
957 - PGE (Parrot Grammar Engine) reworked
958 - Pugs creates Parrot code and Pugs is a registered compiler now
959 - new languages/lisp
960 - the usual bug fixes and improvements
962 New in 0.1.2
964 - New string handling code. Strings now have charset and encoding
965 - Parts of a generation garbage collector
966 - Better Python code, separated in dynclasses
967 - Parrot Grammar Engine
968 - Improved test coverage and documentation
970 New in 0.1.1
972 Parrot 0.1.1 is an intermediate release with tons of updates and fixes.
973  - Python support: Parrot runs 4/7 of the pie-thon test suite
974  - Better OS support: more platforms, compiler, OS functions
975  - Improved PIR syntax for method calls and <op>= assignment
976  - Dynamic loading reworked including a "make install" target
977  - MMD - multi method dispatch for binary vtable methods
978  - Library improvement and cleanup
979  - BigInt, Complex, *Array, Slice, Enumerate, None PMC classes
980  - IA64 and hppa JIT support
981  - Tons of fixes, improvements, new tests, and documentation updates.
982 A lot is unfinished and keeps changing. Nethertheless Parrot is stable
983 and usable at the surface, while internals are moving.
985 New in 0.1.0
986  - "Ladies and gentlemen, I give you... objects!"
987  - Huge documentation overhaul
988  - More supported platforms, s. PLATFORMS
989  - Basic thread support for pthread based architectures
990  - Basic event handling for timers and signals including:
991  - PASM callbacks for NCI (native C) functions.
992  - Improved platform configuration
993  - COW stacks now working, stacks code redone
994  - Structure handling vastly improved
995  - Random PMC and rand primitives
996  - Better subroutine call syntax in PIR
997  - Make PIR subroutines compliant with pdd03
998  - Improved profiling (DOD, GC timings)
999  - Hash code improvements, incl. random key order support
1000  - Experimental freeze/thaw code for some PMC types
1001  - IO improvements for buffered layer and Win32
1002  - String iterators
1003  - String bitwise vtables
1004  - Many new opcodes
1005  - Support for JIT, where malloced memory isn't executable
1006  - Priority DOD scheme for objects that need timely destruction
1007  - Improved byte code loading (e.g. onLoad functions)
1008  - Language updates: forth, Perl 6/P6C, m4
1009  - Libraries: Getopt_Long, SDL, Dumper, Sort
1010  - new JAPH examples
1011  - Unified imcc and parrot test handling
1012  - Many new tests (make test reports 1386 tests)
1013  - Numerous bug fixes
1015 New in 0.0.13
1016  - The Big Move: Parrot source and build files rearranged into sub dirs
1017  - Build imcc as parrot
1018  - Objects more finished
1019  - Delegate vtable methods to byte code
1020  - Binary multi-method dispatching
1021  - Isa and does methods for PMCs
1022  - Call byte code from C
1023  - Start of extension interface
1024  - Experimental struct handling
1025  - Catch access to NULL PMCs
1026  - Experimental network socket interface code and opcodes
1027  - IO fixes and improvements
1028  - Dynamic opcode libraries
1029  - Fix-assigned opcode numbers
1030  - Argument flattening for function calls
1031  - More native call interface (NCI) signatures
1032  - Ncurses, postgres, and pcre interface libraries
1033  - Forth language is vastly improved
1034  - BSD and Win32 build improvements
1035  - Many new tests and fixes
1037 New in 0.0.12
1038  - This number intentionally left blank
1040 New in 0.0.11
1041  - Executable output
1042  - Dynamic PMC registration
1043  - Trial exception system
1044  - Beginnings of object system
1045  - Iterators
1046  - Ordered hashes
1047  - I/O system improvements
1048  - References
1049  - Documentation for basic PMC types
1050  - IMCC support of Parrot Calling Conventions
1051  - Runtime loading of chartypes (and other string improvements)
1052  - Conditional breakpoints
1053  - Dramatically accelerated sweeps for finalizable objects
1054  - Small PMCs (PMCs split into core and extensions)
1055  - Loadable bytecode packfiles
1056  - Constant PMCs
1057  - Sub variants that deal with the stack correctly
1058  - Switched runops core
1059  - Line numbers in warnings
1060  - Environment access
1061  - Many documentation cleanups
1062  - Conversion to CPS style!
1063  - BASIC debugger and many other wacky features
1064  - Filename, line number parsing support in IMCC
1066 New in 0.0.10
1067  - IMCC integration
1068  - eval
1069  - some more benchmarking
1070  - cgp core
1071  - optimized math ops
1072  - intersegment branches
1073  - more complete use of PObjs
1074  - beefed up packfiles
1075  - sub/continuation/coroutine fixes
1076  - better NCI (native calling interface)
1077  - many imcc improvements
1078  - jako improvements
1080 New in 0.0.9
1082 - Native function calling interface (Dan)
1083 - Stack/list aggregate rewrite (Leo)
1084 - Scratchpads (Jonathan Sillito)
1085 - Preliminary DotGNU support -- type conversion ops (Gopal V + Leo)
1086 - Buffer/PMC unification (Leo)
1087 - stabs debugging support for JIT (Leo)
1088 - Jako overhaul (Gregor)
1089 - Optional Lea allocator (Leo)
1090 - Parrot sprintf (Brent)
1091 - Miniparrot (Josh)
1092 - PMC Properties (Dan)
1093 - Various JIT improvements (D. Grunblatt + Leo)
1094 - Extensible packfiles (Juergen)
1095 - Restructured PMC hierarchy (Leo)
1096 - Real Scheme (Juergen)
1098 New in 0.0.8
1100 - Several new grammars and a BNF -> perl5 and perl6 converter (Jeff)
1101 - Working Perl 6 REs (Sean)
1102 - Keyed Access (Tom Hughes et al)
1103 - New PMCs (Alberto et al)
1104 - Better Documentation
1105 - New COW semantics
1106 - GC acceleration (Mike Lambert)
1107 - Lexical scope (Jonathan Sillito)
1108 - IMCC patches
1109 - JIT for the ARM
1111 New in 0.0.7
1113 - Perl 6 Grammar and Compiler (Sean)
1114 - Subroutines, coroutines, and continuations (Melvin)
1115 - GC improvements (Peter Gibbs, Mike Lambert)
1116 - Global variables (Melvin)
1117 - Intermediate bytecode compiler (Melvin, Angel)
1118 - And much, much more.
1120 New in 0.0.6
1122 - New assembler that support keyed types (Jeff)
1123 - New macro layer, allowing constants (Jeff)
1124 - New Configure.pl (Brent)
1125 - Changes to bytecode format, endian issues resolved (Melvin)
1126 - GC improvements and bug fixes (Peter Gibbs, Mike Lambert)
1127 - JIT compiler rewrite (Jason and Daniel)
1128 - Parrot assembler in Parrot (Daniel)
1129 - Parrot debugger (Daniel)
1130 - BASIC polished, Eliza.bas is new (Clint)
1131 - Cola compiler committed and working, with limited OOP (Melvin)
1132 - Keyed aggregates (Steve Fink)
1133 - Global ops (Melvin)
1134 - Compile-time speedup (Melvin)
1135 - Much documentation
1136 - New PDDs (Dan)
1137 - Contributed tetris and lzw files
1138 - And many more, from the cast of thousands
1140 New in 0.0.5
1142 - Full GC
1143 - Perl Scalar support in PMCs
1144 - Array and Hash types almost ready for prime-time
1145 - Internal support for keyed types
1146 - EMACS editing mode
1147 - New PDDs
1148 - New Language - BASIC
1149 - Regular expression compiler
1150 - More tests
1151 - Many, many bug fixes, enhancements, and speedups
1153 New in 0.0.4
1155 - Arena-based memory allocation system
1156 - Copying GC
1157 - New IO subsystem
1158 - "Predereferencing" mode - ./parrot -P - 22% speedup
1159 - JIT compiler - ./parrot -j
1160 - Parrot now builds warnings-clean on many platforms
1161 - Many more PMC methods implemented
1162 - Regular expression operations
1163 - Added a FAQ
1164 - Basic support for embedding Parrot in other programs
1165 - Warnings support
1166 - Added PDDs to distribution
1167 - Bignum library
1169 - PMC inheritance
1170 - Added an assembly optimizer
1171 - Improved string encoding/type support
1172 - Many more tests
1173 - Source reformatting
1174 - Major refactoring in packfile library
1175 - More Miniperl functionality
1176 - New PMC "clone" operator
1177 - Beginnings of key-based access to PMCs - arrays and hashes
1178 - MOPS comparisons in examples/mops/
1180 New in 0.0.3
1182 - PMCs!
1183 - Perl base scalar types implemented
1184 - A new minilanguage, Scheme
1185 - Much improved documentation
1186 - Register stacks pushing and popping
1187 - User stack pushing, popping and rotating
1188 - Jako updates: subroutines, more example programs, optimizations
1189 - test_prog renamed to 'parrot'
1191 - Added features to the assembler: @ for current location, and global
1192   labels
1193 - Build tweaks for VMS
1194 - Bytecode typing clean-ups
1195 - More platforms: OS X, HPUX, OS/2
1196 - The proliferation of runops cores reduced to one fast and one slow one
1197 - Opcode tracing, bounds checking, profiling
1198 - Vastly improved string support, with separation of encoding and
1199   charset
1200 - Lots more tests
1201 - Multiple interpreter creation support - the beginnings of threading
1202 - Much better resource handling - the beginnings of GC
1204 New in 0.0.2
1206 - Parrot now works on all core platforms
1207 - A large number of tests, in the standard Perl testing framework
1208 - A new minilanguage (Jako) which compiles to Parrot assembly
1209 - Documentation about the assembly language (docs/parrot_assembly.pod)
1211 - Separate modules for assembly (Parrot::Assemble) and bytecode
1212   manipulation (Parrot::PackFile::*, packfile.c)
1213 - Assembler completely rewritten
1214 - Better operand-type guessing in the assembler
1215 - Assembler support for '\n' etc. in string constants
1216 - Code reformatted to match the coding standards
1217 - New ops for register-constant INTEGER comparisons
1218 - Macro expansion in the assembler
1219 - IVs and NVs renamed to more friendly INTVAL and NUMVAL
1220 - Hard-coded pack("") formats removed
1221 - Better handling of floating-point numbers in assembler
1222 - Moved floats to constant table (fixing many alignment issues)