-
-
Notifications
You must be signed in to change notification settings - Fork 373
/
ChangeLog
1153 lines (1089 loc) Β· 50.7 KB
/
ChangeLog
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
New in 2014.01
+ Use .narrow on Numeric to coerce to narrowest Type possible
+ Can now supply blocks with multiple arguments as sequence endpoints
+ <prior> rule no longer exists
+ The eval sub and method are now spelled EVAL
+ Method calls and hash/list access on Nil give Nil
+ No longer need to separate adverbs with comma in argument lists
+ div on parrot will now always round towards -Inf
+ Added support for MoarVM; passes >99% of the spectests that Rakudo JVM does
+ Fixed gather/take stack overflow bug in JVM backend
+ Fixed closure in regex bug on JVM
+ Fixed some line number reporting bugs on JVM
+ Optimized Enum($value) coercion
+ Regexes: Aliased assertions now properly create sub-captures
+ Regexes: Improved detection/reporting of null patterns
+ Implemented IO::Async::File.spurt (JVM only)
+ Implemented Setty.kv and Baggy.kv
+ Use a global ByteClassLoader rather than one per class. (JVM only)
+ Implement more parts of NativeCall for the JVM
New in 2013.12
+ The Whatever Star now works inside chain operators like comparisons
+ Private attributes from roles are now visible in the classes they apply to
+ Use invokedynamic in some places on the JVM.
+ Memory improvements in ListIter
+ Faster method List.combinations
+ Simple lookahead assertions in regexes are optimized
+ Regexes do less superfluous scanning
New in 2013.11
+ Many concurrency primitives harmonized with new S17, but still pretty fluid
+ Refactored build system that allows building rakudo on both backends in the same place
+ Order::Increase/Decrease are deprecated. Please use Order::Less/More.
+ Leading whitespace is ignored for :sigspace
+ Better null pattern detection in regexes
+ The "gethostname" function implemented
+ Warn when private attributes are a marked rw or readonly
+ "is DEPRECATED" trait now produces report when process finished
+ Parcel.rotate implemented
+ Performance optimization: unfold junctions in 'when' clauses
+ capitalize/.capitalize have been removed, as per docs/deprecations
+ improved run()/shell(), these return Proc::Status-objects now
+ The ... range operator can now be chained: 1,2,3 ... 10,15,20 ... 100
+ various other bug fixes, optimisations and additional tests
New in 2013.10
+ postcircumfix {} and [] are now implemented as multi subs rather than multi methods. This should allow for better optimization in the future.
+ Add support for "is DEPRECATED", making it easy for early adopters to stay current.
+ Track multiple spec changes for various container classes.
+ Greatly reduce object creation during Regex parsing.
+ Various portability fixes.
+ qx// and run() now auto-quote correctly
+ Allow #`[...]-style comments in regexes
+ unlink() behaves like P5's, it deletes write-protected files on windows
New in 2013.09
+ candidate argument to bless removed (per spec change)
+ @a.VAR.name and %h.VAR.name implemented
+ The $var.++ and $var.() syntaxes work
+ Lots of improvements on the Set and Bag types
+ [op]() with relational operators vacuously return True
+ tr/// implemented
+ Sockets on JVM implemented
+ sleep(), sleep-time() and sleep-till() updated to spec
New in 2013.08
+ "is default" traits on variables, $/, $!, $_ are default Nil
+ "is dynamic" traits on variables, $/, $!, $_ are dynamic
+ "of TypeObject" trait on variables
+ .VAR.default/dynamic/of return the state of these traits
+ Assigning Nil, calling undefine() restores the default value
+ .WHAT more accurately returns a type object for specifically typed cases
+ Option --gen-nqp for ConfigureJVM.pl
+ Include file name in parser errors
+ Parse labels, tr/// (both don't do anything useful under the hood yet)
+ CALLER::<$var> now only works on dynamic variables, as per spec.
+ Improvements to Threads, including Channel and KeyReducer (JVM only)
+ Asynchronous file reading (JVM only)
+ Improved JVM interop, including 'use :from<java>' (JVM only)
+ Fixed subroutine inlining on JVM
+ Fixed %*CUSTOM_LIB on JVM
* Fixed sink context handling on JVM
+ Reimplementation of Buf as a role
+ Implemented Blob role
+ Implemented sized/encoded Buf/Blob types (buf8, blob8, utf8, etc.)
+ Str.encode now returns most specific appropriate type
+ "once" phaser fully implemented
+ Named parameters "with" and "as" on uniq/squish
+ "samewith()" for calling method on same dispatcher again
+ "will" variable trait partially implemented ($_ not set yet)
+ Interpolating strings into heredocs now dedents properly
+ Solved a slowdown when declaring custom operators
+ Improved P5-regexes (backslash sequences, code blocks)
+ Make type objects appear as Nil in non-scalar contexts
+ Placeholder variables $^A .. $^Z no longer allowed, as per spec
+ printf %d now supports bigints also on Parrot
+ my and our scoped methods no longer go into the method table
+ Implemented keybag(), KeyBag.push, KeyBag.categorize
+ Re-implemented hash iteration for a performance win
+ Various optimizations, code cleanups and error message enhancements
New in 2013.07
+ Huge progress in JVM backend (feature-wise almost on par with Parrot)
+ List.first is now lazy
+ unspace before argument lists is now supported
+ fixed handling of indented heredocs
+ basic support for threads and promises (JVM only)
+ improved sprintf and other formatting routines
+ keyof method for typed hashes to get key type
+ Hash.perl nows works for typed hashes
+ 'is parcel' and 'is default' traits (work in progress)
+ Parcel.new now works
+ slight optimization to join of many items
+ implemented canonpath for Win32 IO::Spec
+ implemented squish
+ made []:(kv|p|k|v) work according to spec
+ properly parse Pod formatting codes with brackets other than <...>
+ the POD_TO_TEXT_ANSI environment variable now leads to some formatting
being applied by Pod::To::Text
+ declaration of multiple operators in a scope now generates much smaller
serialized output
+ Int.round method now takes a scale argument
+ implemented Complex.ceiling, Complex.floor, Complex.round
New in 2013.06
+ JVM backend added - passes initial sanity tests
+ type captures in signature binder implemented
+ IO::Spec::Unix.canonpath made more efficient
+ IO::Handle methods gist, perl, path added
+ Int.msb and Int.lsb implemented
+ dir() is now lazy
+ lines($limit) now doesn't read an extra line
+ .^mro methods added to a few role metaclasses
+ $/ and $! now visible in eval/REPL
+ IO::Handle.copy moved to IO::Path.copy
+ .{} adverb combinations all implemented
+ :$<foo> colonpair syntax implemented
+ 'my &foo; multi foo() { }' gives better error message
+ reduce() more aware of fiddliness
+ &first now returns Nil instead of failing
+ $*CWD and $*TMPDIR now contain IO::Path objects
+ REPL bug fixed when same line issued twice
+ pick/pop/push/roll/reverse/rotate/sort/classify/categorize
now fail immediately if the list is infinite
+ categorize now returns a Hash, not a Parcel of Pairs
+ "undef" warning now refers to Any, not Mu
+ improved error messages for hash shapes
+ Hash.(classify|categorize) implemented
+ IO::Path.chmod implemented
+ IO::Path.succ and .pred implemented
+ syntax parser now allows a dot before hyper postfix
+ Str.succ added for codepoints \x2581..\x2588
+ Cool.path implemented
+ sequences between 1-codepoint strings implemented
+ div and / fail with X::Numeric::DivisionByZero (rather than dying)
+ doing .perl on Rat with denominator 0 doesn't go into an infinite loop anymore
+ Capture.exists implemented
New in 2013.05
+ IO::Spec, a port of Perl 5's File::Spec
+ support for exporting things form EXPORT subroutine
+ ?-quantifier in regexes doesn't create arrays in the Match object anymore
+ speedup of repeated shifts of large lists and arrays by 70%+
+ implemented Cool.lines
+ renamed IO to IO::Handle; IO is now a tag role, as per spec
+ simplify timezone handling
+ .Set and .Bag methods for List and Parcel
+ regex special characters can be used as delimiters
+ allow slice with :exists adverb on hashes β¦
+ .hash now accepts optional :type and :of named parameters
+ Make :exists and :delete up to spec β¦
+ fix for autoviv Typed hash problem
+ constant-fold infix:<~>
+ make decl and init of our-scoped arrays/hashes work
+ fix regex interpolation slowdown
+ fix exporting of subroutines
+ fix slurpy is-rw array-parameters
+ failed regex matches return Nil
+ add support for IO::Path::<os subclasses>
+ fix reporting of errors in gather/take.
+ added 125 extra opening/closing bracket-pairs
+ fix build failure on SPARC and PowerPC
+ underlying nqp layer supports parrot and JVM as backend, in preparation
for JVM support in a future Rakudo release
> more than 100 not listed changes
New in 2013.04
+ add Capture.Bool()
+ optimize getting size of numeric Range
+ for loops are eager again
+ improvements to DUMP()
+ wrap NQP objects in ForeignCode, allowing perl6 OO calls on them
+ improve some messages on parsefail.
+ add link and symlink to IO
+ reduce compile-time autothreading to avoid issues with !==
+ improve optimizer - caching, constants
+ fix List.ACCEPTS() for Whatever special case
+ bring 'require' closer to spec, esp. by taking paths
+ bring 'IO::Path' closer to spec
+ remove parrot dynops already provided as nqp ops
+ translate a dynop to nqp code
+ update from pir:: calls to nqp::
New in 2013.03
+ Type names now gist as (Any) rather than Any()
+ Warn when pure expressions are used in sink context
+ Cool.substr(...) now correctly accepts whatever-star closures
+ Fix character class subtraction bugs
+ Correctly detect undeclared variables in regex assertions
+ :i now respected in character classes
+ Improved output of Rat.perl
+ Implemented shellwords postcircumfix (%h<< $x 'foo bar' >>)
+ User-defined circumfixes now parse a semilist rather than just an expression
and handle whitespace correctly
+ Forbid null operators
+ Warn about leading 0 not indicating octal in Perl 6
+ Fix some automatic end of statement on "}" parse bugs
+ Better error message on for(...) {} being interpreted as a function call
+ Array interpolations now properly do LTM
+ Respect :i in constructs like /:i <$var>/
+ Autothread "none" and "all" junctions before "any" and "one"
+ Helpful error if you write "else if"/"elif" instead of "elsif"
+ Throw exception if a Range is used as a Range endpoint
+ Corrected argument order in IO.seek
+ Multi-dispatch now mostly implemented in NQP, not C
+ Fixed LEAVE (and thus UNDO/KEEP/temp) not firing in multis or upon 'next'
in a for loop
New in 2013.02
+ "Did you mean ..." suggestions for symbol-not-found errors
+ Compile-time optimization of some cases of junctions in boolean context
+ Date and DateTime now support a .delta method
+ IO::Socket.get now works again with non-Unicode characters
+ $() now takes $/.ast into account
+ proper return value for smartmatching against a substitution
+ better error reporting when a parent class does not exist
+ constant folding for routines marked as 'is pure'
+ natively typed variables now work in the REPL
+ better error reporting in the REPL
+ writable $_ in -p and -e one-liner
+ speed up eqv-comparison of Bufs
+ warnings for useless use of (some) literals, variables and constant
expressions in sink context
+ /../ and rx/.../ literals match against $_ in sink context
+ array variable interpolation into regexes
New in 2013.01
+ sink context; for-loops are now lazy by default
+ first mentioning a variable from outer scope and then redeclaring it
in the same scope (my $a; { $a; my $a }) is now an error.
+ the long-deprecated "SAFE" setting has been removed
+ 'require' now works with indirect module names
+ restored socket read semantics to returning the requested number of bytes
+ $obj.Some::Role::meth() now passes the correct $obj
+ try/CATCH now returns Nil when the CATCH is triggered, rather than the
exception; this brings it in line with try without a CATCH
+ whatever-star cases of splice now implemented
+ sequences with Junction endpoints now work
+ corrected precedence of various set operators
+ fixed binding of non-Any things into hashes and arrays
+ can now import multis with the same name from different modules,
provided all dispatchers are onlystar
New in 2012.12
+ ~/.perl6/lib is gone from the default include path
+ fixed indent method's handling of empty lines
+ fixed .indent(*)
+ parse errors now formatted like in STD, with color
+ location of parse error now indicated with context
+ highwater algorithm implemented, greatly improving accuracy of parse error
line numbers and locations in a range of cases
+ some parse errors now report what the parser was looking for at the time the
parse failed
+ better errors for unmatched closing brackets and two terms in a row
+ uniq now has === semantics as specified, not eq semantics
+ junction auto-threader optimized and is an order of magnitude faster
+ implemented sub term:<foo>
+ implemented texas versions of the Set and Bag operators
+ good error for use of . to concatenate strings
+ flattening large lists of Parcels now happens in about half the time
+ adopted STD panic/sorry/worry model, meaning that we now keep parsing
further and can report multiple issues in a range of cases
+ we now catch and complain about post-declared type names
+ variable redeclarations are now just a warning, not an error
+ a mention of an &foo that is never defined is now an error
+ fixed .perl output for a Pair with a Pair key
+ interpolation of undeclared arrays, hashes and functions now detected
+ { a => $_ } now correctly considered a block, not a hash as before
New in 2012.11
+ user-defined operators only affect the parser in the scope they are declared in
+ fixed pre-compilation of modules containing user-defined operators
+ implemented precedence related traits (equiv, looser, tighter, assoc)
+ Perl 6 grammar NFAs are pre-computed, saving some work on each invocation; this
shaved around 10% off the time needed to run the spectests
+ redeclaring a class as a role now gives a better error
+ the < foo bar > syntax in regexes now respects :i
+ << ... >> now interpolates, respecting quoting and pairs
+ fix error reporting for not-found dynamic variables
+ many protos now have much narrower signatures
+ quote parsing implementation aligned with the approach STD uses
+ regexes and quotes have better support for user-selected delimiters
+ quote adverbs
+ heredocs
+ carry out IO::Path.dir deprecation
+ implement infix:<andthen>
+ macro arguments now carry their lexical environment properly
+ postfix operators of the form '.FOO' take precedence over method calls
+ version control markers detected and gracefully complained over
+ INIT phasers now work as r-values
+ our ($x, $y) style declarations fixed
+ take and take-rw now evaluate to the taken value
+ implemented cando method on Routine
+ FIRST/NEXT/LAST can now be used in all types of loop (previously limited to for)
+ implemented operator adverbs
+ implemented :exists and :delete subscript adverbs and on hashes
+ implemented :p, :k, :v and :kv subscript adverbs on arrays and hashes
+ fixed shell words post-processing like << foo "bar $baz" >>
+ byte-order mark at the beginning of a file is now ignored
+ fixed bug that could lead to disappearing symbols when loading pre-compiled modules
+ Configure no longer passes --optimize to Parrot if --parrot-option is specified
+ deprecated current &foo semantics
+ fixed #`foo and friends at start of statementlist
+ simplify setting line number of compile-time exceptions
+ made :($a, $b) := \(1, 2) update $a and $b
New in 2012.10
+ :60[24, 59, 59] radix form
+ delegation to methods using the handles trait
+ fixed serialization of Buf
+ improved handling of :P5 regexes (more features, less bugs)
+ determining that an object lacks a method is usually now much faster
+ reduced memory usage of Match objects and optimized their construction a little
+ some code-generation improvements related to void context
+ implemented :dba('...') modifier in regexes
+ various error messages improved through use of :dba('...') in the Perl 6 grammar
+ implemented 'x' in pack
+ added $*CUSTOM-LIB
+ eval in a method can now see self, attributes and $?PACKAGE
+ each REPL line no longer implies a fresh GLOBAL
+ fixed some Pod parsing issues with Windows newlines
+ fixed interaction of :i and LTM (alternations and protoregexes now respect it)
+ import of custom meta-objects only affects the scope they are imported into
+ made <-> lambdas work
+ can now parse nested pairs of quote delimeters, like q{ foo q{ bar } baz }
New in 2012.09.1
+ is-prime and expmod
+ smart matching against Signature literals
+ binding to signatures in declarators
+ the is hidden and base traits
+ ability to set encoding on sockets temporarily removed (reverts to 2012.08 behavior)
New in 2012.09
+ class Iterable does not inherit from class Cool anymore
+ basic macro unquoting
+ basic support for m:P5/.../ regexes
+ support for indirect type names in routine and type declarations
+ compiler now built with QAST-based NQP, which generates better code, thus
making the compiler a little faster
+ support for "is export" traits on constants
+ implemented Str.wordcase
+ can now write more complex proto subs and methods, using {*} to enter the
dispatcher
+ tie-breaking with constraints now picks the first matching one rather than
demanding they be mutually exclusive
New in 2012.08
+ tclc implemented
+ --> ReturnType in signatures and prefix type constraints of routine return
types are honored
+ reduced memory usage at build time by around 35% - 40%
+ the argument to IO::Socket.recv is now interpreted as a number of characters
+ enum lists and arguments to parametric roles are now evaluated at compile time
+ switched to new internal AST and backend representations (QAST and PIRT)
+ removed deprecated routines Str.bytes and Str.lcfirst/&lcfirst
+ errors from traits now contain file name and line number
+ IO::File and IO::Dir have been removed
+ inliner has been improved and can inline a wider range of routines
+ simple implementation of the 'soft' pragma
+ fixed over-eager treatment of numeric literals as int rather than Int in cases
where they appeared each side of an infix operator
+ detect circularities in module loading
+ sigilless variables in signatures when proeceed by | or \
+ prevented blocks that declare variables turning into hash constructors
+ made pre-compilation complain if dependencies are not pre-compiled yet
+ fixed interpolation of double-quoted strings in regexes
+ fixed issue with Num.new not being friendly to subclassing
+ implemented handling of complex numbers in Str.Numeric
New in 2012.07
+ Deprecated SAFE.setting in favor of RESTRICTED.setting
+ Ranges can now interpolate in argument lists
+ The built-in meta-objects (such as Metamodel::ClassHOW) now inherit from Any
+ &open now supports :enc/:encoding
+ Exception.fail, .resumable and .resume
+ Changed &dir to return IO::Path objects, not strings
+ Deprecated .bytes, .ucfirst, and .lcfirst
+ &slurp now supports :bin
+ &spurt implemented
+ cleaned up Version implementation
+ fixed :s file test
+ recognize obosolete rand() and rand(N) forms at compile time
+ anonymous subset types 'subset :: of Int where { $_ > 0 }'
New in 2012.06
+ Rakudo is now compiled with the same regex engine as user-space regexes use
+ transitive longest-token matching in protoregexes
+ changed the output of Match.gist
+ string to number conversion now fails for non-numbers
+ string to number conversion now recognizes radix notation
+ string incrementation is now aware of more scripts
+ <|w> word boundary in regexes implemented
+ more errors from within the meta model now contain line number and file name
+ &push and &unshift functions can now autovivify
+ user-defined operators properly participate in LTM
+ Rakudo's C code is now compiled with optimization switches turned on
+ basic module loading tracing with the RAKUDO_MODULE_DEBUG=1 env variable
+ longest token matching with alternations
+ require with argument list
+ compile time errors in loaded modules now show a module loading backtrace
+ improved list and .map handling
+ can now use | to flatten a pair into an argument list as a named argument
New in 2012.05
+ meta ops //=, ||= and &&= now short-circuit properly
+ Failure objects don't blow up the REPL anymore
+ allow case insensitive regex matches without ICU in limited cases
+ %*ENV now propagates into subprocesses
+ RAKUDOLIB env variable supported in addition to PERL6LIB
+ -I and -M command line options
+ $?LINE and $?FILE variables
+ warnings now include line number from program, not from CORE.setting
+ reduction meta-operator on list-associative ops now has correct semantics
+ now have :th alias for :nth in Str.match
+ import collisions now report the name of the module that is to blame
+ ms// fixed
+ <$x> in regexes caches the compiled regex, which can be a big performance win
+ implemented temp and let
+ 'use' can now import by tag name
+ 'use' with positional arguments
+ lib.pm
+ updated calling conventions for traits
+ implemented fff flip-flop operator; improvements to ff form also
+ removed current directory from default library search path
+ 'import' works
+ symbols installed in EXPORT in all nested packages, not just UNIT::EXPORT
+ enumeration types can be used as roles
+ END phasers now run when program ends with exit or an exception
+ fix Rat.floor and .ceiling to work for large numbers
+ improved Rat stringification
+ Real is now a role, as it should be
+ implemented < foo bar baz > syntax for alternations in regexes
+ implemented <( and )> syntax for setting from/to of match in regexes
+ support for non-Int enums
+ basic support for Version literals
+ chmod now available as a function
+ roundrobin implemented
+ fixed a bug in precompilation of modules that use roles from other modules
+ basic implementation of pack and unpack
+ implemented substr-rw, which provides an l-value (assignable) substring
+ implemented <~~> (recursive call into self) syntax in regexes
+ 'LAZY' statement prefix
New in 2012.04.1
+ autvivification for arrays and hashes
+ more robust module precompilation
+ improved infrastructure for calling C code
+ $.foo style calls now contextualize correctly
+ &infix:<cmp> now return members of the Order enum in all cases
+ --doc=format now loads Pod::To::format and uses it for rendering
+ 'lib/' is no longer in the default include path
+ improved Parameter.perl
+ add .changed, .modified and .accessed methods to IO
+ improved --help output
+ install precompiled test module for speedup
+ fixed printing of backtraces when regexes are in the call chain
+ case insensitive regex matches now also work for interpolated variables
New in 2012.04
+ 'defined' is now a listop instead of a prefix op
+ fixed :16('0d...')
+ implemented simple interpolation in names in type declarations (class ::(const) { })
+ $=POD renamed to $=pod
+ fixed slicing of non-lists with infinite ranges
+ fixed accidental over-serialization, cutting ~300KB off each pre-compiled module
+ scalar positionals no longer treated as slices
+ implemented Routine.package
+ join will now always reify at least 4 elements of a list if possible
+ warnings now have line numbers
+ brought back Str.indent
+ ban declaring pseudo-packages, with a helpful error
+ a name followed by :: now returns .WHO, so Foo::<&bar> style lookups work
+ Exception.Bool now returns true
+ avoided re-parsing of longname, which speeds up the parse a bit overall
+ implemented MY, CALLER, OUTER, UNIT, CORE, SETTING and DYNAMIC pseudo-packages
+ implemented ::<$x> and ::{'$x'} style lookups
+ some small optimizations to various Str built-ins and MapIter
+ improved --doc output
+ added $*PERL
+ implemented IO::ArgFiles.slurp
New in 2012.03
+ updated to dyncall 0.7
+ infix:<eqv> now autothreads over junctions
+ more typed exceptions
+ pre-compiled modules/settings are now serialized, not re-built on load
+ startup time is now about 25% of what it once was
+ significant memory and time reduction (~40%) when pre-compiling modules/settings
+ BEGIN and CHECK now work in r-value context
+ constant declarator now works with non-literals on the RHS
+ implemented Set, Bag, KeySet and KeyBag types
+ implemented :exhaustive and :nth match adverbs
+ implemented ENTER, LEAVE, KEEP and UNDO phasers
+ implemented FIRST, NEXT and LAST phasers in for loops
+ implemented START phaser, including use of it in r-value context
+ implemented also syntax for adding traits inside a block/package
+ implemented macro declarations and quasi quotes (sans placeholders)
+ implemented anonymous enums
+ 'our multi' now dies (used to ignore the 'our')
+ implemented PRE and POST phasers
+ ~25% performance improvement to array indexing
New in 2012.02
+ catch duplicate accessor generation required of "has $.x; has @.x;"
+ many more typed exceptions thrown
+ undeclared attributes mentioned in signatures now caught at compile time
+ empty Buf is now False in boolean context
+ implemented <prior>
+ implemented /<Foo::Bar::baz>/ syntax
+ /<x>/ can call a predeclared lexical regex x
+ conjugate is now called conj
+ enumeration values .gist to just the key, not the full name
+ <!> in regexes fixed
+ implemented Match.make(...) method
+ better error reporting for improper use of nextsame and friends
+ initializers now parsed as part of a variable declarator
+ trailing whitespace now removed from Pod declarator blocks
+ List.tree made more useful
+ implemented rename and copy functions
+ ().pick and ().roll now return Nil
+ default MAIN usage message includes .WHY of the candidates
+ X::Base eliminated in favor of Exception
+ various range iteration fixes; Num ranges now produce Num lists
+ LHS of the xx operator is now thunked
+ can now declare state/constant/our in regexes (before, only :my worked)
+ improved backtraces
+ catch constructs that require an invocant but don't have one
+ catch uses of virtual method calls in submethods and attribute initializers
+ improved parsing and performance of reduction meta operators
+ Rat arithmetic now properly defaults to Num if the denominator is too big
+ FatRat implemented
+ implemented long forms of regex adverbs (e.g. "ignorecase" maps to "i")
+ fixed "but True" and "but False"
+ object hashes, with the my %h{SomeObjectType} syntax
+ implemented Int($x) style coercions
+ implemented Capture.perl
New in 2012.01
+ -c command line option re-implemented
+ take flattening bug fixed
+ duplicate named parameter names detected
+ fixed clone being too shallow with regard to containers
+ fixed negative modulo for bigint
+ better Routine.perl
+ .DEFINITE macro implemented
+ .^methods, .^attributes and .^parents now support :excl (the new default) and :all
+ Array.delete implemented
+ restored basic -n and -p functionality
+ improved parameter introspection
+ fixed operations on bigints when the first operand had been mixed in to
+ fixed multi-dispatch narrowness calculation for native types
+ binding to array and hash elements
+ added Order enumeration, and updated cmp and <=> to use it
+ adding various missing magicals, such as &?ROUTINE and ::?ROLE
+ accessor generation for my $.x and our $.x cases
+ fixed @x>>.() (hyper-invocation)
+ updated Complex.Str to match current spec
+ fixed eval to see GLOBAL properly
+ implemented 0 but Answer(42) style mix-ins
+ fixed various issues in scoping/handling of $/
+ fixed usage of make in a regex (previously, only worked in action methods)
+ optimized Range.roll and Range.pick for large ranges
+ fixed non-numeric, no-Str ranges
+ fixed build on Cygwin
+ fixed regex backtracking into subrules and captures
New in 2011.12
+ improved protoregex support, including NFA caching
+ <before ...> and <after ...> (lookahead and lookbehind)
+ backslash sequences in character classes
+ fixed quantified captures and :r interaction bug
+ optimized match object construction, ListIter, substr and chomp
+ improved performance of send/get on sockets
+ optimizer detects missing private methods and simplifies calls (level 3 only)
+ fixed some issues when an array was assigned to itself, maybe using .=
+ implemented .wrap and .unwrap, plus wrap handles with a .restore method
+ implemented .trans on strings
+ unicode properties can be matched against in regexes
+ binding to @, % and & sigils now checks for the appropriate role
+ assignments to variables declared with the & sigil now checked for Callable
+ typed hashes, partial support for typed arrays
+ some parametric role fixes
+ can now use but operator with a type object
+ smartmatching of regexes against arrays and hashes
+ socket IO now implements .write and custom input line separators
+ implemented getc
+ implemented .WALK
+ implemented ff, ^ff, ff^ and ^ff^
+ implemented .REPR macro
+ implemented Proxy class
+ some typed errors are now thrown from within the compiler
+ stubbed methods from roles now require those methods to be implemented
+ updated docs/ROADMAP
+ .WHICH now returns ObjAt objects
+ defining new operators
New in 2011.11
+ CATCH blocks are now much closer to spec
+ big integer support
+ basic protoregex support with NFA-driven LTM for some declarative constructs
+ correct default values for natively typed variables
+ fixed initialization of state variables
+ improved support for natively typed variables
+ catch more uses of undeclared variables
+ splice() is now implemented
+ uniq() is now implemented
+ several runtime errors now throw properly typed error objects
+ various performance improvements, for example to the X meta op and Str.succ
+ improved support for MAIN argument parsing
+ fixed lexicals/recursion bug
+ IO.copy is now implemented
New in 2011.10
+ operators and functions with native type arguments
+ detection of call to undefined routines at CHECK time
+ various optimizations: inlining of operators, CHECK time dispatch decisions
+ performance improvements of MapIter
+ support @$foo style derefencing/coercion
+ Exception.backtrace
+ eval() has stopped to catch exceptions
New in 2011.09
+ Rewritten meta object protocol and object storage
+ many speedups
+ Int, Num and Str are now far more lightweight
+ much more robust handling of infinite list
+ basic LoL (List of Lists) support
+ :U and :D type modifiers
+ protos and multis now conform to the new spec
+ improved enum support
+ basic 'constant' declarator
+ .WHAT and friends as macros
+ chrs sub and method
+ support for .gist
+ run() has been renamed to shell() to conform to current spec
+ hyper methods now descend into nested data structures
+ basic safe mode (through --seting=SAFE)
+ recording and reporting of test timings (tools/test_summary.pl)
+ Pod parsing and --pod=text option
+ basic support for .WHY
+ greatly improved BEGIN-time support
+ traits applied at BEGIN time for packages, routines and attributes
+ parametric roles reify types properly, fixing many bugs
+ better handling of type variables
+ support $?CLASS, which is generic in roles
+ support import/export of custom meta-objects for built in package declarators
+ custom meta-objects can override method dispatch
+ faster, allocation-free multi-dispatch cache
+ a custom BUILD does not suppress default values
+ undeclared attributes detected and reported at compile time
+ basic support for native int/num types on lexical variables
+ int/num as attributes are stored compactly in the object body
New in 2011.07
+ fractional powers of negative numbers now result in Complex numbers
+ obtain spectests from a specific branch of the `roast' repo
+ fix bug that prevented build on systems with little RAM
New in 2011.06
+ added take-rw built-in
+ numerous build system improvements
+ assignment now evaluates arguments right-to-left
New in 2011.05 release
+ added a call counter for builtins in Perl 6-level subroutines
+ gcd (greatest common divisor) and lcm (largest common multiple) operators
+ build system improvements
+ added --ignore-parrot-rev option to Configure.pl
+ Configure.pl now creates "config.status" file
+ fixed relational operators when used with NaN
+ implemented Int.base
+ speedup smart-matching against numbers and Str.comb with default arguments
+ added RAKUDO_SUBLOG environment var for tracking subroutine calls
+ overall performance speedups
New in 2011.04 release
+ implemented Str.indent
+ A new, much simpler API and implemention of IO::Socket::INET
+ Unified error messages to use "Cannot"
New in 2011.03 release
+ improved error message on type check failure in assignment
+ -n and -p command line options
+ Test.pm's skip() now has argument ordering consistent with todo()
+ implemented complex conjugation
+ more IO methods related to stat
New in 2011.02 release
+ IPv6 support
+ more robust numeric exponentation
+ --ll-backtrace command line option for PIR level stack traces
+ future-proof for upcoming generational garbage collector in parrot
+ various constructs now return Nil
+ infix:<orelse> implemented
+ infix:<^^> and infix:<xor> improved
+ negation metaoperator is now restricted to operators that return Bool
New in 2011.01 release
+ faster subroutine calls (type cache)
+ 'handles RoleName' now works
+ Test.pm: s/done_testing/done/
+ non-spec debugging pragma Devel::Trace
+ improved parsing of keyword boundaries
+ sped up .comb
New in 2010.12 release
+ new .trans algorithm
+ fixed $*PID on MacOS X
+ don't register names of anon types
+ configuration improvements
+ updated Any functions
+ fix $*IN_DECL leakage
+ implemented Hash.hash
+ Temporal updates
+ Buf.decode fixed
+ open() fixed for binary flag
New in 2010.11 release
+ now works with parrot on git
+ implemented qw//
+ 5x speedup of .trans
+ various improvements to Set
+ don't use deprecated charset ops anymore
+ Bool.Bool and Bool.so now return False
+ implemented &elems
+ improved error for Date.new(Str)
+ improvement on hyperoperators
+ indexings like .[0 .. *-1] work now
New in 2010.10 release
+ True and False now stringify according to the specification
+ basic form of 'require' for run time module loading
+ warnings from the setting now produce line numbers in the users' program
+ local time zone available as $*TZ
+ more consistent line numbers from warnings
+ getting and setting attributes via introspection
+ implement samespace, ms// and ss///
+ hyper operator invoving = can now modify their arguments
+ speed up Str.flip by over a factor of 100
New in 2010.09 release
+ new methods on IO concerning the modify and access time of files
+ S32::Temporal now completely implemented
+ Instants and Durations
+ speedup for slurp() and .reverse built-ins
+ various improvements to the Set type
+ revamp of series operator code, and adaption to new spec
+ implement ...^ up-to-but-excluding-series operator
+ allow :r and :ratchet modifiers on regex quoting constructs
+ Bool.pick
+ significantly improved enum implementation
New in 2010.08 release
+ syntactic adverbs on substitutions, rx quotes and m//, e.g. '$x ~~ s:2nd/a/b/'
+ updated ROADMAP
+ speedups for integer operations
+ the Match class's .perl method now produces useful, roundtrippable Perl code
+ the MAIN subroutine can now parse short arguments
+ the cmp and <=> operators now work on more numeric types
+ the Buf class now has .pack and .unpack methods with partial functionality
+ numeric bitshift operators now have the correct precedence
+ smartmatch against True or False is now an error
New in 2010.07 release
+ support for delegation via 'handles'
+ implemented binding with := and read-only binding with ::=
+ implement OS related built-ins like mkdir, cwd
+ improved diagnostics in Test.pm
+ basic binary IO, buffer encoding and decoding
+ magic $*ARGFILE file handle
+ more robust closures
+ multi-level Array and Hash element autovivification
+ perl6 --version now identifies the exact git sha1 and parrot version
+ implemented 'is rw' trait on classes
+ file tests now work through IO, ie. 'README'.IO ~~ :e
+ generic, multi-level Whatever-currying (eg grep !(* % 2), @list)
+ improved error reporting in many cases, especially multi-method dispatch
+ implemented backtracking into capturing groups and subrules
+ phasers refactored, they can now return results and see the setting
+ custom circumfix operators
+ basic .wrap and .unwrap implementation
+ weighted Hash.pick
+ .perl on custom classes now dumps attributes
+ Basic implementation of the ==> and <== feed operators
+ Int ~~ Num is no longer true, as per spec; use Numeric instead
+ Improvements to enumerations
New in 2010.06 release
+ new list model with immutable iterators, lots of fixes to lists and arrays
+ variable interpolation into regexes
+ compile time Whatever currying for infix, prefix and postfix operators
+ autoprinting in the REPL shell
+ in @*INC, the current directory '.' now comes at the end, as in Perl 5
+ basic Buf implementation: Str.encode/Buf.decode work for UTF-8
+ proper Perl 6 match objects
+ Backtraces with Perl 6 subroutine names and line numbers
+ MAIN and USAGE subs
+ basic version of Str.trans
+ mix-ins with non-roles (5 but 'string')
+ @*ARGS is now read-write
+ IO::Socket::INET again works in CORE
+ hash and array slices have been greatly improved
+ basic support for callframe() and CallFrame type
New in 2010.05 release
+ implemented lexical and anonymous classes and roles
+ manual pages are now installed
+ the .match method now understand the adverbs :c; :p, :nth, :x, :g, :ov
+ test reports with tools/test_summary.pl now record detailed timing information
+ many improvements to numeric handling
+ implemented S (sequential) meta operator
+ fixed placeholder parameters ($^a, $^b)
+ basic enum implementation
+ implemented List.classify
+ turned on an additional 47 test files
+ further improved error messages
+ implement zero-argument versions of many binary operators
+ basic interoperation with Perl 5 through the external Blizkost project
New in 2010.04 release
+ interpolation of expression ending in postcircumfixes into double-quoted
strings (for example "cards: @cards.sort()")
+ prefix and postfix hyper operators
+ multi subs now work properly when lexically scoped
+ implemented item assignment with tighter precedence than the comma operator
+ loading of .pm6 modules
+ Basic implementation of Numeric and Real roles
+ implementation of DateTime and Date built-in types
+ named regexes can be declared outside of grammars again
+ support for numbers with arbitrary radix, including fractional numbers (:16<DEAD.BEEF>)
+ implemented fmt(), printf() note() and IO.getc built-in routines
+ infix meta operators now inherit the precedence of the modified operator
+ &[+] short name for infix operators
+ hash slices
+ signature literals
+ smart-matching against signatures
+ more consistent implementation of prefix:<|> for interpolating things into
signatures
+ better error message on accidental usa of Perl 5 features such as << as
bit shift operators, and catch many perl 5 magic variables
+ implemented type Cool
+ implemented anonymous classes and roles
+ implemented $*PID
+ method introspection works again
+ better error message for calling non-existent routine in a namespace
+ now run programs with the setting as an outer lexical scope, as per spec
New in 2010.03 release
+ The trigonometric functions and the Rat class have received numerous
updates, making them faster and more complete
+ .^parent now works again
+ The invocation logic has received various speedups
+ Hash creation has been optimized
+ Various improvement related to constant internal strings have led to
slight speedups
+ .pick, .sort, .keys, .values, .kv, sprintf were reimplemented, ported
from the old 'alpha' branch
+ The statement modifier for loop works again
+ Various parsing bugs have been sorted out; one having to do with
closing curly braces at the end of a line not terminating the statement
+ .CREATE, .BUILDALL and .can in the OO system have received attention,
some of it leading to mild speedups
+ $*PROGRAM_NAME and @*ARGS now work
+ Deferral works again (nextsame/nextwith/callsame/callwith)
+ Array.delete works again
+ Fixed .?, .+ and .* along with matching latest spec on .?
+ Switch untyped variables to default to Any instead of Mu
+ &foo lookup syntax works again (including for operators)
+ Various cases of eqv operator implemented
+ Make overriding postcircumfix:<( )> work again, this time per spec
+ Make junctions of code objects invokable again
+ Lazy implementation of the Z operator
+ Added back @*INC
+ Read-only %*ENV support
+ Grammars work again
+ Implemented regexes taking parameters
+ Implemented proto-regex declarations
+ Initial work on getting subset types working again
+ Add back many of the file test methods
+ Added docs/S11-Modules-proposal.pod documenting how we intend to handle
modules through Rakudo *
+ First cut of locating and loading modules with a given version and/or
authority, and in absence of a requirement selection of the latest
version by default if multiple are available.
+ Many improvements to the series operator
+ Implemented 'need' and a first cut of 'import'; 'use' works in terms
of them
+ Import is now into the lexical scope by default, as per spec
+ Removed requirement to hand-pre-compile .pm to .pir for use with 'use'
+ Improved multi-dispatch candidate not found errors to include details of
the available candidates
+ Implemented 'use MONKEY_TYPING'
+ Many cases of smart-match work again
+ $x.Foo::bar() and $x.$y() work again
+ $.foo(1,2,3) works again
+ !, R, X and Z meta-operators work, albeit with some caveats
+ s/foo/bar/ and s[foo] = 'bar' substitution syntax implemented
+ Array.rotate added back
+ User defined operators (prefix, postfix, infix) working again
+ Many more small but important improvements to built-in types and functions
+ Various other bug fixes
+ ROADMAP updates
New in 2010.02 release
+ The branch formerly known as 'ng' becomes the new master branch
+ The previous master branch is now Rakudo/alpha
+ NQP-RX replaces NQP in the Parrot Compiler Toolkit, enabling the
source code of the compiler to be written in a subset of Perl 6 that
is much more powerful, most importantly with regexes, as the name
suggests
+ The revised Perl6/Grammar.pm is much closer to the canonical STD.pm
+ Regexes may declare contextual and lexical variables
+ Lazy lists and arrays are partly implemented
+ The object metamodel is largely written in NQP-RX instead of PIR
+ The name of the root of the object hierarchy is now Mu
+ The term 'undef' is gone, replaced by Nil, Mu or *.notdef depending on
context
+ Builtin classes derive from Cool which derives from Any
+ The refactored source code is more compact and more easily extended
+ The number of spectests passed has reduced from a peak of 32731 in
alpha to 24221, because porting the functionality to the new master
is still ongoing
+ Release numbering changes from 'dash' to 'dot' delimiter to get on
better with various package management systems
New in 2010-01 release
+ Added method form of eval.
+ Implemented :s and :l file operators
+ Added functions for logarithms using $base
+ Refactored subroutine calls to use new Context structures in Parrot 2.0.0
New in 2009-12 release
+ Only minor maintenance was done because all attention was being given
to the Rakudo/ng branch, bringing in the new nqp-rx bootstrap compiler
New in 2009-11 release
+ Rakudo now uses Parrot's updated calling convention features
+ support unpacking of arrays, hashes and objects in signatures
+ changed .pick to use :replace instead of :repl
+ many core setting optimizations and bugfixes
+ IO::Socket.recv() has been extended to accept a parameter specifying the
number of bytes which will be received
+ Rakudo now looks up %INC in the right namespace when loading libraries for
foreign languages
New in 2009-10 release
+ smolder reports for spectest runs
+ more Complex trig functions
+ pure Perl 6 implementation of the Complex type
+ some variants of the new series operator
+ correct construction of twigilled colonpairs
+ infix:<eqv>, .pred and .succ for the Rat type
+ when configuring with --gen-parrot, pass --optimize to parrot's Configure.pl
+ moved more operators to the setting and thus made them overloadable
+ { %hash } now correctly constructs a hash, not a closure
+ new, faster low level Signature type
+ improved Signature introspection
+ new, much faster signature binder
+ improved various error messages related to signature binding
+ signature literals now supported
+ binding of named arguments to positional parameters
+ attributive parameters implemented
+ package blocks now run as immediate blocks, as per the spec
+ lexical variables declared outside of packages now visible inside them
New in 2009-09 release
+ updates to numeric operators: infix</>(Int, Int) creates a Rat
+ Rat (rational) numbers
+ overloadable builtin operators
+ contextual variables
+ setting values in %*ENV now works
+ partial support for trigonometric functions of complex numbers
+ better handling of custom traits, many builtin traits moved to core setting
+ improved type dispatch for builtin operators, type coercions