-
Notifications
You must be signed in to change notification settings - Fork 138
/
NEWS
965 lines (887 loc) · 35 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
# $Id$
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
New in 0.1.2
- New string handling code. Strings now have charset and encoding
- Parts of a generation garbage collector
- Better Python code, separated in dynclasses
- Parrot Grammar Engine
- Improved test coverage and documentation
New in 0.1.1
Parrot 0.1.1 is an intermediate release with tons of updates and fixes.
- Python support: Parrot runs 4/7 of the pie-thon test suite
- Better OS support: more platforms, compiler, OS functions
- Improved PIR syntax for method calls and <op>= assignment
- Dynamic loading reworked including a "make install" target
- MMD - multi method dispatch for binary vtable methods
- Library improvement and cleanup
- BigInt, Complex, *Array, Slice, Enumerate, None PMC classes
- IA64 and hppa JIT support
- Tons of fixes, improvements, new tests, and documentation updates.
A lot is unfinished and keeps changing. Nethertheless Parrot is stable
and usable at the surface, while internals are moving.
New in 0.1.0
- "Ladies and gentlemen, I give you... objects!"
- Huge documentation overhaul
- More supported platforms, s. PLATFORMS
- Basic thread support for pthread based architectures
- Basic event handling for timers and signals including:
- PASM callbacks for NCI (native C) functions.
- Improved platform configuration
- COW stacks now working, stacks code redone
- Structure handling vastly improved
- Random PMC and rand primitives
- Better subroutine call syntax in PIR
- Make PIR subroutines compliant with pdd03
- Improved profiling (DOD, GC timings)
- Hash code improvements, incl. random key order support
- Experimental freeze/thaw code for some PMC types
- IO improvements for buffered layer and Win32
- String iterators
- String bitwise vtables
- Many new opcodes
- Support for JIT, where malloced memory isn't executable
- Priority DOD scheme for objects that need timely destruction
- Improved byte code loading (e.g. onLoad functions)
- Language updates: forth, Perl 6/P6C, m4
- Libraries: Getopt_Long, SDL, Dumper, Sort
- new JAPH examples
- Unified imcc and parrot test handling
- Many new tests (make test reports 1386 tests)
- Numerous bug fixes
New in 0.0.13
- The Big Move: Parrot source and build files rearranged into sub dirs
- Build imcc as parrot
- Objects more finished
- Delegate vtable methods to byte code
- Binary multi-method dispatching
- Isa and does methods for PMCs
- Call byte code from C
- Start of extension interface
- Experimental struct handling
- Catch access to NULL PMCs
- Experimental network socket interface code and opcodes
- IO fixes and improvements
- Dynamic opcode libraries
- Fix-assigned opcode numbers
- Argument flattening for function calls
- More native call interface (NCI) signatures
- Ncurses, postgres, and pcre interface libraries
- Forth language is vastly improved
- BSD and Win32 build improvements
- Many new tests and fixes
New in 0.0.12
- This number intentionally left blank
New in 0.0.11
- Executable output
- Dynamic PMC registration
- Trial exception system
- Beginnings of object system
- Iterators
- Ordered hashes
- I/O system improvements
- References
- Documentation for basic PMC types
- IMCC support of Parrot Calling Conventions
- Runtime loading of chartypes (and other string improvements)
- Conditional breakpoints
- Dramatically accelerated sweeps for finalizable objects
- Small PMCs (PMCs split into core and extensions)
- Loadable bytecode packfiles
- Constant PMCs
- Sub variants that deal with the stack correctly
- Switched runops core
- Line numbers in warnings
- Environment access
- Many documentation cleanups
- Conversion to CPS style!
- BASIC debugger and many other wacky features
- Filename, line number parsing support in IMCC
New in 0.0.10
- IMCC integration
- eval
- some more benchmarking
- cgp core
- optimized math ops
- intersegment branches
- more complete use of PObjs
- beefed up packfiles
- sub/continuation/coroutine fixes
- better NCI (native calling interface)
- many imcc improvements
- jako improvements
New in 0.0.9
- Native function calling interface (Dan)
- Stack/list aggregate rewrite (Leo)
- Scratchpads (Jonathan Sillito)
- Preliminary DotGNU support -- type conversion ops (Gopal V + Leo)
- Buffer/PMC unification (Leo)
- stabs debugging support for JIT (Leo)
- Jako overhaul (Gregor)
- Optional Lea allocator (Leo)
- Parrot sprintf (Brent)
- Miniparrot (Josh)
- PMC Properties (Dan)
- Various JIT improvements (D. Grunblatt + Leo)
- Extensible packfiles (Juergen)
- Restructured PMC hierarchy (Leo)
- Real Scheme (Juergen)
New in 0.0.8
- Several new grammars and a BNF -> perl5 and perl6 converter (Jeff)
- Working Perl 6 REs (Sean)
- Keyed Access (Tom Hughes et al)
- New PMCs (Alberto et al)
- Better Documentation
- New COW semantics
- GC acceleration (Mike Lambert)
- Lexical scope (Jonathan Sillito)
- IMCC patches
- JIT for the ARM
New in 0.0.7
- Perl 6 Grammar and Compiler (Sean)
- Subroutines, coroutines, and continuations (Melvin)
- GC improvements (Peter Gibbs, Mike Lambert)
- Global variables (Melvin)
- Intermediate bytecode compiler (Melvin, Angel)
- And much, much more.
New in 0.0.6
- New assembler that support keyed types (Jeff)
- New macro layer, allowing constants (Jeff)
- New Configure.pl (Brent)
- Changes to bytecode format, endian issues resolved (Melvin)
- GC improvements and bug fixes (Peter Gibbs, Mike Lambert)
- JIT compiler rewrite (Jason and Daniel)
- Parrot assembler in Parrot (Daniel)
- Parrot debugger (Daniel)
- BASIC polished, Eliza.bas is new (Clint)
- Cola compiler committed and working, with limited OOP (Melvin)
- Keyed aggregates (Steve Fink)
- Global ops (Melvin)
- Compile-time speedup (Melvin)
- Much documentation
- New PDDs (Dan)
- Contributed tetris and lzw files
- And many more, from the cast of thousands
New in 0.0.5
- Full GC
- Perl Scalar support in PMCs
- Array and Hash types almost ready for prime-time
- Internal support for keyed types
- EMACS editing mode
- New PDDs
- New Language - BASIC
- Regular expression compiler
- More tests
- Many, many bug fixes, enhancements, and speedups
New in 0.0.4
- Arena-based memory allocation system
- Copying GC
- New IO subsystem
- "Predereferencing" mode - ./parrot -P - 22% speedup
- JIT compiler - ./parrot -j
- Parrot now builds warnings-clean on many platforms
- Many more PMC methods implemented
- Regular expression operations
- Added a FAQ
- Basic support for embedding Parrot in other programs
- Warnings support
- Added PDDs to distribution
- Bignum library
- PMC inheritance
- Added an assembly optimizer
- Improved string encoding/type support
- Many more tests
- Source reformatting
- Major refactoring in packfile library
- More Miniperl functionality
- New PMC "clone" operator
- Beginnings of key-based access to PMCs - arrays and hashes
- MOPS comparisons in examples/mops/
New in 0.0.3
- PMCs!
- Perl base scalar types implemented
- A new minilanguage, Scheme
- Much improved documentation
- Register stacks pushing and popping
- User stack pushing, popping and rotating
- Jako updates: subroutines, more example programs, optimizations
- test_prog renamed to 'parrot'
- Added features to the assembler: @ for current location, and global
labels
- Build tweaks for VMS
- Bytecode typing clean-ups
- More platforms: OS X, HPUX, OS/2
- The proliferation of runops cores reduced to one fast and one slow one
- Opcode tracing, bounds checking, profiling
- Vastly improved string support, with separation of encoding and
charset
- Lots more tests
- Multiple interpreter creation support - the beginnings of threading
- Much better resource handling - the beginnings of GC
New in 0.0.2
- Parrot now works on all core platforms
- A large number of tests, in the standard Perl testing framework
- A new minilanguage (Jako) which compiles to Parrot assembly
- Documentation about the assembly language (docs/parrot_assembly.pod)
- Separate modules for assembly (Parrot::Assemble) and bytecode
manipulation (Parrot::PackFile::*, packfile.c)
- Assembler completely rewritten
- Better operand-type guessing in the assembler
- Assembler support for '\n' etc. in string constants
- Code reformatted to match the coding standards
- New ops for register-constant INTEGER comparisons
- Macro expansion in the assembler
- IVs and NVs renamed to more friendly INTVAL and NUMVAL
- Hard-coded pack("") formats removed
- Better handling of floating-point numbers in assembler
- Moved floats to constant table (fixing many alignment issues)