3 New in the November 2008 release
5 + remove the pseudo PIR opcode 'addr'
9 + float precision expanded to 15 significant digits from 6
10 + large integers autopromoted in PIR so as not to lose precision
11 + improved precision of complex square root
12 + exception handlers can register types of exceptions they catch
15 - implemented gather, take, and yield builtins
16 - Range, Time, Math, GC, Kernel classes
18 - added a new committer
19 + Markdown : new lightweight markup language
20 - start implementation with PCT/NQP
22 - Moved to its own repository: http://code.google.com/p/partcl/
24 - split() works with regexes
25 - implemented Str.comb
26 - ord() and chr() builtins
27 - improved parsing of literal numbers
28 - support for hyphens and dashes in identifiers
30 - fixed floating point constant precision
31 - improved namespace handling, closer to STD.pm model
32 - support for exporting symbols
35 - now generates classes in nested namespaces instead of :: names
36 - supports class creation in caller's HLL namespace
38 - now using true nested namespaces instead of :: names
39 - cleaned up HLLCompiler interactive prompts and readline mode
40 - updated to use typed exception handler registration
41 - added initial support for loop control exceptions
43 - fixed Heredoc preprocessor
44 - cleaned up Macro preprocessor
45 - many code clean-ups, warning fixes and consting
46 - updated Makefile for easier compilation
48 - Added .tailcall syntax to replace .return in tailcall context
51 - an old style line numbered Basic interpreter able to use parrot objects
52 - example connecting to mysql via nci
53 - example using classes to write and run an embedded Basic program
56 - Added chapters for PCT, PMCs, and Opcodes/Runcores
57 - Expanded and improved formatting in various chapters
63 + add -I and -L command line options
64 + support for null strings in NCI calls
65 + preliminary support for resumable exceptions
66 + add '.hll_map' method for dynamic HLL type mapping
67 + more parrot_debugger fixes
68 + remove obsolete '.past' extension
71 - now over 3300 passing spectests
73 - precompiled scripts (--target=pir can now be executed standalone)
74 - Support for @*INC and %*INC varialbes
75 - additional builtin methods and subs
76 - added 'fail' function, warnings on use of undefined values
78 - qq, qw, q quoting forms
79 - run tests in parallel
83 - 'require' and precompiled modules
85 - all Array tests pass
87 - default arguments to functions
91 - add :loadinit attribute for PAST::Block
93 - major refactoring to allow all PIR keywords as identifiers
94 - links to libparrot now, so all Parrot ops are recognized as such
95 - implemented .loadlib, .HLL_map, .HLL
97 + add Xlib and Mysql modules and test programs to NCI examples
98 + many updates and cleanups to PDD documents
102 + PDD27: add multisub lookup
104 + new concurrency implementation (see PDD25)
105 + Exception PMC now captures a return continuation
106 + improved PMC encapsulation (Iterator, Key, Pair)
110 - parsing improvements
111 - minor additions to class builtins
112 - add support for block parameters to functions
114 - various language fixes
115 - refactor all libraries (namespace, method registration)
116 - add a OpenGL binding (still incomplete)
117 - lost user back trace (see ppd25 & pushaction)
119 - add support for while- and for-loops
120 - add support for increment and decrement
121 - designate PHP 5.3 as the reference implementation
122 - improve support for string literals
124 - removed due to bit rot
126 - now over 2200 passing spectests
127 - updated the Rakudo roadmap
128 - Perl 6 multi dispatch
129 - dispatch with slurpies
130 - class attributes ("my $.x")
132 - OO and metaclass improvements (.WHAT, .WHICH, .WHENCE)
133 - additional builtin methods and subs
134 - improved make test targets and harness
136 - implement [lreverse], [lsort -command]
137 - allow [incr] to autovivify
138 - update tclsh spec target to 8.5.3
139 - fix bug in TclDict PMC, allowing ~200 more [dict] spec tests to pass
140 - update 'make spectest' fudging, using TODO instead of SKIP if possible
143 - :scope('register') for PAST::Var nodes
144 - allow invocant specification in attribute scope PAST::Var nodes
145 - correct ordering of sub generation from POST
146 - add 'loadinit' attribute to PAST::Block for block initialization
148 - PIR registers now use the vanilla register allocator
149 - all PASM output now uses PASM registers
150 - all .locals and $registers are mapped
151 - clean-up of grammar, back-end and documentation
152 - implemented constant folding
153 - implemented instruction selection
155 + tests now clean up after themselves
156 + improved parallel test support
158 + Darwin problems fixed
160 + parrot_debugger renamed from pdb, numerous tweaks
163 + :vtable implies self in PIR
164 + modest core speed improvements
165 + Cygwin support improved
166 + "say" now an opcode (was dispatched to a method; see Deprecations)
168 + ".pragma n_operators" is deprecated
169 + old PASM register syntax (without "$") is deprecated
170 + bare (unquoted) method names are deprecated
171 + "#line" will be replaced with ".line"
172 + ".HLL_map" syntax will change
173 + ".loadlib" is now separate from ".HLL"
174 + mmdvtregister and mmdvtablefind opcodes are deprecated
175 + removed getfd, getclass opcodes
176 + removed IMCC syntax that treated some methods as builtins
177 + removed numeric get_attr and set_attr vtable entries
181 + removed a lot of old information from the FAQ
182 + improved function level documentation
184 + removed the configuration item 'has_gnu_m4'
185 + refactored ICU-detection
188 - improved the Smalltalk implementation
190 - renamed Plumhead to Pipp
191 - support for a lot of builtin functions.
192 - Pipp now uses PHP specific data types.
193 - converted from PCT with TGE to PCT with NQP actions
194 - improvements in the PCT variant by using optok parsing
195 - start of object support
197 - simple assignments work
199 - added a PCT-based implementation of JSON parsing
201 - improved handling of symbols
202 - added support for block handling
203 - added support for globals
207 - updated Range implementation
209 - added generic type declarations (::T)
210 - added runtime mixing of roles with 'does' and 'but'
211 - fixed handling of implicit lexicals ($_, $!, and $/)
212 - fixed implicit method calls on $_
213 - improved complex math builtins, added Complex
214 - moved many builtins to class Any
215 - declaration of lists of variables now work
216 - improved test infrastructure
217 - 910 additional passing spec tests since last release
218 - more convergence with STD.pm grammar
219 - added named 0-ary parsing and ops
222 - allowed subroutine and method names to be a PAST tree that produces the name
223 - Improved lexical handling
225 + pbc_disassemble renamed from disassemble
227 + allowed .macro_const in PIR
228 + added the flag :lexid(...) for subroutines
229 + made multiple dispatch work for sub types
230 + fixed garbage collection bug related to the metadata attached to a PMC_EXT structure
231 + added a warning when using deprecated opcodes
232 + simplified the stacks implementation
234 + improved closure and lexical support
235 + improved IMCC register allocator
236 + added cache for all runtime-constant strings, reducing memory usage
238 + improved OpenGL/GLU/GLUT bindings
239 + added a standard profile for Perl::Critic coding standard testing
240 + added support for smoke testing with Smolder
241 + enabled use of Test::Harness 3.0 if available, but don't require it for 'make test'
242 + added the executable 'parrot_config' to query Parrot configuration
246 + updated pdd09_gc.pod
249 - dramatically improved parsing speed
250 - added support for defining and instantiating classes
251 - started fleshing out the builtin class hierarchy
252 - added support for hashes and arrays
253 + Chitchat: added the start of a smalltalk compiler
254 + Pheme: updated to match PGE changes
255 + Pynie: return statement, other minor updates
257 - added working list and hash contexts
258 - added 'return' statements
259 - added => pair constructor
260 - added ?? !! ternary
261 - added Range, range operators, Complex
262 - added common List, Hash methods
263 - refactored base classes
264 - added Mutable, Perl6Scalar classes
265 - added type-checking, is readonly/rw/copy for parameters
266 - added make localtest, docs/spectest-progress.csv
268 + Squaak: implement return statement
269 + Tcl: updated control flow exceptions to use new builtin types
271 + All tools converted to P6object metamodel
273 - <?foo> is now a zero-width match
274 - reduced backtracking to improve parsing speed
276 - added "return" PAST.op node type for subroutine returns
277 - added "keyed_int" scoping to PAST::Var
278 - fixed calls to closures
279 - automatically transcode 7-bit unicode to ascii for faster processing
280 + NQP: added "return" statement, ?? !! ternary operator
282 + expanded step gen::opengl
284 + updated function and macro names to match pdd09_gc.pod
286 + add ".namespace []" as alternative to ".namespace"
287 + "make codetest" target runs standard coding tests
289 + added P6object class for Perl 6 interfaces to objects in Parrot
290 + ported OpenGL/GLU/GLUT bindings to Win32, BSD, and more Mac OS X variants
291 + generate OpenGL/GLU/GLUT bindings by parsing system headers
292 + new OpenGL example shapes.pir, covering basic OpenGL 1.1 / GLUT 3 APIs
293 + new float4.pir structure-packing benchmark
294 + reduced memory use for variables
295 + improved constant string caching
296 + made code g++ and gcc (with optimizations) safe
297 + the usual collection of bugfixes and optimizations
301 + updated and launched pdd28_strings.pod
302 + updated pdd19_pir.pod
304 + added implementation of Rational PMC.
305 + simplified ops control flow syntax
306 + enabled backtrace on non-glibc platforms too
307 + improved some PIR error reporting
308 + removed user stack opcodes
309 (save, restore, lookback, entrytype, depth, rotate_up)
310 (NOTE: This was scheduled to occur after 0.7.0, moved up to this release)
311 + removed register stack, saveall, and restoreall opcodes
312 + removed various deprecated features and unused code
315 + C99: grammar updated
316 + Cardinal: resurrected, method calls and do blocks work now
317 + Eclectus: use NQP as PAST generating code
319 - added big number library
320 - updated to match PGE changes
321 - added a bytecode disassembler & a Lua 5.1 VM bytecode translator
322 + Pheme: updated to match PGE/PCT changes
324 - use NQP as PAST generating code
325 - use riaxpander for macro expansion
328 - conditional and loop statement modifiers
329 - lots of class, object, role, and method improvements
330 - Str increment and decrement
331 - improved spectest reporting
332 - type checking on assignment
333 - regexes and grammars
337 + Squaak: added to repository
340 + PGE: updated to match Synopsis 5, deprecated features removed
342 - improve handling of register types, conversion between registers
343 - improved error diagnostics
344 - add 'arity' to for loops
346 + added step auto::opengl
347 + added step gen::opengl
348 + added step gen::call_list
350 + still more optimizations and performance improvements, especially in GC
351 + new libraries: OpenGL/GLU/GLUT bindings (small subset working)
352 + new dump_pbc.pl utility: PBC disassembly/source code weaver
353 + improved C++ compiler support
354 + optimized builds work again
359 + drafted pdd29_compiler_tools.pod
360 + updated pdd28_character_sets.pod draft
361 + updated pdd19_pir.pod draft
363 + c99: added independent C pre-processor
364 + HQ9+: reimplemented with PCT
366 . reimplementation with PCT, using PAST and POST
367 . behavior aligned wih 5.1.3
369 . implemented basic I/O, including '$*IN', '$*OUT', '$*ERR', 'prefix:='
370 . implemented simple typing and runtime type checking
371 . added basic multi-method dispatch
372 . expanded named argument handling, including Pair and colonpairs
373 . added 'Whatever' and 'Capture' classes
374 . implemented 'handles' trait verb
375 . added 'loop' statement
376 . implemented 'given', 'when', 'for', 'while', 'until' statement modifiers
377 . implemented Hash methods '.keys' and '.values'
378 . fixed bug to get '.WHAT' working correctly
379 . initial implementation of 'eval'
382 . created a bootstrapped build, see 'make boot'
383 . added 'infix:<', 'infix:<=', 'infix:>', 'infix:>=' relational operators
384 . added 'postfix:++', 'postfix:--' operators
386 . added methods specifying default behaviors in PAST, reducing repeated code
387 . improved symbol table lookup
389 . removed deprecated code including: P6Regex, P6Grammar, PAST-pm
391 + notable speedups during compilation and execution of parrot and HLLs
392 + pdb (the parrot debugger) can now catch parrot exceptions
393 + better detection of glibc and gettext during configuration
394 + various bugfixes, code cleanups, deprecations, and coding standard fixes
399 + launched pdd18_security.pod
400 + updated pdd17_pmc.pod
401 + launching draft of pdd28_character_sets.pod
403 + cleanup of IMCC documentation
405 + add step auto::gettext
406 + add step auto::crypto
410 . Phase out P6Regex in favor of Perl6Regex
412 '.local Array my_arr' is illegal now
414 + C99: reimplementation with PCT
417 . add support for functions with params
421 . first cut at smart matching
422 . indirect method calls
424 . added methods 'grep' and 'first'
425 . implement auto{increment,decrement}
426 . initial implementation of 'perl6doc'
430 + Cardinal: basic support for functions with parameters
431 + Pheme: various updates
432 + Ecmascript: various updates
433 + Tcl: now targeting tcl 8.5.1, no more expected failures in test suite.
434 (No, this doesn't mean everything's implemented. =-)
435 + Eclectus: various updates
436 + WMLScript: various updates
439 + Add library YAML::Dumper
440 + Add the MD2, MD4, MD5, RIPEMD160, SHA & SHA1 PMC, as a wrapper
443 + various bugfixes, code cleanups and coding standard fixes
445 + remove external Perl 5 modules from the Parrot distribution
449 + PDD09 (garbage collection) - approved
450 + PDD28 (character sets) - draft started
451 + added function documentation to some core functions
452 + PCT beginners guide, optable guide and PAST nodes guide, bug fixes
454 + IMCC: plugged various memory leaks and other cleanups
456 . add "attribute" as a scope variant to PAST::Var nodes
457 . add 'shift' and 'pop' methods to PAST:: nodes
458 + NQP: add '=:=' op, tests for scalar and list contextualizers, \x escapes
460 + APL: reimplementation with PCT
461 + Cardinal (Ruby): reimplemention with PCT
462 + Ecmascript: reimplementation with PCT
463 + lolcode: improved expression parsing, ifthen, IT, YARN
465 . aligned with Lua official release 5.1.3.
466 . added initial PCT-based implementation.
467 + Punie (Perl 1): refactor to use standard PCT-based filenames
468 + Pynie (Python): add functions
470 . rebranded, formerly known as 'perl6'
471 . passes many more official Perl 6 Specification tests
472 . added 'perl6doc' utility
473 . oo including meta?classes, objects, methods, attributes, role composition
474 . match variables, while/until statements, traits
475 . many new methods for Str, List, Hash, Junction
478 + PCCINVOKE syntax for named arguments using []; use () instead.
479 + see DEPRECATED.pod for details
481 + pbc_to_exe refactored for code reduction, portability, and maintainability
483 + #line directives added to generated JIT files, improving debugging
484 + consting, attribute marking, refactoring, warnings cleanup
488 + PDD27 (multiple dispatch) - debut of new design
489 + Numerous small updates to glossary.pod, etc
491 + NQP: optional, named, and named/required parameters
495 + New mk_language_shell.pl script creates language stubs
498 + Eclectus: start with support for local variables and procedures,
499 use SXML as intermediate representation
500 + Perl 6: list builtins, compiler directives, command-line options, etc.
501 + "make perl6" now builds a Perl 6 executable
502 + punie: more builtins, control structures, code refactoring
503 + pynie: builtin stubs, more tests
505 + New "pbc_to_exe" utility turns bytecode to executables
506 + New set_outer method for subs
507 + Further configuration refactoring for testability
508 + All functions now completely headerized
509 + Concurrency: interpreter schedulers
511 + DYNSELF (changes to SELF; SELF to STATICSELF)
512 + METHOD (replaced by renaming PCCMETHOD)
513 + pmcinfo op (superseded by 'inspect')
514 + get_attr, set_attr, and 8 other vtable methods
515 + See DEPRECATED.pod for details
518 + Minor speed enhancements with UTF-8 string handling
520 + consting, attribute marking, warnings cleanup, memory leaks plugged ...
524 + PDD19 (PIR) - reflect state on the ground; incorporate old IMCC docs
525 + PDD25 (Concurrency) - launch out of draft
526 + Improve documentation of deprecated parrot features.
528 + PCT: Parrot Compiler Toolkit redesigned and updated
529 + NQP: major updates, including support for namespaces,
530 module/class declarations, methods
531 + IMCC: remove .sym as alias for .local. Remove .pcc_
532 prefix for calling directives (.pcc_begin became .begin_call).
533 + PIRC: creates an AST during the parse.
534 + PGE: more updates to match S05 syntax.
536 + perl6: re-implemented using PCT and NQP, new object subsystem
537 + abc: re-implemented using PCT and NQP
538 + eclectus: initial implementation
539 + plumhead: add PCT variant
540 + punie: re-implemented using PCT and NQP, extended to handle subroutines
541 Happy 20th Birthday, Perl!
542 + pynie: re-implemented using PCT and NQP
543 + PIR: start conversion to NQP (under construction)
545 + new opcodes: 'die', 'addhandler', 'copy'
546 + Initial implementation of Concurrency PDD
547 + Add 'arity' method to Sub and NCI PMCs
550 + consting, attribute marking, warnings cleanup, memory leaks, GC...
551 + dead code removal (includes some defunct languages)
555 + PDD15 (OO) branch merged with trunk; this release contains a working,
556 tested implementation of the latest OO model
557 + Added pop_eh/push_eh_p/count_eh opcodes
558 + Add --runcore command line option
559 + Add gcdebug runcore to help track down GC bugs
560 + minor improvements to IA-32 JIT
562 + PDD19 (PIR): updates to macros, .pcc* directives
563 + PDD25 (Concurrency): updated
564 + PDD26 (AST): draft approved
565 + PDD23 (Exceptions): draft approved
567 - Languages/Compilers
568 + languages/APL: minor updates, PDD15 conformance
569 + languages/dotnet: minor updates
570 + languages/lua: minor updates, PDD15 conformance
571 + languages/lisp: minor updates
572 + languages/perl6: minor updates, PDD15 conformance
573 + languages/plumhead: minor updates
574 + languages/punie: minor updates, PDD15 conformance
575 + languages/nqp: minor updates
576 + languages/scheme: many updates, PDD15 conformance, improved tests, use
577 PMCs instead of primitive registers to represent values
578 + languages/tcl: bugfixes, PDD15 conformance
579 + languages/WMLScript: minor updates
580 + compilers/pirc: updates from PDD19, PDD06
581 + compilers/pct: minor updates, PDD15 conformance
582 + compilers/pge: PDD15 conformance
583 + compilers/tge: PDD15 conformance
585 + Improve test coverage
586 + Improve reporting when a step fails; allow abort on failure
588 + More coding standard conformance, tests, cleanup, speedups,
590 + Bug cleanup, esp. GC bugs
591 + Eliminate .imc extension (use .pir)
592 + Simplify some core config steps to not allow interactive prompting
598 + Bug fixes (including Coverity IDs 20, 22, 30, 119-122, 124-126, 129-131)
599 Also various GC, memory, and segfault issues
600 + Fix & reenable CGP core
601 + Parrot's -r flag now works again (compile to and execute bytecode)
602 + Updates to pmc2c & PIR syntaxes
604 + Minor performance improvements, especially in PGE
606 + PDD02 "Vtables" - superceded by PDD17
607 + PDD06 "PASM" - minor updates
608 + PDD17 "PMC" - add VTABLE syntax, update core PMC struct, restore UnionVal
609 + PDD19 "PIR" - early review started
610 + PDD21 "Namespaces" - cleanup
611 + PDD24 "Events" - draft approved
612 + PDD25 "Concurrency" - minor updates
613 + PDD26 "AST" - draft version begun
614 + PIR tutorials updated
615 - Languages/Compilers
616 + Make scheme work with the current calling conventions, other major work.
617 + Updates to m4, lua, compilers/pirc, languages/PIR, dotnet, tcl
619 + make -j functional again
620 + Code cleanup (refactoring, optimizations)
624 + Performed code review on every PMC
625 + Modified PMC code generation to use Storable, reducing compile times
626 + Added a makefile target to generate test coverage data of C sources
628 + NQP: added lists, for loops, operators, comparison and multiplicative operators
629 + Announced Kea-CL, Kea Common Lisp, an ANSI Common Lisp implementation
630 The repository is available at https://rgrjr.dyndns.org/svn/kea-cl/trunk/
632 + PDD17 "PMCs" - draft approved, the design is complete
633 + Added more PIR tutorials, see examples/tutorial/00_README.pod
635 + Many bugfixes, enhancements, documentation, and coding standard updates
636 + Deprecated PMC constants and other crufty syntax, see DEPRECATED.pod
637 + Improved icc compiler compatibility for error line reporting
641 + Lots of code review, many bugs fixed
642 + Many more code cleanups and compiler warning levels
643 + Started a new jit engine for 64-bit processors
644 + Refactored configure process, with tests and new diagnostic options
645 + Added new CodeString PMC for dynamic generation of PIR code
646 + More pdd15 support for object metamodel.
648 + Added NQP ("Not Quite Perl"), a very lightweight Perl 6-like language
649 + Significant improvements and refactors to PCT (Parrot Compiler Toolkit)
650 + perl6 passes more spec tests
651 + Lua works now with a PGE/TGE/PAST-pm based compiler, lives in one pbc,
652 and the interpreter has same behavior as original.
654 + Added a committers' HOWTO
655 + More PIR tutorial examples
659 - Now, with Seat Belts!
660 + added makefile targets for Sun lint, BSD lint, and splint
661 + corrected many errors picked up by these tools
662 + decorated source code with compiler hints, assertions, and attribute macros
663 + automated creation of function declarations to prevent common errors
664 + increased compiler warnings levels
665 + converted more exceptions to a recoverable form
667 + updated Lisp, Lua, Perl 6, tcl, regex, Scheme ("Pheme")
668 + Perl 6 now fetches selected tests from pugs, and even passes some
669 + PGE modified to handle {*} action subs for top-down and bottom-up parsers,
670 and to allow grammar subclassing
671 + HLLCompiler now has better exception, eval, and exit support
672 + Introduced PCT, a refactor of HLLCompiler and PAST-pm
674 + PDD15 "Objects" - details added to 'new' and 'getattribute' opcodes
675 + PDD17 "PMCs" - notes added on instantiation and dynamic extention in PIR
677 + added Parrot-related text from "Perl 6 and Parrot Essentials" book,
678 tutorial examples from "Learning PIR" talk, and PDD15 metamodel diagrams
680 + reduced memory footprint when using named registers
681 + implemented overridding of vtable methods by PDD15 classes
682 + improved PDD15 support for 'new', 'instantiate', and others
683 + added makefile targets to ease core and HLL makefile regeneration
684 + updated parrot dubugger, "pdb", to allow loading of commands from file
686 + many bugfixes, enhancements, documentation, and coding standard updates
690 + Updated Lisp, Lua, PHP ("Plumhead"), Python ("Pynie"), ABC,
691 WMLScript, and Tcl ("ParTcl").
692 + Perl 6 passes all of the sanity tests.
693 + PGE supports latest Perl 6 grammar syntax. Perl 6, Python
694 ("Pynie"), and ABC parsers updated to match.
695 + Updated PHP ("Plumhead") to Antlr 3.0.
696 + Lua added the beginnings of a PGE/TGE based compiler (not yet
697 replacing the Perl/Yapp compiler).
698 + Lisp updated for current features, added a test suite.
699 - Core Implementation:
700 + Filled in features and backward compatibility for PDD 15 objects.
701 New object metamodel passes 85% of old test suite.
702 + GCC API symbols are visible externally only when explicitly exported.
703 + Added generated GCC compiler attributes to increase warnings, and
704 cleaned up resulting warnings.
705 + Code cleanup efforts and fixed memory leaks by the cage cleaners,
706 resulting in notable speed increases.
708 + Updated Parrot distribution to Artistic License 2.0, from dual
709 Artistic 1/GPL license.
710 + SDL examples brought up-to-date with current features.
714 + even more refactorings and improvements in configuration system
715 + improved tests and documentation for configuration system
717 + Updated abc, PHP ("Plumhead"), Lua, Tcl
720 + new PMC PDD draft partially completed
722 + continued implementation of PDD 15 (Objects)
723 + minor garbage collector and memory management improvements
724 + several memory leaks resolved
725 + extended support for compilers other than GCC
726 + improved C++ compiler compatibility
727 + enhanced support for Solaris, non-MSVC Win32, and other platforms
732 + IMCC: added documentation for C-based Parrot Calling Conventions,
733 refactorings and bug fixes
734 + PGE: new perl6regex front end reflecting recent S05 syntax changes
735 + PIRC: new prototype PIR parser
737 + Updated Lua, PHP ("Plumhead"), BASIC, pynie
738 + Lua implements environment
740 + PDD15 "Objects" - details added, and draft approved
742 + Added guidelines for PMC documentation
744 + PDD15 implementation is largely complete, including role-based composition,
745 introspection, and C3 method resolution order
746 + new Exporter PMC for importing globals between namespaces
747 + new string utilities for radix conversion
748 + PCCINVOKE and Parrot_PCCINVOKE allow calling using the full Parrot Calling
749 Conventions from PMCs and C code respectively
751 + Refactorings and improvements in test coverage for 'Configure.pl'
753 + many bugfixes, enhancements, and code cleanup
754 + added example subversion config file
755 + extended support for gcc, icc, and other compilers
756 + extended support for Solaris and other platforms
762 + IMCC: Parrot calling conventions now available between two C PMCs (PMINVOKE)
763 + PGE: Match object improvements
764 + smop: added Attribute and Class PMCs
765 + HLLCompiler: improvements for interactive mode
767 + extended binding to a list of variables
769 + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), Ruby ("Cardinal")
770 + Update PIR, regex, Zcode
771 + New language: Pynie - a Python compiler for Parrot
772 + Lua implements require and many other ops, improved regex support
775 + PDD01 "Overview" - updated architecture and platform information
776 + PDD15 "Objects" - details on roles, objects, and classes added
777 + PDD22 "I/O" - added async ops and Status PMC details
779 + Added guides for Metacommitter, Relase Manager, and Cage Cleaner roles
781 + Object, Class, Role, and Attribute PMC implementation has begun
782 + Perl 5 module "Parrot::Embed" now compiles and links on all platforms
784 + Major improvements in test coverage for 'ops2c.pl'
786 + New utility: Crow, a template processor
787 + New library module: Config/JSON for reading/writing JSON files
788 + many bugfixes, enhancements, and coding standard updates, code cleanup
793 + IMCC: Parrot calling conventions now available in C PMCs, allowing
794 named, optional, slurpy, and flat parameter passing
795 + PGE: extended support for Perl 5 Regexes
796 + smop: prototype object model implementation
797 + hllcompiler: refactored to run a configurable set of compilation stages
799 + redesigned assign/binding to support Perl 6 binding semantics
801 + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), perl6, perl5
802 + New language: PIR - a PGE-based implementation of Parrot PIR
803 + perl6 now supports binding (':=') and 'join'
804 + lua generates tail calls, and supports its own regex flavor (PGE-based)
805 + Pheme still works, huzzah!
807 + PDD21 "Objects" - rewritten
808 + PDD22 "I/O" - updated and 'TODO' tests added
810 + Interface stability classification standards approved
811 + Roles and Responsibilities documented approved
812 + Official 'drafts' directory created (was 'clip')
814 + More NameSpace and OS PMC methods implemented
815 + Parrot executable fullname and basename now available in PIR/PASM code
816 + new 'chomp' library function
818 + Major improvements in test coverage for 'ops2pm.pl'
820 + many bugfixes, enhancements, and coding standard updates
821 + extended support for Sun Workshop Compilers
822 + Parrot now builds on PocketPC platform
827 + HLLCompiler: added tracing options, modified api
828 + PGE & TGE bugfixes and updates
830 + added global and lexical variable support
831 + added looping constructs, arrays, hashes
833 + Updated PHP ("Plumhead"), Tcl ("ParTcl"),
834 forth, perl6, lua, abc, APL, WMLScript, punie
835 + ParTcl is passing > 24.9% of Tcl cvs-latest test suite
836 + perl6 now supports hashes, arrays, method calls, arity-based
837 multisubs, quoted terms, ranges (non-lazy), try blocks, $!
839 + PDD01 "Overview" - updated
840 + PDD22 "I/O" - rewritten and approved
842 + Converted Perl 5 Regex tests to PIR, with notable speedup
843 + Added tests for opcodes, compilers, languages, and coding standards
845 + Major improvements in test coverage for 'pmc2c.pl'
847 + many bugfixes, enhancements, and coding standard updates
848 + extended support for non-core platforms including Cygwin, Tru64
852 - New languages: PHP ("Plumhead"), Forth
853 - Updated languages: Ruby ("Cardinal"), Tcl, Lua
854 - Remove old Python implementation from Parrot repository; the new Python
855 language code is hosted at http://pirate.tangentcode.com
857 + PGE updated with more expressions, latest changes to S05
858 + new Perl 6 grammar compiler
860 + Perl 5 module "Parrot::Embed" allows easy embedding of a Parrot
861 runtime into a Perl 5 program
863 + new :init pragma for subs that must run before the main function
864 + new :vtable pragma to identify subs that override PMC vtable methods,
865 eliminating the need for special subroutine names
866 + PIR parser/compiler does not stop on first syntax error
867 + Vanilla register allocator ("register alligator") greatly improves
868 performance compiling large functions
869 + Eliminated limit on number of PIR macros
871 + hash lookups return null instead of None for missing keys
873 + PDD13 "Bytecode files: format and manipulation" - new
874 + PDD10 "Embedding" - new
875 + PDD25 "Concurrency" - rewritten
876 + PDD15 "Objects" - new section on redesign requirements
877 + PDD07 "Coding standards" - significant updates and automated tests
879 + Many many more new tests
881 + autoconf compatible install options
883 + Namespace refinements
884 + Coroutine improvements
885 + An impressive swarm of other bugfixes and enhancements
889 - New languages: Ruby ("Cardinal"), Javascript ("ecmascript")
890 - Updated languages: Tcl, dotnet, bc, Pheme, Punie, WMLScript
891 - Updated compilers: PGE, TGE
893 + ".loadlib" directive expresses dependencies
894 + ".namespace" with no parameter goes to HLL root
895 + lexer is reentrant (reentrant grammar in progress)
896 - Namespace improvements:
897 + new suite of opcodes to access namespaces and globals
898 ("find_global" and "store_global" will be phased out)
899 + namespace '' no longer means HLL root
900 - Design document updates:
901 namespaces (pdd23), basic types (pdd17), embedding
902 - Updated tool requirements for developers:
903 flex 2.5.33, bison 2.1, perl 5.6.1
904 - New to-do list for people new to Parrot:
906 - The usual plethora of bugfixes and enhancements
910 - unicode subroutine names
911 - hierarchical class names finished including MMD support
912 - new dotnet CLI to PIR translator
913 - improved TGE code and compiler
914 - APL: vector handling
915 - new STM branch in the svn repository
916 - the usual bugfixes and enhancements
920 - hierarchical class names
923 - understands simple vector ops, strings
924 - demonstrates use of Unicode in Parrot
925 - pgc, a compiler for rules and operator precedence parsers
926 - Major redesign and improvements for PGE
927 - compilers understand named parameter options
928 - :ratchet option implemented to support non-backtracking quantifiers
929 - TGE (tree grammar engine) for tree transformations
930 - tgc, tree grammar compiler
932 - support for many operators, lexical scalars, regex matches
933 - new pheme (Parrot scheme) compiler
937 - namespaces partially implemented
938 - rulec, Perl 6 rule compiler
939 - PGE improvements including return values for closure
940 - parts of a Perl 6 parser based on PGE
941 - complex trigonometric methods
942 - type of Sub PMC is now overridable by HLL
944 - many bug fixes and improvements
948 - improved PPC and x86 JIT support including JIT compilation
949 of very simple PASM/PIR subroutines
950 - preliminary libreadline support
951 - better trace and debug features
953 - META.yml to support proper indexing on CPAN
954 - new opcode: hcf (in "my_ops" in dynamic op library)
955 - new File pmc for file specific ops (is_dir, is_file, copy, rename...)
956 - named arguments and parameters (both :named("") and => syntaxes)
957 - ongoing config improvements
958 - tons of bug fixes and other small improvements - too much to list all
962 - Installation: 'make install' is using standard locations now
963 (/usr/local is the default --prefix)
964 - Produce static and shared libraries on some systems
965 - Configure system rearragement
966 - OS pmc started (mkdir,cd,cwd,rm,umask,stat)
968 - Test files are now testable with 'prove'
969 - Smoke (and smokej) outputs progress
970 - PIR supports: I = A < B (>,<=,>=,==,!=)
971 - Add support for octal number constants
973 - almost finish [string]; start [file]
974 - add build tool for generating inline'd tcl builtins from templates.
975 - Jako updates: NCI, subroutines, global variables and constants all work.
980 - New lexical handling and closure support including better
981 introspection for caller and outer
982 - PGE (Parrot Grammar Engine) provides now compilers for P6Rule,
983 P6Grammar, P5Regexp, and Glob
984 - ca. 1000 new tests including 800 for Perl5 regexp
985 - Improved unicode charset and encoding support
986 - Calling conventions for exception handlers
987 - Punie (Perl 1) uses TGE (Tree Grammar Engine) to convert from
988 PGE match objects to AST via two steps of tree transformation grammars
989 - New languages: amber and lua
990 - The usual code fixes, cleanup, and improvements, including an overhaul
991 of the config and test framework
995 - Variable sized register frames are finished. Each subroutine gets
996 the amount of registers that it actually needs. No more spilling.
997 - Vastly improved PGE (Parrot Grammar Engine) including shift-reduce,
998 precedence-based expression parser and support for matching of
999 bracketed text delimited by e.g. ()[]{}'"
1000 - uniccode character classification (is_upper ...)
1001 - support for heredoc syntax in assembler
1002 - improved examples, basic JSON support
1003 - debian packaging support
1004 - the usual improvements, bug fixes, and cleanup
1005 - test count exceeds 3000
1009 - New calling conventions implemented: see PDD03 for details
1010 - Merge multiple Parrot bytecode (PBC) files into a singe PBC file
1011 - 'make smoke' target going beta
1012 - bc now supports if statements, comparison ops, prefix inc/dec
1013 - ParTcl adds [lassign], [switch] (partially); [expr] converted to a compiler
1014 - Many exciting doc updates, tests, and bugfixes, too numerous to mention
1018 - Dynamic classes now compile on Windows (including ParTcl)
1019 - New Super PMC allows easy access to superclass methods
1020 - Implement C3 method resolution order (just like Perl 6 & Python)
1021 - ParTcl has new PIR-based parser and passes more Tcl tests
1022 - added character class support in Globs to PGE
1023 - added language implementations of unlambda, Lazy-k
1024 - many bugfixes, including GC and memory leaks
1025 - the new calling scheme continued to evolve in branches/leo-ctx5
1029 - new call scheme: docs/pdds/pdd03_calling_conventions.pod
1030 - partial implementation of the new calling conventions
1031 PASM only, don't mix PIR foo() call syntax with the new scheme
1032 - grammar and rule support in PGE - the Parrot Grammar Engine
1033 - TCL passes >10% of the tcl test suite
1034 - the usual bugfixes and improvements
1038 - better HLL support (short names for object attributes, and
1039 .HLL and n_operators pragmas)
1040 - string encoding and charset can now be set independently
1041 - experimental mmap IO layer for slurping files
1042 - distinct debug and trace flag settings
1043 - glob support in PGE
1044 - new character classification opcodes and interfaces
1048 - parrot repository is now under subversion
1049 - MMD (Multi Method Dispatch) enhanced
1050 - new unary and infix opcodes that return new result PMCs
1051 - dynamic scalar PMCs inherit now almost all from Parrot core PMCs
1052 - more unification of PMCs and ParrotObjects
1053 - tailcalls for functions and methods
1054 - PGE (Parrot Grammar Engine) reworked
1055 - Pugs creates Parrot code and Pugs is a registered compiler now
1056 - new languages/lisp
1057 - the usual bug fixes and improvements
1061 - New string handling code. Strings now have charset and encoding
1062 - Parts of a generation garbage collector
1063 - Better Python code, separated in dynclasses
1064 - Parrot Grammar Engine
1065 - Improved test coverage and documentation
1069 Parrot 0.1.1 is an intermediate release with tons of updates and fixes.
1070 - Python support: Parrot runs 4/7 of the pie-thon test suite
1071 - Better OS support: more platforms, compiler, OS functions
1072 - Improved PIR syntax for method calls and <op>= assignment
1073 - Dynamic loading reworked including a "make install" target
1074 - MMD - multi method dispatch for binary vtable methods
1075 - Library improvement and cleanup
1076 - BigInt, Complex, *Array, Slice, Enumerate, None PMC classes
1077 - IA64 and hppa JIT support
1078 - Tons of fixes, improvements, new tests, and documentation updates.
1079 A lot is unfinished and keeps changing. Nethertheless Parrot is stable
1080 and usable at the surface, while internals are moving.
1083 - "Ladies and gentlemen, I give you... objects!"
1084 - Huge documentation overhaul
1085 - More supported platforms, s. PLATFORMS
1086 - Basic thread support for pthread based architectures
1087 - Basic event handling for timers and signals including:
1088 - PASM callbacks for NCI (native C) functions.
1089 - Improved platform configuration
1090 - COW stacks now working, stacks code redone
1091 - Structure handling vastly improved
1092 - Random PMC and rand primitives
1093 - Better subroutine call syntax in PIR
1094 - Make PIR subroutines compliant with pdd03
1095 - Improved profiling (DOD, GC timings)
1096 - Hash code improvements, incl. random key order support
1097 - Experimental freeze/thaw code for some PMC types
1098 - IO improvements for buffered layer and Win32
1100 - String bitwise vtables
1102 - Support for JIT, where malloced memory isn't executable
1103 - Priority DOD scheme for objects that need timely destruction
1104 - Improved byte code loading (e.g. onLoad functions)
1105 - Language updates: forth, Perl 6/P6C, m4
1106 - Libraries: Getopt_Long, SDL, Dumper, Sort
1108 - Unified imcc and parrot test handling
1109 - Many new tests (make test reports 1386 tests)
1110 - Numerous bug fixes
1113 - The Big Move: Parrot source and build files rearranged into sub dirs
1114 - Build imcc as parrot
1115 - Objects more finished
1116 - Delegate vtable methods to byte code
1117 - Binary multi-method dispatching
1118 - Isa and does methods for PMCs
1119 - Call byte code from C
1120 - Start of extension interface
1121 - Experimental struct handling
1122 - Catch access to NULL PMCs
1123 - Experimental network socket interface code and opcodes
1124 - IO fixes and improvements
1125 - Dynamic opcode libraries
1126 - Fix-assigned opcode numbers
1127 - Argument flattening for function calls
1128 - More native call interface (NCI) signatures
1129 - Ncurses, postgres, and pcre interface libraries
1130 - Forth language is vastly improved
1131 - BSD and Win32 build improvements
1132 - Many new tests and fixes
1135 - This number intentionally left blank
1139 - Dynamic PMC registration
1140 - Trial exception system
1141 - Beginnings of object system
1144 - I/O system improvements
1146 - Documentation for basic PMC types
1147 - IMCC support of Parrot Calling Conventions
1148 - Runtime loading of chartypes (and other string improvements)
1149 - Conditional breakpoints
1150 - Dramatically accelerated sweeps for finalizable objects
1151 - Small PMCs (PMCs split into core and extensions)
1152 - Loadable bytecode packfiles
1154 - Sub variants that deal with the stack correctly
1155 - Switched runops core
1156 - Line numbers in warnings
1157 - Environment access
1158 - Many documentation cleanups
1159 - Conversion to CPS style!
1160 - BASIC debugger and many other wacky features
1161 - Filename, line number parsing support in IMCC
1166 - some more benchmarking
1168 - optimized math ops
1169 - intersegment branches
1170 - more complete use of PObjs
1171 - beefed up packfiles
1172 - sub/continuation/coroutine fixes
1173 - better NCI (native calling interface)
1174 - many imcc improvements
1179 - Native function calling interface (Dan)
1180 - Stack/list aggregate rewrite (Leo)
1181 - Scratchpads (Jonathan Sillito)
1182 - Preliminary DotGNU support -- type conversion ops (Gopal V + Leo)
1183 - Buffer/PMC unification (Leo)
1184 - stabs debugging support for JIT (Leo)
1185 - Jako overhaul (Gregor)
1186 - Optional Lea allocator (Leo)
1187 - Parrot sprintf (Brent)
1189 - PMC Properties (Dan)
1190 - Various JIT improvements (D. Grunblatt + Leo)
1191 - Extensible packfiles (Juergen)
1192 - Restructured PMC hierarchy (Leo)
1193 - Real Scheme (Juergen)
1197 - Several new grammars and a BNF -> perl5 and perl6 converter (Jeff)
1198 - Working Perl 6 REs (Sean)
1199 - Keyed Access (Tom Hughes et al)
1200 - New PMCs (Alberto et al)
1201 - Better Documentation
1203 - GC acceleration (Mike Lambert)
1204 - Lexical scope (Jonathan Sillito)
1210 - Perl 6 Grammar and Compiler (Sean)
1211 - Subroutines, coroutines, and continuations (Melvin)
1212 - GC improvements (Peter Gibbs, Mike Lambert)
1213 - Global variables (Melvin)
1214 - Intermediate bytecode compiler (Melvin, Angel)
1215 - And much, much more.
1219 - New assembler that support keyed types (Jeff)
1220 - New macro layer, allowing constants (Jeff)
1221 - New Configure.pl (Brent)
1222 - Changes to bytecode format, endian issues resolved (Melvin)
1223 - GC improvements and bug fixes (Peter Gibbs, Mike Lambert)
1224 - JIT compiler rewrite (Jason and Daniel)
1225 - Parrot assembler in Parrot (Daniel)
1226 - Parrot debugger (Daniel)
1227 - BASIC polished, Eliza.bas is new (Clint)
1228 - Cola compiler committed and working, with limited OOP (Melvin)
1229 - Keyed aggregates (Steve Fink)
1230 - Global ops (Melvin)
1231 - Compile-time speedup (Melvin)
1232 - Much documentation
1234 - Contributed tetris and lzw files
1235 - And many more, from the cast of thousands
1240 - Perl Scalar support in PMCs
1241 - Array and Hash types almost ready for prime-time
1242 - Internal support for keyed types
1243 - EMACS editing mode
1245 - New Language - BASIC
1246 - Regular expression compiler
1248 - Many, many bug fixes, enhancements, and speedups
1252 - Arena-based memory allocation system
1255 - "Predereferencing" mode - ./parrot -P - 22% speedup
1256 - JIT compiler - ./parrot -j
1257 - Parrot now builds warnings-clean on many platforms
1258 - Many more PMC methods implemented
1259 - Regular expression operations
1261 - Basic support for embedding Parrot in other programs
1263 - Added PDDs to distribution
1267 - Added an assembly optimizer
1268 - Improved string encoding/type support
1270 - Source reformatting
1271 - Major refactoring in packfile library
1272 - More Miniperl functionality
1273 - New PMC "clone" operator
1274 - Beginnings of key-based access to PMCs - arrays and hashes
1275 - MOPS comparisons in examples/mops/
1280 - Perl base scalar types implemented
1281 - A new minilanguage, Scheme
1282 - Much improved documentation
1283 - Register stacks pushing and popping
1284 - User stack pushing, popping and rotating
1285 - Jako updates: subroutines, more example programs, optimizations
1286 - test_prog renamed to 'parrot'
1288 - Added features to the assembler: @ for current location, and global
1290 - Build tweaks for VMS
1291 - Bytecode typing clean-ups
1292 - More platforms: OS X, HPUX, OS/2
1293 - The proliferation of runops cores reduced to one fast and one slow one
1294 - Opcode tracing, bounds checking, profiling
1295 - Vastly improved string support, with separation of encoding and
1298 - Multiple interpreter creation support - the beginnings of threading
1299 - Much better resource handling - the beginnings of GC
1303 - Parrot now works on all core platforms
1304 - A large number of tests, in the standard Perl testing framework
1305 - A new minilanguage (Jako) which compiles to Parrot assembly
1306 - Documentation about the assembly language (docs/parrot_assembly.pod)
1308 - Separate modules for assembly (Parrot::Assemble) and bytecode
1309 manipulation (Parrot::PackFile::*, packfile.c)
1310 - Assembler completely rewritten
1311 - Better operand-type guessing in the assembler
1312 - Assembler support for '\n' etc. in string constants
1313 - Code reformatted to match the coding standards
1314 - New ops for register-constant INTEGER comparisons
1315 - Macro expansion in the assembler
1316 - IVs and NVs renamed to more friendly INTVAL and NUMVAL
1317 - Hard-coded pack("") formats removed
1318 - Better handling of floating-point numbers in assembler
1319 - Moved floats to constant table (fixing many alignment issues)