»ö« 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, 5␤1, 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 row␤at /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, 0␤2, 1␤4, 2␤6, 3␤8, 4␤10, 5␤12, 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, 0␤2, 1␤4, 2␤6, 3␤8, 4␤10, 5␤12, 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 ... *)).ma␤␤0, 0␤2, 1␤4, 2␤6, 3␤8, 4␤10, 5␤12, 6␤woop 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 that␤at /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 parameter␤at /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 definition␤at /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 name␤at /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...while␤at /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« Inf␤Inf␤»
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!===␤Confused␤at /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«beerchips␤beerandchips␤»
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 row␤at /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 GLOBAL␤at /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 GLOBAL␤at /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