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