Skip to content

Commit

Permalink
Merge pull request #1628 from rakudo/post-release-2018.03
Browse files Browse the repository at this point in the history
Post release 2018.03
  • Loading branch information
zoffixznet committed Mar 19, 2018
2 parents f802c63 + 2284959 commit 19b3e52
Show file tree
Hide file tree
Showing 14 changed files with 74 additions and 66 deletions.
7 changes: 6 additions & 1 deletion src/Perl6/Grammar.nqp
Expand Up @@ -2353,6 +2353,7 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
:my %*ATTR_USAGES;
:my $*REPR;
:my $*VER;
:my $*API;
:my $*AUTH;
# Default to our scoped.
Expand Down Expand Up @@ -2386,6 +2387,9 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
'parsing package version',
-> { $*W.find_symbol(['Version']).new($adverb.value) });
}
elsif $key eq 'api' {
$*API := $adverb.value;
}
elsif $key eq 'auth' {
$*AUTH := $adverb.value;
}
Expand Down Expand Up @@ -2435,6 +2439,7 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
if @name {
%args<name> := $fullname;
%args<ver> := $*VER;
%args<api> := $*API;
%args<auth> := $*AUTH;
}
if $*REPR ne '' {
Expand Down Expand Up @@ -2472,7 +2477,7 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
return nqp::elems(@params) > 1 || !@params[0]<optional>;
}
$*PACKAGE := $package := $*W.pkg_create_mo($/, $*W.resolve_mo($/, $*PKGDECL),
:name($fullname), :ver($*VER), :auth($*AUTH), :repr($*REPR),
:name($fullname), :ver($*VER), :api($*API), :auth($*AUTH), :repr($*REPR),
:group($group), :signatured(needs_args($<signature>)));
$/.set_package($package);
}
Expand Down
3 changes: 2 additions & 1 deletion src/Perl6/Metamodel/ClassHOW.nqp
Expand Up @@ -39,10 +39,11 @@ class Perl6::Metamodel::ClassHOW
nqp::findmethod(NQPMu, 'BUILDALL')(nqp::create(self), |%named)
}

my $anon_id := 1;
method new_type(:$name, :$repr = 'P6opaque', :$ver, :$auth) {
my $metaclass := self.new();
my $obj := nqp::settypehll(nqp::newtype($metaclass, $repr), 'perl6');
$metaclass.set_name($obj, $name // "<anon|{nqp::objectid($metaclass)}>");
$metaclass.set_name($obj, $name // "<anon|{$anon_id++}>");
self.add_stash($obj);
$metaclass.set_ver($obj, $ver) if $ver;
$metaclass.set_auth($obj, $auth) if $auth;
Expand Down
3 changes: 2 additions & 1 deletion src/Perl6/Metamodel/ParametricRoleHOW.nqp
Expand Up @@ -32,10 +32,11 @@ class Perl6::Metamodel::ParametricRoleHOW
nqp::findmethod(NQPMu, 'BUILDALL')(nqp::create(self), |%named)
}

my $anon_id := 1;
method new_type(:$name, :$ver, :$auth, :$repr, :$signatured, *%extra) {
my $metarole := self.new(:signatured($signatured), :specialize_lock(NQPLock.new));
my $type := nqp::settypehll(nqp::newtype($metarole, 'Uninstantiable'), 'perl6');
$metarole.set_name($type, $name // "<anon|{nqp::objectid($metarole)}>");
$metarole.set_name($type, $name // "<anon|{$anon_id++}>");
$metarole.set_ver($type, $ver) if $ver;
$metarole.set_auth($type, $auth) if $auth;
$metarole.set_pun_repr($type, $repr) if $repr;
Expand Down
4 changes: 3 additions & 1 deletion src/Perl6/World.nqp
Expand Up @@ -1234,6 +1234,7 @@ class Perl6::World is HLL::World {
:short-name($module_name),
:from(%opts<from> // 'Perl6'),
:auth-matcher(%opts<auth> // $true),
:api-matcher(%opts<api> // $true),
:version-matcher(%opts<ver> // $true),
:source-line-number($line)
);
Expand Down Expand Up @@ -2895,12 +2896,13 @@ class Perl6::World is HLL::World {

# Creates a meta-object for a package, adds it to the root objects and
# returns the created object.
method pkg_create_mo($/, $how, :$name, :$repr, :$auth, :$ver, *%extra) {
method pkg_create_mo($/, $how, :$name, :$repr, :$auth, :$api, :$ver, *%extra) {
# Create the meta-object and add to root objects.
my %args;
if nqp::defined($name) { %args<name> := ~$name; }
if nqp::defined($repr) { %args<repr> := ~$repr; }
if nqp::defined($ver) { %args<ver> := $ver; }
if nqp::defined($api) { %args<api> := $api; }
if nqp::defined($auth) { %args<auth> := $auth; }
if nqp::existskey(%extra, 'base_type') {
%args<base_type> := %extra<base_type>;
Expand Down
20 changes: 20 additions & 0 deletions src/core/Array.pm6
Expand Up @@ -32,6 +32,22 @@ my class Array { # declared in BOOTSTRAP
nqp::push($!target,
nqp::assign(nqp::p6scalarfromdesc($!descriptor), value));
}

method append(IterationBuffer:D $buffer) {
nqp::if(
(my int $elems = nqp::elems($buffer)),
nqp::stmts(
(my int $i = -1),
nqp::while(
nqp::islt_i(($i = nqp::add_i($i,1)),$elems),
nqp::push($!target,nqp::assign(
nqp::p6scalarfromdesc($!descriptor),
nqp::atpos($buffer,$i)
))
)
)
)
}
}

my class ListReificationTarget {
Expand All @@ -45,6 +61,10 @@ my class Array { # declared in BOOTSTRAP
nqp::push($!target,
nqp::decont(value));
}

method append(IterationBuffer:D \buffer) {
nqp::splice($!target,buffer,nqp::elems($!target),0)
}
}

multi method clone(Array:D:) {
Expand Down
2 changes: 2 additions & 0 deletions src/core/CompUnit/Repository/Installation.pm6
Expand Up @@ -179,6 +179,7 @@ sub MAIN(:$name is copy, :$auth, :$ver, *@, *%) {
my %meta6 = %(
name => $dist.?name,
ver => $dist.?ver // $dist.?version,
api => $dist.?api,
auth => $dist.?auth // $dist.?authority,
provides => %sources,
files => %files,
Expand Down Expand Up @@ -439,6 +440,7 @@ sub MAIN(:$name is copy, :$auth, :$ver, *@, *%) {
})
).grep({
$_.value<auth> ~~ $spec.auth-matcher
and $_.value<api> ~~ $spec.api-matcher
and $_.value<ver> ~~ (($spec.version-matcher ~~ Bool)
?? $spec.version-matcher # fast path for matching Version.new(*)
!! Version.new($spec.version-matcher))
Expand Down
5 changes: 4 additions & 1 deletion src/core/Compiler.pm6
Expand Up @@ -3,7 +3,10 @@ class Compiler does Systemic {
has Str $.release;
has Str $!build-date;
has Str $.codename;
BEGIN my $id = $*W.handle.Str ~ '.' ~ nqp::time_n();
BEGIN my $id = nqp::sha1(
$*W.handle.Str
~ nqp::atkey(nqp::getcurhllsym('$COMPILER_CONFIG'), 'source-digest')
);

submethod BUILD (
:$!name = 'rakudo',
Expand Down
1 change: 1 addition & 0 deletions src/core/Distribution.pm6
Expand Up @@ -54,6 +54,7 @@ role Distribution {
:$!name,
:$.auth,
:$.ver,
:$.api,
:$!description,
:@!depends,
:%!provides,
Expand Down
78 changes: 20 additions & 58 deletions src/core/IO/Handle.pm6
Expand Up @@ -81,40 +81,16 @@ my class IO::Handle {
$enc = $!encoding));

$mode = nqp::if(
$mode,
nqp::if(nqp::istype($mode, Str), $mode, $mode.Str),
nqp::if(
nqp::unless(nqp::if($r, $w), $rw), # $r && $w || $rw
nqp::stmts(($create = True), 'rw'),
nqp::if(
nqp::unless(nqp::if($r, $x), $rx),
nqp::stmts(($create = $exclusive = True), 'rw'),
nqp::if(
nqp::unless(nqp::if($r, $a), $ra),
nqp::stmts(($create = $append = True), 'rw'),
nqp::if(
$r, 'ro',
nqp::if(
$w,
nqp::stmts(($create = $truncate = True), 'wo'),
nqp::if(
$x,
nqp::stmts(($create = $exclusive = True), 'wo'),
nqp::if(
$a,
nqp::stmts(($create = $append = True), 'wo'),
nqp::if(
$update, 'rw',
'ro'
),
),
),
),
),
),
),
),
);
$mode, nqp::if(nqp::istype($mode, Str), $mode, $mode.Str),
nqp::if($w && $r || $rw, nqp::stmts(($create = True), 'rw'),
nqp::if($x && $r || $rx, nqp::stmts(($create = $exclusive = True), 'rw'),
nqp::if($a && $r || $ra, nqp::stmts(($create = $append = True), 'rw'),
nqp::if($r, 'ro',
nqp::if($w, nqp::stmts(($create = $truncate = True), 'wo'),
nqp::if($x, nqp::stmts(($create = $exclusive = True), 'wo'),
nqp::if($a, nqp::stmts(($create = $append = True), 'wo'),
nqp::if($update, 'rw',
'ro')))))))));

nqp::if(
nqp::iseq_s($!path.Str, '-'),
Expand Down Expand Up @@ -178,30 +154,16 @@ my class IO::Handle {
{
CATCH { .fail }
$!PIO := nqp::open(
$!path.absolute,
nqp::concat(
nqp::if(
nqp::iseq_s($mode, 'ro'), 'r',
nqp::if(
nqp::iseq_s($mode, 'wo'), '-',
nqp::if(
nqp::iseq_s($mode, 'rw'), '+',
die("Unknown mode '$mode'")
),
),
),
nqp::concat(
nqp::if($create, 'c', ''),
nqp::concat(
nqp::if($append, 'a', ''),
nqp::concat(
nqp::if($truncate, 't', ''),
nqp::if($exclusive, 'x', ''),
),
),
)
),
);
$!path.absolute,
nqp::concat(
nqp::if(nqp::iseq_s($mode, 'ro'), 'r',
nqp::if(nqp::iseq_s($mode, 'wo'), '-',
nqp::if(nqp::iseq_s($mode, 'rw'), '+',
die "Unknown mode '$mode'"))),
nqp::concat(nqp::if($create, 'c', ''),
nqp::concat(nqp::if($append, 'a', ''),
nqp::concat(nqp::if($truncate, 't', ''),
nqp::if($exclusive, 'x', ''))))));
#?if moar
self!remember-to-close;
#?endif
Expand Down
4 changes: 4 additions & 0 deletions src/core/IterationBuffer.pm6
Expand Up @@ -19,6 +19,10 @@ my class IterationBuffer {

method push(Mu \value) { nqp::push(self, value) }

method append(IterationBuffer:D \buffer) {
nqp::splice(self,buffer,nqp::elems(self),0)
}

proto method AT-POS(|) {*}
multi method AT-POS(IterationBuffer:D: int $pos) is raw {
nqp::atpos(self, $pos)
Expand Down
2 changes: 1 addition & 1 deletion src/core/operators.pm6
Expand Up @@ -778,7 +778,7 @@ multi sub trait_mod:<is>(Routine $r, Str :$looser!) {
}

proto sub infix:<o> (&?, &?) {*}
multi sub infix:<o> () { *.self }
multi sub infix:<o> () { -> \v { v } }
multi sub infix:<o> (&f) { &f }
multi sub infix:<o> (&f, &g --> Block:D) {
my \ret = &f.count > 1
Expand Down
2 changes: 1 addition & 1 deletion tools/build/Makefile-JVM.in
Expand Up @@ -124,7 +124,7 @@ $(PERL6_C_JAR): src/Perl6/Compiler.nqp $(PERL6_O_JAR)
$(J_NQP) --module-path=blib --target=jar --output=$(PERL6_C_JAR) --encoding=utf8 \
src/Perl6/Compiler.nqp

$(PERL6_JAR): src/main.nqp $(RUNTIME_JAR) $(PERL6_G_JAR) $(PERL6_A_JAR) $(PERL6_C_JAR) $(PERL6_P_JAR)
$(PERL6_JAR): src/main.nqp $(RUNTIME_JAR) $(PERL6_G_JAR) $(PERL6_A_JAR) $(PERL6_C_JAR) $(PERL6_P_JAR) $(J_METAMODEL_SOURCES) $(J_CORE_SOURCES) $(J_CORE_D_SOURCES)
$(PERL5) tools/build/gen-version.pl $(PREFIX) $(LIBDIR) > $(J_BUILD_DIR)/main-version.nqp
$(J_NQP) $(J_GEN_CAT) src/main.nqp $(J_BUILD_DIR)/main-version.nqp > $(J_BUILD_DIR)/main.nqp
$(J_NQP) --module-path=blib --target=jar --javaclass=perl6 --output=$(PERL6_JAR) \
Expand Down
2 changes: 1 addition & 1 deletion tools/build/Makefile-Moar.in
Expand Up @@ -145,7 +145,7 @@ $(PERL6_C_MOAR): src/Perl6/Compiler.nqp $(PERL6_O_MOAR)
$(M_NQP) --module-path=blib --target=mbc --output=$(PERL6_C_MOAR) --encoding=utf8 \
src/Perl6/Compiler.nqp

$(PERL6_MOAR): src/main.nqp $(PERL6_G_MOAR) $(PERL6_A_MOAR) $(PERL6_C_MOAR) $(PERL6_P_MOAR)
$(PERL6_MOAR): src/main.nqp $(PERL6_G_MOAR) $(PERL6_A_MOAR) $(PERL6_C_MOAR) $(PERL6_P_MOAR) $(M_METAMODEL_SOURCES) $(M_CORE_SOURCES) $(M_CORE_D_SOURCES)
$(PERL5) tools/build/gen-version.pl $(PREFIX) $(LIBDIR) > $(M_BUILD_DIR)/main-version.nqp
$(M_NQP) $(M_GEN_CAT) src/main.nqp $(M_BUILD_DIR)/main-version.nqp > $(M_BUILD_DIR)/main.nqp
$(M_NQP) --module-path=blib --target=mbc --output=$(PERL6_MOAR) \
Expand Down
7 changes: 7 additions & 0 deletions tools/build/gen-version.pl
Expand Up @@ -6,6 +6,8 @@ =head1 TITLE
=cut

use Digest::SHA;
use File::Find;
use POSIX 'strftime';

my $prefix = shift;
Expand All @@ -27,6 +29,10 @@ =head1 TITLE

my $builddate = strftime('%Y-%m-%dT%H:%M:%SZ', gmtime);

my $sha = Digest::SHA->new;
find(sub { next unless /\.(nqp|pm6)\z/; $sha->addfile($_) }, "src");
my $source_digest = $sha->hexdigest;

print <<"END_VERSION";
sub hll-config(\$config) {
\$config<implementation> := 'Rakudo';
Expand All @@ -37,6 +43,7 @@ =head1 TITLE
\$config<language_version> := '6.c';
\$config<prefix> := '$prefix';
\$config<libdir> := '$libdir';
\$config<source-digest> := '$source_digest';
}
END_VERSION

Expand Down

0 comments on commit 19b3e52

Please sign in to comment.