4 - Now, with Seat Belts!
5 + added makefile targets for Sun lint, BSD lint, and splint
6 + corrected many errors picked up by these tools
7 + decorated source code with compiler hints, assertions, and attribute macros
8 + automated creation of function declarations to prevent common errors
9 + increased compiler warnings levels
10 + converted more exceptions to a recoverable form
12 + updated Lisp, Lua, Perl 6, tcl, regex, Scheme ("Pheme")
13 + Perl 6 now fetches selected tests from pugs, and even passes some
14 + PGE modified to handle {*} action subs for top-down and bottom-up parsers,
15 and to allow grammar subclassing
16 + HLLCompiler now has better exception, eval, and exit support
17 + Introduced PCT, a refactor of HLLCompiler and PAST-pm
19 + PDD15 "Objects" - details added to 'new' and 'getattribute' opcodes
20 + PDD17 "PMCs" - notes added on instantiation and dynamic extention in PIR
22 + added Parrot-related text from "Perl6 and Parrot Essentials" book,
23 tutorial examples from "Learning PIR" talk, and PDD15 metamodel diagrams
25 + reduced memory footprint when using named registers
26 + implemented overridding of vtable methods by PDD15 classes
27 + improved PDD15 support for 'new', 'instantiate', and others
28 + added makefile targets to ease core and HLL makefile regeneration
29 + updated parrot dubugger, "pdb", to allow loading of commands from file
31 + many bugfixes, enhancements, documentation, and coding standard updates
35 + Updated Lisp, Lua, PHP ("Plumhead"), Python ("Pynie"), ABC,
36 WMLScript, and Tcl ("ParTcl").
37 + Perl 6 passes all of the sanity tests.
38 + PGE supports latest Perl 6 grammar syntax. Perl 6, Python
39 ("Pynie"), and ABC parsers updated to match.
40 + Updated PHP ("Plumhead") to Antlr 3.0.
41 + Lua added the beginnings of a PGE/TGE based compiler (not yet
42 replacing the Perl/Yapp compiler).
43 + Lisp updated for current features, added a test suite.
44 - Core Implementation:
45 + Filled in features and backward compatibility for PDD 15 objects.
46 New object metamodel passes 85% of old test suite.
47 + GCC API symbols are visible externally only when explicitly exported.
48 + Added generated GCC compiler attributes to increase warnings, and
49 cleaned up resulting warnings.
50 + Code cleanup efforts and fixed memory leaks by the cage cleaners,
51 resulting in notable speed increases.
53 + Updated Parrot distribution to Artistic License 2.0, from dual
54 Artistic 1/GPL license.
55 + SDL examples brought up-to-date with current features.
59 + even more refactorings and improvements in configuration system
60 + improved tests and documentation for configuration system
62 + Updated abc, PHP ("Plumhead"), Lua, Tcl
65 + new PMC PDD draft partially completed
67 + continued implementation of PDD 15 (Objects)
68 + minor garbage collector and memory management improvements
69 + several memory leaks resolved
70 + extended support for compilers other than GCC
71 + improved C++ compiler compatibility
72 + enhanced support for Solaris, non-MSVC Win32, and other platforms
77 + IMCC: added documentation for C-based Parrot Calling Conventions,
78 refactorings and bug fixes
79 + PGE: new perl6regex front end reflecting recent S05 syntax changes
80 + PIRC: new prototype PIR parser
82 + Updated Lua, PHP ("Plumhead"), BASIC, pynie
83 + Lua implements environment
85 + PDD15 "Objects" - details added, and draft approved
87 + Added guidelines for PMC documentation
89 + PDD15 implementation is largely complete, including role-based composition,
90 introspection, and C3 method resolution order
91 + new Exporter PMC for importing globals between namespaces
92 + new string utilities for radix conversion
93 + PCCINVOKE and Parrot_PCCINVOKE allow calling using the full Parrot Calling
94 Conventions from PMCs and C code respectively
96 + Refactorings and improvements in test coverage for 'Configure.pl'
98 + many bugfixes, enhancements, and code cleanup
99 + added example subversion config file
100 + extended support for gcc, icc, and other compilers
101 + extended support for Solaris and other platforms
107 + IMCC: Parrot calling conventions now available between two C PMCs (PMINVOKE)
108 + PGE: Match object improvements
109 + smop: added Attribute and Class PMCs
110 + HLLCompiler: improvements for interactive mode
112 + extended binding to a list of variables
114 + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), Ruby ("Cardinal")
115 + Update PIR, regex, Zcode
116 + New language: Pynie - a Python compiler for Parrot
117 + Lua implements require and many other ops, improved regex support
120 + PDD01 "Overview" - updated architecture and platform information
121 + PDD15 "Objects" - details on roles, objects, and classes added
122 + PDD22 "I/O" - added async ops and Status PMC details
124 + Added guides for Metacommitter, Relase Manager, and Cage Cleaner roles
126 + Object, Class, Role, and Attribute PMC implementation has begun
127 + Perl 5 module "Parrot::Embed" now compiles and links on all platforms
129 + Major improvements in test coverage for 'ops2c.pl'
131 + New utility: Crow, a template processor
132 + New library module: Config/JSON for reading/writing JSON files
133 + many bugfixes, enhancements, and coding standard updates, code cleanup
138 + IMCC: Parrot calling conventions now available in C PMCs, allowing
139 named, optional, slurpy, and flat parameter passing
140 + PGE: extended support for Perl 5 Regexes
141 + smop: prototype object model implementation
142 + hllcompiler: refactored to run a configurable set of compilation stages
144 + redesigned assign/binding to support Perl 6 binding semantics
146 + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), perl6, perl5
147 + New language: PIR - a PGE-based implementation of Parrot PIR
148 + perl6 now supports binding (':=') and 'join'
149 + lua generates tail calls, and supports its own regex flavor (PGE-based)
150 + Pheme still works, huzzah!
152 + PDD21 "Objects" - rewritten
153 + PDD22 "I/O" - updated and 'TODO' tests added
155 + Interface stability classification standards approved
156 + Roles and Responsibilities documented approved
157 + Official 'drafts' directory created (was 'clip')
159 + More NameSpace and OS PMC methods implemented
160 + Parrot executable fullname and basename now available in PIR/PASM code
161 + new 'chomp' library function
163 + Major improvements in test coverage for 'ops2pm.pl'
165 + many bugfixes, enhancements, and coding standard updates
166 + extended support for Sun Workshop Compilers
167 + Parrot now builds on PocketPC platform
172 + HLLCompiler: added tracing options, modified api
173 + PGE & TGE bugfixes and updates
175 + added global and lexical variable support
176 + added looping constructs, arrays, hashes
178 + Updated PHP ("Plumhead"), Tcl ("ParTcl"),
179 forth, perl6, lua, abc, APL, WMLScript, punie
180 + ParTcl is passing > 24.9% of Tcl cvs-latest test suite
181 + perl6 now supports hashes, arrays, method calls, arity-based
182 multisubs, quoted terms, ranges (non-lazy), try blocks, $!
184 + PDD01 "Overview" - updated
185 + PDD22 "I/O" - rewritten and approved
187 + Converted Perl 5 Regex tests to PIR, with notable speedup
188 + Added tests for opcodes, compilers, languages, and coding standards
190 + Major improvements in test coverage for 'pmc2c.pl'
192 + many bugfixes, enhancements, and coding standard updates
193 + extended support for non-core platforms including Cygwin, Tru64
197 - New languages: PHP ("Plumhead"), Forth
198 - Updated languages: Ruby ("Cardinal"), Tcl, Lua
199 - Remove old Python implementation from Parrot repository; the new Python
200 language code is hosted at http://pirate.tangentcode.com
202 + PGE updated with more expressions, latest changes to S05
203 + new Perl6 grammar compiler
205 + Perl 5 module "Parrot::Embed" allows easy embedding of a Parrot
206 runtime into a Perl 5 program
208 + new :init pragma for subs that must run before the main function
209 + new :vtable pragma to identify subs that override PMC vtable methods,
210 eliminating the need for special subroutine names
211 + PIR parser/compiler does not stop on first syntax error
212 + Vanilla register allocator ("register alligator") greatly improves
213 performance compiling large functions
214 + Eliminated limit on number of PIR macros
216 + hash lookups return null instead of None for missing keys
218 + PDD13 "Bytecode files: format and manipulation" - new
219 + PDD10 "Embedding" - new
220 + PDD25 "Concurrency" - rewritten
221 + PDD15 "Objects" - new section on redesign requirements
222 + PDD07 "Coding standards" - significant updates and automated tests
224 + Many many more new tests
226 + autoconf compatible install options
228 + Namespace refinements
229 + Coroutine improvements
230 + An impressive swarm of other bugfixes and enhancements
234 - New languages: Ruby ("Cardinal"), Javascript ("ecmascript")
235 - Updated languages: Tcl, dotnet, bc, Pheme, Punie, WMLScript
236 - Updated compilers: PGE, TGE
238 + ".loadlib" directive expresses dependencies
239 + ".namespace" with no parameter goes to HLL root
240 + lexer is reentrant (reentrant grammar in progress)
241 - Namespace improvements:
242 + new suite of opcodes to access namespaces and globals
243 ("find_global" and "store_global" will be phased out)
244 + namespace '' no longer means HLL root
245 - Design document updates:
246 namespaces (pdd23), basic types (pdd17), embedding
247 - Updated tool requirements for developers:
248 flex 2.5.33, bison 2.1, perl 5.6.1
249 - New to-do list for people new to Parrot:
251 - The usual plethora of bugfixes and enhancements
255 - unicode subroutine names
256 - hierarchical class names finished including MMD support
257 - new dotnet CLI to PIR translator
258 - improved TGE code and compiler
259 - APL: vector handling
260 - new STM branch in the svn repository
261 - the usual bugfixes and enhancements
265 - hierarchical class names
268 - understands simple vector ops, strings
269 - demonstrates use of Unicode in Parrot
270 - pgc, a compiler for rules and operator precedence parsers
271 - Major redesign and improvements for PGE
272 - compilers understand named parameter options
273 - :ratchet option implemented to support non-backtracking quantifiers
274 - TGE (tree grammar engine) for tree transformations
275 - tgc, tree grammar compiler
277 - support for many operators, lexical scalars, regex matches
278 - new pheme (Parrot scheme) compiler
282 - namespaces partially implemented
283 - rulec, Perl6 rule compiler
284 - PGE improvements including return values for closure
285 - parts of a Perl6 parser based on PGE
286 - complex trigonometric methods
287 - type of Sub PMC is now overridable by HLL
289 - many bug fixes and improvements
293 - improved PPC and x86 JIT support including JIT compilation
294 of very simple PASM/PIR subroutines
295 - preliminary libreadline support
296 - better trace and debug features
298 - META.yml to support proper indexing on CPAN
299 - new opcode: hcf (in "my_ops" in dynamic op library)
300 - new File pmc for file specific ops (is_dir, is_file, copy, rename...)
301 - named arguments and parameters (both :named("") and => syntaxes)
302 - ongoing config improvements
303 - tons of bug fixes and other small improvements - too much to list all
307 - Installation: 'make install' is using standard locations now
308 (/usr/local is the default --prefix)
309 - Produce static and shared libraries on some systems
310 - Configure system rearragement
311 - OS pmc started (mkdir,cd,cwd,rm,umask,stat)
313 - Test files are now testable with 'prove'
314 - Smoke (and smokej) outputs progress
315 - PIR supports: I = A < B (>,<=,>=,==,!=)
316 - Add support for octal number constants
318 - almost finish [string]; start [file]
319 - add build tool for generating inline'd tcl builtins from templates.
320 - Jako updates: NCI, subroutines, global variables and constants all work.
325 - New lexical handling and closure support including better
326 introspection for caller and outer
327 - PGE (Parrot Grammar Engine) provides now compilers for P6Rule,
328 P6Grammar, P5Regexp, and Glob
329 - ca. 1000 new tests including 800 for Perl5 regexp
330 - Improved unicode charset and encoding support
331 - Calling conventions for exception handlers
332 - Punie (Perl 1) uses TGE (Tree Grammar Engine) to convert from
333 PGE match objects to AST via two steps of tree transformation grammars
334 - New languages: amber and lua
335 - The usual code fixes, cleanup, and improvements, including an overhaul
336 of the config and test framework
340 - Variable sized register frames are finished. Each subroutine gets
341 the amount of registers that it actually needs. No more spilling.
342 - Vastly improved PGE (Parrot Grammar Engine) including shift-reduce,
343 precedence-based expression parser and support for matching of
344 bracketed text delimited by e.g. ()[]{}'"
345 - uniccode character classification (is_upper ...)
346 - support for heredoc syntax in assembler
347 - improved examples, basic JSON support
348 - debian packaging support
349 - the usual improvements, bug fixes, and cleanup
350 - test count exceeds 3000
354 - New calling conventions implemented: see PDD03 for details
355 - Merge multiple Parrot bytecode (PBC) files into a singe PBC file
356 - 'make smoke' target going beta
357 - bc now supports if statements, comparison ops, prefix inc/dec
358 - ParTcl adds [lassign], [switch] (partially); [expr] converted to a compiler
359 - Many exciting doc updates, tests, and bugfixes, too numerous to mention
363 - Dynamic classes now compile on Windows (including ParTcl)
364 - New Super PMC allows easy access to superclass methods
365 - Implement C3 method resolution order (just like Perl6 & Python)
366 - ParTcl has new PIR-based parser and passes more Tcl tests
367 - added character class support in Globs to PGE
368 - added language implementations of unlambda, Lazy-k
369 - many bugfixes, including GC and memory leaks
370 - the new calling scheme continued to evolve in branches/leo-ctx5
374 - new call scheme: docs/pdds/pdd03_calling_conventions.pod
375 - partial implementation of the new calling conventions
376 PASM only, don't mix PIR foo() call syntax with the new scheme
377 - grammar and rule support in PGE - the Parrot Grammar Engine
378 - TCL passes >10% of the tcl test suite
379 - the usual bugfixes and improvements
383 - better HLL support (short names for object attributes, and
384 .HLL and n_operators pragmas)
385 - string encoding and charset can now be set independently
386 - experimental mmap IO layer for slurping files
387 - distinct debug and trace flag settings
388 - glob support in PGE
389 - new character classification opcodes and interfaces
393 - parrot repository is now under subversion
394 - MMD (Multi Method Dispatch) enhanced
395 - new unary and infix opcodes that return new result PMCs
396 - dynamic scalar PMCs inherit now almost all from Parrot core PMCs
397 - more unification of PMCs and ParrotObjects
398 - tailcalls for functions and methods
399 - PGE (Parrot Grammar Engine) reworked
400 - Pugs creates Parrot code and Pugs is a registered compiler now
402 - the usual bug fixes and improvements
406 - New string handling code. Strings now have charset and encoding
407 - Parts of a generation garbage collector
408 - Better Python code, separated in dynclasses
409 - Parrot Grammar Engine
410 - Improved test coverage and documentation
414 Parrot 0.1.1 is an intermediate release with tons of updates and fixes.
415 - Python support: Parrot runs 4/7 of the pie-thon test suite
416 - Better OS support: more platforms, compiler, OS functions
417 - Improved PIR syntax for method calls and <op>= assignment
418 - Dynamic loading reworked including a "make install" target
419 - MMD - multi method dispatch for binary vtable methods
420 - Library improvement and cleanup
421 - BigInt, Complex, *Array, Slice, Enumerate, None PMC classes
422 - IA64 and hppa JIT support
423 - Tons of fixes, improvements, new tests, and documentation updates.
424 A lot is unfinished and keeps changing. Nethertheless Parrot is stable
425 and usable at the surface, while internals are moving.
428 - "Ladies and gentlemen, I give you... objects!"
429 - Huge documentation overhaul
430 - More supported platforms, s. PLATFORMS
431 - Basic thread support for pthread based architectures
432 - Basic event handling for timers and signals including:
433 - PASM callbacks for NCI (native C) functions.
434 - Improved platform configuration
435 - COW stacks now working, stacks code redone
436 - Structure handling vastly improved
437 - Random PMC and rand primitives
438 - Better subroutine call syntax in PIR
439 - Make PIR subroutines compliant with pdd03
440 - Improved profiling (DOD, GC timings)
441 - Hash code improvements, incl. random key order support
442 - Experimental freeze/thaw code for some PMC types
443 - IO improvements for buffered layer and Win32
445 - String bitwise vtables
447 - Support for JIT, where malloced memory isn't executable
448 - Priority DOD scheme for objects that need timely destruction
449 - Improved byte code loading (e.g. onLoad functions)
450 - Language updates: forth, Perl6/P6C, m4
451 - Libraries: Getopt_Long, SDL, Dumper, Sort
453 - Unified imcc and parrot test handling
454 - Many new tests (make test reports 1386 tests)
458 - The Big Move: Parrot source and build files rearranged into sub dirs
459 - Build imcc as parrot
460 - Objects more finished
461 - Delegate vtable methods to byte code
462 - Binary multi-method dispatching
463 - Isa and does methods for PMCs
464 - Call byte code from C
465 - Start of extension interface
466 - Experimental struct handling
467 - Catch access to NULL PMCs
468 - Experimental network socket interface code and opcodes
469 - IO fixes and improvements
470 - Dynamic opcode libraries
471 - Fix-assigned opcode numbers
472 - Argument flattening for function calls
473 - More native call interface (NCI) signatures
474 - Ncurses, postgres, and pcre interface libraries
475 - Forth language is vastly improved
476 - BSD and Win32 build improvements
477 - Many new tests and fixes
480 - This number intentionally left blank
484 - Dynamic PMC registration
485 - Trial exception system
486 - Beginnings of object system
489 - I/O system improvements
491 - Documentation for basic PMC types
492 - IMCC support of Parrot Calling Conventions
493 - Runtime loading of chartypes (and other string improvements)
494 - Conditional breakpoints
495 - Dramatically accelerated sweeps for finalizable objects
496 - Small PMCs (PMCs split into core and extensions)
497 - Loadable bytecode packfiles
499 - Sub variants that deal with the stack correctly
500 - Switched runops core
501 - Line numbers in warnings
503 - Many documentation cleanups
504 - Conversion to CPS style!
505 - BASIC debugger and many other wacky features
506 - Filename, line number parsing support in IMCC
511 - some more benchmarking
514 - intersegment branches
515 - more complete use of PObjs
516 - beefed up packfiles
517 - sub/continuation/coroutine fixes
518 - better NCI (native calling interface)
519 - many imcc improvements
524 - Native function calling interface (Dan)
525 - Stack/list aggregate rewrite (Leo)
526 - Scratchpads (Jonathan Sillito)
527 - Preliminary DotGNU support -- type conversion ops (Gopal V + Leo)
528 - Buffer/PMC unification (Leo)
529 - stabs debugging support for JIT (Leo)
530 - Jako overhaul (Gregor)
531 - Optional Lea allocator (Leo)
532 - Parrot sprintf (Brent)
534 - PMC Properties (Dan)
535 - Various JIT improvements (D. Grunblatt + Leo)
536 - Extensible packfiles (Juergen)
537 - Restructured PMC hierarchy (Leo)
538 - Real Scheme (Juergen)
542 - Several new grammars and a BNF -> perl5 and perl6 converter (Jeff)
543 - Working Perl6 REs (Sean)
544 - Keyed Access (Tom Hughes et al)
545 - New PMCs (Alberto et al)
546 - Better Documentation
548 - GC acceleration (Mike Lambert)
549 - Lexical scope (Jonathan Sillito)
555 - Perl 6 Grammar and Compiler (Sean)
556 - Subroutines, coroutines, and continuations (Melvin)
557 - GC improvements (Peter Gibbs, Mike Lambert)
558 - Global variables (Melvin)
559 - Intermediate bytecode compiler (Melvin, Angel)
560 - And much, much more.
564 - New assembler that support keyed types (Jeff)
565 - New macro layer, allowing constants (Jeff)
566 - New Configure.pl (Brent)
567 - Changes to bytecode format, endian issues resolved (Melvin)
568 - GC improvements and bug fixes (Peter Gibbs, Mike Lambert)
569 - JIT compiler rewrite (Jason and Daniel)
570 - Parrot assembler in Parrot (Daniel)
571 - Parrot debugger (Daniel)
572 - BASIC polished, Eliza.bas is new (Clint)
573 - Cola compiler committed and working, with limited OOP (Melvin)
574 - Keyed aggregates (Steve Fink)
575 - Global ops (Melvin)
576 - Compile-time speedup (Melvin)
579 - Contributed tetris and lzw files
580 - And many more, from the cast of thousands
585 - Perl Scalar support in PMCs
586 - Array and Hash types almost ready for prime-time
587 - Internal support for keyed types
590 - New Language - BASIC
591 - Regular expression compiler
593 - Many, many bug fixes, enhancements, and speedups
597 - Arena-based memory allocation system
600 - "Predereferencing" mode - ./parrot -P - 22% speedup
601 - JIT compiler - ./parrot -j
602 - Parrot now builds warnings-clean on many platforms
603 - Many more PMC methods implemented
604 - Regular expression operations
606 - Basic support for embedding Parrot in other programs
608 - Added PDDs to distribution
612 - Added an assembly optimizer
613 - Improved string encoding/type support
615 - Source reformatting
616 - Major refactoring in packfile library
617 - More Miniperl functionality
618 - New PMC "clone" operator
619 - Beginnings of key-based access to PMCs - arrays and hashes
620 - MOPS comparisons in examples/mops/
625 - Perl base scalar types implemented
626 - A new minilanguage, Scheme
627 - Much improved documentation
628 - Register stacks pushing and popping
629 - User stack pushing, popping and rotating
630 - Jako updates: subroutines, more example programs, optimizations
631 - test_prog renamed to 'parrot'
633 - Added features to the assembler: @ for current location, and global
635 - Build tweaks for VMS
636 - Bytecode typing clean-ups
637 - More platforms: OS X, HPUX, OS/2
638 - The proliferation of runops cores reduced to one fast and one slow one
639 - Opcode tracing, bounds checking, profiling
640 - Vastly improved string support, with separation of encoding and
643 - Multiple interpreter creation support - the beginnings of threading
644 - Much better resource handling - the beginnings of GC
648 - Parrot now works on all core platforms
649 - A large number of tests, in the standard Perl testing framework
650 - A new minilanguage (Jako) which compiles to Parrot assembly
651 - Documentation about the assembly language (docs/parrot_assembly.pod)
653 - Separate modules for assembly (Parrot::Assemble) and bytecode
654 manipulation (Parrot::PackFile::*, packfile.c)
655 - Assembler completely rewritten
656 - Better operand-type guessing in the assembler
657 - Assembler support for '\n' etc. in string constants
658 - Code reformatted to match the coding standards
659 - New ops for register-constant INTEGER comparisons
660 - Macro expansion in the assembler
661 - IVs and NVs renamed to more friendly INTVAL and NUMVAL
662 - Hard-coded pack("") formats removed
663 - Better handling of floating-point numbers in assembler
664 - Moved floats to constant table (fixing many alignment issues)