-
-
Notifications
You must be signed in to change notification settings - Fork 373
/
ChangeLog
2022 lines (1933 loc) Β· 94.3 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 2015.12:
+ Features
+ Fixed size and multi-dimensional typed and native arrays
+ Greatly overhauled module loading and installation, including handling
precompilation at module installation time in Rakudo
+ Automatic precompilation of modules
+ 'no precompilation' pragma to opt out of precompilation
+ Can now specify the backlog for listening sockets
+ NativeCall now knows the size_t and bool types
+ Give IO::Socket::INET connect/listen methods
+ while/until loops can now return lists of values
+ We now catch many more kinds of "Useless use of X in sink context"
+ On the flip side, the optimizer now has a much better idea of what is sunk
+ A number of convenient Unicode equivalents were introduced
+ Superscripts can now be used for integer powers
+ Non-digit unicode characters with a numeric value (Β½ and such) can now be
used for that numeric value
+ There is a new "approximately equal" operator
+ The .narrow method can narrow things that are approximate integer
+ Allow quoted words as input for Buf.unpack
+ Can now mix in to enums
+ Implement List.first()
+ Added Supply.head and Supply.share
+ Implement Range.rand
+ Add support for USAGE argument help
+ Provide tau constant (also: Ο)
+ Can now use channels with supply/react/whenever
+ Implement %?RESOURCES
+ Allow for :every *and* :times in SCHEDULER.cue
+ Implement Promise.at
+ Add .Date/.DateTime coercers to Instant
+ Implement native-descriptor on handles/sockets
+ Add UDP support to IO::Socket::Async
+ Switch to doing newline translation at I/O boundaries
+ Add support for specifing the api/abi version to native (NC) routine
+ Greatly improved support for sized and unsigned native lexicals
+ Implement CLOSE phaser for supply blocks
+ Respect multi's sigs in role composition
+ Treat multis with equivalent sigs as collisions
+ New method $*VM.platform-library-name
+ Incompatible changes
+ Bool is now a proper enum
+ Supply.new replaced by Supplier.new
+ An exact arity match in multiple dispatch beats slurpy/optional
+ Supplies consistently treat list values as single arguments
+ Remove grep-index/first-index/last-index for attributes in grep/first
+ Remove support for Str.split(:all) (use :v instead)
+ Changed IO::Socket::Async reading API to .Supply method
+ Order Complex first on .re, then .im
+ Order ranges first on min, then on max
+ Use of EVAL now requires a declaration of 'use MONKEY-SEE-NO-EVAL'
+ Likewise regex interpolation is limited in the absence of the declaration
+ Empty loop modifiers must now use Nil to avoid "useless use" warning
+ Thunky operators now thunkify arguments even when used in metaoperators
+ SEQ() is renamed to STATEMENT_LIST() to avoid extra overloading of 'sequence'
+ Tweak attribute initializer semantics match assignment semantics
+ Make @a[^2] consistent with @a[0,1]
+ Make ::= a NYI, in light of 6.c
+ Promise.Supply is an on-demand Supply
+ Remove earliest syntax
+ Forbid argument-less Date.new
+ Forbid Instant.new
+ Remove IO::ArgFiles.nl
+ Move sub-byte native int types to experimental
+ Enforce return types in pointy block sigs
+ Kill off has-accessor; use has_accessor instead, consistent with MOP
+ Make X, Z, and roundrobin respect items
+ Fix loss of structure in xx
+ Enforce SSA on sigilless in `my (\x, \y) = 1, 2;`
+ Remove IO::Socket::Inet.input-line-separator
+ Remove IO::Socket::Async.(bytes|chars)-supply
+ Remove IO::Handle.(ins|nl)
+ Remove IO::Handle.seek(pos,Int:D whence)
+ Promise.[anyof|allof] no longer break
+ Make pack and unpack experimental
+ Fixes
+ Dynamic variables are now visible inside start { ... } blocks
+ Sparse array no longer acts empty on shift
+ Disallow positions < 0 on index/rindex
+ Make "require PACKAGE/STRING" return said PACKAGE/STRING
+ Fix BEGIN/CHECK block scoping precompilation bug
+ Fix bug in the scheduler that could swallow exceptions
+ Supply.from-list should follow 1-arg rule
+ Prevent data loss in various cases with async sockets and processes
+ Autoincrements on native ints are now faster than on Int
+ The ~~ operator can now chain with other comparisons in many circumstances
+ Imported operators no longer lose their precedence info
+ Various numeric operations now return overflow/underflow failures instead
of wrong value
+ The :ss, :ii, and :mm options to s/// now all work together
+ Ranges and complex are now ordered more consistently
+ Mixin Callable[$type] for all ways of declaring return type
+ Don't ignore return types when calling ACCEPTS with Signatures
+ Make MMD setup of sub print same as say/note/put
+ Fixed circular module loading detection
+ Cool.substr-eq should return a Bool
+ Fix some failures to catch return outside routine
+ Stop phaser loop swallowing loop exceptions
+ Fix FIRST in loop/while/until
+ Consistently return Nil for no value, not a typeobject
+ Import should reuse precedence of exported ops
+ Fix slurpy hashes in Signature ACCEPTS
+ Fix SomeRole.^roles
+ Make :transitive the default for .^roles.
+ fail should reliably die if outside of a routine
+ Make slicing with adverbs respect itemization
+ Fix return type of qqw{...}
+ Make (1,2,3)[2] = 4 and (1,2,3)[3] give same error
+ Show non-printables in IO::Path.perl
New in 2015.11:
+ Features
+ Initial shaped array support
+ \r\n (Carriage Return/LineFeed) is now a single (synthetic) grapheme
+ Unicode support adheres to Unicode Annex #29
+ New IO::Handle.nl-in now allows multiple line-endings to be set
+ New IO::Handle.nl-out allows you to set line-ending used in IO::Handle.say
+ New IO::Handle.split/comb, same feature set as Str.split/comb, but lazy
+ IO::Handle.seek now accepts new SeekType enum values as 2nd parameter
+ New $?NL contains the output new-line character(s) for the current system
+ New 'use newline' pragma allows setting of $?NL
+ New List.head/tail methods for easier getting first/last N elements
+ New List.repeated for only getting repeated values in a list
+ Str.encode now allows :replacement parameter for unencodable sequences
+ Str.split now accepts multiple strings to split on
+ Str.split now accepts :v, :k, :kv, :p, :skip-empty named params
+ Str.comb(Int:D $n) candidate allows for combing string per $n characters
+ New Range.int-bounds returns first/last value for integer ranges
+ EVAL now passes on named params, to allow for customised EVAL subs
+ Auto-generated meta-ops vivified by referring to them, instead of executing
+ Unicode quotes are now also allowed in regular expressions
+ Can now coerce to generic types in parameters
+ Can attach adverbs to variables
+ Illegal assignment of different Numeric values now caught at compile time
+ &nextcallee implemented, which returns the routine that nextsame would invoke
+ Deprecated
+ IO::Handle.nl should either be IO::Handle.nl-in or .nl-out
+ IO::Handle.seek with a numerical value for 2nd parameter
+ Str.split( ... :all) should be written as :v
+ Fixes
+ RT #74414: the multi dispatcher now treats "is rw" parameters as tighter matches
+ RT #125123: improved error message for type check failures in int-typed arrays
+ RT #126436: improved error message for missing required attributes
+ multi submethods aren't inherited to subclasses
+ leading escape sequences representing whitespaces aren't stripped anymore from heredocs
+ Speedups:
+ [+] and sum
+ Blob.subbuf
+ List.sort
+ List.roll
+ List.rotate
+ List.reverse
+ IO::Handle.getc
+ Build system
+ New options --sdkroot and --sysroot to Configure.pl to support cross builds
New in 2015.10:
+ Features
+ We are now officially in beta!
+ There is now an infix:<.> operator that does method calls with slightly
looser precedence than the postfix unary method call.
+ Definite return values are now allowed, and force final statement to sink
+ Types with type smilies (like 'Int:D' and 'Int:U') are now first class,
and supported in constraints for variables, for example
+ New pragmata 'use variables :D', 'use attributes :D' for defaulting type
constraints to ':D'
+ The 'constant' declarator now supports syntactic constructs, so you can
alias with 'my constant &infix:<plus> := &infix:<+>;'
+ New operator 'infix o' for function composition
+ New method 'produce' for triangle reduce
+ 'fc' for Unicode-correct case folding implemented
+ '<?same>' assertion in regexes implemented
+ Methods 'file' and 'line' in 'Code' point to the location of the
declaration
+ grep now accepts :k, :v, :kv, :p attributes
+ first now accepts :k, :v, :p attributes
+ first also accepts :end attribute to indicate searching from end of list
+ 'is equiv<+>' as shortcut for 'is equiv(&infix:<+>)'. Same for 'tighter'
and 'looser'.
+ 'Supply.throttle' for rate-limiting
+ 'Hash.append' added, now that Hash.push doesn't flatten
+ Internal methods ZEN-POS/ZEN-KEY added, for handling zen-slices
+ Promise.start now passes on any extra parameters to async block
+ Use of comma in sink context now distributes sink to its parts
+ Attribute containers may now have defaults
+ The new .self method is the identity method on anything
+ Negative integers are now allowed in the parameter slot
+ List associative operators can now be autoprimed, including Xop and Zop
+ Incompatible Changes
+ Array.push is now used for pushing one element (mostly); Array.append
exists for pushing multiple values. Same for 'unshift'/'prepend'
+ Basic arithmetic operations ('+', '*', '-', '/') on Range objects
that shift or scale the end points while maintaining exclusions
+ 'is rw' now only works on scalars (was a noop), and actually requires
a writable container. Parameters of the form '\x' enable the old
behavior
+ The v notation now allows alphabetic components: v1.2.beta. (Incompatible
because method calls on a version must be protected by \ or () now.)
+ 'use v6b+;' notation is now recognized and enforced
+ Many list functions no longer flatten, or use one-arg flattening only
+ The sequence operator no longer flattens sublists, so you must use slip
to get that effect
+ The precedence of infix:<.=> is now tighter to match new infix:<.>
+ Smartmatch with List now recursively uses smartmatch
+ Smartmatch with list now globs using '**' rather than '*'
+ callwith/nextwith no longer flatten
+ Speedups:
+ Many built-in methods that return iterables are now much faster
+ 'Bag' and 'Mix' are now faster
+ Rat addition/subtraction is now faster due to lazy reduction when
consistent denominators are used ("cents stay cents")
+ Fixes:
+ Better error messages when comparing version strings with numbers
+ Several error messages that were lacking line numbers now include them
+ Anonymous types now compare correctly under 'infix:<===>'
+ Fixed 'once' block semantics (RT #126293)
+ A dying 'LEAVE' block doesn't prevent other 'LEAVE' blocks from running
anymore
+ 'Str.tc' now does an actual Unicode title case operation
+ polymod had not been GLRified yet
+ List/Supply.squish did not properly handle single element lists/supplies
+ Several fixes to the REPL, e.g. with regards to completions
+ with/without now topicalize properly
+ Fix usage of match variable in replacement part of substitution
+ Β».[1;1] (hyper on multidim subscript) now works
+ Methods map, push, pop, shift, unshift, append, prepend now properly
marked as nodal
+ Attempt to smartmatch with S/// now warns
+ grep { /foo/ } now dwims again
+ Operator names now canonicalize internally to legal Perl names
+ Reduction ops now generalize to N-ary functions
+ Extra list comma is now allowed before any statement modifier
+ Various multisubs now report .arity more accurately
+ Exceptions can now correctly report the Nil type
+ Deprecations:
+ grep-index() deprecated in favour of grep(:k)
+ first-index() deprecated in favour of first(:k)
+ last-index() deprecated in fevour of first(:end,:k)
New in 2015.09
+ Features
+ Great List Refactor
+ New slurpy parameter, +args or +@args, to allow for one-argument style binding
+ New with/orwith/without conditionals allow you to check for .defined but
topicalize to the actual value returned
+ New 'supply', 'whenever' and 'react' blocks for easy reactive programming
+ Mu.return implemented: allows for ".return with $foo"
+ Cool.indices/indices() expands on Cool.index/index() functionality
+ Callframes now allow easy introspection of associated Code object
+ Test.pm now has a 'does-ok' function for testing role conformance
+ '$Β’' in grammars now refers to the current cursor
+ All Unicode digits can now be part of literal numbers
+ 'val()' and allomorphic types implemented
+ Most European quoting styles are now supported
+ The parser now detects and reports possible runaway quotes
+ New $[...] and ${...} constructs allow prefix itemization
+ 'dd' now displays variable type
+ Fixes:
+ Using a Range with an infinite .max now works on substr()/.substr
+ Parameter aliases are now handled in MAIN subroutines
+ Fixed typo about environment access in IO::Spec::Cygwin.tmpdir
+ Blocks like { .foo } are no longer considered to be a Hash constructor
+ Propagate ignorecase into subrules of regular expressions
+ eqv no longer defaults to === semantics, but snapshot (via .perl)
+ A constant declaration now pays more attention to its sigil
+ The .gist and .perl methods can now deal with self-referential structures
+ andthen and orelse are now topicalizers as specced
+ Fixed CompUnit.load, which is what use/require uses under the hood
+ Incompatible changes:
+ Creating constants with a ? twigil has become a NYI for now
+ No longer allowed to create dynamic constants with "my constant $*FOO"
+ Forbid to use the very same variable to init itself directly in declaration
+ Parcel is no longer a type, use List instead
+ 'is parcel' trait is now 'is raw'
+ .gist now puts brackets around lists and arrays
+ IO::Handle::lines no longer returns an empty last line
+ The 'Enum' type is gone; use 'Pair' instead.
+ Deprecations:
+ All Deprecations removed in preparation for Christmas release
+ NativeCall:
+ Added support for calling into C++ libraries and calling methods on
C++ classes
New in 2015.07
+ Features:
+ Cool.substr(-rw) and &substr(-rw) now also accept a Range
+ Added trait "is required" on class attributes
+ Parameters like :n($n) are presented as :$n in .gist
+ &?ROUTINE and &?BLOCK
+ Conversion forms now understand :16(':8<377>') and such
+ &words implemented (to completement .words)
+ Numeric comparison ops (== > etc) for DateTimes
+ Fixes:
+ ENTER phaser now can be used as an r-value
+ Allow %{Type} as a way to say Hash[Any,Type].new
+ Several issues with the use of ';;' in signatures
+ Issues with regexen throwing an exception (RT #62086 & #72440)
+ samewith() now also works in subs
+ Calling the .clone method with alternate values no longer changes original
+ Various fixes and optimizations on List.splice
+ .grep and &grep now consume multiple elements for many-param blocks
+ Issues with precedence limit checking in EXPR fixed
+ EVAL now pays attention to languages in the compiler registry
+ Incompatible changes:
+ my Type $a is default($value) is now compile-time checked
+ my $a is default(Nil) only works on untyped (Mu) variables
+ Can no longer (roulette) assign to Whatever slice of a hash
+ Emit warning when \$ \@ \% \& are used to create a Capture
+ Now illegal to use a contextual ($*c) before declaring it in a block
+ EVAL :lang<Perl5> instead of <perl5> for consistency with use :from<Perl5>
+ Deprecations:
+ $*PROGRAM_NAME in favor of $PROGRAM-NAME
+ $*EXECUTABLE_NAME in favor of $EXECUTABLE-NAME
+ pipe() in favor of shell() or run() with :in, :out or :err
New in 2015.06
+ Features:
+ Lexical pragma 'use trace' now outputs statements on STDERR
+ $=finish now contains text after first =finish/=for finish/=begin finish
+ __END__/__DATA__ now marked as obsolete Perl 5 features
+ Added :as named param to .classify / .categorize
+ EVALFILE added, for evalling source in a file
+ Implemented 'quietly' statement prefix to prevent warnings being issued
+ MinGW (Windows with gcc/gmake) is now also supported besides MSVC
+ Implemented 'has Type method'
+ Implemented Buf.push
+ Implemented S/// (returns the new string rather than in-place substitution)
+ Implemented X::StubCode for .../!!! code
+ Add :createonly to rename()
+ Fixes:
+ (10e6).pick/roll no longer build the whole list to pick a value
+ Regex.gist/perl return source of regex
+ start now takes a statement also, or a block (as before)
+ .push/.unshift on typed arrays now create the right type of container
+ Throwing a Failure counts as handling it
+ Incompatible changes:
+ DateTime default timezone format is now +HH:MM (used to be +HHMM)
+ "".IO / IO::Path.new("") no longer legal, use "." for current dir
+ next/last/redo don't allow expressions to be evaluated anymore
+ sign(NaN)/NaN.sign is now NaN
+ Stubbed-out code (via .../!!!) no longer results in X::AdHoc
+ Deprecations:
+ Using start as a sub with parentheses, e.g. start( { ... } )
+ open(:p)
New in 2015.05
+ Features:
+ NFG, NFC, NFD, Uni
+ Implemented unicode property pairs with explicit arguments, e.g.
<:NumericValue(0 .. 1)>, <:Name(/LATIN/)> etc (MoarVM only)
+ :m/:ignoremark implemented (now that we have NFG)
+ Implement <&foo: $arg>, <&foo($arg)> and my $a = "alpha"; /<::($a)>/
+ List/Supply.rotor expects a list of Pairs (elems|elems => gap)
+ Added much faster List.pick(*,:eager) variant
+ Implemented CLIENT:: (nearest CALLER:: from different package)
+ Normal stacktraces no longer include references to code in settings
+ RAKUDO_BACKTRACE_SETTING to *do* include code in settings
+ RAKUDO_VERBOSE_STACKFRAME environment variable shows source lines
+ Warnings now show file/line unless the end with a newline
+ Implemented "is nodal" for signalling behaviour under hypers
+ Rudimentary tab completion available via the Linenoise module
+ Incompatible changes:
+ The readline integration that existed on the VM level has been removed;
it now exists as a module. To restore readline operations in the REPL
(ex. history, line control), install the Linenoise module via Panda
+ "unit" declaration needed for blockless packages
+ Various API changes for the Great List Refactor, such as...
+ 'for' loops not longer flatten; use 'for flat' for that
+ .map no longer flattens, map as a listop does. Use .flatmap to get the
old behavior
+ Likewise other methods that used to flatten their invocant no longer do:
all, any, one, none, unique, squish, min, max, minmax, classify, and categorize
+ Nil no longer iterates like the empty List. Use () or Empty instead.
+ Hashes no longer maintain insert order on Moar (on JVM they never did)
+ @*INC now contains strings (again), rather than CUR objects
+ Item seperator in INC spec is now ","
+ Type / info seperator in INC spec is now "#"
+ .pick($n)/roll($n) now always return lists, even when $n == 1
+ $?FILE is now always an absolute path
+ Variable will init/post/compose throw NYI instead of silently doing nothing
+ The "is cached" trait no longer works on methods, throws a NYI instead
+ Deprecations:
+ Method .map should be used instead of .for
+ List/Supply.rotor now *must* have elems and gap specified
+ Test.pm functions are now kebab-cased (e.g. throws_like -> throws-like)
+ in regexes, avoid non-significant whitespace between alphanumerics
+ Unhandled Failure leaks are now warned about if detected by DESTROY
+ Fixes:
+ Many race conditions, specifically wrt to role specializations
+ Hashes use much less memory on Moar
+ my $a will begin/enter/leave/keep/undo/first/pre now set $_ properly
+ List.roll(Inf) now knows it's infinite, so is lazy
+ The REPL is strict by default now, that leaves only '-e' lines to be lax
+ Undeclared variable compile time error made clearer
+ IO::Handle.lines(:eager)/.words(:eager) now properly eager again
+ 'earliest' now handles remaining channels without specific handlers
+ Int/Rat ** -Int now generates a Rat if possible, else a Num
+ IO::Path.resolve now returns IO::Path as specced
+ CALLER now produces consistent results in the dynamic scope of implicit protos
+ A regex may now be used as the smartmatch of a sequence operator
+ Fix /a ~ (c) (b)/ capture order bug.
+ map <:alpha> in regexes etc to proper lookup on JVM
+ site/lib is now in the C library (.dll/.so/.dylib etc) search path
+ Fix scoping bugs with statement modifier for and given.
+ Make { 1 R=> 'a' } and { %*h } construct hashes.
+ Fix lexical context of regex interpolations
+ Various list ops now report .is-lazy correctly
+ Speedups:
+ generating backtraces is now lazy, improving the speed of e.g. warnings
+ Make List.pick about 3% faster, List.pick(*) about 7% faster
+ Implement new @*INC handling (about 30% faster startup time)
(bare startup time is now below 100 ms on some machines)
+ NativeCall:
+ Implemented CUnions which map to the union C type definition
+ Implemented HAS declarator for attributes to mark it embedded into the
CStruct or CUnion
New in 2015.04
+ Incompatible changes:
+ Installation directory layout changed: it now uses $PREFIX/share instead of
$PREFIX/languages
+ "0" (0 as a string) is now True, no special-casing anymore
+ an Int() coercion type in a multi now creates two candidates: Any and Int
+ Fixes:
+ try now implies "use fatal", so failures are not leaked
+ "use fatal" now only works in its scope, and not in deeper ones
+ don't constant-fold Failures
+ throws_like will EVAL code in context of caller
+ pragma's like "strict" can now also be called with -M on the CLI
+ once a List is infinite, it will stay infinite (fixes several hangs)
+ can now slice an Infinite list into a finite slice
+ can now slice a finite list into an infinite slice
+ adverbs are now allowed inside a ternary
+ auto-generated accessors will not show up in backtraces anymore
+ $_ now defaults to Any, rather than Nil
+ intuited iterators no longer bypass endpoint if no exact match
+ intuited iterators may also skip literal values if endpoint is lower
+ intuited iterators beginning/ending with same length now according to spec
+ say now observes the .nl setting
+ exceptions in BEGIN blocks and constant are now handled better
+ binding now works again in the REPL
+ various other REPL fixes
+ \foo variables work properly in EVAL
+ declarations like my (Str $ing, Int $eger) correctly enforce types
+ detect and complain about placeholders in attribute initializers
+ use of | prefix in the wrong place now complains at compile time
+ \(...) capture constuct handles nameds and | correctly
+ regex interpolation now uses cursors instead of scanning
+ correct line numbers are reported for faling tests
+ Deprecations:
+ the RC release in September will remove *all* deprecations
+ "use nqp" now required for silent use of nqp::ops
+ Features:
+ native arrays
+ 'bit' and 'byte' native types
+ starts-with/substr-eq/ends-with for comparing strings inside other strings
+ first steps towards generic lexical pragma's (e.g. soft, strict, nqp)
+ basic implementation of Uni, NFC, NFD, NFKC, and NFKD on Moar backend
+ Uni.Str coercion produces an NFG string
+ chop now takes optional number of characters argument
+ where constraints on variable and attribute declarations
+ dists are installed into a database-like way by default (via panda)
+ 'is rw' parameters implemented for native subs (they get passed as a pointer)
+ complex and rat literals now work inside of a <> quote
+ attempting to bind a Failure now tells you what was in the Failure
+ reduce() now pays attention to associativity (which is now part of the op)
+ can now reduce ([Z]) with list infixes over an arbitrary number of lists
+ use Foo:from<Perl5> supported when Inline::Perl5 is installed
+ EVAL $code, :lang<perl5> supported when Inline::Perl5 is installed
+ Speedups:
+ Str.codes/chars/uc/lc/tc/tclc/ord/flip about 25% faster
+ List.pick about 10% faster
+ Mu.clone about 8% faster
+ make xx about 1.8 times faster
+ several speedups in matching
+ numerous Num.Rat optimizations: 6.5x faster
New in 2015.03
+ Incompatible changes and deprecations:
Any code *calling* the old method names, will be given a deprecation warning,
and will continue to work. Any module that *implements* MMD candidates for
any of these methods with their old name, will probably break. Please start
using the new names as described below.
+ renamed internal hash/array/code/* methods:
- OLD NEW
- at_pos AT-POS
- exists_pos EXISTS-POS
- delete_pos DELETE-POS
- assign_pos ASSIGN-POS
- bind_pos BIND-POS
- at_key AT-KEY
- exists_key EXISTS-KEY
- delete_key DELETE-KEY
- assign_key ASSIGN-KEY
- bind_key BIND-KEY
- invoke CALL-ME
- Supply.on_demand Supply.on-demand
- Supply.schedule_on Supply.schedule-on
+ renamed traits
- hidden_from_backtrace hidden-from-backtrace
- hidden_from_USAGE hidden-from-USAGE
+ Deprecated use MONKEY_TYPING for use MONKEY-TYPING.
+ Incompatibility change: spaces are no longer allowed in operators.
+ Disallow redeclaring constants in the same scope
+ Throw redeclaration error for duplicate type capture
+ Deprecate IO::Handle.input-line-separator for .nl
+ Remove parrot support from Rakudo.
+ Don't print deprecation messages if RAKUDO_NO_DEPRECATIONS env var is set
+ Features
+ Allow Buf.AT-POS to return an l-value.
+ Implement method ^foo($) { ... } syntax.
+ Implemented PairMap (the simple case only, for now).
+ Implemented .antipairs (pairs with value => key).
+ Implemented .pairup for creating pairs from lists.
+ Implemented LEXICAL, OUTERS and CALLERS pseudo-packages
+ Implemented UInt (sub)type and coercer.
+ Add a array[T], usable for native int/num (MoarVM only for now)
+ Other native improvements, e.g. my int $a; $a++
+ Smart quotes (as in βfooβ, βbarβ, βbazβ and βzapβ) now also supported.
+ Improve and test support for Listy types in JVM Interop.
+ Hyper-infixes (like Β»~Β») are faster and have more features.
+ Make token prefix properly compete with term in LTM
+ not() and so() are functions as well as prefixes.
+ substr-rw() now accepts the same range of parameters as substr()
+ keywords now require whitespace (unless shadowed), which allows:
my \if = 42; say (if) if if; # now says 42
+ Implement IO::Path.resolve on r-m/POSIX
+ Catch P5ish use of $/
+ Fixes
+ Catch wrong attribute usage in a regexes.
+ Fix compiler warnings on OS X / JVM backend
+ bare say now complains about no valid arg
+ Make <a b c>.invert no longer infiniloop
+ Make List.kv completely flatten its values
+ Update error message for $] to use $*PERL.version
+ Fix JVM runner generation on Windows.
+ fix $*KERNEL.arch for raspbian, ugexe++
+ Make $?TABSTOP immutable
+ Make CALLER::<&?ROUTINE> work
+ Errors like "expected Array[Str] but got Array[Str]" have been fixed.
+ Optimizations
+ Make my int/num @a = Range about 1000x faster
+ Make generic Str.subst between 5 - 10% faster
+ Make s/// up to 25% faster (for many changes)
+ Make Bool.pick and Bool.roll up to 2x faster
+ Make Bool.pick()/roll() another 10% faster
+ Make substr(-rw) about 10% faster
+ substr("foo",1) 2.5x faster
+ substr("foo",1,2) 6x faster
+ substr("foo",*-2) 1.5x faster
+ substr("foo",0,*-2) 1.5x faster
+ Make %h<a> = 42 about 10% faster
+ Test.pm changes
+ Several improvements in Test.is() wrt to handling type objects and whitespace.
+ Add simple use-ok implementation
+ NativeCall.pm changes
+ 'is native' will also accept Callables to allow runtime library detection
+ Implemented nativesizeof(T)
+ Add typed Pointer type as replacement for OpaquePointer
+ Throw exception for wrong arity in native subs
New in 2015.02
+ Overriding invoke/postcircumfix:<( )> for type coercions (ex. MyType(...))
now passes the function arguments as-is, rather than just passing a Capture
containing them
+ optimizations to slices with adverbs
+ improved error messages from sprintf and fmt
+ improved error message when trying to inherit from a class that isn't
composed (like a stub)
+ Proc::Async polished (improved error reporting, relaxed type constraints)
+ LoL assignment is now autovivifying
+ Semicolon/"rest of file" form of the MAIN sub implemented
+ Parsing for infixes like "$foo !and $bar" or "$foo !&& $bar" fixed
+ Coercion syntax for parameters: sub foo( Str(Any) $x ) { ... }
+ Str(Any) as a term now parses as a coercion type
+ Foo() works as a coercion type shortcut for Foo(Any)
+ Metaop "=" now respects the precedence of the op it's meta-ing
+ Enable term definitions via "my", e.g., "my \term:<β> = Inf"
+ Added "polymod" method on numerical values
+ Made simple Str.trans / tr///, Str.subst about 20x faster
+ File test operators now follow symlinks on systems that support them
+ New method Rational.base-repeating, optional precision argument for Real.base
+ Blob.bytes now returns actualy byte size, even for non-byte blobs
+ "6;" at unit start is no longer a way to say "no strict;"
+ Anon variables in sink context warn now correctly
+ Buffer types can now be passed to C functions via NativeCall
+ C types like "long" that depend on the architecture are now handled correctly
+ NativeCall is now shipped with rakudo, because it is coupled too tightly
+ Allow "constant" and "has" declarations to be initialized with .=
+ Types constructed for mixins ("does" and "but") are now cached, giving a 10x
speedup on repeated mixins of the same role to the same type and cutting
CORE.setting size down (by 700KB on MoarVM, for example)
+ Made .^can(...) aware of submethods
+ Fixed a pre-compilation bug when a multi-method in a subclass was installed
in a cloned proto-method inherited from the base class, then called at BEGIN
time
New in 2015.01
+ New simple way of creating an object hash: :{}
+ Str.substr-rw was omitted before, it isn't anymore
+ The loop ^1000 optimization is working again
+ Pair.gist has been simplified (a => 42, rather than "a" => 42)
+ Exporting an Enum now also exports its values
+ Proper error handling for a placeholder that has already been used as
non-placeholder in the same scope
+ Sub form of 'unique' introduced, 'uniq' deprecated
+ Supply.for deprecated in favour of Supply.from-list
+ All deprecated features will be removed with 6.0.0 (sometime in 2015)
+ Startup on the JVM has improved by 20%
+ Many improvements to Java interop for the JVM backend
+ Several precomp issues have been solved
+ Better error messages for die(Failure)
+ Fixed CATCH/CONTROL blocks in the program mainline
+ Substitution now supports assignment meta-op, e.g. s[\d+] += 2
+ Many memory and CPU optimizations
New in 2014.12
+ Flakiness on OS X has been fixed
+ Support for Increase/Decrease, bless(*,...) removed, were deprecated 1+ year
+ Method FALLBACK implemented
+ $str ~~ s/// now returns a Match or list of Matches
+ Updated List smart-matching to latest design
+ $*DISTRO and $*KERNEL updated ($*DISTRO now actually report the Linux dist)
+ Most, if not all, signals are now supported everywhere (MoarVM only)
+ Configure.pl: Fixed check for outdated nqp-m; warn on missing --prefix
+ Optimizations of integer division and Rat construction
+ Added Metamodel::Primitives, to open up more meta-programming possibilities
(publishing method caches, completely custom meta-objects, etc.)
+ Support for closure parameter signatures
+ Implemented chained sequences
+ Implemented longest literal LTM tie-breaker
+ Calling "close" on a Supply will now close all of its taps
+ Added "extension" method to IO::Path
+ Fixed bare "slurp", it was broken in 2014.11 or before
New in 2014.11
+ using a constant negative subscript now dies at compile time
+ better wording for runtime negative index failure
+ force calling method for <.foo> even if sub foo exists
+ fix tie-breaking issues with longest literal matching
+ make List.last-index non-lazy (as the whole list needs to be reified anyway)
+ introduce IO::Handle.slurp-rest for slurping rest from handle
+ method 'for' as an alias for 'map'. Map will stop flattening the list eventually, 'for' remains as it is now.
+ method 'unique' as a successor for 'uniq'
+ warn about clashing enum aliases, and also poison these aliases
New in 2014.10
+ unstrict mode now default with -e
+ use strict / no strict implemented (but -Mstrict does not work)
+ Implemented Supply.lines/words
+ Implemented IO::Handle.words
+ Updated chdir() to spec
+ Implemented indir( $dir,:test<r w x>,{...} )
+ Implemented tmpdir($dir) and homedir($dir)
+ Implemented IO::Path.all: "foo".IO.all(<f r w>) is True for r/w file
+ IO::Path.modified|accessed|changed now return Instant, according to spec
+ Fixed ordering issue with IO::Socket::Async
+ Str.words is now lazy by default
+ Str.words no longer returns the word if there is only one word: this behaviour
was unspecced and apparently used internally only. This old behaviour is
still available by specifying the :autoderef named parameter.
+ method .exists/.delete have been removed after 1+ year of deprecation
+ performance improvements in Str.trans and tr///
+ fixed Str.trans and tr/// for anchored regexes
+ Bool.pick/roll (without parameter) now ~20x faster
+ Numeric.round (without parameter) now ~4x faster
+ Supply.more has been deprecated in favour of Supply.emit (as per spec)
+ Deprecations will now tell when they were introduced, and will give a
release version in which the deprecated feature will be removed.
New in 2014.09
+ ./perl6 --profile for MoarVM, generates HTML profile output, including
spesh/JIT info
+ Workaround OS X make bug for MoarVM
+ Make new LOLLY syntax the default
+ support for submethod DESTROY (MoarVM only)
+ optimizations to Str.words, Str.lines, IO.lines, chomp, and return
+ Str.lines and IO.lines take :eager for still faster performance
+ added experimental support for Proc::Async, MoarVM only for now
+ Promise.keep/break now default to True/False
+ support for S26-style declarative (#| and #=) comments
+ expectations are reported before result in test failures
+ bare 'say' is now a parse error
+ range *..* is now allowed (and means -Inf..Inf)
+ AST.Str now prints the correct source for operand ASTs
+ 'Ο' implemented as synonym for 'pi'
+ support for :temp/:let declarators in regexes
+ Reduced memory size of CORE.setting, improved startup time
+ startup (on Moar) 15% faster than p5 w/ Moose
+ fix issue with $*EXECUTABLE pointing to an non-existing interpreter on parrot
New in 2014.08
+ print file/line annotations for warnings also on moar and jvm
+ fixed reduce/infix function syntax [[&foo]] LIST and ITEM [&foo] ITEM
+ can now call exit() in END blocks without hanging or affecting END block execution
+ remove speed penalty of large ranges in character classes
+ make LF, FF, CR and NEL available as character names
+ fixed negated character lookup in regexes \C[...]
+ quote words syntax <a b c> splits on breakable space only
+ duplicates in character classes warn now, like in accidently quoted items <[ '/' ]>
+ fixed (s)printf regression with "+" and " " flags
+ allow a DateTime to smartmatch against a Date
+ fix %a{5}:delete anomaly, "as Str" is your friend
+ die / note now say "Died" / "Noted" when not given anything
+ β
is finally recognized as the empty set
+ more work under the hood to get in line with S11 / S22
+ Str.indent() now treats its arg as an Int where appropriate
+ Restructure the QAST classes
+ Add LoL candidates for postcircumfix:<[ ]> and postcircumfix:<{ }>
+ Pass --moar-options configuration to NQP's Configure
+ Add .new candidate for creating a Date from an Instant
+ Fail when a Boolean is used as the matcher for &grep, &grep-index, &first,
&first-index, &last-index, and the corresponding methods
+ Implement cmp_ok in Test.pm
+ Add HyperWhatever / **
+ Add method invoke as the preferred way to write what was method postcircumfix:<( )>
+ Warn when a Code object is coerced to Str
+ If the LOLLY envar is set, have (;;), [;;], etc., turn into LoLs. Otherwise, parsefail
+ Add SEQ(a; b) to emulate the old behavior of (a; b)
+ Make &infix:<xx> many times faster
+ NaN === NaN (but still NaN != NaN)
+ fix multi-dimensional slice assignment
+ Add .note() method to Mu
New in 2014.07
+ require and build parrot 6.6.0
+ Cool.eval and eval() are now removed
+ assigning a single itemized hash to a hash is now DEPRECATED (my %h = {...})
+ .hash now turns an itemized hash into a hash
+ added unpack directives "a" and "Z"
+ subbuf-rw specced and implemented
+ Supply.zip-latest specced and implemented
+ minute value is optional in Timezone offsets in DateTime.new(), also a colon
to delimit hours/minutes is now optional
+ file copy and creation operations on the MoarVM now give default file permissions of 0666
+ the tr/// operator is implemented and has the proper return value
+ improved string handling for MoarVM backend
+ fixed class A { my $.x = 42 } scoping on MoarVM
+ removed hack that kept (|)= & co from working
+ re-arranged infixish actions to support [[*]]= etc
+ optimized CompUnitRepo::Local::File
+ optimized takedispatcher to cleardispatcher
+ all backends now allow C pointer arithmetic and casting of pointers to Perl 6 types
(this functionality is exposed by NativeCall)
+ made block inlining a level 2 optimization
+ small optimizations to number parsing
+ fixed Label.gist
+ fixed 'fail' so it also prints a backtrace
+ fixed a repeat until code-gen bug
+ added CompUnit.name and fixed .perl
+ removed hack for $Inf/$NaN: constants Inf/NaN are exposed since a while
+ made initial/max threads introspectable
+ naive implementation of IO.umask
+ make .WHICH also work on type objects
+ throw a X::Subscript::FromEnd for @foo[-1]
+ throw X::TypeCheck::Binding on all backends (was MoarVM only)
New in 2014.06
+ say/note now a little faster for single Str (which is most common)
+ an initial implementation of S11 (Compilation Units) is now available
+ .IO.{d|s|z} are now about 40% faster and return Failure if path doesn't exist
+ $*DISTRO now works correctly on OS X (with name "macosx")
+ $*KERNEL now works correctly on OS X (with name "darwin")
+ initial implementation of $*USER and $*GROUP
+ initial implementation of Supply.zip-latest
+ implement dummy Lock (for $lock.protect( {...} ) ) on parrot
+ @*INC now only contains elements for actually existing paths
+ more work on allowing slangs transparently (such as "v5")
+ IO::Socket::Async now also works on JVM
+ can close tap to stop listening on a socket
+ implement Supply.on_demand, for making on-demand supplies
+ fix race condition in async socket reading
+ can now also bind to dynamic variables
+ LAST phaser used to fire when not actually iterating, now fixed
+ (Set|Bag|Mix).pairs now return immutable Enums
+ (Set|Bag|Mix)Hash.pairs no longer allow changes feeding back
+ optimize :a(:$b) and attributive binding
+ optimize IO::Path.contents
+ optimize push, unshift, and comb
+ assorted optimizations to Junction construction and dispatch
+ optimize no-args case of @foo>>.bar
+ implement :42nd colonpair syntax
+ include correct version information in perl6-debug
New in 2014.05
+ asynchronous timers on MoarVM backend
+ added or updated many Supply methods:
act, batch, categorize, Channel, classify, delay, elems, flat, grab, last,
live, max, min, minmax, merge, migrate, Promise, reduce, reverse, rotor,
sort, squish, stable, start, uniq, wait, zip
+ add list functionality to 'on', as with new S17 spec
+ added .Supply coercer
+ added IO::Notification.watch_path / IO::Path::watch which return a Supply
of file system changes
+ added signal() which returns a Supply of Signals (such as SIG_HUP)
+ added IO::Socket::Async.connect, returns a Promise with a IO::Socket::Async
+ added IO::Socket::Async.send, returns a Promise with success / failure
+ added IO::Socket::Async.chars_supply, returns a Supply with chunks
+ added first-index, last-index, grep-index subs/methods
+ Pair.key was erroneously implemented "is rw"
+ added "subtest code, desc" to Test.pm (inspired by P5's Test::More)
+ added "throws_like" to Test.pm (formerly of Test::Util)
+ Test::Tap::tap_ok and throws_like are now 1 test (using subtest)
+ BagHash<foo>-- on non-existing key no longer fails (as per S02 spec change)
+ (Set|Bag|Mix)(|Hash) now have a .fmt method
+ deprecate $*OS, $*OSVER, $*VM<name>, $*VM<config>, $*PERL<name>
$*PERL<compiler>...
+ added $*KERNEL, $*DISTRO, $*VM, $*PERL as full blown objects
+ .delta (by recent spec change) in Date/DateTime now instead spelled
.later and .earlier
+ TimeUnit enum removed; string named and positional arguments used instead
+ optimized grep,grep-index,first,first-index,last-index with seperate
candidates for Regex and Callable.
+ "use v5" is no longer a noop, but actually tries to load the "v5" module
(soon available as part of Rakudo*)
+ implemented labeled loops and throwing of labels as payload
+ added various optimizations, like optimizing out %_ when unused
New in 2014.04
+ significant performance enhancement for MoarVM, spectest running 20%+ faster
+ S17 (concurrency) now in MoarVM (except timing related features)
+ winner { more @channels { ... } } now works
+ fixed pb with Parcelness of single element array slices with adverbs
+ implemented univals(), .unival and .univals (on MoarVM)
+ make .pick/.roll behave sanely on Enums
+ fixed Str.samespace and ss//
+ added .minpairs/.maxpairs on (Set|Bag|Mix)Hash
+ added Bag.kxxv
+ Capture.WHICH implemented so that identical Captures have the same .WHICH
+ Naive implementation of "is cached" trait on Routines
+ Hash.perl now randomizes key order, while Hash.gist sorts
+ NativeCall passes all its tests on all backends
New in 2014.03
+ Fix suggestions for unknown routines when specified with '&'
+ Match sigil in suggestions for unknown routines depending on specification
+ Improve suggestions for 'length' and 'bytes' being banned in Perl 6
+ fixed for-loops to be properly lazy
+ Zop= now works
+ numerous Pod parsing and formatting improvements
+ uniname, uniprop, and unival implemented on MoarVM backend
+ @<c> as shortcut for @$<c>, %<c> as shortcut for %$<c>
+ improved "unable to deduce sequence" error message
+ duckmap, deepmap implemented
+ list infix reductions no longer flatten
+ X and Z meta ops treat [] as items
+ unary hyper subscripts (@array>>.[0]) now work
+ fixed problem with .=uniq and .=squish
New in 2014.02
+ $*INITTIME implemented
+ improved code generation for loops on the JVM backend
+ eager and lazy statement prefixes
+ statementlist-level for-loops are now assumed to be in sink context
+ improved unspace parsing
+ don't itemize make's ast argument
+ allow definition of custom postcircumfix operators
+ :allow in pod code blocks works now
+ Configure: git protocol is now configurable
+ smartmatching against an IO::Path does the right thing now
+ perl6-debug-* is now installed by rakudo; the user interface is still a
module available from the ecosystem
+ lots of improvements for moarvm, such as client and server socket support
and opening pipes/subprocesses
+ finished NativeCall support on the JVM
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