Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Properly implement $*PERL according to spec
This introduces the Perl and Compiler classes
  • Loading branch information
lizmat committed May 18, 2014
1 parent 3216e73 commit 0a6c98c
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 18 deletions.
48 changes: 48 additions & 0 deletions src/core/Compiler.pm
@@ -0,0 +1,48 @@
class Compiler does Systemic {
has Str $!release;
has DateTime $!build-date;
has Str $!codename;

submethod BUILD (
:$!name = 'rakudo',
:$!auth = 'unknown',
:$version,
:$!signature = Blob,
:$!desc = "",
:$release,
:$build-date,
:$codename,
) {
# XXX Various issues with this stuff on JVM
my Mu $compiler := nqp::getcurhllsym('$COMPILER_CONFIG');
$!version = Version.new(
$version // nqp::p6box_s(nqp::atkey($compiler, 'version')) );
$!release =
$release // nqp::p6box_s(nqp::atkey($compiler, 'release-number'));
$!build-date = DateTime.new(
$build-date // nqp::p6box_s(nqp::atkey($compiler, 'build-date')) );
$!codename =
$codename // nqp::p6box_s(nqp::atkey($compiler, 'codename'));
}
}

multi postcircumfix:<{ }> (Compiler $d, "name" ) {
DEPRECATED('$*PERL.compiler.name', :what('$*PERL<compiler><name>') );
$d.name
}
multi postcircumfix:<{ }> (Compiler $d, "ver" ) {
DEPRECATED('$*PERL.compiler.version', :what('$*PERL<compiler><ver>') );
$d.version
}
multi postcircumfix:<{ }> (Compiler $d, "release-number" ) {
DEPRECATED('$*PERL.compiler.release', :what('$*PERL<compiler><release-number') );
$d.release
}
multi postcircumfix:<{ }> (Compiler $d, "build-date" ) {
DEPRECATED('$*PERL.compiler.build-date', :what('$*PERL<compiler><build-date>') );
$d.build-date
}
multi postcircumfix:<{ }> (Compiler $d, "codename" ) {
DEPRECATED('$*PERL.compiler.codename', :what('$*PERL<compiler><codename>') );
$d.build-date
}
22 changes: 22 additions & 0 deletions src/core/Perl.pm
@@ -0,0 +1,22 @@
class Perl does Systemic {
has Compiler $.compiler;

submethod BUILD (
:$!name = 'Perl 6',
:$!auth = "unknown",
:$!version = Version.new("unknown"),
:$!signature = Blob,
:$!desc = "",
:$!compiler = Compiler.new,
) { }
}
PROCESS::<$PERL> := Perl.new;

multi postcircumfix:<{ }> (Perl $d, "name" ) {
DEPRECATED('$*PERL.name', :what('$*PERL<name>') );
$d.name
}
multi postcircumfix:<{ }> (Perl $d, "compiler" ) {
# allow this silently, as we will catch it on accessing the Compiler object
$d.compiler
}
4 changes: 2 additions & 2 deletions src/core/Systemic.pm
Expand Up @@ -10,7 +10,7 @@ role Systemic {
:$!auth = "unknown",
:$!version = Version.new("unknown"),
) {}
method gist { $!name ~ (" ($!version)" if $!version ne "vunknown") }
method gist { $!name ~ (" ($!version)" if $!version.gist ne "vunknown") }
method Str { $!name }
}

Expand All @@ -29,6 +29,6 @@ role Universal {
:$!auth = "unknown",
:$!version = Version.new("unknown"),
) {}
method gist { $!name ~ (" ($!version)" if $!version ne "vunknown") }
method gist { $!name ~ (" ($!version)" if $!version.gist ne "vunknown") }
method Str { $!name }
}
16 changes: 2 additions & 14 deletions src/core/terms.pm
Expand Up @@ -57,20 +57,6 @@ sub term:<time>() { nqp::p6box_i(nqp::time_i()) }
#?endif
nqp::bindkey(nqp::who(PROCESS), '$VM', $VM);

# XXX Various issues with this stuff on JVM
my Mu $compiler := nqp::getcurhllsym('$COMPILER_CONFIG');
my $PERL = {
name => 'rakudo',
compiler => {
name => 'rakudo',
ver => nqp::p6box_s(nqp::atkey($compiler, 'version')),
release-number => nqp::p6box_s(nqp::atkey($compiler, 'release-number')),
build-date => nqp::p6box_s(nqp::atkey($compiler, 'build-date')),
codename => nqp::p6box_s(nqp::atkey($compiler, 'codename')),
}
};
nqp::bindkey(nqp::who(PROCESS), '$PERL', $PERL);

my @INC;
#?if jvm
my $pathsep := $VM<properties><path.separator>;
Expand Down Expand Up @@ -99,6 +85,8 @@ sub term:<time>() { nqp::p6box_i(nqp::time_i()) }
#?endif
~ '/languages/perl6';

# XXX Various issues with this stuff on JVM
my Mu $compiler := nqp::getcurhllsym('$COMPILER_CONFIG'); # TEMPORARY
my %CUSTOM_LIB;
try {
my $home := %ENV<HOME> // %ENV<HOMEDRIVE> ~ %ENV<HOMEPATH>;
Expand Down
4 changes: 3 additions & 1 deletion tools/build/Makefile-JVM.in
Expand Up @@ -154,8 +154,10 @@ J_CORE_SOURCES = \
src/core/Deprecations.pm \
src/core/Systemic.pm \
src/core/Distro.pm \
src/core/VM.pm \
src/core/Kernel.pm \
src/core/VM.pm \
src/core/Compiler.pm \
src/core/Perl.pm \
src/core/Thread.pm \
src/core/Lock.pm \
src/core/Semaphore.pm \
Expand Down
2 changes: 2 additions & 0 deletions tools/build/Makefile-Moar.in
Expand Up @@ -171,6 +171,8 @@ M_CORE_SOURCES = \
src/core/Distro.pm \
src/core/Kernel.pm \
src/core/VM.pm \
src/core/Compiler.pm \
src/core/Perl.pm \
src/core/IO/Socket.pm \
src/core/IO/Socket/INET.pm \
src/core/IO/Socket/Async.pm \
Expand Down
4 changes: 3 additions & 1 deletion tools/build/Makefile-Parrot.in
Expand Up @@ -239,8 +239,10 @@ P_CORE_SOURCES = \
src/core/Deprecations.pm \
src/core/Systemic.pm \
src/core/Distro.pm \
src/core/VM.pm \
src/core/Kernel.pm \
src/core/VM.pm \
src/core/Compiler.pm \
src/core/Perl.pm \
src/core/OS.pm \
src/core/core_epilogue.pm \

Expand Down

0 comments on commit 0a6c98c

Please sign in to comment.