#42427: [CAGE] cleanup perlcritic errors
[parrot.git] / NEWS
blobd1452d6163a9a553b7832cd210df5ac4c2049849
1 # $Id$
3 New in 0.4.11
5 - Compilers:
6  + IMCC: added documentation for C-based Parrot Calling Conventions,
7    refactorings and bug fixes
8  + PGE: new perl6regex front end reflecting recent S05 syntax changes
9  + PIRC: new prototype PIR parser
10 - Languages:
11  + Updated Lua, PHP ("Plumhead"), BASIC, pynie
12  + Lua implements environment
13 - Design:
14  + PDD15 "Objects" - details added, and draft approved
15 - Documentation:
16  + Added guidelines for PMC documentation
17 - Implementation:
18  + PDD15 implementation is largely complete, including role-based composition,
19    introspection, and C3 method resolution order
20  + new Exporter PMC for importing globals between namespaces
21  + new string utilities for radix conversion
22  + PCCINVOKE and Parrot_PCCINVOKE allow calling using the full Parrot Calling
23    Conventions from PMCs and C code respectively
24 - Build:
25  + Refactorings and improvements in test coverage for 'Configure.pl'
26 - Misc:
27  + many bugfixes, enhancements, and code cleanup
28  + added example subversion config file
29  + extended support for gcc, icc, and other compilers
30  + extended support for Solaris and other platforms
33 New in 0.4.10
35 - Compilers:
36  + IMCC: Parrot calling conventions now available between two C PMCs (PMINVOKE)
37  + PGE: Match object improvements
38  + smop: added Attribute and Class PMCs
39  + HLLCompiler: improvements for interactive mode
40 - PAST:
41  + extended binding to a list of variables
42 - Languages:
43  + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), Ruby ("Cardinal")
44  + Update PIR, regex, Zcode
45  + New language: Pynie - a Python compiler for Parrot
46  + Lua implements require and many other ops, improved regex support
47  + Remove parakeet
48 - Design:
49  + PDD01 "Overview" - updated architecture and platform information
50  + PDD15 "Objects" - details on roles, objects, and classes added
51  + PDD22 "I/O" - added async ops and Status PMC details
52 - Documentation:
53  + Added guides for Metacommitter, Relase Manager, and Cage Cleaner roles
54 - Implementation:
55  + Object, Class, Role, and Attribute PMC implementation has begun
56  + Perl 5 module "Parrot::Embed" now compiles and links on all platforms
57 - Build:
58  + Major improvements in test coverage for 'ops2c.pl'
59 - Misc:
60  + New utility: Crow, a template processor
61  + New library module: Config/JSON for reading/writing JSON files
62  + many bugfixes, enhancements, and coding standard updates, code cleanup
64 New in 0.4.9
66 - Compilers:
67    + IMCC: Parrot calling conventions now available in C PMCs, allowing
68      named, optional, slurpy, and flat parameter passing
69    + PGE: extended support for Perl 5 Regexes
70    + smop: prototype object model implementation
71    + hllcompiler: refactored to run a configurable set of compilation stages
72 - PAST:
73    + redesigned assign/binding to support Perl 6 binding semantics
74 - Languages:
75    + Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), perl6, perl5
76    + New language: PIR - a PGE-based implementation of Parrot PIR
77    + perl6 now supports binding (':=') and 'join'
78    + lua generates tail calls, and supports its own regex flavor (PGE-based)
79    + Pheme still works, huzzah!
80 - Design:
81    + PDD21 "Objects" - rewritten
82    + PDD22 "I/O" - updated and 'TODO' tests added
83 - Documentation:
84    + Interface stability classification standards approved
85    + Roles and Responsibilities documented approved
86    + Official 'drafts' directory created (was 'clip')
87 - Implementation:
88    + More NameSpace and OS PMC methods implemented
89    + Parrot executable fullname and basename now available in PIR/PASM code
90    + new 'chomp' library function
91 - Build:
92    + Major improvements in test coverage for 'ops2pm.pl'
93 - Misc:
94    + many bugfixes, enhancements, and coding standard updates
95    + extended support for Sun Workshop Compilers
96    + Parrot now builds on PocketPC platform
98 New in 0.4.8
100 - Compilers:
101    + HLLCompiler: added tracing options, modified api
102    + PGE & TGE bugfixes and updates
103 - PAST:
104    + added global and lexical variable support
105    + added looping constructs, arrays, hashes
106 - Languages:
107    + Updated PHP ("Plumhead"), Tcl ("ParTcl"),
108      forth, perl6, lua, abc, APL, WMLScript, punie
109    + ParTcl is passing > 24.9% of Tcl cvs-latest test suite
110    + perl6 now supports hashes, arrays, method calls, arity-based
111      multisubs, quoted terms, ranges (non-lazy), try blocks, $!
112 - Design:
113    + PDD01 "Overview" - updated
114    + PDD22 "I/O" - rewritten and approved
115 - Test Suite:
116    + Converted Perl 5 Regex tests to PIR, with notable speedup
117    + Added tests for opcodes, compilers, languages, and coding standards
118 - Build:
119    + Major improvements in test coverage for 'pmc2c.pl'
120 - Misc:
121    + many bugfixes, enhancements, and coding standard updates
122    + extended support for non-core platforms including Cygwin, Tru64
124 New in 0.4.7
126 - New languages: PHP ("Plumhead"), Forth
127 - Updated languages: Ruby ("Cardinal"), Tcl, Lua
128 - Remove old Python implementation from Parrot repository; the new Python
129   language code is hosted at http://pirate.tangentcode.com
130 - Compilers:
131    + PGE updated with more expressions, latest changes to S05
132    + new Perl6 grammar compiler
133 - Integration:
134    + Perl 5 module "Parrot::Embed" allows easy embedding of a Parrot
135      runtime into a Perl 5 program
136 - PIR:
137    + new :init pragma for subs that must run before the main function
138    + new :vtable pragma to identify subs that override PMC vtable methods,
139      eliminating the need for special subroutine names
140    + PIR parser/compiler does not stop on first syntax error
141    + Vanilla register allocator ("register alligator") greatly improves
142      performance compiling large functions
143    + Eliminated limit on number of PIR macros
144 - PMCs:
145    + hash lookups return null instead of None for missing keys
146 - Design:
147    + PDD13 "Bytecode files: format and manipulation" - new
148    + PDD10 "Embedding" - new
149    + PDD25 "Concurrency" - rewritten
150    + PDD15 "Objects" - new section on redesign requirements
151    + PDD07 "Coding standards" - significant updates and automated tests
152 - Test Suite:
153    + Many many more new tests
154 - Build Process:
155    + autoconf compatible install options
156 - Misc:
157    + Namespace refinements
158    + Coroutine improvements
159    + An impressive swarm of other bugfixes and enhancements
161 New in 0.4.6
163 - New languages: Ruby ("Cardinal"), Javascript ("ecmascript")
164 - Updated languages: Tcl, dotnet, bc, Pheme, Punie, WMLScript
165 - Updated compilers: PGE, TGE
166 - IMCC updates:
167    + ".loadlib" directive expresses dependencies
168    + ".namespace" with no parameter goes to HLL root
169    + lexer is reentrant (reentrant grammar in progress)
170 - Namespace improvements:
171    + new suite of opcodes to access namespaces and globals
172      ("find_global" and "store_global" will be phased out)
173    + namespace '' no longer means HLL root
174 - Design document updates:
175     namespaces (pdd23), basic types (pdd17), embedding
176 - Updated tool requirements for developers:
177     flex 2.5.33, bison 2.1, perl 5.6.1
178 - New to-do list for people new to Parrot:
179     cage/todo.pod
180 - The usual plethora of bugfixes and enhancements
182 New in 0.4.5
184 - unicode subroutine names
185 - hierarchical class names finished including MMD support
186 - new dotnet CLI to PIR translator
187 - improved TGE code and compiler
188 - APL: vector handling
189 - new STM branch in the svn repository
190 - the usual bugfixes and enhancements
192 New in 0.4.4
194 - hierarchical class names
195 - APL compiler
196   - under development
197   - understands simple vector ops, strings
198   - demonstrates use of Unicode in Parrot
199 - pgc, a compiler for rules and operator precedence parsers
200 - Major redesign and improvements for PGE
201   - compilers understand named parameter options
202   - :ratchet option implemented to support non-backtracking quantifiers
203 - TGE (tree grammar engine) for tree transformations
204   - tgc, tree grammar compiler
205 - perl6 compiler
206   - support for many operators, lexical scalars, regex matches
207 - new pheme (Parrot scheme) compiler
209 New in 0.4.3
211 - namespaces partially implemented
212 - rulec, Perl6 rule compiler
213 - PGE improvements including return values for closure
214 - parts of a Perl6 parser based on PGE
215 - complex trigonometric methods
216 - type of Sub PMC is now overridable by HLL
217 - NetBSD support
218 - many bug fixes and improvements
220 New in 0.4.2
222 - improved PPC and x86 JIT support including JIT compilation
223   of very simple PASM/PIR subroutines
224 - preliminary libreadline support
225 - better trace and debug features
226 - pkgconfig support
227 - META.yml to support proper indexing on CPAN
228 - new opcode: hcf (in "my_ops" in dynamic op library)
229 - new File pmc for file specific ops (is_dir, is_file, copy, rename...)
230 - named arguments and parameters (both :named("") and => syntaxes)
231 - ongoing config improvements
232 - tons of bug fixes and other small improvements - too much to list all
234 New in 0.4.1
236 - Installation: 'make install' is using standard locations now
237   (/usr/local is the default --prefix)
238 - Produce static and shared libraries on some systems
239 - Configure system rearragement
240 - OS pmc started (mkdir,cd,cwd,rm,umask,stat)
241 - Shootout examples
242 - Test files are now testable with 'prove'
243 - Smoke (and smokej) outputs progress
244 - PIR supports: I = A < B (>,<=,>=,==,!=)
245 - Add support for octal number constants
246 - partcl updates:
247   - almost finish [string]; start [file]
248   - add build tool for generating inline'd tcl builtins from templates.
249 - Jako updates: NCI, subroutines, global variables and constants all work.
250   (Gregor)
252 New in 0.4.0
254 - New lexical handling and closure support including better
255   introspection for caller and outer
256 - PGE (Parrot Grammar Engine) provides now compilers for P6Rule,
257   P6Grammar, P5Regexp, and Glob
258 - ca. 1000 new tests including 800 for Perl5 regexp
259 - Improved unicode charset and encoding support
260 - Calling conventions for exception handlers
261 - Punie (Perl 1) uses TGE (Tree Grammar Engine) to convert from
262   PGE match objects to AST via two steps of tree transformation grammars
263 - New languages: amber and lua
264 - The usual code fixes, cleanup, and improvements, including an overhaul
265   of the config and test framework
267 New in 0.3.1
269 - Variable sized register frames are finished. Each subroutine gets
270   the amount of registers that it actually needs. No more spilling.
271 - Vastly improved PGE (Parrot Grammar Engine) including shift-reduce,
272   precedence-based expression parser and support for matching of
273   bracketed text delimited by e.g. ()[]{}'"
274 - uniccode character classification (is_upper ...)
275 - support for heredoc syntax in assembler
276 - improved examples, basic JSON support
277 - debian packaging support
278 - the usual improvements, bug fixes, and cleanup
279 - test count exceeds 3000
281 New in 0.3.0
283 - New calling conventions implemented: see PDD03 for details
284 - Merge multiple Parrot bytecode (PBC) files into a singe PBC file
285 - 'make smoke' target going beta
286 - bc now supports if statements, comparison ops, prefix inc/dec
287 - ParTcl adds [lassign], [switch] (partially); [expr] converted to a compiler
288 - Many exciting doc updates, tests, and bugfixes, too numerous to mention
290 New in 0.2.3
292 - Dynamic classes now compile on Windows (including ParTcl)
293 - New Super PMC allows easy access to superclass methods
294 - Implement C3 method resolution order (just like Perl6 & Python)
295 - ParTcl has new PIR-based parser and passes more Tcl tests
296 - added character class support in Globs to PGE
297 - added language implementations of unlambda, Lazy-k
298 - many bugfixes, including GC and memory leaks
299 - the new calling scheme continued to evolve in branches/leo-ctx5
301 New in 0.2.2
303 - new call scheme: docs/pdds/pdd03_calling_conventions.pod
304 - partial implementation of the new calling conventions
305   PASM only, don't mix PIR foo() call syntax with the new scheme
306 - grammar and rule support in PGE - the Parrot Grammar Engine
307 - TCL passes >10% of the tcl test suite
308 - the usual bugfixes and improvements
310 New in 0.2.1
312 - better HLL support (short names for object attributes, and
313   .HLL and n_operators pragmas)
314 - string encoding and charset can now be set independently
315 - experimental mmap IO layer for slurping files
316 - distinct debug and trace flag settings
317 - glob support in PGE
318 - new character classification opcodes and interfaces
320 New in 0.2.0
322 - parrot repository is now under subversion
323 - MMD (Multi Method Dispatch) enhanced
324 - new unary and infix opcodes that return new result PMCs
325 - dynamic scalar PMCs inherit now almost all from Parrot core PMCs
326 - more unification of PMCs and ParrotObjects
327 - tailcalls for functions and methods
328 - PGE (Parrot Grammar Engine) reworked
329 - Pugs creates Parrot code and Pugs is a registered compiler now
330 - new languages/lisp
331 - the usual bug fixes and improvements
333 New in 0.1.2
335 - New string handling code. Strings now have charset and encoding
336 - Parts of a generation garbage collector
337 - Better Python code, separated in dynclasses
338 - Parrot Grammar Engine
339 - Improved test coverage and documentation
341 New in 0.1.1
343 Parrot 0.1.1 is an intermediate release with tons of updates and fixes.
344  - Python support: Parrot runs 4/7 of the pie-thon test suite
345  - Better OS support: more platforms, compiler, OS functions
346  - Improved PIR syntax for method calls and <op>= assignment
347  - Dynamic loading reworked including a "make install" target
348  - MMD - multi method dispatch for binary vtable methods
349  - Library improvement and cleanup
350  - BigInt, Complex, *Array, Slice, Enumerate, None PMC classes
351  - IA64 and hppa JIT support
352  - Tons of fixes, improvements, new tests, and documentation updates.
353 A lot is unfinished and keeps changing. Nethertheless Parrot is stable
354 and usable at the surface, while internals are moving.
356 New in 0.1.0
357  - "Ladies and gentlemen, I give you... objects!"
358  - Huge documentation overhaul
359  - More supported platforms, s. PLATFORMS
360  - Basic thread support for pthread based architectures
361  - Basic event handling for timers and signals including:
362  - PASM callbacks for NCI (native C) functions.
363  - Improved platform configuration
364  - COW stacks now working, stacks code redone
365  - Structure handling vastly improved
366  - Random PMC and rand primitives
367  - Better subroutine call syntax in PIR
368  - Make PIR subroutines compliant with pdd03
369  - Improved profiling (DOD, GC timings)
370  - Hash code improvements, incl. random key order support
371  - Experimental freeze/thaw code for some PMC types
372  - IO improvements for buffered layer and Win32
373  - String iterators
374  - String bitwise vtables
375  - Many new opcodes
376  - Support for JIT, where malloced memory isn't executable
377  - Priority DOD scheme for objects that need timely destruction
378  - Improved byte code loading (e.g. onLoad functions)
379  - Language updates: forth, Perl6/P6C, m4
380  - Libraries: Getopt_Long, SDL, Dumper, Sort
381  - new JAPH examples
382  - Unified imcc and parrot test handling
383  - Many new tests (make test reports 1386 tests)
384  - Numerous bug fixes
386 New in 0.0.13
387  - The Big Move: Parrot source and build files rearranged into sub dirs
388  - Build imcc as parrot
389  - Objects more finished
390  - Delegate vtable methods to byte code
391  - Binary multi-method dispatching
392  - Isa and does methods for PMCs
393  - Call byte code from C
394  - Start of extension interface
395  - Experimental struct handling
396  - Catch access to NULL PMCs
397  - Experimental network socket interface code and opcodes
398  - IO fixes and improvements
399  - Dynamic opcode libraries
400  - Fix-assigned opcode numbers
401  - Argument flattening for function calls
402  - More native call interface (NCI) signatures
403  - Ncurses, postgres, and pcre interface libraries
404  - Forth language is vastly improved
405  - BSD and Win32 build improvements
406  - Many new tests and fixes
408 New in 0.0.12
409  - This number intentionally left blank
411 New in 0.0.11
412  - Executable output
413  - Dynamic PMC registration
414  - Trial exception system
415  - Beginnings of object system
416  - Iterators
417  - Ordered hashes
418  - I/O system improvements
419  - References
420  - Documentation for basic PMC types
421  - IMCC support of Parrot Calling Conventions
422  - Runtime loading of chartypes (and other string improvements)
423  - Conditional breakpoints
424  - Dramatically accelerated sweeps for finalizable objects
425  - Small PMCs (PMCs split into core and extensions)
426  - Loadable bytecode packfiles
427  - Constant PMCs
428  - Sub variants that deal with the stack correctly
429  - Switched runops core
430  - Line numbers in warnings
431  - Environment access
432  - Many documentation cleanups
433  - Conversion to CPS style!
434  - BASIC debugger and many other wacky features
435  - Filename, line number parsing support in IMCC
437 New in 0.0.10
438  - IMCC integration
439  - eval
440  - some more benchmarking
441  - cgp core
442  - optimized math ops
443  - intersegment branches
444  - more complete use of PObjs
445  - beefed up packfiles
446  - sub/continuation/coroutine fixes
447  - better NCI (native calling interface)
448  - many imcc improvements
449  - jako improvements
451 New in 0.0.9
453 - Native function calling interface (Dan)
454 - Stack/list aggregate rewrite (Leo)
455 - Scratchpads (Jonathan Sillito)
456 - Preliminary DotGNU support -- type conversion ops (Gopal V + Leo)
457 - Buffer/PMC unification (Leo)
458 - stabs debugging support for JIT (Leo)
459 - Jako overhaul (Gregor)
460 - Optional Lea allocator (Leo)
461 - Parrot sprintf (Brent)
462 - Miniparrot (Josh)
463 - PMC Properties (Dan)
464 - Various JIT improvements (D. Grunblatt + Leo)
465 - Extensible packfiles (Juergen)
466 - Restructured PMC hierarchy (Leo)
467 - Real Scheme (Juergen)
469 New in 0.0.8
471 - Several new grammars and a BNF -> perl5 and perl6 converter (Jeff)
472 - Working Perl6 REs (Sean)
473 - Keyed Access (Tom Hughes et al)
474 - New PMCs (Alberto et al)
475 - Better Documentation
476 - New COW semantics
477 - GC acceleration (Mike Lambert)
478 - Lexical scope (Jonathan Sillito)
479 - IMCC patches
480 - JIT for the ARM
482 New in 0.0.7
484 - Perl 6 Grammar and Compiler (Sean)
485 - Subroutines, coroutines, and continuations (Melvin)
486 - GC improvements (Peter Gibbs, Mike Lambert)
487 - Global variables (Melvin)
488 - Intermediate bytecode compiler (Melvin, Angel)
489 - And much, much more.
491 New in 0.0.6
493 - New assembler that support keyed types (Jeff)
494 - New macro layer, allowing constants (Jeff)
495 - New Configure.pl (Brent)
496 - Changes to bytecode format, endian issues resolved (Melvin)
497 - GC improvements and bug fixes (Peter Gibbs, Mike Lambert)
498 - JIT compiler rewrite (Jason and Daniel)
499 - Parrot assembler in Parrot (Daniel)
500 - Parrot debugger (Daniel)
501 - BASIC polished, Eliza.bas is new (Clint)
502 - Cola compiler committed and working, with limited OOP (Melvin)
503 - Keyed aggregates (Steve Fink)
504 - Global ops (Melvin)
505 - Compile-time speedup (Melvin)
506 - Much documentation
507 - New PDDs (Dan)
508 - Contributed tetris and lzw files
509 - And many more, from the cast of thousands
511 New in 0.0.5
513 - Full GC
514 - Perl Scalar support in PMCs
515 - Array and Hash types almost ready for prime-time
516 - Internal support for keyed types
517 - EMACS editing mode
518 - New PDDs
519 - New Language - BASIC
520 - Regular expression compiler
521 - More tests
522 - Many, many bug fixes, enhancements, and speedups
524 New in 0.0.4
526 - Arena-based memory allocation system
527 - Copying GC
528 - New IO subsystem
529 - "Predereferencing" mode - ./parrot -P - 22% speedup
530 - JIT compiler - ./parrot -j
531 - Parrot now builds warnings-clean on many platforms
532 - Many more PMC methods implemented
533 - Regular expression operations
534 - Added a FAQ
535 - Basic support for embedding Parrot in other programs
536 - Warnings support
537 - Added PDDs to distribution
538 - Bignum library
540 - PMC inheritance
541 - Added an assembly optimizer
542 - Improved string encoding/type support
543 - Many more tests
544 - Source reformatting
545 - Major refactoring in packfile library
546 - More Miniperl functionality
547 - New PMC "clone" operator
548 - Beginnings of key-based access to PMCs - arrays and hashes
549 - MOPS comparisons in examples/mops/
551 New in 0.0.3
553 - PMCs!
554 - Perl base scalar types implemented
555 - A new minilanguage, Scheme
556 - Much improved documentation
557 - Register stacks pushing and popping
558 - User stack pushing, popping and rotating
559 - Jako updates: subroutines, more example programs, optimizations
560 - test_prog renamed to 'parrot'
562 - Added features to the assembler: @ for current location, and global
563   labels
564 - Build tweaks for VMS
565 - Bytecode typing clean-ups
566 - More platforms: OS X, HPUX, OS/2
567 - The proliferation of runops cores reduced to one fast and one slow one
568 - Opcode tracing, bounds checking, profiling
569 - Vastly improved string support, with separation of encoding and
570   charset
571 - Lots more tests
572 - Multiple interpreter creation support - the beginnings of threading
573 - Much better resource handling - the beginnings of GC
575 New in 0.0.2
577 - Parrot now works on all core platforms
578 - A large number of tests, in the standard Perl testing framework
579 - A new minilanguage (Jako) which compiles to Parrot assembly
580 - Documentation about the assembly language (docs/parrot_assembly.pod)
582 - Separate modules for assembly (Parrot::Assemble) and bytecode
583   manipulation (Parrot::PackFile::*, packfile.c)
584 - Assembler completely rewritten
585 - Better operand-type guessing in the assembler
586 - Assembler support for '\n' etc. in string constants
587 - Code reformatted to match the coding standards
588 - New ops for register-constant INTEGER comparisons
589 - Macro expansion in the assembler
590 - IVs and NVs renamed to more friendly INTVAL and NUMVAL
591 - Hard-coded pack("") formats removed
592 - Better handling of floating-point numbers in assembler
593 - Moved floats to constant table (fixing many alignment issues)