forked from parrot/parrot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
1261 lines (1177 loc) · 45.5 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# $Id$
New in 0.7.1
- Implementation
+ add -I and -L command line options
+ support for null strings in NCI calls
+ preliminary support for resumable exceptions
+ add '.hll_map' method for dynamic HLL type mapping
+ more parrot_debugger fixes
+ remove obsolete '.past' extension
- Languages
+ Rakudo (Perl 6)
- now over 3300 passing spectests
- precompiled modules
- precompiled scripts (--target=pir can now be executed standalone)
- Support for @*INC and %*INC varialbes
- additional builtin methods and subs
- added 'fail' function, warnings on use of undefined values
- m/.../ regexes
- qq, qw, q quoting forms
- run tests in parallel
- gather/take
- Perl6MultiSub
+ Cardinal (Ruby):
- 'require' and precompiled modules
- many new tests
- all Array tests pass
- regexes
- default arguments to functions
- new committer
- Compilers
+ PCT:
- add :loadinit attribute for PAST::Block
+ PIRC:
- major refactoring to allow all PIR keywords as identifiers
- links to libparrot now, so all Parrot ops are recognized as such
- implemented .loadlib, .HLL_map, .HLL
- Miscellaneous
+ add Xlib and Mysql modules and test programs to NCI examples
+ many updates and cleanups to PDD documents
New in 0.7.0
- Specification
+ PDD27: add multisub lookup
- Implementation
+ new concurrency implementation (see PDD25)
+ Exception PMC now captures a return continuation
+ improved PMC encapsulation (Iterator, Key, Pair)
- Languages
+ Cardinal (Ruby):
- class variables
- parsing improvements
- minor additions to class builtins
- add support for block parameters to functions
+ Lua:
- various language fixes
- refactor all libraries (namespace, method registration)
- add a OpenGL binding (still incomplete)
- lost user back trace (see ppd25 & pushaction)
+ Pipp (PHP):
- add support for while- and for-loops
- add support for increment and decrement
- designate PHP 5.3 as the reference implementation
- improve support for string literals
+ Pugs (Perl 6):
- removed due to bit rot
+ Rakudo (Perl 6):
- now over 2200 passing spectests
- updated the Rakudo roadmap
- Perl 6 multi dispatch
- dispatch with slurpies
- class attributes ("my $.x")
- anonymous classes
- OO and metaclass improvements (.WHAT, .WHICH, .WHENCE)
- additional builtin methods and subs
- improved make test targets and harness
+ Tcl:
- implement [lreverse], [lsort -command]
- allow [incr] to autovivify
- update tclsh spec target to 8.5.3
- fix bug in TclDict PMC, allowing ~200 more [dict] spec tests to pass
- update 'make spectest' fudging, using TODO instead of SKIP if possible
- Compilers
+ PCT:
- :scope('register') for PAST::Var nodes
- allow invocant specification in attribute scope PAST::Var nodes
- correct ordering of sub generation from POST
- add 'loadinit' attribute to PAST::Block for block initialization
+ PIRC:
- PIR registers now use the vanilla register allocator
- all PASM output now uses PASM registers
- all .locals and $registers are mapped
- clean-up of grammar, back-end and documentation
- implemented constant folding
- implemented instruction selection
- Configuration
+ tests now clean up after themselves
+ improved parallel test support
+ ports/cygwin added
+ Darwin problems fixed
- Tools
+ parrot_debugger renamed from pdb, numerous tweaks
- Miscellaneous
+ IMCC cleanups
+ :vtable implies self in PIR
+ modest core speed improvements
+ Cygwin support improved
+ "say" now an opcode (was dispatched to a method; see Deprecations)
- Deprecations
+ ".pragma n_operators" is deprecated
+ old PASM register syntax (without "$") is deprecated
+ bare (unquoted) method names are deprecated
+ "#line" will be replaced with ".line"
+ ".HLL_map" syntax will change
+ ".loadlib" is now separate from ".HLL"
+ mmdvtregister and mmdvtablefind opcodes are deprecated
+ removed getfd, getclass opcodes
+ removed IMCC syntax that treated some methods as builtins
+ removed numeric get_attr and set_attr vtable entries
New in 0.6.4
- Documentation
+ removed a lot of old information from the FAQ
+ improved function level documentation
- Configuration
+ removed the configuration item 'has_gnu_m4'
+ refactored ICU-detection
- Languages
+ ChitChat
- improved the Smalltalk implementation
+ Pipp
- renamed Plumhead to Pipp
- support for a lot of builtin functions.
- Pipp now uses PHP specific data types.
- converted from PCT with TGE to PCT with NQP actions
- improvements in the PCT variant by using optok parsing
- start of object support
+ pir
- simple assignments work
+ json
- added a PCT-based implementation of JSON parsing
+ lolcode
- improved handling of symbols
- added support for block handling
- added support for globals
+ Lua
- more tests
+ Rakudo
- updated Range implementation
- added enums
- added generic type declarations (::T)
- added runtime mixing of roles with 'does' and 'but'
- fixed handling of implicit lexicals ($_, $!, and $/)
- fixed implicit method calls on $_
- improved complex math builtins, added Complex
- moved many builtins to class Any
- declaration of lists of variables now work
- improved test infrastructure
- 910 additional passing spec tests since last release
- more convergence with STD.pm grammar
- added named 0-ary parsing and ops
- Compilers
+ PCT:
- allowed subroutine and method names to be a PAST tree that produces the name
- Improved lexical handling
- Tools
+ pbc_disassemble renamed from disassemble
- Implementation
+ allowed .macro_const in PIR
+ added the flag :lexid(...) for subroutines
+ made multiple dispatch work for sub types
+ fixed garbage collection bug related to the metadata attached to a PMC_EXT structure
+ added a warning when using deprecated opcodes
+ simplified the stacks implementation
+ fixed C++ build
+ improved closure and lexical support
+ improved IMCC register allocator
+ added cache for all runtime-constant strings, reducing memory usage
- Miscellaneous
+ improved OpenGL/GLU/GLUT bindings
+ added a standard profile for Perl::Critic coding standard testing
+ added support for smoke testing with Smolder
+ enabled use of Test::Harness 3.0 if available, but don't require it for 'make test'
+ added the executable 'parrot_config' to query Parrot configuration
New in 0.6.3
- Specification
+ updated pdd09_gc.pod
- Languages
+ Cardinal:
- dramatically improved parsing speed
- added support for defining and instantiating classes
- started fleshing out the builtin class hierarchy
- added support for hashes and arrays
+ Chitchat: added the start of a smalltalk compiler
+ Pheme: updated to match PGE changes
+ Pynie: return statement, other minor updates
+ Rakudo:
- added working list and hash contexts
- added 'return' statements
- added => pair constructor
- added ?? !! ternary
- added Range, range operators, Complex
- added common List, Hash methods
- refactored base classes
- added Mutable, Perl6Scalar classes
- added type-checking, is readonly/rw/copy for parameters
- added make localtest, docs/spectest-progress.csv
- fix named unaries
+ Squaak: implement return statement
+ Tcl: updated control flow exceptions to use new builtin types
- Compilers
+ All tools converted to P6object metamodel
+ PGE:
- <?foo> is now a zero-width match
- reduced backtracking to improve parsing speed
+ PCT:
- added "return" PAST.op node type for subroutine returns
- added "keyed_int" scoping to PAST::Var
- fixed calls to closures
- automatically transcode 7-bit unicode to ascii for faster processing
+ NQP: added "return" statement, ?? !! ternary operator
- Configuration
+ expanded step gen::opengl
- Implementation
+ updated function and macro names to match pdd09_gc.pod
+ removed Super PMC
+ add ".namespace []" as alternative to ".namespace"
+ "make codetest" target runs standard coding tests
- Miscellaneous
+ added P6object class for Perl 6 interfaces to objects in Parrot
+ ported OpenGL/GLU/GLUT bindings to Win32, BSD, and more Mac OS X variants
+ generate OpenGL/GLU/GLUT bindings by parsing system headers
+ new OpenGL example shapes.pir, covering basic OpenGL 1.1 / GLUT 3 APIs
+ new float4.pir structure-packing benchmark
+ reduced memory use for variables
+ improved constant string caching
+ made code g++ and gcc (with optimizations) safe
+ the usual collection of bugfixes and optimizations
New in 0.6.2
- Specification
+ updated and launched pdd28_strings.pod
+ updated pdd19_pir.pod
- Implementation
+ added implementation of Rational PMC.
+ simplified ops control flow syntax
+ enabled backtrace on non-glibc platforms too
+ improved some PIR error reporting
+ removed user stack opcodes
(save, restore, lookback, entrytype, depth, rotate_up)
(NOTE: This was scheduled to occur after 0.7.0, moved up to this release)
+ removed register stack, saveall, and restoreall opcodes
+ removed various deprecated features and unused code
- Languages
+ Amber: retired
+ C99: grammar updated
+ Cardinal: resurrected, method calls and do blocks work now
+ Eclectus: use NQP as PAST generating code
+ Lua:
- added big number library
- updated to match PGE changes
- added a bytecode disassembler & a Lua 5.1 VM bytecode translator
+ Pheme: updated to match PGE/PCT changes
+ Plumhead:
- use NQP as PAST generating code
- use riaxpander for macro expansion
+ Rakudo:
- updated ROADMAP
- conditional and loop statement modifiers
- lots of class, object, role, and method improvements
- Str increment and decrement
- improved spectest reporting
- type checking on assignment
- regexes and grammars
- undef and self
- placeholder vars
roadmap updated
+ Squaak: added to repository
+ TAP: retired
- Compilers
+ PGE: updated to match Synopsis 5, deprecated features removed
+ PCT:
- improve handling of register types, conversion between registers
- improved error diagnostics
- add 'arity' to for loops
- Configuration
+ added step auto::opengl
+ added step gen::opengl
+ added step gen::call_list
- Miscellaneous
+ still more optimizations and performance improvements, especially in GC
+ new libraries: OpenGL/GLU/GLUT bindings (small subset working)
+ new dump_pbc.pl utility: PBC disassembly/source code weaver
+ improved C++ compiler support
+ optimized builds work again
New in 0.6.1
- Specification
+ drafted pdd29_compiler_tools.pod
+ updated pdd28_character_sets.pod draft
+ updated pdd19_pir.pod draft
- Languages
+ c99: added independent C pre-processor
+ HQ9+: reimplemented with PCT
+ Lua:
. reimplementation with PCT, using PAST and POST
. behavior aligned wih 5.1.3
+ Rakudo:
. implemented basic I/O, including '$*IN', '$*OUT', '$*ERR', 'prefix:='
. implemented simple typing and runtime type checking
. added basic multi-method dispatch
. expanded named argument handling, including Pair and colonpairs
. added 'Whatever' and 'Capture' classes
. implemented 'handles' trait verb
. added 'loop' statement
. implemented 'given', 'when', 'for', 'while', 'until' statement modifiers
. implemented Hash methods '.keys' and '.values'
. fixed bug to get '.WHAT' working correctly
. initial implementation of 'eval'
- Compilers
+ NQP:
. created a bootstrapped build, see 'make boot'
. added 'infix:<', 'infix:<=', 'infix:>', 'infix:>=' relational operators
. added 'postfix:++', 'postfix:--' operators
+ PCT:
. added methods specifying default behaviors in PAST, reducing repeated code
. improved symbol table lookup
+ PGE:
. removed deprecated code including: P6Regex, P6Grammar, PAST-pm
- Miscellaneous
+ notable speedups during compilation and execution of parrot and HLLs
+ pdb (the parrot debugger) can now catch parrot exceptions
+ better detection of glibc and gettext during configuration
+ various bugfixes, code cleanups, deprecations, and coding standard fixes
New in 0.6.0
- Specification
+ launched pdd18_security.pod
+ updated pdd17_pmc.pod
+ launching draft of pdd28_character_sets.pod
- Documentation
+ cleanup of IMCC documentation
- Configuration
+ add step auto::gettext
+ add step auto::crypto
- Compilers
+ PCT:
. Fix '-e' option
. Phase out P6Regex in favor of Perl6Regex
+ IMCC:
'.local Array my_arr' is illegal now
- Languages
+ C99: reimplementation with PCT
+ lolcode:
. various updates
. add support for functions with params
. add math functions
+ Rakudo:
. support for 'say'
. first cut at smart matching
. indirect method calls
. support for Pairs
. added methods 'grep' and 'first'
. implement auto{increment,decrement}
. initial implementation of 'perl6doc'
+ Lua:
. various updates
. add base64 library
+ Cardinal: basic support for functions with parameters
+ Pheme: various updates
+ Ecmascript: various updates
+ Tcl: now targeting tcl 8.5.1, no more expected failures in test suite.
(No, this doesn't mean everything's implemented. =-)
+ Eclectus: various updates
+ WMLScript: various updates
- Implementation
+ PDD17 (PMCs)
+ Add library YAML::Dumper
+ Add the MD2, MD4, MD5, RIPEMD160, SHA & SHA1 PMC, as a wrapper
around libcrypto
- Miscellaneous
+ various bugfixes, code cleanups and coding standard fixes
+ consting
+ remove external Perl 5 modules from the Parrot distribution
New in 0.5.3
- Documentation
+ PDD09 (garbage collection) - approved
+ PDD28 (character sets) - draft started
+ added function documentation to some core functions
+ PCT beginners guide, optable guide and PAST nodes guide, bug fixes
- Compilers
+ IMCC: plugged various memory leaks and other cleanups
+ PCT:
. add "attribute" as a scope variant to PAST::Var nodes
. add 'shift' and 'pop' methods to PAST:: nodes
+ NQP: add '=:=' op, tests for scalar and list contextualizers, \x escapes
- Languages
+ APL: reimplementation with PCT
+ Cardinal (Ruby): reimplemention with PCT
+ Ecmascript: reimplementation with PCT
+ lolcode: improved expression parsing, ifthen, IT, YARN
+ lua:
. aligned with Lua official release 5.1.3.
. added initial PCT-based implementation.
+ Punie (Perl 1): refactor to use standard PCT-based filenames
+ Pynie (Python): add functions
+ Rakudo (Perl 6):
. rebranded, formerly known as 'perl6'
. passes many more official Perl 6 Specification tests
. added 'perl6doc' utility
. oo including meta?classes, objects, methods, attributes, role composition
. match variables, while/until statements, traits
. many new methods for Str, List, Hash, Junction
- Implementation
- Deprecations
+ PCCINVOKE syntax for named arguments using []; use () instead.
+ see DEPRECATED.pod for details
- Miscellaneous
+ pbc_to_exe refactored for code reduction, portability, and maintainability
+ various bug fixes
+ #line directives added to generated JIT files, improving debugging
+ consting, attribute marking, refactoring, warnings cleanup
New in 0.5.2
- Documentation
+ PDD27 (multiple dispatch) - debut of new design
+ Numerous small updates to glossary.pod, etc
- Compiler Toolkit
+ NQP: optional, named, and named/required parameters
+ PIRC: cleanups
+ PAST: "defined-or"
- Languages
+ New mk_language_shell.pl script creates language stubs
+ LOLCODE: new
+ Lua: various
+ Eclectus: start with support for local variables and procedures,
use SXML as intermediate representation
+ Perl 6: list builtins, compiler directives, command-line options, etc.
+ "make perl6" now builds a Perl 6 executable
+ punie: more builtins, control structures, code refactoring
+ pynie: builtin stubs, more tests
- Implementation
+ New "pbc_to_exe" utility turns bytecode to executables
+ New set_outer method for subs
+ Further configuration refactoring for testability
+ All functions now completely headerized
+ Concurrency: interpreter schedulers
- Deprecations
+ DYNSELF (changes to SELF; SELF to STATICSELF)
+ METHOD (replaced by renaming PCCMETHOD)
+ pmcinfo op (superseded by 'inspect')
+ get_attr, set_attr, and 8 other vtable methods
+ See DEPRECATED.pod for details
- Miscellaneous
+ Many bug fixes
+ Minor speed enhancements with UTF-8 string handling
+ Debian packaging
+ consting, attribute marking, warnings cleanup, memory leaks plugged ...
New in 0.5.1
- Documentation
+ PDD19 (PIR) - reflect state on the ground; incorporate old IMCC docs
+ PDD25 (Concurrency) - launch out of draft
+ Improve documentation of deprecated parrot features.
- Compilers
+ PCT: Parrot Compiler Toolkit redesigned and updated
+ NQP: major updates, including support for namespaces,
module/class declarations, methods
+ IMCC: remove .sym as alias for .local. Remove .pcc_
prefix for calling directives (.pcc_begin became .begin_call).
+ PIRC: creates an AST during the parse.
+ PGE: more updates to match S05 syntax.
- Languages
+ perl6: re-implemented using PCT and NQP, new object subsystem
+ abc: re-implemented using PCT and NQP
+ eclectus: initial implementation
+ plumhead: add PCT variant
+ punie: re-implemented using PCT and NQP, extended to handle subroutines
Happy 20th Birthday, Perl!
+ pynie: re-implemented using PCT and NQP
+ PIR: start conversion to NQP (under construction)
- Implementation
+ new opcodes: 'die', 'addhandler', 'copy'
+ Initial implementation of Concurrency PDD
+ Add 'arity' method to Sub and NCI PMCs
- Miscellaneous
+ Bug cleanup
+ consting, attribute marking, warnings cleanup, memory leaks, GC...
+ dead code removal (includes some defunct languages)
New in 0.5.0
- Implementation
+ PDD15 (OO) branch merged with trunk; this release contains a working,
tested implementation of the latest OO model
+ Added pop_eh/push_eh_p/count_eh opcodes
+ Add --runcore command line option
+ Add gcdebug runcore to help track down GC bugs
+ minor improvements to IA-32 JIT
- Documentation
+ PDD19 (PIR): updates to macros, .pcc* directives
+ PDD25 (Concurrency): updated
+ PDD26 (AST): draft approved
+ PDD23 (Exceptions): draft approved
+ Copyright cleanups
- Languages/Compilers
+ languages/APL: minor updates, PDD15 conformance
+ languages/dotnet: minor updates
+ languages/lua: minor updates, PDD15 conformance
+ languages/lisp: minor updates
+ languages/perl6: minor updates, PDD15 conformance
+ languages/plumhead: minor updates
+ languages/punie: minor updates, PDD15 conformance
+ languages/nqp: minor updates
+ languages/scheme: many updates, PDD15 conformance, improved tests, use
PMCs instead of primitive registers to represent values
+ languages/tcl: bugfixes, PDD15 conformance
+ languages/WMLScript: minor updates
+ compilers/pirc: updates from PDD19, PDD06
+ compilers/pct: minor updates, PDD15 conformance
+ compilers/pge: PDD15 conformance
+ compilers/tge: PDD15 conformance
- Configuration
+ Improve test coverage
+ Improve reporting when a step fails; allow abort on failure
- Miscellaneous
+ More coding standard conformance, tests, cleanup, speedups,
warnings cleanup
+ Bug cleanup, esp. GC bugs
+ Eliminate .imc extension (use .pir)
+ Simplify some core config steps to not allow interactive prompting
- Removed
+ clear_eh opcode
New in 0.4.17
- Implementation
+ Bug fixes (including Coverity IDs 20, 22, 30, 119-122, 124-126, 129-131)
Also various GC, memory, and segfault issues
+ Fix & reenable CGP core
+ Parrot's -r flag now works again (compile to and execute bytecode)
+ Updates to pmc2c & PIR syntaxes
+ Fix Complex PMC
+ Minor performance improvements, especially in PGE
- Documentation
+ PDD02 "Vtables" - superceded by PDD17
+ PDD06 "PASM" - minor updates
+ PDD17 "PMC" - add VTABLE syntax, update core PMC struct, restore UnionVal
+ PDD19 "PIR" - early review started
+ PDD21 "Namespaces" - cleanup
+ PDD24 "Events" - draft approved
+ PDD25 "Concurrency" - minor updates
+ PDD26 "AST" - draft version begun
+ PIR tutorials updated
- Languages/Compilers
+ Make scheme work with the current calling conventions, other major work.
+ Updates to m4, lua, compilers/pirc, languages/PIR, dotnet, tcl
- Miscellaneous:
+ make -j functional again
+ Code cleanup (refactoring, optimizations)
New in 0.4.16
- Implementation:
+ Performed code review on every PMC
+ Modified PMC code generation to use Storable, reducing compile times
+ Added a makefile target to generate test coverage data of C sources
- Languages:
+ NQP: added lists, for loops, operators, comparison and multiplicative operators
+ Announced Kea-CL, Kea Common Lisp, an ANSI Common Lisp implementation
The repository is available at https://rgrjr.dyndns.org/svn/kea-cl/trunk/
- Documentation
+ PDD17 "PMCs" - draft approved, the design is complete
+ Added more PIR tutorials, see examples/tutorial/00_README.pod
- Miscellaneous:
+ Many bugfixes, enhancements, documentation, and coding standard updates
+ Deprecated PMC constants and other crufty syntax, see DEPRECATED.pod
+ Improved icc compiler compatibility for error line reporting
New in 0.4.15
- Implementation:
+ Lots of code review, many bugs fixed
+ Many more code cleanups and compiler warning levels
+ Started a new jit engine for 64-bit processors
+ Refactored configure process, with tests and new diagnostic options
+ Added new CodeString PMC for dynamic generation of PIR code
+ More pdd15 support for object metamodel.
- Languages:
+ Added NQP ("Not Quite Perl"), a very lightweight Perl 6-like language
+ Significant improvements and refactors to PCT (Parrot Compiler Toolkit)
+ perl6 passes more spec tests
+ Lua works now with a PGE/TGE/PAST-pm based compiler, lives in one pbc,
and the interpreter has same behavior as original.
- Documentation
+ Added a committers' HOWTO
+ More PIR tutorial examples
+ Added PAUSE guide
New in 0.4.14
- Now, with Seat Belts!
+ added makefile targets for Sun lint, BSD lint, and splint
+ corrected many errors picked up by these tools
+ decorated source code with compiler hints, assertions, and attribute macros
+ automated creation of function declarations to prevent common errors
+ increased compiler warnings levels
+ converted more exceptions to a recoverable form
- Languages:
+ updated Lisp, Lua, Perl 6, tcl, regex, Scheme ("Pheme")
+ Perl 6 now fetches selected tests from pugs, and even passes some
+ PGE modified to handle {*} action subs for top-down and bottom-up parsers,
and to allow grammar subclassing
+ HLLCompiler now has better exception, eval, and exit support
+ Introduced PCT, a refactor of HLLCompiler and PAST-pm
- Design:
+ PDD15 "Objects" - details added to 'new' and 'getattribute' opcodes
+ PDD17 "PMCs" - notes added on instantiation and dynamic extention in PIR
- Documentation:
+ added Parrot-related text from "Perl 6 and Parrot Essentials" book,
tutorial examples from "Learning PIR" talk, and PDD15 metamodel diagrams
- Implementation:
+ reduced memory footprint when using named registers
+ implemented overridding of vtable methods by PDD15 classes
+ improved PDD15 support for 'new', 'instantiate', and others
+ added makefile targets to ease core and HLL makefile regeneration
+ updated parrot dubugger, "pdb", to allow loading of commands from file
- Misc:
+ many bugfixes, enhancements, documentation, and coding standard updates
New in 0.4.13
- Languages:
+ Updated Lisp, Lua, PHP ("Plumhead"), Python ("Pynie"), ABC,
WMLScript, and Tcl ("ParTcl").
+ Perl 6 passes all of the sanity tests.
+ PGE supports latest Perl 6 grammar syntax. Perl 6, Python
("Pynie"), and ABC parsers updated to match.
+ Updated PHP ("Plumhead") to Antlr 3.0.
+ Lua added the beginnings of a PGE/TGE based compiler (not yet
replacing the Perl/Yapp compiler).
+ Lisp updated for current features, added a test suite.
- Core Implementation:
+ Filled in features and backward compatibility for PDD 15 objects.
New object metamodel passes 85% of old test suite.
+ GCC API symbols are visible externally only when explicitly exported.
+ Added generated GCC compiler attributes to increase warnings, and
cleaned up resulting warnings.
+ Code cleanup efforts and fixed memory leaks by the cage cleaners,
resulting in notable speed increases.
- Misc:
+ Updated Parrot distribution to Artistic License 2.0, from dual
Artistic 1/GPL license.
+ SDL examples brought up-to-date with current features.
New in 0.4.12
- Build:
+ even more refactorings and improvements in configuration system
+ improved tests and documentation for configuration system
- Languages:
+ Updated abc, PHP ("Plumhead"), Lua, Tcl
+ Reclaimed Lisp
- Design:
+ new PMC PDD draft partially completed
- Implementation:
+ continued implementation of PDD 15 (Objects)
+ minor garbage collector and memory management improvements
+ several memory leaks resolved
+ extended support for compilers other than GCC
+ improved C++ compiler compatibility
+ enhanced support for Solaris, non-MSVC Win32, and other platforms
New in 0.4.11
- Compilers:
+ IMCC: added documentation for C-based Parrot Calling Conventions,
refactorings and bug fixes
+ PGE: new perl6regex front end reflecting recent S05 syntax changes
+ PIRC: new prototype PIR parser
- Languages:
+ Updated Lua, PHP ("Plumhead"), BASIC, pynie
+ Lua implements environment
- Design:
+ PDD15 "Objects" - details added, and draft approved
- Documentation:
+ Added guidelines for PMC documentation
- Implementation:
+ PDD15 implementation is largely complete, including role-based composition,
introspection, and C3 method resolution order
+ new Exporter PMC for importing globals between namespaces
+ new string utilities for radix conversion
+ PCCINVOKE and Parrot_PCCINVOKE allow calling using the full Parrot Calling
Conventions from PMCs and C code respectively
- Build:
+ Refactorings and improvements in test coverage for 'Configure.pl'
- Misc:
+ many bugfixes, enhancements, and code cleanup
+ added example subversion config file
+ extended support for gcc, icc, and other compilers
+ extended support for Solaris and other platforms
New in 0.4.10
- Compilers:
+ IMCC: Parrot calling conventions now available between two C PMCs (PMINVOKE)
+ PGE: Match object improvements
+ smop: added Attribute and Class PMCs
+ HLLCompiler: improvements for interactive mode
- PAST:
+ extended binding to a list of variables
- Languages:
+ Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), Ruby ("Cardinal")
+ Update PIR, regex, Zcode
+ New language: Pynie - a Python compiler for Parrot
+ Lua implements require and many other ops, improved regex support
+ Remove parakeet
- Design:
+ PDD01 "Overview" - updated architecture and platform information
+ PDD15 "Objects" - details on roles, objects, and classes added
+ PDD22 "I/O" - added async ops and Status PMC details
- Documentation:
+ Added guides for Metacommitter, Relase Manager, and Cage Cleaner roles
- Implementation:
+ Object, Class, Role, and Attribute PMC implementation has begun
+ Perl 5 module "Parrot::Embed" now compiles and links on all platforms
- Build:
+ Major improvements in test coverage for 'ops2c.pl'
- Misc:
+ New utility: Crow, a template processor
+ New library module: Config/JSON for reading/writing JSON files
+ many bugfixes, enhancements, and coding standard updates, code cleanup
New in 0.4.9
- Compilers:
+ IMCC: Parrot calling conventions now available in C PMCs, allowing
named, optional, slurpy, and flat parameter passing
+ PGE: extended support for Perl 5 Regexes
+ smop: prototype object model implementation
+ hllcompiler: refactored to run a configurable set of compilation stages
- PAST:
+ redesigned assign/binding to support Perl 6 binding semantics
- Languages:
+ Updated Lua, PHP ("Plumhead"), Tcl ("ParTcl"), perl6, perl5
+ New language: PIR - a PGE-based implementation of Parrot PIR
+ perl6 now supports binding (':=') and 'join'
+ lua generates tail calls, and supports its own regex flavor (PGE-based)
+ Pheme still works, huzzah!
- Design:
+ PDD21 "Objects" - rewritten
+ PDD22 "I/O" - updated and 'TODO' tests added
- Documentation:
+ Interface stability classification standards approved
+ Roles and Responsibilities documented approved
+ Official 'drafts' directory created (was 'clip')
- Implementation:
+ More NameSpace and OS PMC methods implemented
+ Parrot executable fullname and basename now available in PIR/PASM code
+ new 'chomp' library function
- Build:
+ Major improvements in test coverage for 'ops2pm.pl'
- Misc:
+ many bugfixes, enhancements, and coding standard updates
+ extended support for Sun Workshop Compilers
+ Parrot now builds on PocketPC platform
New in 0.4.8
- Compilers:
+ HLLCompiler: added tracing options, modified api
+ PGE & TGE bugfixes and updates
- PAST:
+ added global and lexical variable support
+ added looping constructs, arrays, hashes
- Languages:
+ Updated PHP ("Plumhead"), Tcl ("ParTcl"),
forth, perl6, lua, abc, APL, WMLScript, punie
+ ParTcl is passing > 24.9% of Tcl cvs-latest test suite
+ perl6 now supports hashes, arrays, method calls, arity-based
multisubs, quoted terms, ranges (non-lazy), try blocks, $!
- Design:
+ PDD01 "Overview" - updated
+ PDD22 "I/O" - rewritten and approved
- Test Suite:
+ Converted Perl 5 Regex tests to PIR, with notable speedup
+ Added tests for opcodes, compilers, languages, and coding standards
- Build:
+ Major improvements in test coverage for 'pmc2c.pl'
- Misc:
+ many bugfixes, enhancements, and coding standard updates
+ extended support for non-core platforms including Cygwin, Tru64
New in 0.4.7
- New languages: PHP ("Plumhead"), Forth
- Updated languages: Ruby ("Cardinal"), Tcl, Lua
- Remove old Python implementation from Parrot repository; the new Python
language code is hosted at http://pirate.tangentcode.com
- Compilers:
+ PGE updated with more expressions, latest changes to S05
+ new Perl 6 grammar compiler
- Integration:
+ Perl 5 module "Parrot::Embed" allows easy embedding of a Parrot
runtime into a Perl 5 program
- PIR:
+ new :init pragma for subs that must run before the main function
+ new :vtable pragma to identify subs that override PMC vtable methods,
eliminating the need for special subroutine names
+ PIR parser/compiler does not stop on first syntax error
+ Vanilla register allocator ("register alligator") greatly improves
performance compiling large functions
+ Eliminated limit on number of PIR macros
- PMCs:
+ hash lookups return null instead of None for missing keys
- Design:
+ PDD13 "Bytecode files: format and manipulation" - new
+ PDD10 "Embedding" - new
+ PDD25 "Concurrency" - rewritten
+ PDD15 "Objects" - new section on redesign requirements
+ PDD07 "Coding standards" - significant updates and automated tests
- Test Suite:
+ Many many more new tests
- Build Process:
+ autoconf compatible install options
- Misc:
+ Namespace refinements
+ Coroutine improvements
+ An impressive swarm of other bugfixes and enhancements
New in 0.4.6
- New languages: Ruby ("Cardinal"), Javascript ("ecmascript")
- Updated languages: Tcl, dotnet, bc, Pheme, Punie, WMLScript
- Updated compilers: PGE, TGE
- IMCC updates:
+ ".loadlib" directive expresses dependencies
+ ".namespace" with no parameter goes to HLL root
+ lexer is reentrant (reentrant grammar in progress)
- Namespace improvements:
+ new suite of opcodes to access namespaces and globals
("find_global" and "store_global" will be phased out)
+ namespace '' no longer means HLL root
- Design document updates:
namespaces (pdd23), basic types (pdd17), embedding
- Updated tool requirements for developers:
flex 2.5.33, bison 2.1, perl 5.6.1
- New to-do list for people new to Parrot:
cage/todo.pod
- The usual plethora of bugfixes and enhancements
New in 0.4.5
- unicode subroutine names
- hierarchical class names finished including MMD support
- new dotnet CLI to PIR translator
- improved TGE code and compiler
- APL: vector handling
- new STM branch in the svn repository
- the usual bugfixes and enhancements
New in 0.4.4
- hierarchical class names
- APL compiler
- under development
- understands simple vector ops, strings
- demonstrates use of Unicode in Parrot
- pgc, a compiler for rules and operator precedence parsers
- Major redesign and improvements for PGE
- compilers understand named parameter options
- :ratchet option implemented to support non-backtracking quantifiers
- TGE (tree grammar engine) for tree transformations
- tgc, tree grammar compiler
- perl6 compiler
- support for many operators, lexical scalars, regex matches
- new pheme (Parrot scheme) compiler
New in 0.4.3
- namespaces partially implemented
- rulec, Perl 6 rule compiler
- PGE improvements including return values for closure
- parts of a Perl 6 parser based on PGE
- complex trigonometric methods
- type of Sub PMC is now overridable by HLL
- NetBSD support
- many bug fixes and improvements
New in 0.4.2
- improved PPC and x86 JIT support including JIT compilation
of very simple PASM/PIR subroutines
- preliminary libreadline support
- better trace and debug features
- pkgconfig support
- META.yml to support proper indexing on CPAN
- new opcode: hcf (in "my_ops" in dynamic op library)
- new File pmc for file specific ops (is_dir, is_file, copy, rename...)
- named arguments and parameters (both :named("") and => syntaxes)
- ongoing config improvements
- tons of bug fixes and other small improvements - too much to list all
New in 0.4.1
- Installation: 'make install' is using standard locations now
(/usr/local is the default --prefix)
- Produce static and shared libraries on some systems
- Configure system rearragement
- OS pmc started (mkdir,cd,cwd,rm,umask,stat)
- Shootout examples
- Test files are now testable with 'prove'
- Smoke (and smokej) outputs progress
- PIR supports: I = A < B (>,<=,>=,==,!=)
- Add support for octal number constants
- partcl updates:
- almost finish [string]; start [file]
- add build tool for generating inline'd tcl builtins from templates.
- Jako updates: NCI, subroutines, global variables and constants all work.
(Gregor)
New in 0.4.0
- New lexical handling and closure support including better
introspection for caller and outer
- PGE (Parrot Grammar Engine) provides now compilers for P6Rule,
P6Grammar, P5Regexp, and Glob
- ca. 1000 new tests including 800 for Perl5 regexp
- Improved unicode charset and encoding support
- Calling conventions for exception handlers
- Punie (Perl 1) uses TGE (Tree Grammar Engine) to convert from
PGE match objects to AST via two steps of tree transformation grammars
- New languages: amber and lua
- The usual code fixes, cleanup, and improvements, including an overhaul
of the config and test framework
New in 0.3.1
- Variable sized register frames are finished. Each subroutine gets
the amount of registers that it actually needs. No more spilling.
- Vastly improved PGE (Parrot Grammar Engine) including shift-reduce,
precedence-based expression parser and support for matching of
bracketed text delimited by e.g. ()[]{}'"
- uniccode character classification (is_upper ...)
- support for heredoc syntax in assembler
- improved examples, basic JSON support
- debian packaging support
- the usual improvements, bug fixes, and cleanup
- test count exceeds 3000
New in 0.3.0
- New calling conventions implemented: see PDD03 for details
- Merge multiple Parrot bytecode (PBC) files into a singe PBC file
- 'make smoke' target going beta
- bc now supports if statements, comparison ops, prefix inc/dec
- ParTcl adds [lassign], [switch] (partially); [expr] converted to a compiler
- Many exciting doc updates, tests, and bugfixes, too numerous to mention
New in 0.2.3
- Dynamic classes now compile on Windows (including ParTcl)
- New Super PMC allows easy access to superclass methods
- Implement C3 method resolution order (just like Perl 6 & Python)
- ParTcl has new PIR-based parser and passes more Tcl tests
- added character class support in Globs to PGE
- added language implementations of unlambda, Lazy-k
- many bugfixes, including GC and memory leaks
- the new calling scheme continued to evolve in branches/leo-ctx5
New in 0.2.2
- new call scheme: docs/pdds/pdd03_calling_conventions.pod
- partial implementation of the new calling conventions
PASM only, don't mix PIR foo() call syntax with the new scheme
- grammar and rule support in PGE - the Parrot Grammar Engine
- TCL passes >10% of the tcl test suite
- the usual bugfixes and improvements
New in 0.2.1
- better HLL support (short names for object attributes, and
.HLL and n_operators pragmas)
- string encoding and charset can now be set independently
- experimental mmap IO layer for slurping files
- distinct debug and trace flag settings
- glob support in PGE
- new character classification opcodes and interfaces
New in 0.2.0
- parrot repository is now under subversion
- MMD (Multi Method Dispatch) enhanced
- new unary and infix opcodes that return new result PMCs
- dynamic scalar PMCs inherit now almost all from Parrot core PMCs
- more unification of PMCs and ParrotObjects
- tailcalls for functions and methods
- PGE (Parrot Grammar Engine) reworked
- Pugs creates Parrot code and Pugs is a registered compiler now
- new languages/lisp
- the usual bug fixes and improvements