/
ChangeLog
6169 lines (6023 loc) · 333 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 2020.07.1:
+ Fixes:
+ Fix profiling results writing
New in 2020.07:
+ Fixes:
+ Improve "Method not found" error message for some rare cases [0a86798f]
+ Fix calling `.say`/`.put`/`.note` methods on Match objects [9f546ef6]
+ Add word wrapping to numerous error messages, improve wording
[eb589c03][1b84e036][3cb29a03][6db1fb1d][80aaede3][42031860][f70a3ccd]
[3ffed2fb][a7a1fe24][cd8846ad][83a126b3][3add8615][3d9a9fc4][697596fd]
[56e5f7dc][88b0e7a3][7a93c907][f550c9f9][a4b982cd][93963433][58685eeb]
[5f423a7e][92f8c19b][5627e02b][5b7ecdc0][a7455050][f96a641f][1f93724f]
[98c7e512][248664c6][3bc4fa90]
+ Wordwrap `Mu.WHY` [16d24a21]
+ Fix check for valid Raku module extension to be an exact match instead of suffix-like one [d4eef8d4]
+ Fix result of `.raku` method called on a generic typed array [90f86d4c]
+ Additions:
+ Set equality operators: `(==)` Unicode `≡` and `≢` which allow to check
for sameness of the operands using QuantHash semantics
(for example, `1,2,3 (==) 3,1,2` returns `True`) [701f4cfb][dbd69ba7]
+ Add support for Supply.tail(*) and .tail(Inf) [9ccfc90e]
+ Add support for Supply.tail(*-3) [eaa72afa]
+ Make `Supply.head(*-3)` consistent with `List.head(*-3)` [5c8c7324][70e5cfb9]
+ Rakudo now supports the `--rakudo-home` command line option to specify the path of the Rakudo home [914bcbad]
+ Efficiency:
+ Make <a b c d>.permutations between 23 and 85x faster [682a4d4f]
+ Make IO::Handle.read(1) about 3x as fast and consuming less memory [2946ed64][252b9349]
+ Internal:
+ Micro-optimize `buf8.new` creation code in compiler [ed936c14]
+ Give `Supply.tail` its own candidate [1a91af8c]
+ Add `Str.naive-word-wrapper` (implementation detail)
[056d6a4e][9ea66e13][6db1fb1d][45893495][821f582f][3674f812]
+ Make `IO::Path` use its own `.succ` / `.pred` logic [305fc7bd]
+ Remove placeholder files [07009cc0]
+ Re-imagine `CompUnit::Repository::FileSystem!distribution` [f3b1c8df]
+ Change `perl6` to `Raku` in nqp-configure submodule URL [ddebab5a]
+ Refactor `Rakudo home` and `NQP home` handling [e4f020ca]
+ Do core setting name mapping via compiler config [6e087e13]
+ Fix for spectest not seeing Inline::Perl5 [d5630720]
New in 2020.06:
+ SPECIAL NOTES:
+ Results of `dir` routine called with dirty base path are presented
as cleaned up for some paths (like `///` or `a/../a`) unlike
before. While compatibility with most of other cases is preserved
and no ecosystem fallout was observed, be cautious of the possible
observable changes if the code does not clean dirty paths using `cleanup` method.
+ Since this release, when you start Raku with "-" as a single positional parameter, it
will now check if STDIN is connected to a terminal. If it is, then
the REPL will be started, rather than appearing to freeze waiting
for the user to enter something and issue an EOF. If STDIN is *not*
connected to a terminal, then Raku will read from STDIN and process
that as the source of a program.
+ The `run` routine, `Proc.spawn` and `Proc::Async.new` are
extended with a new argument `:$win-verbatim-args` defaulting to
`False`. If the argument is left off or set to False, the
arguments are quoted according to the Microsoft convention. This
is identical to Rakus previous behavior and thus backwards
compatible. When passing True the passed arguments are
concatenated with a single space. No other processing takes
place. This allows to manually quote the arguments as necessary.
+ Changes:
+ Support verbatim argument handling for `Proc` [709941c6][9a75738f]
+ Signatures of `slurp` and `spurt` routines not accepting redundant arguments is
now compile time error rather than run-time one [22f43444]
+ The `Distro.desc` method now states codename for MacOS [b4b2a5ec]
+ The `gist` method output for multi-dimensional arrays is truncated now [cfc3e57f][4bfe5bd5]
+ Parametrization a variable type in form `my $foo is Type[Foo, Bar]` works for all types now [de43f193]
+ The `rotate` method now returns `Seq` instead of `List` [4b501bd4]
+ Add CACHEDIR.TAG to mark cache dirs as cache [37646b86][c3bdb617][ef90599e]
+ Improve GNU C++ name mangling [4f672c27]
+ Make `Instant.raku` output simpler [c0b5fb28]
+ Improve smartmatching against `Mu`/`Any`/`Junction` types
(`Mu.new ~~ Mu` does not die anymore, `any(Mu, Any) ~~ Mu` returns `True` now) [3b4794f4][840d3e81]
+ Fixes:
+ Fix code objects created BEGIN time EVAL getting lost in precompilation [537f8877][169f63d9]
+ The `is` routine from `Test` module now handles types that cannot be stringified and
compares them using `raku` method now [c9e94623]
+ Fix various JVM and JS backend issues [8e5b610a][2b81f978]
[12f8f1eb][5b86436c][1464b35e][a059373e][9fe471cf]
+ Fix BEGIN time `EVAL` accidentally running CHECK phasers of the outer comp unit [eeb4f43f][b874c68e]
+ Fix results o `"١٢٣".Numeric` and `"١٢٣".Int` [c2e8b22f]
+ Fix race in `PIO` method of `IO::Handle` [f33ce01c]
+ Fix `Date(now)` call [9dcbc5ff]
+ Fix `.comb(Str)` to ensure non-overlapping results [8d5a0f70]
+ Fix `Instant.raku` for Rational values [f506cc03]
+ Fix sorting of 2 element native arrays [becb85eb]
+ Make sure `push-all` does not push when exhausted when splitting using a regex [077300c5]
+ Improve error message for method calls placed after white space [4278e4c2]
+ Improve `X::Syntax::Variable::MissingInitializer` exception's error message [ee005d8b]
+ Improve `X::Method::NotFound` exception's error message to only suggest a submethod if correct [b02a7413]
+ Improve `malformed loop spec` related errors [d3c3e534]
+ Improve error message for case of too many directives in routine `sprintf` [c988f832]
+ Improve detection of a version control conflict marker to provide an error message [65e412f7]
+ Additions:
+ Add `IO::Handle.do-not-close-automatically` method [61046d76][999d04aa]
+ Add `IO::Path::Parts` class [4387f280][187312b8][e9ea048b][30ae200f]
+ Add support for `printf($format, Junction)` [110324d3]
+ Add `Supply.rotate` method [9f7c9278]
+ Add `Capture.EXIST-POS` method [6a4f79ec][b55ecdf0][3372352e]
+ Add `RAKU_REPL_OUTPUT_METHOD` environment variable which sets
the method used to stringify a value of an expression in REPL, default is `gist` [285717a0]
+ Add `:chomp` named argument to `Str.lines` similar to the same named argument of `IO::Handle.new` [1bcc5d73]
+ Efficiency:
+ Make creation of regex captures faster [15961f91][272c4636]
[ed65d733][e3fa44ab][7f47db80][0b48651c][537a6e41][f627d2c8][6f6b2dfe][219199bb]
+ Make file test methods like `.d` or `.x` faster [c821bbc5]
+ Make `Match.caps` about 35% faster [87e91def]
+ Make `Str.split(Regex)` up to 2x faster [9c74d983]
+ Make `Str.split(Regex, *%_)` up to 2x faster [a9796fe5]
+ Make `dir` routine about 15% faster [700b7432]
+ Make `Blob.join` between 4% and 11% faster [84ff64cf]
+ Make `Blob.gist` about 2x as fast [b55667ef]
+ Make `QuantHash` implementation a bit faster [4a728f2a]
+ Make `IO::Spec::Win32.basename` about 1.7x as fast [ecd06c9f]
+ Make `IO::Spec::Win32.tmpdir` about 1.8x as fast [6d427d47]
+ Make `IO::Spec::Win32.path` about 2x as fast [1a8e07c2]
+ Make `IO::Spec::Unix.path` about 3.5x as fast [8dc58abf]
+ Make `IO::Spec::Unix.basename` and `IO::Spec::Unic.extension` about 1.7x as fast [f89fad87]
+ Make `IO::Spec::Unix.tmpdir` about 1.8x as fast [a2860ead]
+ Make `WhateverCode.ACCEPTS` about 2x as fast [853e6227]
+ Make `IO::Path.sibling` about 2x as fast [a5eb1d4a]
+ Make `IO::Path.succ` and `IO::Path.pred` about 3x as fast [26b9f388][7238b094]
+ Make `IO::Path.parent` about 2.7x as fast [71cb0c56]
+ Make `IO::Path.parent(N)` about 2x as fast [f93ce875]
+ Make `IO::Path.child` about 1.4x as fast [f5b2c240]
+ Make `IO::Path.add` about 1.25x as fast [718d305b]
+ Make `IO::Path.dir` between 1.5x and 2.2x as fast [b63976a8]
[6b22c1eb][7691742a][9b9d9f64]
+ Make `IO::Path.is-absolute` a bit faster [fc88b9c2][bd7fcb28]
+ Make `IO::Path.spurt` up to 35% faster [7571f65a]
+ Make `IO::Path.slurp` up to 4.7x as fast [d03fa4b0][cde948ae][36d89cf6]
+ Make `slurp` routine up to 40% faster [f3baa389][fc3e1aea]
+ Make `spurt` routine a few % faster [da5825e6]
+ Make `Str.Numeric` about 4.3x as fast [a0e58412]
+ Make `.IO` method and `IO::Path.new` about 2x as fast [2a88990b]
+ Make `IO::Spec.curupdir` about 25% faster [6a0eaabd][16d93e26]
+ Make `"42".Int` about 4.3x faster [3ee1777a]
+ Reduce overhead of `Code.ACCEPTS(value)` by 20% [2eec62fe]
+ Make `so` and `not` routines faster [d8c26500][8a3c36f8][5c93ddac][cb69cfce]
+ Optimize symbol lookup [c5f5d7ee][dc6594d6][5d61b3d0]
+ Prevent `$*OUT` lookup for each eigenstate of Junction when calling `print` or `put` [4297cb05]
+ Make `printf` routine up to 5% faster [e46d4590]
+ Streamline variable `is` and `of` handling [5561669b]
+ Make `Hash.sort` a tiny bit faster [cd617248]
+ Various small optimizations [a9074977][b50fd8b5][65e17c40]
+ Internal:
+ Set up CI with Azure Pipelines [ae07d685][43213e49][55529de1]
[78fe25b8][42c37997][4085cfdc][5b4faed3][5587574e][fce783a1][adfa192b]
+ Fix `main-version.nqp` dependencies [b71cb3ae]
+ Improve `say`, `put`, `print`, `note` methods of `IO::Handle` [7a902b5e]
[88d98225][627b39b8][438c1d2f][483cac3a][2b38666f]
+ Simplify `Shaped1Array.reverse` [de173a18]
+ Simplify `EVAL(:check)` code [afe85110]
+ Rework part of `Match` internals [0a84aa7f]
+ Simplify `Kernel.signals` using `Signal` values [5644c709]
+ Simplify `Grammar.parse` code [f10e5bce][8be24067][1402c1d1]
+ Allow debuggers for Rakudo to be specified by environment variables [48e073e2]
+ Default to using egdb when possible in rakudo-gdb-m which covers OpenBSD developer environments [b01b0120]
+ Introduce INTERPOLATE [417a591a][777e7b65][3f9f23a9][638517da][05907227]
+ Various internal improvements to the code base [ef0c457b][e71d3cb0]
[37533ee6][b3d933b4][4afaab73][3796405b][17bf5d5f][d9defb6c][2aac854f]
[799d627a][a56e62de][c1decf2a][a69465a7][26d88b9e][44b27019][95f7d34e]
[b5bf1bf4][285717a0][21c3ef82][4103a309][a616fe57][e645ff6a][ea8c04db]
[ad9b9f4f][9942ccc0][1c94538e][9f73351b][e9f80357][a431968e][519a5726]
[4ba70b7a][496e9166][d984e7c2][bf01f845][da9943a4][150af9a2][6f459456]
[92d01836][98dec90d][792a0f00][902401b7][4d1ef59e][2bfaab6c]
+ Update `INSTALL.txt` for the latest changes [8bb0235b][e1db95e8][bd5e19e4]
+ Various small improvements to compiler's user-facing documentation [dac68b27]
[302bc8ed][736ce715][10a8f6a2][627ffd42][3d6756b3][eab17e7a][18ecb604]
[2cff6dd9][77b2f2a5][197bba98][621577b4][d09cf9d8][8a8f62ca][a79efdef]
[797c96de][8c3f013d][11afa53b][fbb0abc1]
+ Various changes to documentation related to renaming process
[6ead4ce1][142d03be][e0384ee0][0ccd4cfe][4d6031f6][d53a3b1a][de6ebd4e][b0032395]
New in 2020.05.1:
+ Fixes:
+ Fix relocatable builds on the moar backend [46648b9b]
New in 2020.05:
+ Fixes:
+ Decontainerize attribute default values [d71761e3]
+ Fix `Cool` catchers for some `Str` methods
[a91d7d79][63a72659][af8788b4]
+ Update some internal documentation to use Raku name [f2cc20c6]
+ Add `Cool.contains(Regex)` candidates [c3c1e8c9]
+ Make format of all `QuantHash`'s classes `.gist` uniform [cf01f7a2]
+ `Method` objects that don't have `*%_` in their signature, `.gist` ok [ac5f353a]
+ Fix `DateTime` default stringification when the second is 0 [95de7859]
+ Make `Blob/Buf.list` non-lazy so they can be used in hypers [6d146b56][291aa580]
+ Remove unnecessary parentheses from `Pair.raku` [35a827af]
+ `IO::CatHandle.slurp` did not accept `:bin` parameter [42c4c3fc]
+ Fixed some cases where `IO::Handle.slurp` was used without `:close` [efab398e]
+ `run` routine with `out` named parameter being a `Handle` and `merge` flag
enabled now writes both stdout and stderr to the handle [1f838791]
+ A single whenever react based on a signal is now serialized by default [8aa25bfb]
+ `&cmp-ok` subroutine of `Test` module now works with objects without support for methods [fc0f78d5]
+ Ensure meta-ops respect user-defined chain ops [ac012f18]
+ Fix exception when mixing in roles that use `is built` at runtime [4c026ab8]
+ Fix inconsistent match result when using a code block in a regex [1e0474d4]
+ Fix error message related to `nextcallee` subroutine [136087e7]
+ Fix regression in sequence operator [0a6456a4]
+ Fix reflection for . twigilled parameters [296fbcf4]
+ Fix `Parameter.raku` with `OUTER` default values [87d2ff95][2f8538ed]
+ Fix `Capture.WHICH` for subclasses of `Capture` [8808401c]
+ Fix `Capture.EXISTS-KEY` for some `Capture` values [2d18cdeb]
+ Make (1..-Inf).reverse) work as intended [3983b4f8]
+ Make (foo .. foo).reverse correctly [c588323e]
+ Properly throw an exception on attempts to add a key to an immutable `Map` [1a10b63a]
+ `INPUTRC` environment variable is now checked for a Readline config when using REPL [61a48362]
+ Add missing label support for some loop constructs [66a2250a]
+ Make `Real.sign` always return an `Int` [42a303ec]
+ Result of `reverse` called on a `List` value with holes returns a
reverse of the list with `Nil` in place of holes instead of `Mu` now [e9468d6a][ca49c153]
+ Various small JVM backend related improvements [945a4d81][b4819e7c][f6f8ac0d][25a1929c][717b3266]
+ Additions:
+ Added `docs/IN-MEMORIAM.md` to commemorate departed contributors [9b6d89b1][f9f3b662][170add26]
+ Implement support of environment variables `RAKULIB` and `RAKUDOLIB`
to eventually replace deprecated `PERL6LIB`
[b3bb0d38][cc165a05][1fd660a9][00c0dec3][be9bb4b1][30a3186b][e8f7eb56][61124c35][013b47d2]
+ Implement support for environment variables `RAKU_TEST_DIE_ON_FAIL` and `RAKU_TEST_TIMES`
to replace `PERL6_TEST_DIE_ON_FAIL` and `PERL6_TEST_TIMES` [30e7a67c][afff3b0b]
+ Show timing information when installing core modules in build process [58e61356]
+ Add multiple needles feature to `Str.index/rindex` [4cec44a3][cf02c2e9]
+ `dd` can now also handle `BOOTContext` objects [8b70bfb8]
+ `Str` now has `.Date` and `DateTime` coercers [d95d218f]
+ `Date.yyyy-mm-dd` now takes a separator parameter, defaulting to `-` [3017cfea]
+ Added `Date.dd-mm-yyyy` and `Date.mm-dd-yyyy` methods [70ac9b72]
+ `IterationBuffer` now has a `.Slip` method for easier iteration [d68fe5eb]
+ Add `is implementation-detail` trait and hide exposed internals with it
[12a33637][09c1b05a][2ae9fdf0][20c978e6][78371bb0][1d57d17d][0c36feb0]
+ Introduce `^...` and `^...^` sequence generator operators [371590fa][bbed2255]
+ Add `Date.last-date-in-month` and `Date.first-day-in-month` methods [2fb7198f][20ce5560]
+ Add a `parents` metamethod to `Metamodel::ParametricRoleGroupHOW` [8dcfa849]
+ Removals:
+ Remove undocumented `Seq.new-consumed` [0f97a7f5]
+ Move implementation detail to internals [aed658d6][b639221d][86bc3b3d]
[75f34c52][d3385e73][73c7ded2][9429728c][509a7f6e][439b8609][e152aa6a][ebb29499]
+ Turn `infix:<…>` and `infix:<…^>` into aliases [bd4e119d]
+ Build system:
+ Fix CircleCI configuration [efba9639][ffcc6198]
+ Be more robust when working with git reference directories that has spaces in path
[3ec58489][e6044dfc][2f0dd45e]
+ Move prebuild archive scripts to scripts folder [e1114208]
+ Change update-submodules.pl to not use the shell at all [0ae8b4e0]
+ Fix installation of perl6 aliases [aeb418a5]
+ Move RUN_CLEAN_TARGET_FILES to a separate script [ffad1024]
+ Fix building non-moar backends on Windows [47650ebe]
+ Fix `--nqp-home` Configure.pl parameter [94fdb3d5][59fe24bc]
+ Make timing based performance tests opt in via `RAKUDO_RUN_TIMING_TESTS` environment variable [31ffc2bd]
+ Efficiency:
+ Speed up compilation of large projects [c9092582][6956c063]
+ Make `raku -n` as fast as manual iteration with `.IO.lines` [be9c139f][5cad8fee]
+ Improve behavior of default `ThreadPoolScheduler`,
increasing efficiency of multithreaded applications [77a2201e][750abe03]
+ Make method lookup with the handles trait 13% faster in certain cases [af594925]
+ Simplify "previous setting" logic [9f4a0f1c]
+ Make creation of `Failure` objects faster [79ca396e]
+ Make default `DateTime` stringification about 12% faster [0e872356][d95141ed]
+ Make all `IO::Path` filetest methods a few percent faster [76c20d28][355b520b][bd9d7c1c]
+ Make `IO::Path.mode` about 14x as fast [a093b7fa]
+ Make `Date.yyyy-mm-dd` about 250x as fast [3017cfea][f9ecf6e8]
+ Make accessing native shaped arrays about 15x faster [80f2aebf]
+ Make `Seq.Numeric` and `Seq.Int` slightly faster [b7b9358f]
+ Make a number of traits around 2% faster [4bbe308b]
+ Make a minor optimization to a bunch of STORE methods [a4fbbfa3]
+ Make `Capture.raku` 45% faster [5baa645b][d6298edc]
+ Make `Capture.WHICH` 60% faster [688f6710]
+ Make `Capture.AT-KEY` 2% faster [22c0a53d]
+ Make `push(@a, foo)` about 20x as fast [385ab4cf]
+ Make `append(@a, foo)` about 20x as fast [b98d2e00][1e4c7361]
+ Make `unshift(@a, foo)` about 20x as fast [6541775c]
+ Make `prepend(@a, foo)` about 20x as fast [9b735b76]
+ Make `Num.Rat` faster [f987cdb0][2d1ba433]
+ Make `Date.succ` faster for days 28-31 [285da3b8]
+ Make `Str.tc` about 10% faster [5610416c]
+ Make `Supply.grab` a few percent faster [e0336d52]
+ `...` (SEQUENCE) optimizations [fc8c8281][935ee309][08545a33][d2ed7faa][fbf54e17][0fba27d7]
[8fe30b9c][58fa99b2][cf6177ef][75c6ac34][500dc662][9286def3][13559242][99cb2fa2]
+ CompUnit::* optimizations [1dbb227c][0249f23e][28bd4247][b4cdccc1][cb7be78c][638c8955]
[c9d9a096][83fed554][2cc509c0][f1cdfb18][9d1b3f63][db6d2306][7c9951cc][83ddbaba]
[196db682][551c157f][07643d37][e56eddd8][20d3713c][b4d32c97][8ac2eecc][4e3e937b]
[6c7ffbdb][17c45d89][89503809][747a35ba][dedb7444][cbd75f72][81ac37f8][f54ad732]
[fae4d45d][d55146bd][e33fe878][b712789e][e756e622][199888ab][95e8906c][5271d122]
[f48b80c3][954e545c][ef2d7d84][778ce379][1a0cc947][11b186c8][dec40dc4][d38d76d5]
[f31bd5ba][e1af7407][33fc8950][a62da301][0736bf7d][437f9f46][6e95e1b0][6723d3ad]
[24fd100d][b3f7ad2f][c29a2bf0][b07224f6][7de42d4b][7b5e1434][68cadd79][f980898f]
[bec2ac4c][d66068c1][31197cd3][2899d737][d4231b1f][c2a1ee95][6d3f1c12][dceef85f]
[859d8f04][5ea1c346][2a58eb39][3d6e8d6d][ea4bdf94][38a0eb82][2075489e][13ca677e]
+ Be better at inlining `any` Junction [76923bee]
+ Optimize symbol lookup at compunit creation time [35832540][75da4cfe]
+ Numerous small optimizations and improvements [014d493a][776ef800][87226876]
[49d1dcd3][d8366ff4][61b5e488][6793713b][2edce41b][d0e427dc][0b414c0a][88a9a36e]
[604085fb][f70d95e2][db6048e3][a66f5c29][80be7d19][a5535b2a][0d5f87cc][3c83ce75]
[3aaca26a][43c7e96f][dc7a7962][e78483ed][7bbf12d3][b9b46c0a][b0a720cb][fcda03ba]
[4339073b][cfc6cc3c][33f41966][0aa8b2a8][9cabea01][9b503292][6bb87106]
+ Internal:
+ Update Appveyor perl requirement on Windows to 5.22 [370956b9]
+ Add optional "lazy" flag to `Rakudo::Iterator.SequentialIterators` [101a80f2]
+ Give `IterationBuffer` its own `iterator` method [2b49d685]
+ Adopt MoarVM-provided `value_desc_cont` [4221f822]
+ Add `Rakudo::Iterator.AllButLast` iterator [77defa77][aa5154e0]
+ Add `Rakudo::Iterator.AllButFirst` iterator [4fe18a48]
+ Add and use `Rakudo::Iterator.ReifiedListReverse` iterator
[3ca38022][270cc275][cea0fc78][4025ca43][447b396f]
+ Add `Exception.message` stub [2e605520]
+ Make `Mu.iterator` use `Rakudo::Iterator.OneValue` [65fdea7d]
+ Make `Rakudo:Iterator.OneValue` a `PredictiveIterator` [ec50b961]
+ Rename `SlippyIterator` to `Rakudo::SlippyIterator` [50f13f03][fa3c0dba]
+ Don't use named variables between internal methods [92750571]
+ Implement `VM.request-garbage-collection` [e223be56]
+ `Rakudo::Iterator.ReifiedList` now returns a `PredictiveIterator` [063bfa05]
New in 2020.02.1:
+ Fixes:
+ Fix building on musl [979d384a9f]
New in 2020.02:
+ Changes:
+ `throws-like` sub from `Test` module now throws an exception on
Bool:D matchers [f4ad0c2e][50f084d8][5696dbd1]
+ `RAKUDOLIB` environment variable now mentioned in `--help` [f9b7de22]
+ `Supply.repeated` now has `unique` rather than `squish` semantics [05213315]
+ Fixes:
+ Fix mixing in Raku-level code to the grammar [992f1b83]
+ Fixed concurrency issue with re-checking a precomp file's dependencies [f5ce80e1]
+ Ensure Rakudo can be located in a path with Unicode characters on Windows [4c6cd035]
+ Smart matching a `Regex` no longer breaks if `$/` is not a container [b777d6ff]
+ `raku -v` now mentions `Raku` as the languages [15621b8e]
+ Fixed typecheck on bound attributes (`is built(:bind)`)
[4b64338a][89203438][8a46fca4][d75a703f]
+ Fixed location of REPL history and made the `RAKUDO_HIST`
environment variable work [c5c98dea][94713af7]
+ Fixed problem with `.rotor` when given a `Seq` [c7e0df64]
+ Restored exact stringification behaviour of `index`, `indices`, `contains` on `List` [21762929]
+ Improved invalid TypeSmiley error message [246f20db]
+ Assume 1 core is always available in case `nqp::cpucores` fails [1a7f16bc]
+ `Lock.protect` now allows return of a container [b90bebae]
+ Fixed `Parameter.raku`'s handling of default values [21b80974][2aa4d095]
+ Work around spurious error in `Lock::Async` that
could lead to crashing [d18d6e9a][28541444]
+ Fixed handle leak when chaining `Proc::Async` [cdbd60c1]
+ Restore creating a `Parameter` instance using named arguments [b2c809e4]
+ Fixed behavior of `eqv` operator on two `Seq` objects [76187b57]
+ Fixed variable declared by shape match in signature [ca78390e]
+ Fixed calling of a module sub without `&` and parentheses [e1faa704]
+ Fixed consuming of all `Channel` values which has prevented
reusing it in multiple react blocks [6fbfc4a0]
+ Fixed usage of `$^a` withing a substitution regex [50ca2ed9][adb85e44]
+ Fixed clonning of multi-dim arrays [4a954cbc]
+ Fixed `$*USER` and other dynamic variables coercion for some buggy cases [3a86272e]
+ Fixed internal compiler error on parameter re-declaration [3498c540]
+ Fixed unhandled exceptions in REPL [6bf227d0]
+ Fixed stringification if `Signature` for some edge cases [b2962b1f][56ccd132]
+ Fixed `is rw` trait application to roles [4de852e4][85660c8f]
+ Improved error message when putting a positional parameter after a named one [8dcf1a8e]
+ Improved error message when referring to a non-existent class whose name contains a `::` [ca1e51c8]
+ Improved error message for Buf stringification [539e96c2][3f637af9]
+ Made sure `Version` objects can coerce themselves [5eb113b1]
+ Various fixes for JVM backend [a08f0439][5984ce98]
+ Additions:
+ Enable user-defined chaining operators to work [d027ee0c]
+ Added `prefix` and `suffix` methods to `Parameter` class which return
textual prefix and suffix of the parameter [bd68955b]
+ Made an improperly typed default for an attribute a compile time error
[d8e859d0][05b5f81b][a8bb85a0][b6fa5f5d][13c9da97][4c0761a5][c592b80e]
+ Added `SetHash.set` and `SetHash.unset` methods [6df78ca3]
+ Added `BagHash.add` and `BagHash.remove` methods [c1b8ff60]
+ `Str.contains` now also can take a `Regex` [c3c5dae1]
+ Add `:i(ignorecase)` and `:m(ignoremark)` support to
`index`, `starts-with`, `ends-with`, `contains`, `substr-eq`, `indices`
[49aaa6ff][60b0d86a][84987742][0b2236a1][d91c773a][2e3c091c][46ef7f48]
[9f710029][19576d6c][90fc61bb][ec13c3d0][ea44c194][327c74a6][73c5a25e]
[d49a418e][5a716a39][7cb04813][0761a882][b140d7a9][c2e608b2][a6acfd0a]
[aefc851b][597288be][b32048df]
+ The `IterationBuffer` class now has a `Seq` method [c87f5df9]
+ The `Compiler` class now has a `backend` method [61b416ed]
+ The `Match` class now has a `replace-with` method
[b43c839a][1ac3c5c0][7f3e852f][cd4ab4f3][930e5182]
[488feafc][b4e00120]
+ `Cool.subst` doesn't need a replacement string anymore [dfb563af]
+ `Supply.first` now also works without a matcher [57dbc358]
+ Properly show enums, subsets and routine return type in `Pod::To::Text` output
[f60d9694][91f89435][0b0a1aad]
+ Added `iterator` implementation for `Junction` (fixes e.g. calling `^name` on a Junction) [bceaeb1a]
+ Removals:
+ Remove deprecated support for implicit `Distribution::Builder` prefix [593db2d7]
+ Build system:
+ Implement an automated pipeline to create precompiled releases
[6504be7b][d01d4b26][aaf9a93e][8c995feb]
+ Implement `--git-cache-dir` Configure.pl option.
It can save time and bandwidth when doing more than one build [322b095e][ac6c4379]
+ Add a `--build-only` option for `install-dist.p6` script [4c6c0278]
+ made building optional when installing in `install-dist.p6` script [411db10e]
+ Efficiency:
+ Simplify exception throwing in bootstrap [d18c69b2]
+ Made `Seq.list` return cached list if present [8ccfa87e]
+ Made `.List` and `.Slip` more efficient [d1d931a7]
+ Made `Str.comb(Regex)` about 1.8x as fast [9e8adb65][4df7472d]
+ Made `Str.split(Regex)` about 15% faster [931f5ae0][ba2c58a3]
+ Made `Supply.unique` a few percent faster [32bd4ed8]
+ Made internal `Match` stringification a few percent faster [495ddcc1]
+ Made various aspects of `Date` and `DateTime` faster
[076ef98b][ced67b83][b086a9f2][99b67a4b][e979f173][af8cca77]
[65d0422b][b19c4eec][fa7d3bf7][16962c84][c0e8091e][0286904b]
+ Made `Date.new(Str)` about 9.8x as fast [0408d6e4][497afdad]
+ Made `Date.new(Instant)` about 12.5x as fast [f91a1616]
+ Made `Date.today` about 4.5x as fast [1d7a9168][7a2d68f8][13444198][8876e035]
+ Made `Date.earlier` / `Date.later` between 1.5x and 5.5x as fast [4ebbddfb][5943cbfe]
+ Made `Date.succ` / `Date.pred` (used in ++ and --) about 2.8x as fast [9707384c]
+ Made `Date` integer arithmetic about 2.3x as fast [cfe2cdc5]
+ Made `Date.Str` about 250x as fast with the default formatter [67022d4c]
+ Made `DateTime.new(Str)` about 30% faster [578935e6]
+ Made `DateTime.Str` about 90x as fast with the default formatter [a331ac4d][2b7d5ffe]
+ Made `Instant.new` a few percent faster [5b97ddef][bd948ba3]
+ Made creation of a `Junction` about 3.5x as fast [470f7fd0]
+ Made `Junction.defined` between 15% and 40% faster [7a561d63][423d9ad8][6844be9d]
+ `Hash.DELETE-KEY` does one less hash lookup [9217b1c7]
+ Made various aspects of `Proc::Async` faster [0c5a7075][ca49dcbd][1db41618][356bf3f7][05916efa]
+ Made `Channel.list` around 16x faster [82bd76f1]
+ Internal:
+ Preparations for UNIX sockets support [7c7d3b96][1a5b2185][ed4226d7][ce5b5dea][62cb756d]
+ Simplify leap date updating logic [25c84b3a][bdb00749]
+ Removed perlcritic config file [5ac792ac]
+ Add support for `use BUILDPLAN class` [8fdce756]
+ Add support for nqp arrays to `dd` [255318ec]
+ Change of `IO::Path!new-from-absolute-path` internal method signature [1d946e15]
+ Correctly set up values for `$*DISTRO` initialization [22d5ffc3]
+ Change file extensions to Raku format
[61821ffa][8c242d5e][582c14a8][5e9d98c2][ea1cb407][3b8104ec]
[4677f741][ac652c0e][e5723208][deac4407][7b679604][416fd513]
[ca99c7ca][54375179][82ea3292][4ec31e2c]
+ Other internal changes related to Perl 6 -> Raku migration
[10e5390b][8fd7172c][af292586][81014e78][925e73df][dd7b4ce5]
+ Tests added [21320191][ffabf8d5]
+ Remove unused `nqp::p6decodelocaltime` as NQP has `nqp::decodelocaltime` [e2ba546f][663c427e]
+ Rename the `Junction` `$!storage` attribute to `$!eigenstates` [1a6f83c6][911cac4e]
+ Simplify fetching of the kept `Promise` sentinel in `Lock::Async` [e81e5162]
+ Simplify `Parameter.raku` implementation and improve how it handles parametert names [3f6a2a22]
+ Added `*_RUNNER_OPTS` variable to Makefiles [701c38df]
+ Make `rakudo` binaries default ones and `perl6` to be aliases,
as well as include some other renaming-related changes
[f5f6f76f][23ca6952][519a741a][536a2d28]
New in 2020.01:
+ Changes:
+ A big overhaul of role applying rules and behavior or
submethods, constructors and destructors
[38c72649][a8f61882][cddcd46a][61d3aef2][27147ed0][cbc4b839]
[3f7caf57][f242bcfa][cd74a3a7][51055d0e][9369c68e][ad92abc3]
[00fec7c3][6f0dd1ea][c9ac15cb][cb903667][d89a0c92][a08e1ff5]
[c674a1d3][0654d3e5][fffb5c9c][232382f8][b47be208][44648fbe]
[c2d5c20c][48fc44c2][7afffd61][17537ab5][b1e288c3][32e210cd]
[fc4a5a3b][1e166e41][7a94c4e0][3eb63b3d][a4ad1a8e][526d38d4]
[9e4087e1][aeb10ef5][c4f1cff0][1f620408][b83e069d][4d69fda5]
[c7a87053][13ae9298][0fb7a697][86b1ccbd][ca2cb4ab][e843fd20]
[a92ade48][bdcf3149][93d0575c][23191207][595e0ca3][2c4fa983]
[b51c1fc5][afcbeb59][eadc1582][548dea5f][1aad3481][4a962e07]
[0b6a9343][bb2600d9][5d10e91c][139d528b][f2a41613][262b6fc7]
+ Smartmatching typed Arrays against same-typed Positionals now
returns True (e.g. `Array[Str:D] ~~ Positional[Str:D]`), which
returned False before [fb55ae29]
+ Class attributes and methods are now prioritized over those from
roles [f19e2ee5][2fc87db1][4c265c7c][9357eddb][83d26ddd][9f2a2f6a][55b51a24]
+ DateTime class now accepts picosecond precision [9eef0e63]
+ Make default degree for hyper/batch utilize number of CPU cores better
[9fd29cd2][5def05c9][3f51728d]
+ `$*ARGFILES` special variable now defaults to `$*IN` if no arguments [bde10698]
+ An attempt to use methods `index`, `indiced`, `contains` on a `List`
now gives a warning [c9b02185]
+ Fixes:
+ Fix repository name lookup on windows [13c5d046]
+ Fix leaking file handles when loading modules [1c467401]
+ Fix Parameter.sigil for anonymous scalar params with default values [8c0a5d6b]
+ Fix raw slurpy onearg parameter handling in Parameter.raku [33993023]
+ Fix construction of Parameter object [68808c54]
+ Fix error when calling Parameter.usage-name on unnamed parameters [81311a20]
+ Fix hang when initializing `Int` with a type object [0e9f96ea]
+ Fix missing dependency information when precompiling large dependency trees [9fa82b80]
+ Fix off-by-one error in Supply.head(limit) [80f60c05]
+ Fix for parameterized roles not found for FQN lookup if applied to a
parent class [27b3db27]
+ Fix double execution of ENTER block in some cases [d8c7d879]
+ Fixed compile-time subroutine candidate matching when `is rw`
trait is used on JVM [12d4514a][fae105b0][73d5e74d][d81212b2][5c65a126]
+ Improved error message for invalid Pod6 leading and trailing
declarator blocks [26f63ff7]
+ Prevented `ASSIGN-POS` method on `Any` from decontainerizing,
allowing its correct overloading in roles [ed8f5141]
+ Prevent `name` MOP method from returning a `NQPMu` when no name
is set by returning an empty string instead [dabf83a2]
+ Fixed relocatability of bundled native libraries
[55b3ed56][0e4f8351]
+ Made `Range.int-bounds(from,to)` always return correct result
[8c3f2927]
+ Fixed a precompilation bug related to determining class language
version [15a55801]
+ Fix "expected IO::Handle:D but got IO::Handle" in parallel test
runs [efadff2a]
+ Fix calling a qualified method from role on JVM backend [5648a4f3]
+ Fix `roundrobin` method, cross and zip operators on a 1-element
lists [f602c02c][737dd1b1][87de5ee4]
+ Fix MoarVM::Profiler.report [734047a0]
+ Additions:
+ Add `Version` type coercer to `Str` [e3cbd32c]
+ Add `Supply.repeated` method [ff08697a]
+ Add `Supply.decode($encoding)` method [59f6a031]
+ Add `Supply.first` method [ace98531]
+ Add `Supply.collate` method [40797028]
+ Allow Supply.head(*-3) to be synonym of Supply.tail(3) [6d6318d4]
+ Add `Supply.encode($encoding = "utf8")` method [5d6c0b6b]
+ Add `Supply.comb` method [348d54df][3dd9edff][67ec4b2b]
[1331128f][07dce515][147ce39e][550bf097][a666e736][92d465db]
[622b20fb][f74e506f][f8724459]
+ Add new `is built` attribute trait
[e76f8e4d][98abd6a7][e81b0b68][826c3ead][f1f690e0][ada7c365]
[ecf8a3f4][7bbb76da][8ab53027][3f0dca4f]
+ Add `Supply.split` method
[cac64caa][4fa60ab5][c16a6484][9b29bcc4][2188f13b]
+ Add `Supply.lines(:nl-in<foo>)` method [c63d8a87]
+ Allow user to retain formatting of Pod6 leading declarator
blocks (`#|`) using RAKUDO_POD_DECL_BLOCK_USER_FORMAT env var,
instead of always collapsing them into a single string. The
latter remains the default behavior [9a4c83af]
+ Made `.perl` (now `.raku`) method call on signature of {...} display `$_`
variable from outer scope [e7c20386]
+ Add `$*RAKU` variable [a05e169e]
+ `Raku` is now allowed to be used as a language in EVAL
[1c5d010f][632c0083]
+ Add `:$match` named parameter to `comb` subroutine when called
on `Cool` object when the `$matcher` argument is a `Regex`
[dd2f072d][a9cd6404]
+ Add `log2` subroutine, which accepts `Cool` and `Numeric`
arguments, as well as its method form (`Numeric.log2`)
[f6254be1]
+ Allowed colon syntax on `$.foo` method, making `$.foo: 42` work
as well as equivalent `self.foo: 42`
does [4a1323ed][6abdf27a][0f86e49f]
+ Add `RAKU_EXCEPTIONS_HANDLER` env variable,
which is not supported as an alias for `PERL6_EXCEPTIONS_HANDLER` [90408d18]
+ Build system:
+ Renamed `PERL6_HOME` env var into `RAKUDO_HOME`, preserving
backward compatibility. Rakudo `Configure.pl` now accepts
`--rakudo-home` in addition to `--perl6-home` [7cfdd598]
+ Add `--force-rebuild` command line option. Together with
`--gen-*` options is causes corresponding components to
recompile irrelevant to their existence and version
conformance [15255b0a][2022b9cd][1945b9d2]
+ Fix `set-env.sh` script [0b8ede6c]
+ Fix `raku` symlinks relocability [a00628e0]
+ Prevent silently swallowing errors on submodule update
[db43d134]
+ Use Visual Studio 2017 in AppVeyor [7ecc5bfd][7ce49472]
+ Various tweaks and small improvements
[75056dfa][8b7d0651][52a7bab9][d7d9a2f4][470c9b7e]
+ Skip 'make test' on JVM backend [e5627b83]
+ Efficiency:
+ Make `StrDistance.new` about 30% faster [91a324a0]
+ Make `Rational.Str` 10% faster [272b658a]
+ Make `Rational.Str` a few % faster with 20% fewer allocations [73e98a6c]
+ Make `Rational.base` at least 2.5x as fast [97e7cdbd]
+ Make `Array[Int].raku` at least 5% faster [66cf6f81]
+ Make `NumStr.raku` about 60% faster [e262da1d]
+ Make `IntStr.raku` about 2x as fast [2261ef11]
+ Optimize `Pair.raku` [0d96bedc][08aec410]
+ Make `Mu.raku` about 40% faster [585227ee]
+ Optimize `Str.raku` [09e66e50][a4b62fb1]
+ Make `Str.rindex` a few percent faster [7ecc3e84]
+ Make `Str.index` a few percent faster [d5719bbe]
+ Make `Str.contains` a few percent faster [030ed10d]
+ Make `Str.substr-eq` between 1.4x and 2.4x faster [276d0967]
+ Made `Str.chomp` between 10x and 100x faster [b9c0196f]
+ Made `Str.chop(N)` between 3x and 17x faster [b569e112]
+ Made `Str.chop` between 1.8x and 30x faster [f1963623]
+ Made `Str.trim-trailing` up to 2x as fast [657d36f1]
+ Made `Str.trim` between 1.5x and 3x faster [0d0d419f]
+ Made `Str.substr(N)` between 1.5 and 3x faster [4252a8c9]
+ Made `Str.substr(N,M)` about 1.5x faster [908dd251]
+ Made `Str.substr(N, Inf)` about 15% faster [25a29987]
+ Made `Str.trim-leading` between 20x and 90x faster [3941fef0]
+ Made `Str.parse-base` between 7x (with decimal point) and 12x
(without) faster, decreased its memory pressure
[74c8017c][3ce92453][9b8ce733]
+ Made `Str.Numeric` a few percent faster and 13x faster for an
empty string [37474a7a]
+ Made Str.Int a few percent faster [b42957cc]
+ Made DateTime.new(epoch) about 20% faster [9d895914]
+ Made DateTime.new($epoch) about 50% faster [cd321254]
+ Made the decont operator about 20x faster [872cb7c0]
+ Improved efficiency of JIT for `split` subroutine [3e2cfb4d]
+ Fix regression in performance of async socket [4e9487ce]
+ Micro-optimize `set_name` MOP method [88741d94]
+ Make `lazy gather` up to 15% faster [971174f4]
+ Make emit about 30% faster [aea2a36c]
+ Make `take foo` about 20% faster [a91813d0]
+ Make `take-rw foo` about 20% faster [533a2ad9]
+ Make `take foo, bar` about 60% faster [e1aaa83c]
+ Make `take-rw foo, bar` about 60% faster [bed716be]
+ Make Supply.lines a few percent faster [0f4ef3cb]
+ Numerous micro-optimizations [f5583de4]
[05aff922][488f21a6][9c15d717][6c85e691][60a9ff62][779b0a2e]
[fc8bfc2e][11a8d57f][392af08b][33266694]
+ Internal:
+ Add mechanism for seeding typename suggestions [b291fc78]
+ Removed SUBSTR-(START|CHARS)-OOR from Rakudo::Internals, they
are now `Str` private methods [ab99c2dd]
+ Simplify `Str.substr` implementation
[99a0610a][1a891062][e3426579][f79102fa]
+ Fixed some regressions related to `v6.e.PREVIEW` usage
[6c251f27][8d03bdff][94b4ca96][466f7de4][65847f71][a59fec7f][755c8030][0d2eb1cb]
+ Reflect Raku renaming on codebase [604ca34a][186c4ce6]
+ Numerous small codebase improvements, including ones related to
renaming process
[8f30cc76][fc309419][540162c1][6a129499][1003bb93][68cee0dd]
[2652d9c5][f9e30a02][ee66a6b1][a04af365][11808277][0e2485a8]
[e8a9e07f][17d81160][d5a34f19][6bd0dd51][cfb655bc][b1a68be4]
[74aea829][80cbb3ef][83423ea0][d38cfef3][d406d834][62bd2743]
[6bf6d347][e4efccc6][6f527cea][b7888d79][7ce79f4d][5f335aa4]
[9a5579ff][784daae2][add2ec0d][abcf37f2][a51268a1][b9fa673b]
[3d432429][f06c2426][f1abe9c6][bd2e0c7a][22905592][8c4244f6]
[829f4ccb][4f48e3a5][27d1c4b5][5d8ef435][ccb92df2][8ad3d244]
[70f96d9b][276c06d3][d6970e96][3e332a1a][06292bc8][8cfa6590]
[f08cd00f][7b075188][b1e986c2][0e9792c7][43669806][7925bfd4]
[82913377][fa355a26][19b820d8][06ae7d61][86a771ac][aafa8ca2]
[25e6128c][fdffa474][77d8fa37][ed44f60a][666f95c1][56d2b23d]
[0d81a867][b7870953][37ddd598][87bc1171]
New in 2019.11:
+ SPECIAL NOTES:
+ Perl 6 is now Raku! This release comes with initial changes
required for the language rename. For more info see
[Path to Raku](https://github.com/perl6/problem-solving/blob/master/solutions/language/Path-to-Raku.md)
+ Fixes:
+ Fixed the signature of `signal` [eb88e64e][fcf1f761][a46c414f]
+ Fixed laziness propagation in KeyValue/Pair iterators [abbd1285]
+ Fixed loading of `CORE`s allowing for defining new symbols for
new language releases [56af07bf]
+ `die` and `fail` now use `$!` from the calling lexical scope if
called without arguments [56af07bf]
+ Fixed a bug in `require` with incorrect installation of imported
submodules [56af07bf]
+ Fixed outer signatures getting into string interpolation
[7cab810b]
+ Fixed segfault when using meta ops in threaded code [60cfbb39]
+ Fixed Maps to keep containers [2ee82afe][42d6e0bc][cb1fbf66]
+ Made sure `Date.new-from-daycount` takes right candidate
[ac11774d]
+ Fixed passing of formatter in operations on `Date` objects
[971d4bf6]
+ Fixed `.wrap` when used with `callsame`/`nextsame`/etc. [da65fb5b]
+ Fixed a bug when a wrapped method is called first [2e915d74]
+ Fixed `:D` check when used with `where` [58c2d649]
+ Made socket family handling portable [16607d3f][17f66039]
[39b04dc9][7e106265][d7d8d37e]
+ Fixed RakuDoc parser to allow empty config values [7c3b2572]
+ Fixed handling of `:every(Inf)` in `ThreadPoolScheduler.cue`
[74f2d3f4]
+ Fixed exception propagation with race inside race [9d1505d1]
+ Fixed Proc to return Failure with non-zero signals [89fc9f35]
[6b42d314]
+ Made sure that doing keep/break on a vow more than once throws
[c7ec96aa][0f31d353][5aa998f1][f32b86a9][b8f92d25]
+ Made sure that `Backtrace.list` lists all the frames [559c24f0]
+ Made the `Buf.write-*` methods return self [dae981e8]
+ Allowed type objects on `Buf.write-int/num/bits` [43b5e768]
[18ff9052]
+ Changes:
+ [6.e] Pseudo-packages now return `Failure` for a missing
symbol (was `Nil`) [56af07bf]
+ `EVAL` no longer wraps evaluated code into own `CORE` context but
shares the one used by the calling scope. It also means that
`use v6.X` statement is not effective inside `EVAL`s anymore
[56af07bf]
+ [6.e] Grammar now returns Failure when failing to parse
[b21a5776][daebcd26][4cdd2d10][d46a9084]
+ Additions:
+ [6.e] `LEXICAL::` pseudo-package includes all symbols visible in
the lexical scope, including dynamic symbols from caller
chain [56af07bf]
+ [6.e] `SETTING::` pseudo-package includes all symbols from all
available `CORE`s [56af07bf]
+ [6.e] `UNIT::` pseudo-package includes all lexicals visible at
unit level [56af07bf]
+ [6.e] Symbol binding is now possible for all
pseudo-packages [56af07bf]
+ Individual language-release `CORE`s are now accessible
via `CORE::v6<rev>` namespaces. [6a885908]
+ Added GB2312 and GB18030 encodings [a95cb03b][4cee2c36]
+ Added support for Unicode v12.1 [f5ef0b3c][7056a25a]
+ Build system:
+ Added `raku` and `rakudo` executables [5090206d][ab0a6d61]
+ Added `--rakudo-home` alias to `--perl6-home` [dfeb7126]
+ Added `--nqp-home` and `--perl6-home` configure options to set
custom home dirs [e16e61a8]
+ Added `RAKUDO_HOME` environment variable [dfeb7126][24abab8a]
+ Added support for `.rakumod` extension [daa16b9c]
+ Added `--silent-build` option [f9ee6043]
+ Fixed errors when building from a release archive [78c05c12]
+ Fixed installation to `/usr` [1e0220ff]
+ Fixed build in folders with spaces [93669907][abc072cd][f1170895]
[0365662e][f7f9b1fc][ceb457e1][12d9e34a]
+ Created a process for making binary releases [34273916]
[1c764404][f7b4d71f]
+ Fixed libffi include issue [98e0bb68]
+ Removed `--libdir` configure option [cdd57cd0]
+ Fixed the build to not create folders outside the build
directory [cbd1dc27]
+ Minor build system fixes [165f3fbf][3d5c5517][579ac66e]
[d487cd85][c2808b32][cfb0a267]
+ General build system cleanup [90de22f8][983c3985][4ce5b7c5]
[ff9272b1][608c6cdc][9fefa336]
+ Efficiency:
+ Made sure dependencies are not recompiled if another process
already did it [23cfe1c6]
+ Many small internal optimizations [f44c14c3][82fc4e57][af108863]
[01b86fa8][c7056f20][0dd6573a][207b825e][e424248a][57f4a4c9]
[19e075ff][c3926928][44a6a0de][696eea2d][1d4c21d0][6f5232f4]
[3697325c][6297b0e4][519cfdeb][25abfe2b][1e2b0ec5]
+ Internal:
+ NQP vars and ops will now default to int instead of num [290cd792]
[5876d38a][62e2555e][1e4d3ac4][cf6f6d92]
+ Optimizer: Don't use Int*Ref in first arg
of `if/unless/while/until` [84ee0c8c]
+ Fixed `BYTE_SUPPLY_DECODER` breaking after exceptions [91624312]
+ Reduced `.moarvm` size by replacing `die X::Foo.new` by
`X::Foo.new.throw` [6d8f4050][88dfe55c]
+ Stagestats are now shown for dependent precompilation [238f8e57]
[960e5b4a]
+ Added more tests for symbols in CORE and SETTING [5cd45f91]
[53bb28d0]
+ Added `nqp::p6client*` family of ops for finding first Raku
caller from different package and determining its language
version [86525a3b]
+ Added `nqp::p6getlexclient` op and `$*OPTIMIZER-SYMBOLS`
[cbce0edd][f8768ae5]
+ Added `Sprintf.pm6` stub for development convenience [4bd25bf5]
+ Fixed inconsistent state of NativeCall subs after
repossession [573f6a2f]
+ Fixed native subs declared in BEGIN blocks and role
bodies [e45bb341]
+ Fixed optimizer interfering with some native subs [d662912e]
+ Fixed leaking an open file handle when re-precompiling [2dd570de]
New in 2019.07.1:
+ Build system:
+ Fixed issues when installing into `/usr` [f41db044]
+ Fixed unnecessary use of `git` in release tarballs [540926bf][e18b4f3b]
+ Fixed intermittent failures in one of the performance tests [bd29d3f6]
New in 2019.07:
+ SPECIAL NOTES:
+ Upcoming releases after this one will have a different changelog format
+ Java 9 is now required for JVM backend [ea94966d][8a37b931][b1fac3d6]
+ Deprecations:
+ `--profile-filename` will be deprecated in the future. Instead, there
is a `--profile-kind` option that accepts the `instrumented` (default)
or `heap` arguments, and `--profile(-compile)` accepts a filename as an
argument [31e534cf]
+ Fixes:
+ Fixed `asinh` with large negative arguments [5281c23a]
+ Fixed laziness check on `[\+]` [8f424c9d]
+ Fixed representation of constant constraint in `Parameter.perl` [a1591fbe]
+ Fixed `$*KERNEL.bits` on Windows [5a9b720d][6e8df010]
+ Made sure creating a Failure from a Failure object throws [c9110654]
+ Made a Failure throw when it is used as something `Iterable` [23fca8f6]
[4ffb4082]
+ Fixed `CLIENT::.keys` [6599998c]
+ Fixed a crash when values are deleted from `(Set|Bag|Mix)Hash` while
iterating [a6a60705][1f066d96][63657986][c5664301][787d5bf6]
+ Fixed method cloning [d14fad4a]
+ Fixed USAGE message to not omit candidates when it shouldn't [bea51993]
[dd1c8059][2b991664]
+ Class symbols are now merged into stub when
using `require STUB:file<>` [f03c7814]
+ Fixed named parameters in `MAIN` so that a single parameter for a
`@`-sigilled parameter is now accepted [87d219ee]
+ Improved USAGE message for `@` sigilled parameters [d5faa02b]
+ Implemented `:123foo` parameter format in POD6 config [95ce37d3]
+ Fixed notification queue growth in `Channel.Supply` [d5044de2]
+ Fixed `FatRat.base` failure for large denominators [d4e1d8e7][b69964b5]
+ Allowed `:at`/`:in`/`:every` to be `Inf`/`-Inf`/`NaN`
in `ThreadPoolScheduler.cue` [cc88d63d][de76a056][9b46cb90]
[c977d6c5][1a19c660]
+ Fixed an error when `RAKUDO_EXCEPTIONS_HANDLER` is set [939ea419]
+ Fixed parsing of Unicode brackets in string interpolation [ba07a62f]
+ Fixed a lot of reproducibility issues in Rakudo and precompiled modules
[0990ecc4][50699817][e1f1eb00][7926cdd6][95af2f4c][a2ba5737][4af81c36]
[5ee341cc][5b8b9c0c][5dcc687e][aa1d1ce0][7b5a9981][a973dae6][4d44bd93]
[8ec2c43f][532d19fc][5669bc92][37b7ef7c][5c24182f][c5bc71e3][cd11b507]
[b0dd44b0]
+ Fixed an issue with multiple dimensioned indexes throwing rather than
failing [7bbbebc0][9ce87eeb]
+ Made sure the REPL creates a history file if it doesn't exist [cb691da5]
+ Made sure that `.head`/`.tail` can take `Cool` values [74c8f044]
+ Fixed bogus role conflict when the same method is added under
multiple names [e274f4a2]
+ Made sure classes doing the `QuantHash` role have `.hash` and
`.Hash` [650bbc1d]
+ Fixed `ThreadPoolScheduler.cue` when called with a `times` named
parameter [48a12551]
+ Fixed an off-by-one error in infinite range subscript [35b69f07]
+ Fixed colon parsing of adverbs [76e5ee1b][91359141][c227693a][a26e95ba]
+ Fixed `List.perl` for lazy lists [ec978780]
+ Fixed `compile_in_context` with an immediate block [b9f89954]
+ Fixed parsing of `&` in regexes [f18af941]
+ Allowed capture argument to `MAIN` to accept arguments [410ff564]
+ Made `Date.truncate-to('day')` a no-op [e943f3eb]
+ Fixed assigning `Nil` to a scalar declared with captured type [c0134d2a]
+ Fixed roles inheriting from a class failing to type check against
that class [90d81c7f][41f6f9ea]
+ Fixed type checking on curried roles [86290889][5f07a394]
[9b65b33b][9c6fa1e7]
+ Fixed type matching of parameterized roles [0023f64c]
+ Fixed type matching of roles against their "parent" classes [6c023546]
+ Fixed role exports [163f0a03]
+ Fixed assigning a native array from an `Array` with deleted
elements [ef766010]
+ Fixed number of elements when `Slip`ping an `Array` [f5f41901]
+ Fixed multi-dimensional `EXISTS-POS` for out of bounds
dimensions [ca7408e9][c9a78928]
+ Made sure sorting a 2-element list with a mapper is stable [ab56324d]
+ Made sure calling `push`/`append`/`unshift`/`prepend` as a sub with
named parameters dies [b20ccbae]
+ Made `is export` export role's group [120b8d95]
+ Fixed internal `from-json` so that it doesn't creatie nested arrays
on assign [b7e0e894]
+ Made sure `Channel.fail`, `.poll`, and `.receive` will update status
of `Channel.closed` [ef1ea42c]
+ Made some methods return `Bool`s instead of 0 or 1 [6f8442ad]
+ Made sure formatter information is kept when using operators
on `Date`/`DateTime` [34c0e892][5bdeedcb][f05b1b08]
+ Fixed `require` to do the right thing when importing sigilless
symbols [63b9e1fe]
+ Implemented a more fine-grained deconting of exported symbols [93f20871]
+ Made sure `Junction`s used in a `grep` are interpreted in `Bool`
context [86523869]
+ Fixed signatures on several multi methods in core [66d92c62]
[8969399b][9b639961]
+ Changed the value of `RAKUDO_FIRST_FLAG` to avoid collision
with `MVM_CF_FORWARDER_VALID` [bf61f597]
+ Various fixes for the JVM backend [e84f7270][a5b22387][f26fbd37]
[3e51bd4e][1aae63a6][5e8451f7][96a976b3][417fa68e][f1c80fdd]
[07b4f743][ee2297b5]
+ Various fixes for the JS backend [0ecd037b][4f8a16e0][6e650cd3]
[b0668b26][75e2fb70][9d187287][7aa72ce0][1aae63a6][f1c80fdd]
[8abfbbc4][07f6ccc3][88712199][ea795710]
+ Various improvements to produced messages [54a89b6b][6563f1ab]
[2732a286][69d88be3][1ec4f171][33e2d7f4][2f6e5fde][2e8f326d]
[e3529622][24eb4d59][8f59177a][d8a41f7e][aeba161c][a362fac5]
+ Additions:
+ Added an `X::Cannot::Map` exception [fd8a00a3][ef8899f6][a804ed0f]
+ Telemetry's `snap` now also accepts an optional
"checkpoint" message [afc9f849]
+ Telemetry: allow snap `:heap` for heap snapshots [90e18b65][0c80e067]
+ `CompUnit::Repository::FileSystem` objects can now also be
created from an `IO::Path` [e9bbefd3][b2e72d6d]
+ Added support for `use v6.e.PREVIEW` [d4afd480]
+ `EVAL` now supports a `:check` flag to just check
syntax (like `perl6 -c`) [d41f162d][5b3a8ce0]
+ Implemented support for `Kernel.free-memory` and
`Kernel.total-memory` [31671f8f]
+ Added the `CachedIterator` role for creating iterators on cached
lists [94ba19f7][a4d38539]
+ By default a parametric role group would now choose non-signatured
candidate for introspection; if there is no such candidate then
the first one would be chosen [6c023546]
+ Added `--confprog`, a way to configure the behavior of some
moarvm-internal systems like the profiler [97334711]
+ Removals:
+ Removed `:where` support for `Signature/Parameter.perl` [4cfe5ec1]
+ Removed several internal functions from `CORE::` and
`SETTING::` namespaces [45eb1c5f][ed074cd1][80185031][bf57f762]
+ Removed wrappers for no longer existing internal function
from `RESTRICTED` setting [47832fe1]
+ Removed `Compiler::build-date` [019ccf05][35423a6e]
+ Removed the timestamp in `Distro`'s desc [2d4d2ca0]
+ Removed unused `%opts` argument from
`Perl6::World::load_module_early` [bc764c2e]
+ Build system:
+ Replaced shell runner scripts with native executables
[ed9b963d][7ab19817][5366c4fa][4b461bf7][2c9c823c][e0f84e05][637ba57d]
[1853eb91][9e63da47][7846144e][787596d0][5bc62699][4459364e][bb7e6094]
[11c55fb8][34162e96][9aec73a7][134b1baa][8fac1099][c4f33fce][afc79c24]
[474997fc][ef0bc23f][c63c06e7][40cc12ac]
+ Made Rakudo relocatable on most platforms [b989882d][e27c1ec3][efa9f54e]
[171bb6eb][a11e9ab5][d76fe0ae][aed29234][f20a2b6e][98a0df6e][ab96f1a6]
[f0915e92][e00c9ea8][4ec400be][52b80c44][27adb553][ffaf3fc3][a542ec94]
[090f1c96][4a7c487b][efb35b00][1add622d][1d538977][e20dcc4e][d3d4b2e8]
[65217aaa][109ce1f4][99176243][249c730e][340f692b][5a07a7fd][8809b9ce]
[de42e719][cac95fbb][0c8f269f][96e8d4f4][3fffe283][83f6256a][65ed8249]
[3f0dfcd7][f8ced498][3a4ebf34][75e234a2][6c5be5e0]
+ Revamped the whole build system [db5becfb][c1c108fd][bafa5239][3627de6d]
[6d40290e][2c4f7c79][9ce98098][c7b3bd7a][2974076b][d54fafca][7c20b9c8]
[2c256531][0299578d][01e8b85f][55ebbacc][9ac52616][59d44cf0][8784b21c]
[cc584b72][cf33f1a0][7960454a][b619b560][86fe3a05][825b6787][38980f0d]
[4b481194][dd250027][6695777e][7d2bb288][13d65042][0adb7769][5404c2a2]
[c314acc8][8d2fade7][e91668ad][5935b1dd][f12a8c95][99c53c39][141bd4e1]
[da6d90e4][16ccbeb0][f6438b02][f2ccd6fa][49a4ddbd][1fceeada][87647236]
[9ba51a8b][f077f57c][adc8e212][4e15f205][4816277c][0acd27f4][6e14da54]
[79629bde][c86742ac][09b9e065][88218704][caae6e33][de53f43b][2b1e5ab4]
[63a1b50a][e132e476][fd0a4c21][c24b1875][b25d7c94][7467ab1d][70d481b2]
[2d7e7aa4][0522259d][3f25ba92][00362541][c8b5bd3e][6ee37f8b][b93201f5]
[136e8a43][0296102e][7fc38d55][bf1bf73c][02e78700][50034d15][e51d2adb]
[1655e73c][7f69ef1d][f15f5687][f935bd20][2f8a4d78][9dca33b6][c5830f4c]
+ Introduced `PERL6_HOME` and `NQP_HOME` which allow to control where
Perl 6 and NQP look for their installation [8055fc1b][f76db01b]
[9196db5c][2633aad6][472c8c90]
+ Fixed default target on `nmake` [44e0386a]
+ Debugging commandline arguments now work on perl6 directly [2d3a7fbf]
[e26cd449][9ce17929][8b9297de]
+ Moved `spectest.data` file into roast [ed6d91c0]
+ Rakudo NQP libs are now installed into `/share/perl6/lib` instead
of `/share/nqp/lib` [34476c3a]
+ The "perl6" Perl 6 CompUnit repo was renamed to "core" and is now
installed in its own folder [80dff595][4d5b254e]
+ Efficiency:
+ Replaced internal json parser with `JSON::Fast` code [ce24f604]
[43ff9f1c][a8cd286a]
+ Made `say(\x)` about 1.08x as fast [9770c1aa]
+ Made `Iterable (<=) Map` 2x to 3x as fast [44a6468f]
+ Made internal `to-json` functionality about 3x as fast on
MoarVM, 1.6x as fast on JVM [667c75d3][8540c94d][a6a2ba90]
[e22aeafb][ee2f2d2d][dc782575][1d4bcac3]
+ Made chained calls of `.reverse` much less memory hungry and a bit
faster [2683b3d0][e118d4ef][719eefde][8ddc2ad5]
+ ReifiedListIterator is now a PredictiveIterator [9107215a]
+ Many small internal optimizations [f0915624][29878d82][76b6416d][a9b9cdc9]
[17643d49][29ce2ce3][847783e2][165f9184][2eb93b2d][286aa29e]
[a21cf6ae][86d66ea1][3556f270][0b66e011][e316c1a1]
[7db3a06d][b559512a][25fe9b0b][3cde10a7][6df735b2][bb2c3f3a]
[5b7870bf][9dad99b8][36fa16bb][0e7c6e77][c361736e][cbb9034a]
[ce30ff2a][bed0695d][95a7866c][ffc47aae][2b0ac401][7b10a428]
+ Work in progress:
+ Re-implementation of `sprintf` [8fc53ec2][12a094ad][7201d89e]
[29107b17][972a242f][1cad10b7][4ae023c7][af7b833f][74505389]
[d000a125][dc02335d][e6cbbcc8][0f3bdfb8][e84845ad][7931fc25]
+ Providing an API to spesh logs [84144c79][4e677f04][f91de3e2]
+ Providing an API to the MoarVM profiler logic [c4fdb642][e421e638]
[f7bcbb70][b51acee6][3910042a][28ce83a0][a70a82ea][51c6e585]
[19c74bd0][9e8da747][ef7f0408][8e49a86b][4b8eb734][6e3a4b93]
[ac698cd4][26a309b2][9203ef2e][a32ad594][29966a1a][e623265e]
[13d3f0d4][161d7eef]
+ Internal:
+ Refactored `$*KERNEL` internal use of uname [ec40933d]
+ Got rid of a hack involving early return in `Test.pm6` [84b0e380]
+ Fixed `.&fail` after better return handler tracking [90722780]
+ Exposed `newmixintype` via `Metamodel::Primitives` [4702c245]
+ Fixed subclassing of `Parameter` [d31fb270]
New in 2019.03.1:
+ Fixes:
+ Fixed issues with `$*KERNEL` on Windows [190a7148][2f9d69c2]
New in 2019.03:
+ Fixes:
+ Fixed uncaught processor floating point exception on
`Rat.round` [11da0fb4]
+ Fixed `$a=~$a` if `use isms <Perl5>` is active [df748ea7]
[af868f84]
+ Fixed `.WHICH` methods that did not return `ObjAt` types
[e50f4f2e][6b401dad][67cbd993][9df09621][0d29768a][ca8d8afc]
[4b91610e][537621e4]
+ Fixed missing redeclaration of bound outer error
[23663609]
+ Made `X::TypeCheck::Assignment` and `X::Trait::Unknown` more
resilient against strange values [a6d8858e][54fe8a1a]
+ [6.d] `$_` container is no longer `is dynamic` [33f79fef]
[3d581c8d][c2e272ef]
+ Fixed thread safety of some state variables [a5b9fc2d]
+ Fixed `.^compose` calls on types stored in a scalar [ab8052dd]
+ Fixed `Parameter.perl` for slurpy parameters [d8b7fabe]
+ Fixed `$*EXECUTABLE` path construction after a `chdir` [5c14916b]
+ Fixed `$*PROGRAM` path construction after a `chdir` [cebf0cb7]
+ Fixed `.^add_attribute` calls with `Attribute` object stored in
a scalar [bf0dbbe6]
+ Fixed hang in Channel `subscribe`/`close`/`drain` [9b77459b]
+ Fixed `Inline::Perl5` failing to load when installed through the
Staging repository [1c101a04]
+ Allowed parameterization of parent class in `class` declaration
[35ecfc8e]
+ Made `IO::Path.dir` on non-existent paths throw rather than
return a `Failure` [38f4b7b4]
+ Fixed line number accuracy in backtraces [5b231e09]
+ Made regex literals capture `$/` and `$!` [8ef7c15e][ee2238f7]
[4a2124a6]
+ Fixed `«=>»` crash if RHS is a List in a Scalar container
[df96fa0f]
+ Tweaked `Range.ACCEPTS` to work better with Junctions [46409c07]
[f3f7c5cb][d904b704]
+ Made `Baggy.ACCEPTS` signature the same as `Setty.ACCEPTS`
[37ce147c]
+ Fixed "No concretization found" on role-qualified method call with
inheritance [a6c8180f]
+ Fixed use of a role by its short name in some cases [b3eb3826]
[9d6e508d]
+ Made sure that `CArray` can be `STORE`d into `Buf`/`Blob`
[ada116ef][5e5c909d][30fc5146][84ed8548][bfadefaa][05b9aa0d]