Commit 5018e076 authored by Dominique Dumont's avatar Dominique Dumont

New upstream version 2017.08

parent 332762ee
......@@ -31,6 +31,10 @@ E: ambs@cpan.org
S: Braga, Portugal
W: http://alfarrabio.di.uminho.pt/~albie/
N: Aleks-Daniel Jakimenko-Aleksejev
U: AlexDaniel
E: alex.jakimenko@gmail.com
N: Alex Elsayed
U: eternaleye
E: eternaleye@gmail.com
......@@ -858,4 +862,8 @@ N: eater
U: the-eater
E: perl6@eaterofco.de
N: Oleksii Varianyk
U: cono
E: q@cono.org.ua
=cut
......@@ -32,7 +32,7 @@ MAIN: {
my $exe = $NQP::Configure::exe;
my %options;
GetOptions(\%options, 'help!', 'prefix=s',
GetOptions(\%options, 'help!', 'prefix=s', 'libdir=s',
'sysroot=s', 'sdkroot=s',
'backends=s', 'no-clean!',
'with-nqp=s', 'gen-nqp:s',
......@@ -57,6 +57,10 @@ MAIN: {
$options{prefix} = $default;
}
$options{prefix} = File::Spec->rel2abs($options{prefix});
unless (defined $options{libdir}) {
my $default = File::Spec->catdir($options{prefix}, 'share');
$options{libdir} = $default;
}
my $prefix = $options{'prefix'};
my @known_backends = qw/moar jvm/;
my %known_backends = map { $_, 1; } @known_backends;
......@@ -129,6 +133,7 @@ MAIN: {
}
$config{prefix} = $prefix;
$config{libdir} = $options{libdir};
$config{sdkroot} = $options{sdkroot} || '';
$config{sysroot} = $options{sysroot} || '';
$config{slash} = $slash;
......@@ -281,9 +286,10 @@ MAIN: {
$errors{moar}{'no gen-nqp'} = @errors && !defined $options{'gen-nqp'};
unless ($win) {
$config{'m_cleanups'} = " \$(M_GDB_RUNNER) \\\n \$(M_VALGRIND_RUNNER)";
$config{'m_all'} = '$(M_GDB_RUNNER) $(M_VALGRIND_RUNNER)';
$config{'m_cleanups'} = " \$(M_GDB_RUNNER) \\\n \$(M_LLDB_RUNNER) \\\n \$(M_VALGRIND_RUNNER)";
$config{'m_all'} = '$(M_GDB_RUNNER) $(M_LLDB_RUNNER) $(M_VALGRIND_RUNNER)';
$config{'m_install'} = "\t" . '$(M_RUN_PERL6) tools/build/create-moar-runner.pl "$(MOAR)" perl6.moarvm $(DESTDIR)$(PREFIX)/bin/perl6-gdb-m "$(PERL6_LANG_DIR)/runtime" "gdb" "" "$(M_LIBPATH)" "$(PERL6_LANG_DIR)/lib" "$(PERL6_LANG_DIR)/runtime"' . "\n"
. "\t" . '$(M_RUN_PERL6) tools/build/create-moar-runner.pl "$(MOAR)" perl6.moarvm $(DESTDIR)$(PREFIX)/bin/perl6-lldb-m "$(PERL6_LANG_DIR)/runtime" "lldb" "" "$(M_LIBPATH)" "$(PERL6_LANG_DIR)/lib" "$(PERL6_LANG_DIR)/runtime"' . "\n"
. "\t" . '$(M_RUN_PERL6) tools/build/create-moar-runner.pl "$(MOAR)" perl6.moarvm $(DESTDIR)$(PREFIX)/bin/perl6-valgrind-m "$(PERL6_LANG_DIR)/runtime" "valgrind" "" "$(M_LIBPATH)" "$(PERL6_LANG_DIR)/lib" "$(PERL6_LANG_DIR)/runtime"';
}
......@@ -374,6 +380,7 @@ Configure.pl - $lang Configure
General Options:
--help Show this text
--prefix=dir Install files in dir; also look for executables there
--libdir=dir Install architecture-specific files in dir; Perl6 modules included
--sdkroot=dir When given, use for searching build tools here, e.g.
nqp, java etc.
--sysroot=dir When given, use for searching runtime components here
......
......@@ -111,6 +111,8 @@ docs/announce/2017.04.3.md
docs/announce/2017.04.md
docs/announce/2017.05.md
docs/announce/2017.06.md
docs/announce/2017.07.md
docs/announce/2017.08.md
docs/architecture.html
docs/architecture.svg
docs/ChangeLog
......@@ -157,6 +159,7 @@ src/core/array_slice.pm
src/core/Associative.pm
src/core/AST.pm
src/core/asyncops.pm
src/core/atomicops.pm
src/core/Attribute.pm
src/core/Awaitable.pm
src/core/Awaiter.pm
......@@ -209,6 +212,14 @@ src/core/Deprecations.pm
src/core/Distribution.pm
src/core/Distro.pm
src/core/Duration.pm
src/core/Encoding/Builtin.pm
src/core/Encoding/Decoder/Builtin.pm
src/core/Encoding/Decoder.pm
src/core/Encoding/Encoder/Builtin.pm
src/core/Encoding/Encoder.pm
src/core/Encoding/Encoder/TranslateNewlineWrapper.pm
src/core/Encoding.pm
src/core/Encoding/Registry.pm
src/core/Enumeration.pm
src/core/Env.pm
src/core/Exception.pm
......@@ -288,7 +299,6 @@ src/core/PseudoStash.pm
src/core/QuantHash.pm
src/core/Rakudo/Internals/JSON.pm
src/core/Rakudo/Internals.pm
src/core/Rakudo/Internals/VMBackedDecoder.pm
src/core/Rakudo/Iterator.pm
src/core/Rakudo/Metaops.pm
src/core/Rakudo/QuantHash.pm
......@@ -304,10 +314,20 @@ src/core/Scalar.pm
src/core/Scheduler.pm
src/core/Semaphore.pm
src/core/Seq.pm
src/core/set_addition.pm
src/core/set_difference.pm
src/core/set_elem.pm
src/core/SetHash.pm
src/core/set_intersection.pm
src/core/set_multiply.pm
src/core/set_operators.pm
src/core/Set.pm
src/core/set_precedes.pm
src/core/set_proper_subset.pm
src/core/set_subset.pm
src/core/set_symmetric_difference.pm
src/core/Setty.pm
src/core/set_union.pm
src/core/Shaped1Array.pm
src/core/Shaped2Array.pm
src/core/Shaped3Array.pm
......@@ -448,6 +468,9 @@ t/02-rakudo/04-diag.t
t/02-rakudo/05-range-in-range.t
t/02-rakudo/06-is.t
t/02-rakudo/07-io-cathandle.t
t/02-rakudo/08-inline-native-arith.t
t/02-rakudo/08-slangs.t
t/02-rakudo/09-thread-id-after-await.t
t/02-rakudo/dump.t
t/02-rakudo/repl.t
t/02-rakudo/test-packages/CustomOps.pm6
......@@ -493,6 +516,8 @@ t/04-nativecall/19-function-pointers.c
t/04-nativecall/19-function-pointers.t
t/04-nativecall/20-concurrent.c
t/04-nativecall/20-concurrent.t
t/04-nativecall/21-callback-other-thread.c
t/04-nativecall/21-callback-other-thread.t
t/04-nativecall/CompileTestLib.pm
t/05-messages/01-errors.t
t/06-tap-harness/01-desc-backslashes.t
......
......@@ -16,7 +16,7 @@ Note that different backends implement slightly different sets of
features. For a high-level overview of implemented and missing features,
please visit [the features page on perl6.org](http://perl6.org/compilers/features).
Recent changes and feature additions are documented in the `doc/ChangeLog`
Recent changes and feature additions are documented in the `docs/ChangeLog`
text file.
## Building and Installing Rakudo
......
......@@ -53,4 +53,6 @@ install:
# Testing
test_script:
- perl Configure.pl %RAKUDO_OPTIONS% && nmake test
- perl Configure.pl %RAKUDO_OPTIONS%
- nmake test
- nmake install
This diff is collapsed.
# Announce: Rakudo Perl 6 compiler, Release #113 (2017.07)
On behalf of the Rakudo development team, I’m very happy to announce the
July 2017 release of Rakudo Perl 6 #113. Rakudo is an implementation of
Perl 6 on the Moar Virtual Machine[^1].
This release implements the 6.c version of the Perl 6 specifications.
It includes bugfixes and optimizations on top of
the 2015.12 release of Rakudo, but no new features.
Upcoming releases in 2017 will include new functionality that is not
part of the 6.c specification, available with a lexically scoped
pragma. Our goal is to ensure that anything that is tested as part of the
6.c specification will continue to work unchanged. There may be incremental
spec releases this year as well.
The tarball for this release is available from <http://rakudo.org/downloads/rakudo/>.
Please note: This announcement is not for the Rakudo Star
distribution[^2] --- it’s announcing a new release of the compiler
only. For the latest Rakudo Star release, see
<http://rakudo.org/downloads/star/>.
The changes in this release are outlined below:
New in 2017.07:
+ Deprecations:
+ Deprecate `(<+)``(>+)` ≽ in favor of `(<=)``(>=)`[35cc7c0e]
+ Fixes:
+ Fixed perl6-debug-m debugger [6d4691fb]
+ Fixed finding proper %?RESOURCES for non-lib CURFS [71ffb164]
+ Fixed Mixy (-) Mixy behaviour for missing keys [4a37de7b]
+ Fixed Mixy.Setty coercion [b31b159c]
+ Fixed .perl of empty Bag and Mix [f72c97cb]
+ Fixed crash on dotless version literals given to `use` [fe7ea124]
+ Fixed various coercion related issues with (-) [19a1caa3]
+ Fixed Baggy/Mixy (-) Any/Iterable [a2133dbc]
+ Made sure we catch lazy lists on right of (-) and (|) [62d54c75][c16334e5]
+ Fixed mix() (-) `<a b c>.Mix` [c727462c]
+ Fixed multi-dispatch with numeric literals and native types [1c0ed61a]
+ Fixed enum.Real coercion [ad9ed1cb][c226b71a]
+ Fixed (:e).Bag|Mix coercion using a Bool as a weight instead of just Int [d765f186]
+ Fixed outstanding issues with coercions done by (+) [c7922f14]
+ Fixed a data race in Proc::Async [2a8d1e7c]
+ Fixed `(&)`'s handling of lazy lists [cb06ebac]
+ Made set ops properly handle lazy lists [04746490][3058ba0d]
+ Made sure unhandled failures don't coerce QuantHashy [43fc751b]
+ Fixed sprintf octal format with precision [d7e10466]
+ Fixed 'is export' on constants assigned to routines [d067abf4]
+ Fixed Deprecation.report case where "removed" is set and "from" isn't [1b6d048b][e20817fb]
+ Fixed crash in coercers used with sigilless vars [c76d9324]
+ Made sure IO::Socket passes a list to set-line-separators [a2090821]
+ Prioritized .pm6 extension over .pm when files with both extensions exist [e1e9091f]
+ Fixed SEGV in Proc::Async.new [f6d4fbd2]
+ Fixed a few edge cases of (^) wrt QuantHash type permutations [b3916926]
+ Fixed regression in Map intialized with `<...>` having writable containers [4894a75d]
+ Fixed overflow in uniprop lookups [4f5a1e20]
+ Made improvements to segmentation of Emoji w/ GCB=Other [4f5a1e20]
+ Fixed break after ZWJ for Emoji=True + GCB=Other [4f5a1e20]
+ Removed faulty Iterable (^) Iterable candidate [4c91b522]
+ Fixed faulty Map (^) Map candidate [8afbfe6f]
+ Fixed inconsistent semantics in `<a b>.Bag (<) <a b b>.Bag` [4b8bc617]
+ Fixed unwanted de-Bool during optimization of some constructs [83e15701]
+ Fixed handling of actions in .refine_slang [c40a2122]
+ Fixed baggy semantics of Mix `(<)` Mix [a526d839]
+ Fixed semantics of `mix() (^) (a=>-42).Mix` [8d5f3324]
+ Fixed precomp deps left open when up-to-date check failed [37250ed5]
+ Properly implemented Baggy semantics for `(<=)` and `(<)` [4101581d][c6cc1a7a]
+ Fixed handling of `[(^)]` with absentee keys and Mixies correctly [0c02f93e]
+ Fixed faulty dynamic cache invalidation in continuations [d74ebd82]
+ Fixed issues with calling `infix:<⊖>` with more than 2 params [aee4a46c]
+ Fixed Proc :merge [c86090e3]
+ Made sure we call done/quit on all taps [32b72cda]
+ Ensured empty string PERL6LIB var does not get interpreted as `.` [075ddefa]
+ Fixed floating point noise in denominator of Rat literals [f6e25b54]
+ Fixed .getc and .readchars reading too much at EOF [80bbfcdd][49f555a2][f6279c34]
+ Fixed SEGV and memory leak in MoarVM that impacted parameter destructuring [f6279c34]
+ Made `exit()` coerce its argument to Int [caa9ef81]
+ Made IO::Handle.new coerce `:path` to IO [fec90956]
+ Various improvements to warnings and error reporting [bde28209][06379113][d5d3bd27]
[d39f7b9a][1dda8622][d74ebd82][88acdbb7]
+ Additions:
+ Added full Unicode 9.0 and Emoji 4.0 text segmentation support [c40a2122]
+ Implemented tentative API for custom user encoder support [d0995f68][5ab4036e]
+ Implemented experimental buffering support in IO::Handle [86e7b2bd]
+ Collation object updated to work with new unicmp_s semantics [4da85879][47678077]
+ Allow getting native descriptor in Proc::Async [82301128]
+ Re-worked Proc so :in($p1.out) will plumb file descriptors [6dae179a][abfd7d95]
+ Added plumbing stdout/stderr to stdin in Proc::Async [11b02d2c]
+ Allow for "does Rational" and "does Rational[foo]" [41ed2c03]
+ Added `%*SUB-MAIN-OPTS` [40b0169d][da6c6584]
+ Implemented baggy semantics of `(<)` and `(<=)` [75797af3]
+ Added perl6-lldb-m for debugging MoarVM on the LLVM debugger [00dc4947]
+ Efficiency:
+ Made Baggy (-) Baggy about 100x faster [2a88c20c]
+ Made [(^)] Set, Set, Set about 35x times faster [0cdd6c25]
+ Made Setty (-) Setty at least 20x faster [10f840fc]
+ Made .BUILD/.TWEAK calls 15x faster when ther are no args to .new [43c1767b]
+ Made (Bag|Mix).WHICH about 8x faster [b2d2bf59][c585f370][d8c94353]
+ Made Map (+) Map between 3x and 6x faster [495fb5f8]
+ Made Baggy eqv Baggy upto 3.5x faster [49b1b03b]
+ Made Setty.ACCEPTS(Setty) about 3.5x faster [93d81d61][48c18f58][1ab4fd80]
+ Made Map.(Bag|Mix) 2.5x to 5x faster [72e5d614]
+ Made Setty eqv Setty between 2x and 3.5x faster [25047984]
+ Made Setty (-) Map between 2x and 3x faster [9936a3be]
+ Made Setty (-) Iterable about 3.5x faster [b66d8783]
+ Made Str.subst(Str,Str) upto 3x faster [327c8409]
+ Made Setty (+) Map about 2.5x faster [201a0bfb]
+ Made Any (-) Map|Iterable about 2x faster [e4f3358f]
+ Made Mix (+) Mix about 1.5x faster [d1838461]
+ Made Baggy (-) Baggy about 1.5x faster [36823ab1]
+ Made starting of installed scripts 46% faster [92f8abe0][4693ec86]
+ Made Baggy.keys about 40% faster [c65652d8]
+ Made Iterable (+) Iterable about 20% faster [38509227]
+ Made Setty (-) Setty about 20% faster [bacaa051]
+ Made internal nqp::index op used by many string operations 16% faster [4f5a1e20]
+ Made Setty.(Bag|Mix) about 5% faster [ae4c04ce]
+ Made Str:D (elem) Map 3%-10% faster [099a84b4]
+ Made Stash.AT-KEY a few percent faster [2ce5b678]
+ Gave Nil methods a much more efficient "take any args" signature [9a2127f2]
+ Made Exception messages created only when gisting [1a4d9493]
+ Made Any.tail() use iterator's .count-only if available [9c04dfc4]
+ Reduced cases when string concatenation needs renormalization [c40a2122]
+ Improve the speed of Unicode normalization [c40a2122]
+ Made all non-Texas set operators aliases where possible [f6025eb9]
+ Simplified `infix:<(|)>(**@)` candidate [46e009bf]
+ Fixed various VM errors in CallFrame. [e2ec7bdf]
+ Improved speed of `try` when exceptions are caught [1a4d9493]
+ Assorted internal improvements to CPU/memory use [3d2a521c][5a80412c][c4e14731][19be8722]
[f03a176c][fff43337][f71cbed4][79ce1a99][640404fc][b4561229][30619e8d][9d14a724][a2a0d5c6]
[66aef589][a95c70bd][d7e10466][73c3bcc6][7f109ed7][80b3e89b][05c255c1][2fb109f1][c0eeebde]
The following people contributed to this release:
Elizabeth Mattijsen, Zoffix Znet, Jonathan Worthington, Jan-Olof Hendig,
Will "Coke" Coleda, Pawel Murias, Samantha McVey, Nick Logan,
Stefan Seifert, Timo Paulssen, Altai-man, Larry Wall, Daniel Green,
karl yerkes, seatek, Moritz Lenz, Brad Gilbert, LLFourn, Tom Browder,
Lloyd Fournier, ven, Gabor Szabo, Vynce Montgomery, Greg Donald,
Brian Duggan, Steve Mynott, Aleks-Daniel Jakimenko-Aleksejev
If you would like to contribute or find out more information, visit
<http://perl6.org>, <http://rakudo.org/how-to-help>, ask on the
<perl6-compiler@perl.org> mailing list, or ask on IRC #perl6 on freenode.
Additionally, we invite you to make a donation to The Perl Foundation
to sponsor Perl 6 development: <https://donate.perlfoundation.org/>
(put "Perl 6 Core Development Fund" in the 'Purpose' text field)
The next release of Rakudo (#114), is tentatively scheduled for 2017-08-19.
A list of the other planned release dates is available in the
“docs/release_guide.pod” file.
The development team appreciates feedback! If you’re using Rakudo, do
get back to us. Questions, comments, suggestions for improvements, cool
discoveries, incredible hacks, or any other feedback -- get in touch with
us through (the above-mentioned) mailing list or IRC channel. Enjoy!
Please note that recent releases have known issues running on the JVM.
We are working to get the JVM backend working again but do not yet have
an estimated delivery date.
[^1]: See <http://moarvm.org/>
[^2]: What’s the difference between the Rakudo compiler and the Rakudo
Star distribution?
The Rakudo compiler is a compiler for the Perl 6 language.
Not much more.
The Rakudo Star distribution is the Rakudo compiler plus a selection
of useful Perl 6 modules, a module installer, Perl 6 introductory documentation,
and other software that can be used with the Rakudo compiler to enhance its utility.
# Announce: Rakudo Perl 6 compiler, Release #114 (2017.08)
On behalf of the Rakudo development team, I’m very happy to announce the
August 2017 release of Rakudo Perl 6 #114. Rakudo is an implementation of
Perl 6 on the Moar Virtual Machine[^1].
This release implements the 6.c version of the Perl 6 specifications.
It includes bugfixes and optimizations on top of
the 2015.12 release of Rakudo.
Upcoming releases in 2017 will include new functionality that is not
part of the 6.c specification, available with a lexically scoped
pragma. Our goal is to ensure that anything that is tested as part of the
6.c specification will continue to work unchanged. There may be incremental
spec releases this year as well.
The tarball for this release is available from <http://rakudo.org/downloads/rakudo/>.
Please note: This announcement is not for the Rakudo Star
distribution[^2] — it’s announcing a new release of the compiler
only. For the latest Rakudo Star release, see
<http://rakudo.org/downloads/star/>.
The changes in this release are outlined below:
New in 2017.08:
+ Security:
+ Removed '.' and 'blib' from nqp's default module search paths [7e403724]
[a331c804][1eeb9434]
+ Fixes:
+ Fixed IO::Path.new with 0 allomorph [45cd1a97]
+ Fixed erroneous closing of standard handles in DESTROY [0e578c4f]
+ Fixed handling of already existing .moarvm files during install [02667bd8]
+ Fixed --ll-exception [559c9255]
+ Fixed native callbacks called from other threads [b81597bd][1d941643]
+ Fixes concat with combining codepoints and repetitions [1f7fa683]
+ Fixed TODO test handling inside TODOed subtests [5b77a8aa]
+ Fixed formatting of X::Numeric::DivideByZero [3f99d1d0]
+ Fixed potential concat issue [3028466c]
+ Fixed null handling in List.join [9b5cce0a]
+ Fixed handling of default values in Array [12d7d5b4][2fb8c725]
[0970ba33][ccaa0665]
+ Fixed error message for postcircumfix [ ] called with a type object [1a74a8c3]
+ Made .unique|repeated|squish return containers if applicable [51e59eeb]
+ Fixed string comparison issues [0564891e]
+ Fixed is-lazy of iterators created with R:I.FromIndexes [4db23064]
+ Fixed pull-one of iterators created with R:I.MonotonicIndexes [0c19f549]
+ Fixed compiler explosion with import statement [3e078d4d]
+ Fixed is default() trait on Attributes [a7d2ad1d][148ba7f2]
+ Made sure to stop socket reader on close [21359560]
+ Fixed missing tap closes in `whenever` [59f4123e]
+ Fixed missing tap closes in Supply [c59b9867]
+ Fixed potential memory leak of supply/react [5fcce673]
+ Fixed Mix.roll with fractional weights [a91ad2da]
+ Fixed reproducibility of RAKUDO_MODULE_DEBUG output [ec7bc25c]
+ Fixed Pair.WHICH [4f1322d0][c229022c]
+ Fixed ignoremark issues [7b81f0f9][a3b95749]
+ Fixed bad assumption about methods being closures [231cb3f5]
+ Stopped hllizing and sinking the result of .+, .* and .= method calls [2b8115f0]
+ Fixed native shaped array index to return l-value [61e1f4d5]
+ Fixed handling of test descriptions with new lines [9303a6e4]
+ Fixed wrongful escaping of `# SKIP` TAP instruction [eb529f14]
+ Fixed returned exit code when running a MAIN script with --help [fcf61f7b]
+ Various improvements to produced messages [9b31d1f5][998535ed]
[6d3ba60c][365a1d08][cff51ea1]
+ Additions:
+ Added Buf subbuf-rw method [d7af4aeb]
+ Added ACCEPTS method to Map to compare Maps [45ca084e]
+ Treat :ver<...> like a version instead of a string [247fc649]
+ Improved Version smart match with different lengths [01dbd874]
+ Added new peer/socket host/port values in async sockets [76af17a8]
+ Added .Complex coercion method to Cool [c9de2184]
+ Added atomic operations (⚛) [9b1e252a][92707fac][c67d7dd5][ca8aafc1]
+ Build system:
+ Added --libdir option to Configure.pl [e4d65ac9]
+ Fixed quotes for windows [90a0f2e0]
+ Added 'install' test target on appveyor [9c0d40ab]
+ Efficiency:
+ Made `$s (-) $s (-) $s` on a 26 elem set about 1.5x faster [d7fcb314]
+ Made .Str and .perl 2x faster, .gist 1.4x faster (on a ^100 .Set) [5b6cd406]
+ Made .Str 30% faster, .perl 2x faster (on a ^100 .Bag) [21b9a720]
+ Made string concatenation more efficient [1f7fa683]
+ Made Mixy.roll up to 2x faster [d3f260c9][e2ca1ffa]
+ Made Baggy.roll up to 1.5 faster [e548b743]
+ Made Baggy.roll(N) about 1.5x faster [752a3265]
+ Made List.roll(*) about 1.5x faster [b147217e]
+ Made .unique(:as) 3% faster [a636fa8f]
+ Made .unique(:with) about 4x faster [47d9bd9b]
+ Made .unique(:with(&[===])) about 20% faster [26789cc7]
+ Made .unique(:as,:with) about 12x faster [acf9f90d]
+ Made .repeated(:with) about 4x faster [d9056207][c3851aee]
+ Made .repeated(:as,:with) about 12x faster [a3a3d1a9][32ce4afd]
+ Made .pairup about 1.5x faster [8f73d77b]
+ Made .codes 350% faster for short strings [3c6277c7][e051dd2d][4eff4919]
+ Various improvements made by using `is default` on attributes [08f705b9]
[d0419a0f][9f5686ec][c8c5c712][40d5b27d][fb5db592][413b7116][fbdbe6fb]
+ Made Map eqv Map about 10% faster [15b2596e]
+ Decreased the cost of Supply block teardown [5d200f1e]
+ Saved 2 method calls per NativeCall call [aca4b941]
+ Speeded up NativeCall by replacing the subroutine code in setup [46ef1b5b][9a0afcbc]
+ Speeded up NativeCall subs by compiling specialized subroutine body [cd7dc4ce]
+ Internal:
+ Introduced Mixy!total-positive [f49c49bb][ccf6da9e]
+ Set debug_names of DefiniteHOW and CoercionHOW types [b22d189e][c040f1a6]
+ Simplified `infix:<(+)>(**@p)` and `infix:<(.)>(**@p)` [d82db18f][a0775e5e]
+ Ensured Scalar fetch can never return a NULL [2f5a6cd9]
+ Changed RAW-KEYS to create iterator early [710fa800]
+ Made sure Setty at least has a R:I:IterationSet type object [2dd5963c]
+ Made R:I:Mappy roles also take IterationSets [ab08bd04]
+ Made Setty.values use R:I.Mappy-values directly [250ae102]
+ Made R:I:Mappy* roles use a more abstract name for low-level hash [b7953d0d]
+ Retired R:Q:Quanty in favor of R:I:Mappy [d9055e80]
+ Introduced R:Q.RAW-VALUES-MAP [923c32e6]
+ Simplified the .Seq coercer [5d89cef9]
+ Changed Baggy to no longer use HLL hash internally [fb7ecb60]
+ Changed Supply implementation to use iteration, not recursion [ed87f998]
+ Added tests for native int as index to CArray [6cc858a0]
+ Simplified Hash creation for auto-vivification [84d052a0]
+ Various spesh, JIT, GC and other improvements [86cb1363][8bed4a67]
[9658dd98][c1e41f9f][f590863e][4561c269][947376e2][1455a03b]
+ Introduced R:I.TwoValues [20e93d89][50f0508f]
+ Fixed some issues with R:I.OneValue [3ad33469]
+ Streamlined the standard Seq methods on Pair [30584dac]
The following people contributed to this release:
Elizabeth Mattijsen, Jonathan Worthington, Zoffix Znet, Samantha McVey,
Will "Coke" Coleda, Pawel Murias, Aleks-Daniel Jakimenko-Aleksejev,
Stefan Seifert, Jan-Olof Hendig, David Warring, Nick Logan, Larry Wall,
Daniel Green, Timo Paulssen, Lucas Buchala, Christopher Bottoms,
Brian Duggan, Altai-man, Lloyd Fournier, Will Coleda, Nic Q,
M. Faiz Zakwan Zamzuri, Sam Morrison, brian d foy, Vynce Montgomery,
Patrick R. Michaud, Oleksii Varianyk, JJ Merelo, Julien Simonet
If you would like to contribute or find out more information, visit
<http://perl6.org>, <http://rakudo.org/how-to-help>, ask on the
<perl6-compiler@perl.org> mailing list, or ask on IRC #perl6 on freenode.
Additionally, we invite you to make a donation to The Perl Foundation
to sponsor Perl 6 development: <https://donate.perlfoundation.org/>
(put “Perl 6 Core Development Fund” in the ‘Purpose’ text field)
The next release of Rakudo (#115), is tentatively scheduled for 2017-09-16.
A list of the other planned release dates is available in the
“docs/release_guide.pod” file.
The development team appreciates feedback! If you’re using Rakudo, do
get back to us. Questions, comments, suggestions for improvements, cool
discoveries, incredible hacks, or any other feedback – get in touch with
us through (the above-mentioned) mailing list or IRC channel. Enjoy!
Please note that recent releases have known issues running on the JVM.
We are working to get the JVM backend working again but do not yet have
an estimated delivery date.
[^1]: See <http://moarvm.org/>
[^2]: What’s the difference between the Rakudo compiler and the Rakudo
Star distribution?
The Rakudo compiler is a compiler for the Perl 6 language.
Not much more.
The Rakudo Star distribution is the Rakudo compiler plus a selection
of useful Perl 6 modules, a module installer, Perl 6 introductory
documentation, and other software that can be used with the Rakudo
compiler to enhance its utility.
......@@ -22,13 +22,22 @@ Note that we are trying very hard to ensure there are no backward
compatibility issues post Christmas. As such, we may end up delaying
some releases to ensure any compatibility issues are resolved.
2017-06-17 Rakudo #112 (Zoffix)
2017-07-15 Rakudo #113
2017-08-19 Rakudo #114
2017-09-16 Rakudo #115
2017-09-16 Rakudo #115 (AlexDaniel)
2017-10-21 Rakudo #116
2017-11-18 Rakudo #117
2017-12-16 Rakudo #118
2018-01-20 Rakudo #119
2018-02-17 Rakudo #120
2018-03-17 Rakudo #121
2018-04-21 Rakudo #122
2018-05-19 Rakudo #123
2018-06-16 Rakudo #124
2018-07-21 Rakudo #125
2018-08-18 Rakudo #126
2018-09-15 Rakudo #127
2018-10-20 Rakudo #128
2018-11-17 Rakudo #129
2018-12-15 Rakudo #130
(More planned dates can be generated with F<tools/release-dates.pl>).
......@@ -152,7 +161,11 @@ you find any steps that are missing.
=item 6.
Ensure that a monthly MoarVM release has been completed. Those
releases are typically handled by a separate team.
releases are typically handled by a separate team. Since you are going
to perform smoke testing of the ecosystem, it is likely that MoarVM
release team will wait for your confirmation before cutting a
release. Make sure that MoarVM builds on Windows (see AppVeyor
status). It is also a good idea to look for JVM issues at this point.
=item 7.
......@@ -236,13 +249,13 @@ judgment or ask others if uncertain what to do here.
=item 14.
B<Caution>: this step removes any untracked files in F<t/spec>.
So please make a backup if you have any important data in there.
Create a tarball by entering C<make release VERSION=YYYY.MM>,
where YYYY.MM is the month for which the release is being made.
This will create a tarball file named C<rakudo-YYYY.MM.tar.gz>.
B<Caution>: this step removes any untracked files in F<t/spec>.
So please make a backup if you have any important data in there.
Because we tested the stable language spec last, above, those
are the tests that will end up in the release tarball.
......@@ -315,7 +328,7 @@ You’re done! Celebrate with the appropriate amount of fun.
=back
=head2 Development releases so far
=head2 Releases so far
Previous releases were bundled as part of monthly Parrot releases.
......@@ -430,7 +443,10 @@ Previous releases were bundled as part of monthly Parrot releases.
2017-04-18 2017.04.2 (Zoffix)
2017-04-23 2017.04.3 (Zoffix)
2017-05-20 Rakudo #111 "2017.05" (Zoffix + NeuralAnomaly)
2017-06-17 Rakudo #112 "2017.06" (Zoffix + NeuralAnomaly)
2017-07-15 Rakudo #113 "2017.07" (Zoffix + NeuralAnomaly)
2017-08-21 Rakudo #114 "2017.08" (AlexDaniel + Releasable)
=head1 COPYRIGHT
Copyright (C) 2009-2017, The Perl Foundation.
......
use nqp;
use QAST:from<NQP>;
module NativeCall {
......@@ -296,6 +297,8 @@ my role Native[Routine $r, $libname where Str|Callable|List|IO::Path|Distributio
has Mu $!rettype;
has $!cpp-name-mangler;
has Pointer $!entry-point;
has int $!arity;
has $!is-clone;
method !setup() {
$setup-lock.protect: {
......@@ -320,15 +323,101 @@ my role Native[Routine $r, $libname where Str|Callable|List|IO::Path|Distributio
$arg_info,
return_hash_for($r.signature, $r, :$!entry-point));
$!rettype := nqp::decont(map_return_type($r.returns));
$!arity = $r.signature.arity;
$!setup = 1;
}
}
my $perl6comp := nqp::getcomp("perl6");
my @stages = $perl6comp.stages;
Nil until @stages.shift eq 'optimize';
method !create-optimized-call() {
$setup-lock.protect: {
my $sc := nqp::createsc('NativeCallSub' ~ nqp::objectid(self));
nqp::setobjsc(self, $sc);
my int $idx = nqp::scobjcount($sc);
nqp::scsetobj($sc, $idx, self);
my $block := QAST::Block.new(:arity($!arity));
my $arglist := QAST::Op.new(:op<list>);
my $locals = 0;
for $r.signature.params {
my $name = $_.name || '__anonymous_param__' ~ $++;
if $_.rw and nqp::objprimspec($_.type) > 0 {
$block.push: QAST::Var.new(
:name($name),
:scope<lexicalref>,
:decl<var>,
:returns($_.type),
);
my $lowered_name = '__lowered_param__' ~ $locals++;
$block.push: QAST::Var.new(
:name($lowered_name),
:scope<local>,
:decl<param>,
QAST::Op.new(
:op<bind>,
QAST::Var.new(:scope<lexicalref>, :name($name)),
QAST::Var.new(:scope<local>, :name($lowered_name)),
),
);
$arglist.push: QAST::Var.new(:scope<lexicalref>, :name($name));
}
else {
$block.push: QAST::Var.new(
:name($name),
:scope<lexical>,
:decl<param>,
:slurpy($_.slurpy ?? 1 !! 0),
);
$arglist.push: nqp::objprimspec($_.type) == 0
?? QAST::Op.new(
:op('decont'),
QAST::Var.new(:scope<lexical>, :name($name)),
)
!! QAST::Var.new(:scope<lexical> :name($name));
}
}
my $stmts := QAST::Stmts.new(
QAST::Op.new(
:op<nativecallinvoke>,
QAST::WVal.new(:value($!rettype)),
QAST::WVal.new(:value(self)),
$arglist,
),
);
$block.push: $stmts;
my $result := $block;
$result := $perl6comp.^can($_)
?? $perl6comp."$_"($result)
!! $perl6comp.backend."$_"($result)
for @stages;
my $body := nqp::compunitmainline($result);
nqp::setcodename($body, $r.name);
nqp::bindattr(self, Code, '$!do', $body);
nqp::setinvokespec(self,
Code.HOW.invocation_attr_class(Code),
Code.HOW.invocation_attr_name(Code),
nqp::null());
}
}
method clone() {
my $clone := callsame;
nqp::bindattr($clone, $?CLASS, '$!is-clone', 1);
$clone
}
method CALL-ME(|args) {
self!setup unless $!setup;
self!setup();
self!create-optimized-call() unless
$!is-clone # Clones and original would share the invokespec but not the $!do attribute
or $*W; # Avoid issues with compiling specialized version during BEGIN time
my Mu $args := nqp::getattr(nqp::decont(args), Capture, '@!list');
if nqp::elems($args) != $