»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
dalek | kudo/nom: c3f565d | jnthn++ | src/Perl6/Metamodel/ParametricRole (2 files): Add missing parameterize method. Fixes bug with providing args to an imported parameteric role. |
00:07 | |
jnthn | sleep & | 00:08 | |
not_gerd | good night | ||
00:14
aindilis` left,
pmurias left,
aindilis` joined
00:29
aindilis` left
|
|||
TimToady | timotimo: note that Perl 5 supports two-level ^D | 00:29 | |
timotimo | not everything perl5 does, perl 6 has to do. but you would be in favor of having double layer \^D in perl6 too, yes | 00:37 | |
missed a question mark there. | |||
just to be sure: zipping two infinite lazy lihsts with Z shpuld be lazy, too, roght? | 00:39 | ||
colomon | timotimo: yes | 00:41 | |
rn: my @z := 1..* Z 2, 4, 8 ... *; say @z[^10] | |||
p6eval | rakudo c3f565: OUTPUT«1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 1024» | ||
..niecza v24-17-gd343a2a: OUTPUT«===SORRY!==="Z" and "..." are non-associative and require parens at /tmp/PFSGLM4AaQ line 1:------> my @z := 1..* Z 2, 4, 8 ... ⏏*; say @z[^10]Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/COR… | |||
timotimo | maybe i can figure 0ut whats wrong. probably not thpigh | ||
colomon | err, that was not al all what I had expected. | 00:42 | |
rn: my @z := 1..* Z (2, 4, 8 ... *); say @z[^10] | |||
p6eval | rakudo c3f565, niecza v24-17-gd343a2a: OUTPUT«1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 1024» | ||
colomon | rn: my @z := 1..* Z (2, 4, 8 ... *); say @z[^10].perl | ||
p6eval | rakudo c3f565, niecza v24-17-gd343a2a: OUTPUT«((1, 2), (2, 4), (3, 8), (4, 16), (5, 32), (6, 64), (7, 128), (8, 256), (9, 512), (10, 1024))» | ||
timotimo | r: for ((0 ... *) Z (5, 6, 7, 8)) -> $a, $b { say "$a, $b"; last if $b >= 6 } | 00:43 | |
p6eval | rakudo c3f565: OUTPUT«0, 51, 6» | ||
timotimo | phone keyboard no good for perl6 coding | 00:44 | |
could you turn that second lost infinite for me please/? | |||
00:45
ServerSage left
00:56
stopbit left
|
|||
timotimo | r: for ((0, 2, 4 ... *) Z (0, 1 ... *)) -> $a, $b { say "$a, $b"; last if $b >= 6 } | 00:59 | |
p6eval | rakudo c3f565: OUTPUT«(timeout)» | ||
timotimo | colomon: that's what i meant. why doesn't this behave lazily? | ||
colomon | timotimo: I believe you will find that "for" is the problem there.... | 01:01 | |
timotimo | r: map ((0, 2, 4 ... *) Z (0, 1 ... *)) -> $a, $b { say "$a, $b"; last if $b >= 6 } | ||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Two terms in a rowat /tmp/nGTrYkOf5x:1------> map ((0, 2, 4 ... *) Z (0, 1 ... *)) ⏏-> $a, $b { say "$a, $b"; last if $b >=  expecting any of: postfix infix or meta-infix infix stopper… | ||
timotimo | r: map ((0, 2, 4 ... *) Z (0, 1 ... *)), -> $a, $b { say "$a, $b"; last if $b >= 6 } | ||
p6eval | rakudo c3f565: OUTPUT«Cannot call 'map'; none of these signatures match::(&code, *@values) in block at /tmp/rCJuvWmy2j:1» | ||
colomon | n: for ((0, 2, 4 ... *) Z (0, 1 ... *)) -> $a, $b { say "$a, $b"; last if $b >= 6 } | ||
timotimo | hah, wrong way | ||
p6eval | niecza v24-17-gd343a2a: OUTPUT«0, 02, 14, 26, 38, 410, 512, 6» | ||
colomon | rn: ((0, 2, 4 ... *) Z (0, 1 ... *)).map(-> $a, $b { say "$a, $b"; last if $b >= 6 }) | 01:05 | |
p6eval | rakudo c3f565: OUTPUT«(timeout)» | ||
..niecza v24-17-gd343a2a: ( no output ) | |||
colomon | errr, that's probably too lazy. | ||
timotimo | does last even work with map? i suppose it should, but what do i know :P | ||
colomon | rn: say ((0, 2, 4 ... *) Z (0, 1 ... *)).map(-> $a, $b { say "$a, $b"; last if $b >= 6 }) | ||
p6eval | rakudo c3f565: OUTPUT«(timeout)» | 01:06 | |
..niecza v24-17-gd343a2a: OUTPUT«0, 02, 14, 26, 38, 410, 512, 6» | |||
colomon | okay, I can't explain what rakudo is doing there at all. | ||
actually, I can't explain niecza either. sigh. | 01:07 | ||
timotimo | :D | ||
why can't you explain what niecza does? :| - because the .map seems to be lazy even though in void context? (or is this non-void context because it's the "last expression in the block"?) | |||
n: ((0, 2, 4 ... *) Z (0, 1 ... *)).map(-> $a, $b { say "$a, $b"; last if $b >= 6 }); say "woop woop"; | 01:08 | ||
p6eval | niecza v24-17-gd343a2a: OUTPUT«woop woop» | ||
timotimo | n: my @l = ((0, 2, 4 ... *) Z (0, 1 ... *)).map(-> $a, $b { say "$a, $b"; last if $b >= 6 }); say "woop woop"; | ||
01:08
not_gerd left
|
|||
p6eval | niecza v24-17-gd343a2a: OUTPUT«Potential difficulties: @l is declared but not used at /tmp/t6jbcINygd line 1:------> my ⏏@l = ((0, 2, 4 ... *) Z (0, 1 ... *)).ma0, 02, 14, 26, 38, 410, 512, 6woop woop» | 01:08 | |
01:09
am0c joined
|
|||
colomon | the problem with doing map this way is mixing laziness and side effects. | 01:10 | |
timotimo | it always is, isn't it? :) | 01:11 | |
01:33
whiteknight left
|
|||
skids | r: multi sub infix:<div> (Int $a, Int $b, :$rem! is rw) { $rem = $a % $b; $a div $b; }; my $r ; say 10..12 Xdiv 3 :rem($r); say $r; | 02:12 | |
p6eval | rakudo c3f565: OUTPUT«===SORRY!===You can't adverb thatat /tmp/DTqDGs4ip7:1------> b; }; my $r ; say 10..12 Xdiv 3 :rem($r)⏏; say $r;» | ||
skids | Obviously we need a syntax for "hyper/meta adverbs" | ||
:-) | |||
02:14
PacoAir left
02:15
FROGGS_ joined
|
|||
skids | r: multi sub infix:<div> (Int $a, Int $b, :$rem! is rw) { $rem = $a % $b; $a div $b; }; my $r ; say (10..12) »div» 3 :rem($r); say $r; # Error message is less awesome than the previous error message, which was pretty awesome. | 02:16 | |
p6eval | rakudo c3f565: OUTPUT«Unexpected named parameter 'rem' passed in block at src/gen/CORE.setting:12784 in block at /tmp/IWm1Lggos5:1» | ||
02:18
FROGGS left
02:32
grondilu left
03:22
wk_ left
03:44
orafu left
03:55
atrodo left
04:21
aindilis joined
04:33
preflex left
04:35
preflex joined
04:52
Pleiades` left
04:57
Pleiades` joined
05:32
benabik joined
06:03
cognominal left
06:21
cognominal joined
06:35
am0c left
06:36
Pleiades` left
06:37
SunilJoshi joined
06:39
Pleiades` joined
07:13
_jaldhar joined
07:22
aindilis left
07:28
kaare_ joined
07:36
am0c joined
07:37
_jaldhar left
|
|||
tipdbmp | What's the syntax for the Perl 5's: $var = $could_be_false || $not_false; and $var = $if_not_defined // $default_value;? Or in other words do the || and // operators exist / work in Perl 6? | 07:46 | |
PerlJam | yes | 07:47 | |
tipdbmp | r: say 0 || 1; | ||
p6eval | rakudo c3f565: OUTPUT«1» | ||
tipdbmp | r: my $var = '' || 4; say $var; | 07:48 | |
p6eval | rakudo c3f565: OUTPUT«4» | ||
tipdbmp | I asked because I was getting: "Undefined routine '&prefix:<|>'", I guess I have an old perl6. | 07:49 | |
PerlJam | tipdbmp: I can imagine some weird spacing issue might cause that error | 07:53 | |
tipdbmp | perl6 -e 'my $var = '' || 4; say $var;' # This gives me the above error. | 07:56 | |
moritz | tipdbmp: because the shell swallows the '' | ||
tipdbmp | Oh... | ||
Silly me..., tnx. | 07:57 | ||
07:58
am0c left
08:06
kaare_ left
08:29
FROGGS_ is now known as FROGGS
|
|||
FROGGS | morning | 08:29 | |
phenny | FROGGS: 11 Jan 22:33Z <jnthn> tell FROGGS Multi merge stuff is merged. Thanks! | ||
FROGGS | phenny: tell jnthn: thanks! ;o) \o/ | 08:30 | |
phenny | FROGGS: I'll pass that on when jnthn is around. | ||
08:41
SunilJoshi left
08:47
SunilJoshi joined
09:03
SunilJoshi left
|
|||
dalek | Heuristic branch merge: pushed 23 commits to rakudo/froggs_multibyte by FROGGS | 09:04 | |
09:05
GlitchMr joined
09:15
Chillance joined
|
|||
moritz | r: sub f { @_ = (1, 2) }; f() | 09:15 | |
p6eval | rakudo c3f565: ( no output ) | ||
09:16
cognominal left
|
|||
moritz | r: sub f($x is rw = 42) { } | 09:25 | |
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Cannot use 'is rw' on an optional parameterat /tmp/H21InfjDep:1------> » | ||
moritz | r: try eval q[ sub f($x is rw = 42) { }]; say $!.perl | ||
p6eval | rakudo c3f565: OUTPUT«X::Comp::AdHoc.new(filename => "eval_0", line => 1, column => Any, modules => Array.new(), is-compile-time => Bool::True, pre => Any, post => Any, highexpect => Array.new(), payload => "Cannot use 'is rw' on an optional parameter")» | ||
moritz | r: multi a($) { }; say &a | 09:29 | |
p6eval | rakudo c3f565: OUTPUT«sub a(Mu ) { ... }» | ||
moritz | r: multi a($) { }; &a | ||
p6eval | rakudo c3f565: ( no output ) | ||
moritz | r: multi a($) { } &a | 09:31 | |
p6eval | rakudo c3f565: OUTPUT«===SORRY!===CHECK FAILED:Calling 'a' will never work with no arguments (line 2) Expected any of: :()» | ||
moritz | that's very weird | ||
moritz submits rakudobug | |||
r: multi a($) { }; &a | 09:33 | ||
p6eval | rakudo c3f565: ( no output ) | ||
FROGGS | r: sub a($) { } &a | ||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===CHECK FAILED:Calling 'a' will never work with no arguments (lines 2, 2) Expected: :()» | ||
09:36
SamuraiJack joined
|
|||
moritz | oh, i guess it's just a parse error | 09:37 | |
it parses it as (multi a($) { }) & a | |||
09:41
rhr joined
09:42
Psyche^ joined
|
|||
moritz unsubmits rakudobug | 09:44 | ||
that one is already known | |||
dalek | ast: aedecf7 | moritz++ | S06-advanced/wrap.t: failing test for RT #77472, wrap on a multi |
||
09:46
Patterner left,
Psyche^ is now known as Patterner
09:54
SamuraiJack left
09:57
not_gerd joined
|
|||
not_gerd | hello, #perl6 | 09:57 | |
jnthn, masak: macro serialization fail gist.github.com/4517030 | 09:58 | ||
09:58
SamuraiJack joined
10:00
SamuraiJack left
10:01
SamuraiJack joined
|
|||
moritz | I think declarations in quasis are known to be not yet implemented | 10:02 | |
not_gerd | moritz: macro Foo { quasi { my $foo = 42 } } | 10:04 | |
^ does compile | |||
moritz | oh | ||
just precompilation is affected | 10:05 | ||
not_gerd | (didn't check if it actually works though ;)) | ||
moritz | r: my @a; @a.push(0) and say 42 | 10:22 | |
p6eval | rakudo c3f565: OUTPUT«42» | ||
10:23
SunilJoshi joined
10:28
PacoAir joined
|
|||
dalek | ast: b1cba00 | moritz++ | S04-declarations/my.t: RT #102650: scoping bug in statement-modifying for-loops |
10:33 | |
10:38
spider-mario joined
|
|||
moritz | today's finding: I'd love to be able to use identifiers in regexes without quoting | 10:42 | |
nr: /foo-bar/ | |||
p6eval | niecza v24-17-gd343a2a: OUTPUT«===SORRY!===Unrecognized regex metacharacter - (must be quoted to match literally) at /tmp/cQwijFVGB7 line 1:------> /foo-⏏bar/Unable to parse regex; couldn't find final '/' at /tmp/cQwijFVGB7 line 1:------> … | ||
..rakudo c3f565: OUTPUT«===SORRY!===Unrecognized regex metacharacter - (must be quoted to match literally)at /tmp/3pu5he0TuT:1------> /foo⏏-bar/Unable to parse regex; couldn't find final '/'at /tmp/3pu5he0TuT:1------> /foo-⏏bar/[0… | |||
masak | 'mornin', #perl6 | 10:43 | |
tadzik | hello masak | 10:44 | |
moritz | good antenoon, masak | ||
dalek | ast: faa03a3 | moritz++ | / (2 files): RT #103034: correct file names in backtraces |
10:46 | |
moritz | masak: though I've learned that the correct English word for antenoon is "forenoon" | 10:47 | |
that was a fun test to write | |||
timotimo | apparently, wanting to draft/write the blog post on void context was not such a good idea. it would probably need someone who knows a lot more about that topic to do one. | ||
masak | moritz: "forenoon", I like. | 10:48 | |
n: package Foo; sub ucfirst($thing) is export(:DEFAULT) { 'overridden ucfirst' } | 10:50 | ||
p6eval | niecza v24-17-gd343a2a: OUTPUT«===SORRY!===Semicolon form of package definition indicates a Perl 5 module; unfortunately, STD doesn't know how to parse Perl 5 code yet at /tmp/DFDeCnHYp0 line 1:------> package Foo⏏; sub ucfirst($thing) is export(:DE… | ||
masak | oh :) | ||
n: module Foo; sub ucfirst($thing) is export(:DEFAULT) { 'overridden ucfirst' } | |||
p6eval | niecza v24-17-gd343a2a: OUTPUT«===SORRY!===Export tags NYI at /tmp/tIzsO9lzpQ line 1:------> sub ucfirst($thing) is export(:DEFAULT) ⏏{ 'overridden ucfirst' }Potential difficulties: $thing is declared but not used at /tmp/tIzsO9lzpQ line 1:--… | ||
masak | oh, it's $thing that's declared but not used. | 10:51 | |
I honestly think that warning is superfluous for parameters. | |||
there are many cases where I declare a parameter and then not bother to use it. | 10:52 | ||
could be multis, could be for consistency with other signatures. | |||
10:52
PacoAir left
|
|||
masak | and we're discouraging giving variables self-explanatory names. | 10:52 | |
10:52
PacoAir joined
|
|||
masak | "oh, that variable is called $explanation and it's not used inside the function -- interesting" | 10:53 | |
instead of "huh, wonder why we accept a $ here, better look elsewhere in the code for clues..." | |||
timotimo | put "shift" all over the place in the method! in loops and conditional code! | 10:54 | |
masak | :) | ||
no use lingering on old sins. | |||
CPAN has had function/method signatures for ages. | 10:55 | ||
10:57
Tzimisces joined
|
|||
masak | Tzimisces: welcome! | 10:59 | |
Tzimisces | masak: thanks. Bit new to IRC I'm afraid. | 11:12 | |
moritz | we all started out as newbies :-) | ||
Tzimisces | That's a comforting thing to know :) | 11:13 | |
I actually wondered how the "Perl 6" thing was going - having picked up "Perl 6 and Parrot Essentials" yesterday. | 11:15 | ||
moritz | well, the first thing note is that "Perl 6 and Parrot Essentials" is hopelessly out of date | 11:16 | |
Tzimisces | .. having partially read that some years ago. | ||
I was afraid that that would be the case :) | |||
moritz | it gives some good ideas about the underlying design principles, but most of the hard facts and the syntax is subtly to blatantly out of date | ||
as for how it goes: we now have two compilers (Rakudo and Niecza) that have monthly releases | 11:17 | ||
and there's a group of hackers in here which use them on a daily basis | |||
reports of production usage are slowly trickling in | |||
I find both compilers quite usable, though slow | |||
oh, and you can ask them to execute code here on IRC | 11:18 | ||
rn: my $name = 'Tzimisces'; greet($name); sub greet($x) { say "Hello, $x" } | |||
p6eval | rakudo c3f565, niecza v24-17-gd343a2a: OUTPUT«Hello, Tzimisces» | ||
Tzimisces | Nice :) | ||
moritz | sometimes they produce different output | ||
Tzimisces | I picked up Rakudo today. Not too much modules coming along with it. I assume they should be picked up using, ehm, Panda. | ||
moritz | rn: say rand | 11:19 | |
p6eval | niecza v24-17-gd343a2a: OUTPUT«0.020615898547980887» | ||
..rakudo c3f565: OUTPUT«0.307264634016068» | |||
moritz | right | ||
rakudo star comes with a few useful modules, and panda | |||
Tzimisces | saw that. Is there any coordinated development to get to something like a "standard Perl 5 installation", with modules, manual pages? | 11:21 | |
not_gerd | r: my @foo = bar => 42, <a b>; say \(@foo).perl | 11:22 | |
p6eval | rakudo c3f565: OUTPUT«Capture.new( list => ("bar" => 42, "a", "b").list, hash => EnumMap.new())» | ||
not_gerd | ^^ how do I get bar into hash? | ||
moritz | r: say (bar => 42, <a b>).perl | 11:26 | |
p6eval | rakudo c3f565: OUTPUT«("bar" => 42, ("a", "b"))» | ||
moritz | r: my @foo = bar => 42, <a b>; say \(|@foo).perl | 11:27 | |
p6eval | rakudo c3f565: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&prefix:<|>' called (lines 1, 1)» | ||
moritz | not_gerd: I don't think so. The distinction if a parameter is named is syntactic. By the tiem you flatten it into an array, that information is gone. | 11:28 | |
s/so/you can/ | |||
not_gerd | moritz: that's pretty sad as it makes signatures far less useful for introspecting data structures :( | ||
moritz | Tzimisces: star is such an effort; but mostly we still focus our efforts on the compiler, so star gets less attention | 11:29 | |
not_gerd: maybe there is such a way, and I simply don't know about it | |||
or maybe there should be a way. | 11:30 | ||
Tzimisces | okay, thanks. I'll give it a try then :) | 11:31 | |
dalek | ast: 7ec93a8 | moritz++ | S12-attributes/instance.t: RT #107232: shadowing an attribute with a lexical |
11:35 | |
ast: 3582496 | moritz++ | S32-list/uniq.t: Test that List.uniq has === semantics |
11:38 | ||
11:48
bitonic joined
|
|||
jnthn | afternoon o/ | 11:50 | |
phenny | jnthn: 08:29Z <FROGGS> tell jnthn thanks! ;o) \o/ | ||
not_gerd | jnthn: \o | 11:51 | |
jnthn: macro serialization error with blocks: gist.github.com/4517030 | |||
jnthn | not_gerd: Declarations inside quasis are NYI, and it's quite probably the serialization error goes away once it is. | 11:53 | |
not_gerd | moritz already mentioned that, but if you replace { 42 } with 42, it does at least compile | 11:54 | |
11:55
kaare_ joined
12:03
Tzimisces left
|
|||
moritz | r: macro a { quasi { my $x } }; { a }; { a } | 12:08 | |
p6eval | rakudo c3f565: OUTPUT«Null PMC access in find_method('sink') in block at /tmp/iaYUBrazBT:1» | ||
moritz | r: macro a { quasi { my $x } }; { a }; | ||
p6eval | rakudo c3f565: OUTPUT«Null PMC access in find_method('sink')current instr.: 'MAIN' pc 451 (src/gen/perl6.pir:166) (src/main.nqp src/gen/main-version.nqp:41)called from Sub '' pc 97 (src/gen/perl6.pir:60) (src/main.nqp src/gen/main-version.nqp:1)» | ||
moritz | it's rpetty easy to make a NYI-feature blow up | ||
12:10
SunilJoshi left
|
|||
jnthn | nqp: say(+'abc') | 12:20 | |
p6eval | nqp: OUTPUT«0» | ||
12:30
SunilJoshi joined
|
|||
FROGGS | r: say +'abc' | 12:34 | |
p6eval | rakudo c3f565: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏abc' (indicated by ⏏) in method gist at src/gen/CORE.setting:10404 in sub say at src/gen/CORE.setting:7559 in block at /tmp/fcFqUbjg_r:1» | ||
dalek | p-jvm-prep: 45359ee | jnthn++ | t/qast_core.t: Tests for coercion between int/num/str. |
12:38 | |
p-jvm-prep: 2214f2e | jnthn++ | / (2 files): Implement coercion between int/num/str. |
|||
12:51
SunilJoshi left
12:54
SunilJoshi joined
12:56
cognominal joined
12:57
MayDaniel joined
13:00
erkan left
|
|||
dalek | p-jvm-prep: 68630b7 | jnthn++ | t/qast_core.t: Tests for automatic box/unbox. |
13:09 | |
p-jvm-prep: 43ac52b | jnthn++ | lib/QAST/JASTCompiler.nqp: Implement box/unbox. Includes the HLL override support, plus some default HLL-less handling that just calls box/unbox ops with boot types. |
|||
13:19
not_gerd left
13:37
nyuszika7h left
13:42
erkan joined
13:44
Rotwang joined
|
|||
Rotwang | hi, is there any editor with perl6 syntax highlighting? | 13:44 | |
except padre | 13:45 | ||
13:48
nyuszika7h joined
|
|||
timotimo | vim has perl6 highlighting | 14:08 | |
not terribly many bugs, too ;) | |||
sometimes "advanced" quoting and complicated regexes in grammars can make it misbehave, though | |||
Rotwang | timotimo: except padre and vim [; | 14:09 | |
I'm using medit atm, but I use it with perl5 syntax highlighting | 14:11 | ||
14:14
wk joined,
wk is now known as Guest11514
14:21
PacoAir left
|
|||
tadzik | there's also hilighting for emacs :) | 14:24 | |
and hoelzro is writing something related to something called "pygments", so it'll probably work with some python-powered tools | |||
FROGGS | I'd like to see a syntax highligther for scintilla engine... any volunteers? :P | 14:25 | |
tadzik: that will work for the github pages too then | |||
tadzik | yep | ||
FROGGS | the pygments stuff | ||
Rotwang | nice | 14:26 | |
FROGGS | a github IDE would be awesome, so that you have their look&feel, and that you can do everything from within one tool | 14:27 | |
I wouldn't mind if it were web bases, as long as it is awesome | |||
and the github guys know how to make awesome things | |||
r: say so "a" ~~ /<[a..c]-[\n]>/ | 14:34 | ||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block : Unrecognized subtype 'zerowidth' in QAST::Regex cclass» | ||
FROGGS | r: say so "a" ~~ /<[\n]>/ | 14:35 | |
p6eval | rakudo c3f565: OUTPUT«False» | ||
FROGGS | r: say so "a" ~~ /<-[\n]>/ | ||
p6eval | rakudo c3f565: OUTPUT«True» | ||
tipdbmp | What's the shortcut syntax for $var =$var.method(); or $var = function($var); Is there any? | ||
FROGGS | $var.=method() | ||
tipdbmp | Works only for methods? | 14:36 | |
FROGGS | I think so | ||
tipdbmp | Okay. | ||
FROGGS | TITS | ||
(try it to see) | |||
jnthn | o.O | ||
I, er, didn't get that acronym like I was meant to :P | 14:37 | ||
FROGGS | r: class A ( method b { 42 } }; my $a = A.new; say $a.=b() | ||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Unable to parse class definitionat /tmp/9kcAaN6Ylz:1------> class A ⏏( method b { 42 } }; my $a = A.new; say  expecting any of: statement list prefix or term prefix or meta-prefix … | ||
FROGGS | r: class A { method b { 42 } }; my $a = A.new; say $a.=b() | ||
p6eval | rakudo c3f565: OUTPUT«42» | ||
FROGGS | jnthn: google told me that lately ;o) | ||
and I am seeking for the right moment for days :P | 14:38 | ||
tipdbmp: btw, you can have functions that modify the var/param in place | 14:39 | ||
r: sub a ( $p is rw ) { $p = 42 }; my $i = 7; a( $i ); say $i | 14:40 | ||
p6eval | rakudo c3f565: OUTPUT«42» | ||
tipdbmp | Okay, thank you. | 14:41 | |
FROGGS | p6: say (^2**64).pick.fmt('%64b') | 14:43 | |
p6eval | niecza v24-17-gd343a2a: OUTPUT«1010011110011101111010111011101111000110110100001100111110000110» | ||
..rakudo c3f565: OUTPUT« 1001000010101111011110000000000» | |||
FROGGS | p6: say (^2**64).pick.fmt('%64b') | ||
p6eval | niecza v24-17-gd343a2a: OUTPUT«1011111001101001100011010111101010100000100100101001010111101000» | ||
..rakudo c3f565: OUTPUT« 1000010101111000100001111111010» | |||
masak | oh, right! | 14:45 | |
I meant to implement sprintf in nqp... :) | |||
...and look at that, it's the weekend :D | |||
FROGGS | :o) | ||
14:46
Targen joined
|
|||
FROGGS | ++masak # for implementing nqp::sprintf :P | 14:46 | |
masak: nqp would know if it gets Inf (type) or "Inf" (text) right? | 14:47 | ||
masak | I imagine so,. | ||
s/,// | |||
they are very different in Perl 6, and they should be in nqp. | |||
FROGGS | k, wouldn't be cool to treat "inf" text like a number... | 14:48 | |
Inf | |||
r: my $i = 0; do { $i++ } while $ i < 42 | 14:49 | ||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Non-declarative sigil is missing its nameat /tmp/klfX7954a8:1------> my $i = 0; do { $i++ } while $⏏ i < 42 expecting any of: postfix infix or meta-infix infix stopper statement… | ||
FROGGS | r: my $i = 0; do { $i++ } while $i < 42 | ||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Unsupported use of do...while; in Perl 6 please use repeat...whileat /tmp/6oX9ofV1kd:1------> my $i = 0; do { $i++ } while $i < 42⏏<EOL> expecting any of: postfix infix or meta-infix in… | ||
masak | r: say Inf.fmt("%20s"); say Inf.fmt("%20f") | ||
p6eval | rakudo c3f565: OUTPUT« InfInf» | ||
masak | look, Rakudo already treats them differently :P | ||
14:56
Pleiades` left
14:58
Pleiades` joined
15:01
SunilJoshi left
15:02
Pleiades` left
15:03
SunilJoshi joined
15:08
am0c joined,
zby_home joined,
Pleiades` joined
|
|||
masak | when developing a piece of nqp functionality like this, should I aim at creating a new module? | 15:10 | |
I don't see many uses of 'use X' in the nqp project itself. | |||
only 'use nqpmo', and it's not clear to me how that one works. | |||
seems the tests don't even 'use Test', but just get the assertion subs from somewhere. | 15:11 | ||
ah, they get them from src/core/testing.pm | 15:12 | ||
my, that's a cute little testing module. fits on one screen. :) | |||
dalek | p-jvm-prep: 4f97253 | jnthn++ | t/qast_arguments.t: Test for flattening positional arg. |
||
p-jvm-prep: d04abf7 | jnthn++ | src/org/perl6/nqp/runtime/ (2 files): Implement flattening of positionals. Eliminate a warning. |
|||
15:12
dalek left
|
|||
jnthn | oops... | 15:12 | |
note to self: don't push 8 commits at once | 15:13 | ||
15:13
dalek joined,
ChanServ sets mode: +v dalek
|
|||
jnthn | Anyway, flattening is now done. | 15:13 | |
masak: What exactly are you planning to implement? | 15:14 | ||
Ah, sprintf...hm. | 15:15 | ||
masak | aye. | ||
jnthn | That's kinda interesting 'cus you want to implement something NQP and then arrange for an nqp:: op to map to it | 15:16 | |
masak | after giving it some thought, I'll just implement it as a sub in a .nqp file, and have the tests in le same file. | ||
jnthn | Which is unusual in so far as nqp:: ops normally map to some QAST tree | 15:17 | |
masak | others can worry about the nqp:: mapping. :) | ||
15:17
SunilJoshi left
|
|||
jnthn | I guess so long as it gets an object we can QAST::WVal it... | 15:17 | |
masak | so long as what gets an object? | 15:18 | |
masak decides not to worry about the intricacies and just solve the immediate problem of implementation for now | 15:19 | ||
15:19
SunilJoshi joined
|
|||
jnthn | masak: We need the compiled output to refer to the thing you're implementing. | 15:19 | |
masak: For that to happen it needs to be able to locate it somehow. | 15:20 | ||
FROGGS | well, it returns a Str which is an object, right? | 15:21 | |
is that what you are talking about? | |||
jnthn | I'm talking about the bit of code masak is going to write and wants wired up to an nqp:: op | ||
They don't typically work in that way. | |||
As in, "so far never have worked that way" | 15:22 | ||
FROGGS | r: say so "a" ~~ /<[a..c]-[b]>/ | 15:25 | |
p6eval | rakudo c3f565: OUTPUT«True» | ||
FROGGS | r: say so "a" ~~ /<[a..c]-[\h]>/ | ||
p6eval | rakudo c3f565: OUTPUT«True» | ||
FROGGS | r: say so "a" ~~ /<[a..c]-[\r]>/ | ||
p6eval | rakudo c3f565: OUTPUT«True» | ||
FROGGS | r: say so "a" ~~ /<[a..c]-[\N]>/ | ||
p6eval | rakudo c3f565: OUTPUT«True» | ||
FROGGS | r: say so "a" ~~ /<[a..c]-[0x0A]>/ | ||
p6eval | rakudo c3f565: OUTPUT«True» | ||
FROGGS | r: say so "a" ~~ /<[a..c]-[0x0d]>/ | ||
p6eval | rakudo c3f565: OUTPUT«True» | ||
FROGGS | say 0x.0d.chr | 15:26 | |
r:say 0x.0d.chr | |||
r: say 0x.0d.chr | |||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Confusedat /tmp/PifTH2Jlu0:1------> say 0⏏x.0d.chr expecting any of: whitespace» | ||
FROGGS | r: say 0x0d.chr | ||
p6eval | rakudo c3f565: OUTPUT« | ||
FROGGS | r: say 0x0a.chr | ||
p6eval | rakudo c3f565: OUTPUT«» | ||
FROGGS | r: say so "a" ~~ /<[a..c]-[0x0A]>/ # why does this work, but not \n ? | 15:27 | |
p6eval | rakudo c3f565: OUTPUT«True» | ||
timotimo | how exactly do :exists and so on to the {} method of a hash for example? | ||
is it part of the signature somehow? | |||
FROGGS | your question is missing a word... I dont get the sense | 15:28 | |
do you wanna check if a key is defined? | |||
jnthn | %foo{'bar'}:exists | ||
timotimo | no, i mean can i define an operator that behaves like it? | 15:30 | |
15:31
zby_home left
|
|||
masak | timotimo: yes, postcircumfix:<{ }> has a named parameter :$exists | 15:31 | |
FROGGS | timotimo: since operators are subs that get the operands as params you can almost do anything | 15:32 | |
masak | timotimo: the parsing of operator adverbs is... interesting. ask jnthn, he ported it from STD to Rakudo recently ;) | 15:33 | |
timotimo | ok | ||
jnthn | There's a whole test file of adverby stuff somewhere in the S03 tests | 15:34 | |
Showing defining operators which takes adverbs | |||
r: sub infix:<join>($a, $b, :$with = '') { "$a$with$b" }; say 'beer' join 'chips'; say 'beer' join 'chips' :with('and') | 15:35 | ||
p6eval | rakudo c3f565: OUTPUT«beerchipsbeerandchips» | ||
FROGGS | I dont like that syntax | 15:37 | |
jnthn | Then don't use it. | ||
Putting adverbs on operators is really a last resort anyway | |||
.. used to be spec'd with a :by(...). Later on, we ended up with ... | 15:38 | ||
FROGGS | r: sub infix:<join>($a, $b, :$with = '') { "$a$with$b" }; say 'beer' join 'chips'; say 'beer' join:with('and') 'chips' | ||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Two terms in a rowat /tmp/dKgAl218th:1------> in 'chips'; say 'beer' join:with('and') ⏏'chips' expecting any of: postfix infix or meta-infix infix stopper statement end … | ||
masak | FROGGS: no, it doesn't work that way. | ||
jnthn | Adverbs are parsed as fake infixes. | ||
FROGGS | k, just wanted to check | 15:39 | |
masak finds he enjoys programming in nqp | 15:42 | ||
p-jvm-prep: 2a9abb3 | jnthn++ | t/qast_arguments.t: Add test for argument auto-boxing. |
|||
p-jvm-prep: a4439e4 | jnthn++ | src/org/perl6/nqp/runtime/Ops.java: Implement argument auto-boxing. |
|||
jnthn | It's quite nice implementing something that ends up producing JVM bytecode in NQP :) | 15:44 | |
Time to have a sift through nqp-mo.pm and see what it needs that I'm missing... | 15:45 | ||
masak | jnthn: when I see nqp-mo.pm, I immediately think of www.google.com/search?q=mo+wall-e :) | 15:47 | |
15:47
cognominal left
|
|||
jnthn | :P | 15:48 | |
nwc10 | jnthn++ | 15:49 | |
masak | Q: Best manual for getting started with NQP? A: The t/nqp/ directory. | 15:51 | |
15:52
cognominal joined
|
|||
dalek | p-jvm-prep: c0afae2 | jnthn++ | docs/ROADMAP: Some missing things (ones nqp-mo.pm uses). |
15:55 | |
jnthn | To the degree I can compile NQP to QAST in my head, it's not looking too bad... | 15:56 | |
masak | :) | ||
FROGGS | jnthn: I wouldn't be surprised if you could compile down to ASM ;o) | 15:57 | |
15:59
SunilJoshi left
16:00
SunilJoshi joined
|
|||
masak | how does one check whether a variable is not the Null PMC in nqp, without triggering a Null PMC Access? | 16:02 | |
jnthn | nqp::isnull(...) | ||
masak | gracias. | 16:03 | |
I'm making my tests fail instead of blowing up ;) | |||
jnthn | pzh | ||
16:06
wtw joined
16:13
Pleiades` left
16:14
SunilJoshi left
|
|||
masak | nqp: sub foo() { nqp::die("ARGH!") }; foo(); CATCH { }; say("alive") | 16:14 | |
p6eval | nqp: OUTPUT«ARGH!current instr.: 'foo' pc 106 ((file unknown):63) (/tmp/canJsswzlT:1)» | ||
nwc10 | jnthn: when the ROADMAP gets to the empty file, does that mean that it's time to move onto the next stage? | ||
masak | I don't think I understand how CATCH blocks work in nqp. | ||
16:15
diakopter joined,
wtw left
|
|||
masak | jnthn: where is the $! from an exception visible in nqp? I have a try block in a subroutine, and $! is unset outside of that subroutine. | 16:16 | |
hm, it appears to be unset inside too :/ | 16:17 | ||
all I want to do is test the error message that was nqp::die'd from my sprintf routine. it is proving non-trivial. | |||
16:18
SunilJoshi joined,
stevan_ joined
16:20
Pleiades` joined
|
|||
moritz | inside a CATCH block, it's $_ | 16:23 | |
jnthn | nwc10: The ROADMAP tries to collect together all the things that need to be implemented to get NQP fully cross-compiled and bootstrapped on the JVM. | 16:25 | |
nwc10: However, nqp-mo.pm needs a subset of those things. | 16:26 | ||
masak | moritz: would you mind demonstrating through a snippet of nqp code how to inspect the die message after doing an nqp::die? | 16:27 | |
nwc10 | OK - so with the full ROADMAP done (including the as-yet unknown unknowns), it will be possible to take NQP and cross compile it | ||
jnthn | nwc10: Once I feel I'm getting close to having that subset, I'll start looking at what you're probably thinking of as the "next phase" - that is, trying to cross-compile bits of NQP code (first, nqp-mo.pm) | ||
nwc10 | what dos the subset that nqp-mo.pm needs yet you? | ||
get you | |||
jnthn | It gets me the ability to cross-compile nqp-mo.pm :) | ||
Which in turn means it's sensible to work on NQPCORE.setting | 16:28 | ||
nwc10 | aha. I can see that it's a generated file (in NQP) | ||
jnthn | Once I can compile some amount of that, it makes sense to start attempting the NQP test sutie. | ||
Yes, nqp-mo.pm is src/how/*.pm concatenated in the right order. | 16:29 | ||
nwc10 | OK. So with that subset done, it's possible to parallelise work? | ||
in that, there's one task of "work on the setting" and a second of "work to getting all of NQP cross compilable?" | |||
jnthn | Well, it's more "work on getting the setting to cross-compile" | ||
The work is already pretty parallelizable. | |||
It's just finding people to dig into stuff. | 16:30 | ||
nwc10 | aha yes. that perennial problem. finding volunteers | ||
jnthn | Many of the ROADMAP tasks that exist now are not heavily dependent on others. | ||
moritz | nqp: sub f() { CATCH { say("Error message: '$_'") }; nqp::die('foo') }; f() | ||
p6eval | nqp: OUTPUT«Error message: 'foo'» | ||
moritz | masak: see above | ||
nwc10 | specifically, finding volunteers who stay active | ||
masak | moritz: thank you. | 16:31 | |
I should be able to use that to make a global variable remember the error message, and then test it. | |||
FROGGS | nqp: try { die("pups"); CATCH { say("huh? >" ~ $_ ~ "<"); }; } | ||
p6eval | nqp: OUTPUT«huh? >Could not find sub &die<» | ||
FROGGS | meh | ||
too slow | |||
jnthn | nwc10: Well, and finding volunteers who know one of QAST/6model or JVM, or are willing/able to learn both... | 16:32 | |
nwc10 | the JVM *ought* to be easier | 16:33 | |
dear refugees trapped in Java-land, please come back | |||
tadzik | we have short method names | 16:34 | |
16:35
stevan_ left
|
|||
masak | it works. | 16:39 | |
moritz++ | |||
I feel I'm off to a great start. | 16:42 | ||
my sprintf implementation already does something the Parrot one never did: complains (at runtime) about too few or too many directives. | |||
r: say sprintf('%s %s', 'A', 'B', 'C') | 16:43 | ||
p6eval | rakudo c3f565: OUTPUT«A B» | ||
masak | r: say sprintf('%s %s %s', 'A', 'B') | ||
p6eval | rakudo c3f565: OUTPUT«Null PMC access in get_string() in sub sprintf at src/gen/CORE.setting:2414 in block at /tmp/BtwgpEbJMj:1» | ||
masak | my implementation catches both of these. | ||
16:43
stevan_ joined
|
|||
masak | is %% the only sprintf directive that doesn't require an argument? | 16:46 | |
FROGGS | e: say sprintf('\%s') | 16:47 | |
r: say sprintf('\%s') | |||
p6eval | rakudo c3f565: OUTPUT«Null PMC access in get_string() in sub sprintf at src/gen/CORE.setting:2414 in block at /tmp/1UKBVvYFNu:1» | ||
FROGGS | r: say sprintf('\%') | ||
p6eval | rakudo c3f565: OUTPUT«Cannot get character past end of string in sub sprintf at src/gen/CORE.setting:2414 in block at /tmp/O9007khE2I:1» | ||
FROGGS | masak: looks like | ||
%% is like escaping | |||
masak | I know. | 16:48 | |
I wasn't asking about %%. I was asking about any others like it. | |||
16:48
thou joined
|
|||
FROGGS | since sprintf only cares about %'s and there is no other way to escape it, I'd say no, there are no others | 16:49 | |
masak | you may well be right, but I don't buy your reasoning. there may be other reasons not to require and argument than being able to represent '%'. | 16:50 | |
an* | |||
I'm also interested in directives which require more than one argument. | 16:51 | ||
16:51
cognominal left,
pmurias joined
|
|||
pmurias | jnthn: INTVAL is 64bit? | 16:52 | |
jnthn | pmurias: depends :( | ||
(on what platform you compile it on) | |||
FROGGS | masak: I dont know about any directive that requires more than one, or zero except %% | ||
masak: linuxcommandss.blogspot.de/2012/04/...tives.html | 16:53 | ||
masak | r: printf "%vd", "AB\x{100}"; | ||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Unrecognized backslash sequence: '\x'at /tmp/_Pp5yvSsBw:1------> printf "%vd", "AB\⏏x{100}"; expecting any of: postfix infix or meta-infix infix stopper prefix or term p… | ||
pmurias | jnthn: but Parrot_Int8 is 64bit | ||
masak | r: printf "%vd", "AB" ~ chr(100); | ||
p6eval | rakudo c3f565: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏ABd' (indicated by ⏏) in method Int at src/gen/CORE.setting:10400 in method Int at src/gen/CORE.setting:3856 in any at src/gen/BOOTSTRAP.pm:91 in sub sprintf at src/ge… | ||
FROGGS | not the best resource I posted... | ||
masak | FROGGS: I'm reading perldoc.perl.org/functions/sprintf.html -- it's quite good. | 16:54 | |
doy | the only weird one other than %% is %n, but doesn't look like that's intended to work according to the spec | ||
masak | doy: ok, thanks. | ||
yeah, that's a weird one. | 16:55 | ||
16:55
cognominal joined
|
|||
FROGGS | %n is such a special case as it seems | 16:55 | |
masak | man, the sprintf API is messed up. | ||
FROGGS: yes, doy already said. | |||
FROGGS | ya, interesting one | ||
Ayiko | r: printf '%d, %1$d', 5; # works for perl5 | ||
p6eval | rakudo c3f565: OUTPUT«'$' is not valid in sprintf format sequence '%1$' in sub sprintf at src/gen/CORE.setting:2414 in sub printf at src/gen/CORE.setting:2419 in block at /tmp/wMEjlxmEo3:1» | 16:56 | |
masak | Ayiko: right. I'm aware of format parameter indices. I think I intend to make them work, but not soon :) | ||
pmurias | jnthn: I found out what was causing crazy results, I forgot about deserialising the boolification | ||
jnthn | pmurias: Yes. But if INTVAL is 32-bit you can't but one of those in an I register... | ||
FROGGS | masak: that pod gives a good test suite (in case the rakudo one isnt) | ||
jnthn | pmurias: Ah! | 16:57 | |
gotta go, bbl | |||
moritz | what sprintf really misses is named params | ||
pmurias hopes to deserialize P6opaque attributes today ;) | |||
masak | FROGGS: aye. | 16:58 | |
moritz | sprintf '%:year:04d-%:month:02d-%:day:20d', :year(2013), :month(1), :day(12) | ||
ok, that looks terrible too | |||
FROGGS | moritz: what about printf("%10d=<number>", number => 7 ) ? | ||
moritz | FROGGS: looks better | ||
FROGGS | like the opposite of the regexes | ||
timotimo | then you have to have escaping for < and >, which seems non-obvious | 16:59 | |
or will only =<number> be meaningful, because you're only passing "number" as named argument? | |||
FROGGS | well, I could imagine that it will print <number> if there is no such key in the arguments | ||
moritz | timotimo: one could make <> only special after = and if it's inside a %..\w sequence | 17:00 | |
timotimo | mhm | ||
moritz | FROGGS: or fail() | ||
masak | if you ask me, you won't improve sprintf much by gradual updates. | ||
moritz | masak: right | ||
17:00
cognominal left
|
|||
masak | I'd prefer to see a revolution akin to grammars. | 17:00 | |
let me format objects, doggonnit! | |||
it's 2013! | |||
moritz | is anybody aware of a program that turns sprintf formats into regexes that parse the potential outputs? | ||
timotimo | you know how python does it, right? %(foobar)10s and such. i like that, because it doesn't require special escaping at all, but the s goes at the end which makes it a little confusing | 17:01 | |
moritz: what, like scanf? | |||
masak | moritz: no, but the idea appeals to me. | ||
moritz | timotimo: oh right :-) | 17:02 | |
though it doesn't quite return a regex | |||
17:03
SunilJoshi1 joined,
SunilJoshi left
|
|||
masak | & | 17:04 | |
doy | masak: metacpan.org/module/String::Formatter::Cookbook may be reasonable prior art | ||
17:07
sundar joined
17:13
SunilJoshi joined
17:14
stevan_ left
17:15
SunilJoshi1 left
|
|||
dalek | p: 90ed4cc | (Paweł Murias)++ | docs/serialization_format.markdown: Fix mistake in docs. |
17:16 | |
p: e219a33 | (Paweł Murias)++ | src/6model/sixmodelobject.c: Fix typo in comment. |
|||
p: 397c0f9 | (Paweł Murias)++ | docs/serialization_format.markdown: Document how NULL is serialized. |
|||
17:23
thou left
17:26
SunilJoshi1 joined,
SunilJoshi left
17:35
erkan left,
pmurias left
17:36
erkan joined,
erkan left,
erkan joined
17:37
Moukeddar joined,
pmurias joined
17:56
benabik left
18:11
mtk left
18:12
MikeFair_ joined
18:17
Moukeddar left
18:18
PacoAir joined
18:20
Pleiades` left
18:27
Pleiades` joined
18:52
am0c left
18:58
benabik joined
|
|||
dalek | ast: 76c7334 | moritz++ | S06-operator-overloading/sub.t: RT #112870, LTM and user-defined operators |
19:12 | |
moritz | r: sub f() { }; say f() === Nil | 19:14 | |
p6eval | rakudo c3f565: OUTPUT«True» | ||
GlitchMr | github.com/rakudo/rakudo/commit/46...db8f8dc8ac | 19:15 | |
Those special cases | |||
I don't like them | |||
19:15
am0c joined
|
|||
GlitchMr | But well, both interpretations make sense. | 19:16 | |
moritz | except that the old one broke everything that assumed that .Str returns a Str | ||
dalek | ast: cbe1ad7 | moritz++ | S04-statements/try.t: explicitly test return value of try { } |
19:18 | |
19:20
cognominal joined
19:21
am0c left
19:23
Pleiades` left
|
|||
timotimo | when do you use has $x instead of has $.x? is it for class attributesperhaps? | 19:23 | |
moritz | timotimo: no, it's just a question of style | 19:24 | |
timotimo | ah so its the same thiing. good to know. | ||
moritz | well, it makes $x available as a lexical alias to $!x | 19:25 | |
timotimo | you will get an accessor along with it? will $!x still work? | ||
ah. right. | |||
19:28
Pleiades` joined
19:36
benabik left,
benabik joined
19:43
Chillance left
|
|||
pmurias | sanity check: a 64bit little endian signed 1 is serialize the same as a 64bit unsigned 1 | 19:43 | |
? | |||
geekosaur | should be | 19:52 | |
19:59
SamuraiJack left
20:08
benabik left,
marolafm joined
20:09
benabik joined
20:11
marolafm left
|
|||
timotimo | where does HLL::Compiler come from? is it a nqp thing or a parrot thing? | 20:11 | |
20:13
SunilJoshi1 left
20:17
Targen left
|
|||
timotimo | oh, found it. should have known it was so easy to find. | 20:20 | |
20:25
Targen joined
20:27
bruges_ joined
20:29
bruges left
20:32
slayer101_ joined
20:34
Pleiades` left
20:40
Pleiades` joined
20:43
MayDaniel left
|
|||
dalek | ast: 510ae2a | moritz++ | S03-operators/short-circuit.t: RT #116230: //= with role type objects |
21:01 | |
21:03
Rotwang left
|
|||
moritz | r: say $_!X::a | 21:05 | |
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Cannot call private method 'a' on package X because it does not trust GLOBALat /tmp/DjeUKtcZO2:1------> say $_!X::a⏏<EOL> expecting any of: method arguments» | ||
moritz | r: try $_!X::a; say $!.perl | ||
p6eval | rakudo c3f565: OUTPUT«===SORRY!===Cannot call private method 'a' on package X because it does not trust GLOBALat /tmp/zR5YPJzbSx:1------> try $_!X::a⏏; say $!.perl expecting any of: method arguments» | ||
moritz | r: try eval ' $_!X::a'; say $!.perl | 21:06 | |
p6eval | rakudo c3f565: OUTPUT«X::Method::Private::Permission.new(method => "a", source-package => "X", calling-package => "GLOBAL", filename => "eval_0", line => 1, column => Any, modules => Array.new(), is-compile-time => 1, pre => " \$_!X::a", post => "<EOL>", highexpect => Array.new("method … | ||
21:07
PacoAir left
21:08
PacoAir joined
|
|||
dalek | ast: b111dae | moritz++ | S14-roles/parameterized-type.t: RT #114954: can export and import parameterized roles |
21:13 | |
p: 10dade9 | (Timo Paulssen)++ | src/HLL/Compiler.pm: the check for ancient Test::Harness is no longer needed, methinks. |
21:17 | ||
timotimo | i hope this decreases the rakudo start time by a few nanoseconds! :) | ||
21:18
Rotwang joined
|
|||
moritz | testneeded down to 68 tickets | 21:20 | |
diakopter | \o/ | ||
masak | moritz++ | 21:22 | |
21:23
slayer101_ left
|
|||
moritz | though what I *should* have been doing was solving the remaining two p6cc tasks | 21:25 | |
masak | seldom have I been so tempted to remove a karma point that I just gave out. ;) | 21:26 | |
colomon | moritz++ | 21:27 | |
masak | though if I don't get any more solutions sent to me than this, judging will be especially easy this year :P | 21:29 | |
moritz | masak: the winning set has one element? | 21:30 | |
masak | I'm not at liberty to say... :) | ||
as me again in a week. | |||
ask* | |||
but in any case -- contestants! send in your solutions to p6cc! send in early, send in often! | 21:31 | ||
moritz | first come up with solutions, then send them in :-) | 21:34 | |
masak | well, I hesitate to mention this, but it's *tactically* correct to send in trivial programs (that only pass the base tests by brute force) on the first day of the contest. | 21:37 | |
no-one's ever attempted this. | |||
dalek | ast: b34a3de | moritz++ | S32-exceptions/misc.t: RT #112470, my ${a} |
||
moritz | or maybe s/brute force/hard coding/ | ||
masak: I guess we all like the context too much to try to game it | 21:38 | ||
masak | aye, "hard coding" was what I meant. | 21:39 | |
people do seem to like the contest. I'm surprised every year at the effort that contestants put into it. | 21:40 | ||
everyone++ | |||
jnthn back | 21:43 | ||
21:47
kaare_ left
21:50
slayer101_ joined
21:54
Pleiades` left
21:58
Pleiades` joined
22:07
Moukeddar joined
22:09
bapa_ joined
22:10
bapa left
22:13
xinming joined
22:16
xinming_ left
|
|||
jnthn | moritz++ # cutting down testneeded a bit | 22:16 | |
colomon | Is there a missing comma at line 31 of progname.t? | ||
pmurias | masak: what would the gain of sending hard coded solutions be? | 22:17 | |
dalek | p-jvm-prep: c819b74 | diakopter++ | src/org/perl6/nqp/runtime/CallSiteDescriptor.java: mape typo map |
||
jnthn | I accidentally mape a typo | 22:18 | |
.oO( "How is the upside d written??!!" ) |
|||
pmurias | masak: ah, anything that passes base tests counts as the solution? | 22:19 | |
masak | pmurias: right. | ||
22:23
grondilu joined
22:30
snearch joined
|
|||
pmurias | jnthn: how are native attributes stored in P6opaque? as PMCs? | 22:38 | |
jnthn | pmurias: Directly in the object body | ||
As natives | 22:39 | ||
pmurias | they have an entry in flattened_stables which (de)serializes to the appropriate offset in the object? | 22:41 | |
jnthn | Yeah. Note the flattened STables is per type, not per instance | 22:42 | |
That just says where to delegate to process that slot. | |||
This all centers around the storage_spec | 22:43 | ||
dalek | p-jvm-prep: 3fee403 | jnthn++ | / (2 files): nqp::defined(...) and test. |
22:45 | |
p-jvm-prep: f31ea24 | jnthn++ | / (3 files): Implement and test nqp::eqaddr. |
|||
pmurias | jnthn: I suppose just undoing all that and just storing everything as object properties would be the most efficient way in javascript | 22:47 | |
jnthn | pmurias: Probably, yes | ||
Particularly when v8 knows how to create the shadow classes behind the scenes... | 22:49 | ||
pmurias | yes, and it is supposed to emit crazy self modifing code to read the properties efficently | 22:52 | |
jnthn: what would be a good way of having nqp-jvm and nqp-js share test files? | 22:54 | ||
(I mean the low level qast ones) | |||
22:55
Moukeddar left
|
|||
jnthn | pmurias: Copy-paste? ;) | 22:57 | |
pmurias: I'm not sure how easy you'll find them to steal, fwiw | |||
pmurias: They expect the :main thing in CompUnit to work; if you have that, then just write a different helper.nqp | 22:58 | ||
23:01
snearch left
|
|||
masak | 'night, #perl6 | 23:02 | |
23:03
slayer101_ left
23:05
Rotwang left
|
|||
pmurias | jnthn: I think I could steal (most of) them in unchanged form, what I'm unsure about is how to avoid duplicating files | 23:07 | |
just like roast isn't copy-pasted into niecza,rakudo,pugs,etc | 23:09 | ||
23:11
spider-mario left
|
|||
jnthn | pmurias: How soon do you want a better solution than "duplicate"? | 23:12 | |
23:12
stevan_ joined
|
|||
jnthn | pmurias: Right now, working with the tests in the repo I'm building stuff in and keeping all those I've got so far passing is working fairly nicely... | 23:12 | |
pmurias: But I'll probably outgrow that approach in a bit. | |||
pmurias: I guess in the long run I'd like us to have an NQP repository structured in a way that means we can keep the various backends together. | 23:14 | ||
pmurias | jnthn: re how soon, I'm ok with minor inconveniences in the near term, but would like to avoid both duplicating tests 3 times or the repos depending on each other in strange ways ;) | 23:29 | |
I'll try to finish the serialisation refactor before making the lowlevel qast tests pass | 23:30 | ||
jnthn | I guess I'll need to be tackling the serialization stuff on the JVM impl soon :) | ||
pmurias | would it make sense to use something like protobuffers for the object serialization? | 23:37 | |
en.wikipedia.org/wiki/Protobuffers | |||
jnthn | I'm not sure it'd win us much over what we curerntly have. | 23:40 | |
pmurias | propably not worth the extra complexity of using an additional tool but that something that was in my mind while trying to read all the bytes correctly ;) | ||
jnthn | It seems more aimed at RPC-like things. | 23:41 | |
pmurias | different reprs read things differently so we couldn't use that even if we wanted to ;) | 23:44 | |
jnthn | yeah, I fear we may end up working around its message format as much as making good use of it. | 23:46 | |
pmurias needs to sleep as he's getting silly ideas | 23:47 | ||
jnthn | 'night :) | 23:49 | |
dalek | kudo-js: 2aec829 | (Paweł Murias)++ | / (2 files): avoid overiding an existing attribute of Object, deserialize WHAT and HOW |
23:50 | |
kudo-js: 6c3f91c | (Paweł Murias)++ | runtime.js: Deserialising a bunch of repr data for P6opaque. |
|||
p-jvm-prep: 46cf0d7 | diakopter++ | / (2 files): typo and ignore test output |
23:54 | ||
p-jvm-prep: b0afafc | diakopter++ | / (3 files): map splice operation |
|||
23:55
pmurias left
23:57
stevan_ left
|