»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by diakopter on 14 April 2013. |
|||
00:03
FROGGS left
00:04
tgt left
00:16
pib1963 left
00:30
PacoAir left
|
|||
ingy | TimToady: yo! | 00:36 | |
00:36
thou left
|
|||
ingy | TimToady: my perl script just counted that you have 872 commits to rosettacode | 00:36 | |
TimToady: you are the 25th most prolific contributor! | 00:44 | ||
00:54
thou joined
01:05
anuby joined
01:09
hypolin joined
01:10
hypolin left
01:14
preflex left
01:16
thou left
01:25
Patterner left
01:29
Psyche^ joined,
Psyche^ is now known as Patterner
01:47
labster joined
01:56
cognominal left
02:01
thou joined
|
|||
dalek | ast: 2fcdbe2 | (Brent Laabs)++ | S32-io/io-path.t: add||change tests for new IO::Path spec |
02:02 | |
ast: 022a969 | (Brent Laabs)++ | S (5 files): Merge branch 'master' of github.com:perl6/roast |
|||
02:07
lustlife joined
02:17
hypolin joined
02:21
kbenson left
02:27
fgomez left
02:38
gdey left
|
|||
labster | *sigh* one of these days, I'm going to have to learn how to use git. | 02:38 | |
02:50
hypolin left,
hypolin joined
02:53
hypolin left
02:54
hypolin joined,
hypolin left
02:56
hypolin joined,
preflex joined,
hypolin left
02:57
hypolin joined
03:10
fgomez joined
|
|||
[Coke] finds a gather/take bug. | 03:24 | ||
03:26
adu_ joined
|
|||
dalek | ast: ef15dae | coke++ | S04-statements/gather.t: open a ticket for RT #117635 |
03:34 | |
[Coke] ponders digging into GatherIter, and quickly just punts to pmichaud. | 03:38 | ||
03:44
rhinux_ left
|
|||
dalek | kudo/nom: 4109be8 | coke++ | INSTALL.txt: RT #76828 - document memory build requirements. |
03:44 | |
03:52
rhinux_ joined
03:56
adu_ is now known as adu
04:02
BenGoldberg left
04:06
cognominal joined
04:12
thou left,
SHH-2 joined
|
|||
SHH-2 | hello :) | 04:14 | |
04:20
SHH-2 left
|
|||
diakopter | hi | 04:41 | |
04:50
colomon joined
04:57
yoleaux left
05:02
cognominal left
05:14
DreamingInCode left
05:20
yoleaux joined
05:33
adu left
05:48
crab2313 joined
05:52
FROGGS joined
05:53
frdmn joined
|
|||
FROGGS | morning | 05:53 | |
diakopter | hi | 05:56 | |
05:57
domidumont joined
06:10
rindolf joined
06:12
rindolf left
06:17
DQP joined
06:18
Heather joined,
nyuszika7h_ is now known as nyuszika7h
06:31
domidumont left
06:32
domidumont joined
06:33
kurahaupo left
06:34
crab2313 left
06:44
fgomez left
07:08
baest joined
07:15
mikess is now known as mikess_
07:17
mikess_ left,
fgomez joined
|
|||
hoelzro | morning #perl6 | 07:19 | |
07:20
Heather left
|
|||
FROGGS | morning hoelzro | 07:20 | |
07:21
denisboyun_ joined
|
|||
labster | hello | 07:31 | |
FROGGS | hi labster | 07:42 | |
labster | FROGGS o/ | 07:44 | |
07:46
denisboyun_ left
07:47
[0xF] joined
|
|||
[0xF] | Hello, is there anyone to answer a few beginner's questions about perl6 ? | 07:48 | |
FROGGS | [0xF]: ask | ||
tadzik | sure :) | ||
FROGGS .oO( BOOOM! the first-level monster grows to his full height! ) | 07:49 | ||
[0xF] | 1. I've seen code such as my $i := 0; $i := $i + 1; How is it different from = and ++ ? | ||
I mean my $i = 0; $i++ | |||
FROGGS | [0xF]: := is binding, is it possible that you've seen that in nqp code? | ||
nqp only support binding | 07:50 | ||
07:50
kurahaupo joined
|
|||
FROGGS | *supports | 07:50 | |
[0xF] | probably yes | ||
but it's also valid perl6? | 07:51 | ||
FROGGS | r: my $i := 0; $i := $i + 1 | ||
camelia | rakudo 4109be: ( no output ) | ||
tadzik | it is | ||
FROGGS | r: my $i := 0; $i++ # boom | ||
camelia | rakudo 4109be: OUTPUT«Cannot modify an immutable value in sub postfix:<++> at src/gen/CORE.setting:3284 in sub postfix:<++> at src/gen/CORE.setting:1772 in block at /tmp/25Y7aHkgJv:1» | ||
07:51
ilbot6 left
|
|||
tadzik | it just binds the value to the variable name, without a container for it | 07:51 | |
07:51
ilbot6 joined
|
|||
FROGGS | [0xF]: my boom example shows the difference between assignment | 07:51 | |
arnsholt | It's worth noting that "my int $x = 0; $x++" won't work either in Rakudo, ATM | 07:52 | |
tadzik | I thought someone wrote a nice blog post explaining all that recently. Wasn't that moritz++? | ||
[0xF] | arnsholt: it works for me | 07:53 | |
s/int/Int/ | |||
07:53
Chillance left
|
|||
arnsholt | Yeah, with Int it'll work | 07:53 | |
FROGGS | ya, was moritz | ||
[0xF] | tadzik: url please | ||
arnsholt | r: my int $x = 0; $x++; | ||
camelia | rakudo 4109be: OUTPUT«Cannot modify an immutable value in sub postfix:<++> at src/gen/CORE.setting:3284 in sub postfix:<++> at src/gen/CORE.setting:1772 in block at /tmp/I7rYW7Ds_A:1» | ||
07:53
ilbot6 left
|
|||
tadzik | I can never find anything on his website | 07:53 | |
07:54
kurahaupo left
|
|||
moritz | I did? | 07:54 | |
moritz can't remember writing it | |||
07:54
ilbot6 joined
|
|||
arnsholt | int is a native type, and there's a bug (involving containers) with the modifying ops and natives | 07:54 | |
tadzik | ah, there we go. Wasn't a blog post | 07:55 | |
[0xF]: doc.perl6.org/language/containers | |||
[0xF] | thx | ||
question #2: sub foo(Int $x is copy) { $x = 5; } f(1); # Cannot assign to a non-container | 07:56 | ||
tadzik | r: sub foo(Int $x is copy) { $x = 5; } f(1); | ||
camelia | rakudo 4109be: OUTPUT«===SORRY!===Two terms in a rowat /tmp/MQCImBVir3:1------> sub foo(Int $x is copy) { $x = 5; } ⏏f(1); expecting any of: postfix statement end statement modifier statement modifier loop … | ||
tadzik | r: sub foo(Int $x is copy) { $x = 5; }; f(1); | ||
camelia | rakudo 4109be: OUTPUT«===SORRY!===Undeclared routine: f used at line 1» | ||
tadzik | r: sub foo(Int $x is copy) { $x = 5; }; foo(1); | ||
moritz | [0xF]: looks like a bug to me | ||
camelia | rakudo 4109be: OUTPUT«Cannot modify an immutable value in block at /tmp/eHvKDUJqEz:1» | ||
tadzik | r: sub foo($x is copy) { $x = 5; }; foo(1); | ||
camelia | rakudo 4109be: OUTPUT«Cannot modify an immutable value in block at /tmp/dVXgjNPmEy:1» | ||
moritz | n: sub foo(Int $x is copy) { $x = 5; }; foo(1); | ||
camelia | niecza v24-37-gf9c8fc2: ( no output ) | ||
moritz | the 'is copy' should make sure there's always a container | 07:57 | |
tadzik | yeah | ||
07:57
drbean left
|
|||
tadzik | [0xF]: btw, are you the [0xF] from Warsaw.pm? | 07:58 | |
[0xF] | yep | ||
07:58
drbean joined
|
|||
tadzik | ha, sounded familiar :) | 07:59 | |
FROGGS | r: sub foo($x is rw) { $x = 5; }; foo(1); | ||
camelia | rakudo 4109be: OUTPUT«Cannot modify an immutable value in sub foo at /tmp/5lAMHJsqSN:1 in block at /tmp/5lAMHJsqSN:1» | ||
[0xF] | see you in the evening | ||
tadzik | yeah | ||
FROGGS | r: sub foo($x is rw) { $x = 5; }; my $a = 1; foo($a); | ||
camelia | rakudo 4109be: ( no output ) | ||
FROGGS | r: sub foo($x is copy) { $x = 5; }; my $a = 1; foo($a); | ||
camelia | rakudo 4109be: ( no output ) | ||
moritz | so, where's masak++ when we need him? :-) | ||
FROGGS | *g* | ||
ENOMASAK | |||
moritz submits rakudobug | 08:00 | ||
[0xF] | r: print 5.WHAT | 08:01 | |
camelia | rakudo 4109be: OUTPUT«use of uninitialized variable $v of type Int in string context in block at /tmp/M_46EUJ2vV:1» | ||
FROGGS | uhh | ||
[0xF] | n: print 5.WHAT | ||
camelia | niecza v24-37-gf9c8fc2: OUTPUT«Int()» | ||
[0xF] | another bug? | 08:02 | |
FROGGS | ya | ||
moritz | r: print 5.^name | ||
tadzik | yeah | ||
camelia | rakudo 4109be: OUTPUT«Int» | ||
moritz | no bug | ||
tadzik | oh | ||
moritz | say uses .gist, print uses .Str | ||
[0xF] | r: say 5.WHAT | ||
tadzik | WHAT gives you a type object | ||
camelia | rakudo 4109be: OUTPUT«(Int)» | ||
FROGGS | it should never expose internal variables... and it should do the right thing :o) | ||
08:02
berekuk joined
|
|||
moritz | yes, mentioning $v is RONG | 08:03 | |
I think we should remove the reporting of variable names in warnings altogether | |||
there's always a way that internal variables can leak through | |||
FROGGS | :/ | ||
diakopter | moritz++ | 08:05 | |
[0xF] | question #4: my @a=(1,2) vs my @a=[1,2] vs my $a=(1,2) vs my $a=[1,2] - please explain differences if any | 08:06 | |
tadzik | @a is an array with two elements, 1 and 2 | 08:07 | |
@a = [1,2] is an array with one element, being an array of two elements | |||
moritz | $a = (1, 2) # $a is a Parcel with two elements | 08:08 | |
$a = [1, 2]; # $a is an Array of two elements inside a scalar container | |||
[0xF] | so it's basically same as in perl5 except for $a=(1,2) | 08:09 | |
and a Parcel is akin to an array of fixed size? | 08:10 | ||
hoelzro | a Parcel has a named component as well, iirc | 08:11 | |
moritz | hoelzro: no, that's a capture | ||
hoelzro | ah, ok | ||
my mistgake | |||
*mistake | |||
moritz | [0xF]: doc.perl6.org/language/containers#S...sty+Things | 08:12 | |
[0xF] | moritz++ | ||
question #5: sample constructor that supports inheritance? | 08:13 | ||
moritz | the default .new is perfect for that. | 08:14 | |
[0xF] | what if I want to do something in the constructor? | ||
moritz | [0xF]: is there a reason not do in BUILD? | 08:15 | |
[0xF] | BUILD? | ||
moritz | you can add a submethod BUILD, which is run during object construction | 08:16 | |
parent methods' BUILD first, then subclasses | |||
[0xF]: see for example perlgeek.de/blog-en/perl-6/object-c...ation.html | |||
[0xF] | moritz++ | 08:17 | |
question #6: how do I define a static method? class Foo { INSERT-CODE-HERE } Foo.bar() | 08:19 | ||
moritz | [0xF]: just write a method that doesn't use an attribute | 08:20 | |
[0xF] | r: class Foo { method bar() { say 42; } } Foo.bar(); | 08:21 | |
camelia | rakudo 4109be: OUTPUT«===SORRY!===Two terms in a rowat /tmp/WGPYGCkmnn:1------> class Foo { method bar() { say 42; } } ⏏Foo.bar(); expecting any of: postfix statement end statement modifier statement modifier lo… | ||
FROGGS | r: class Foo { method bar() { say 42; } }; Foo.bar(); | 08:22 | |
camelia | rakudo 4109be: OUTPUT«42» | ||
[0xF] | semicolon after class is so c++-ish ;) | 08:23 | |
tadzik | well, use two lines then :) | ||
r: class Foo { method bar() { say 42; } }  Foo.bar(); | |||
[0xF] | FROGGS++ | ||
camelia | rakudo 4109be: OUTPUT«42» | ||
moritz | a } followed by a newline implies a semicolon | 08:24 | |
labster | ... a fact which caused me bugs as of late, both before and after it was fixed. | ||
tadzik | .u  | ||
yoleaux | U+2424 SYMBOL FOR NEWLINE [So] () | ||
labster | moritz, FROGGS: I've been thinking about the direction to take IO::Path here: gist.github.com/labster/3172215191d6fc5acc23 I'm curious if either of you have any thoughts on this. | 08:26 | |
FROGGS reads | 08:27 | ||
[0xF] | question #7: is $object.$!attr valid syntax? | ||
moritz | [0xF]: no. | ||
[0xF] | what I should write instead? | ||
moritz | you don't access another object's private attributes. | 08:28 | |
labster | [0xF]: $object.attr for accessing $.attr. Make a public attribute. | ||
moritz | what labster++ said | 08:29 | |
labster: sorry, I don't have the mental capacity right now to digest your gist. I'll try to remember it later today, or feel free to nag me again | |||
labster was afraid of that. | |||
moritz | labster: fwiw in rakudo I've already removed the File/Path distinction | ||
labster | essentially it boils down to "how many subclasses do we want running around for paths" | 08:30 | |
moritz | labster: it turned out to be too much work to always create objects of the right type, with too little benefit | ||
[0xF] | You mean private is restricted to self, not any instance of this class? | ||
moritz | correct. But you can call private methods of the same class with $obj!Classname::method() (iirc) | 08:31 | |
[0xF] | that's strange | ||
labster | moritz: Okay. That's sort of the same conclusion that I came to. It's still specced though. | ||
moritz | labster: then feel free to throw out that part of the spec | 08:32 | |
[0xF] | r: class Foo { has $.m; method foo(Foo $f) { $f.$.m = 42; } }; Foo.foo(); | 08:33 | |
camelia | rakudo 4109be: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method foo at /tmp/av_Zcd8UyL:1 in block at /tmp/av_Zcd8UyL:1» | ||
[0xF] | r: class Foo { has $.m; method foo(Foo $f) { $f.$.m = 42; } }; Foo.foo(Foo.new()); | ||
camelia | rakudo 4109be: OUTPUT«Cannot look up attributes in a type object in method m at src/gen/CORE.setting:1961 in method foo at /tmp/W8gMFWgusf:1 in block at /tmp/W8gMFWgusf:1» | ||
[0xF] | hm? | ||
labster | But I am thinking that subclasses for handling different OS-groups might be the right idea, much like how File::Spec defaults to the current OS but all of its work is handled by subclasses. | 08:34 | |
sorear | [0xF]: $f.$.m is wrong, $f.$!m is wrong | 08:35 | |
[0xF]: the only correct syntax is $f.m | |||
labster | r: class Foo { has $.m; method foo { self.m = 42; } }; Foo.foo(); | ||
camelia | rakudo 4109be: OUTPUT«Cannot look up attributes in a type object in method m at src/gen/CORE.setting:1961 in method foo at /tmp/1m1nwc2ntr:1 in block at /tmp/1m1nwc2ntr:1» | ||
[0xF] | r: class Foo { has $.m is rw; method foo(Foo $f) { $f.m = 42; } }; Foo.foo(Foo.new()); | ||
camelia | rakudo 4109be: ( no output ) | ||
[0xF] | sorear++ | 08:36 | |
labster | r: class Foo { has $.m; method foo { self.m = 42; } }; Foo.new.foo(); | ||
camelia | rakudo 4109be: OUTPUT«Cannot assign to a readonly variable or a value in method foo at /tmp/HUlCCNbJ6a:1 in block at /tmp/HUlCCNbJ6a:1» | ||
labster | I fail today | ||
FROGGS | labster: I'd say go ahead, I really do like what you are doing | ||
r: class Foo { has $.m; method foo { $!m = 42; } }; Foo.new.foo(); | 08:37 | ||
camelia | rakudo 4109be: ( no output ) | ||
tadzik | [0xF]: thing is, attributes themselves are never visible outside of the class body. You always use accessor methods | ||
$. is just $! but also generating a (public) method | 08:38 | ||
[0xF] | tadzik: I asked about using the attribute of the same class, just different instance. That's how private works in Java and C# | ||
sorear | you don't. | 08:39 | |
tadzik | it does? I dind't know | ||
but yeah, it doesn't work this way in Perl 6 | |||
08:39
daxim joined
|
|||
[0xF] | now I know that | 08:40 | |
sorear | in C# there's an assumption that all instances of a class trust all other instances of the same class | ||
08:40
Arindam joined
|
|||
labster | All of this is a long yak-shaving expedition for porting my web script from P5. Which is probably should have used Path::Class in the first place for portability, but didn't. Though I decided paths should be even more DWIM in Perl 6. | 08:40 | |
moritz | sorear, [0xF]: makes sense, IMHO | ||
sorear | I don't think I've ever actually seen the design rationale for this bit of Perl 6 articulated ... maybe I should reread the Apocalypses | 08:41 | |
Arindam | I have a quesiton .. perl is such a awesome language .. why is it not making it's mark in current days of Ruby and Node | ||
moritz | the problem is that we don't have the same kind of static type informatoin as C# and Java have | ||
[0xF] | moritz: I see | ||
sorear | Arindam: contingent history. you might as well ask why it rains in one city and not another when both have a 50% forecast | 08:42 | |
[0xF] | moritz: but method (Foo $foo) clearly knows that $foo is Foo, doesn't it? | ||
moritz | [0xF]: but what if $foo isn't typed as Foo, but still contains a Foo? | 08:43 | |
sorear | Type annotations are invisible to name resolution | ||
[0xF] | moritz: good point | ||
sorear | at one point niecza allowed attribute access using the $foo!Foo::y syntax | ||
this was a misunderstanding on my part and I think it's been removed | 08:44 | ||
labster | Arindam: Perl 5 still has a ton of users, but it's not like the old days when there weren't a lot of choices in scripting languages. Perl 5 is currently hard to improve internally, and Perl 6 is not "done" in enough people's eyes. So people see other languages as more exciting because of the bigger changes, even when what we're doing here is pretty exciting. | ||
08:44
berekuk left
|
|||
sorear | anyways, the goal of Perl 6 has always been to make a language that people will still be using in 20-30 years | 08:45 | |
moritz | sorear: that syntax is meant for private methods, afaict | ||
sorear | moritz: indeed. | ||
we've focused more on futureproofing and less on the immediate shiny | 08:46 | ||
the immediate shiny we do have is largely there *because* it has futureproofing value | |||
multiple dispatch is a proven way to make stuff extensible | |||
labster | Because we've been down the road of not futureproofing already. | ||
[0xF] | Arindam: It took about 20 years for Haskell to become trendy. Perl 6 might come same path. And the yesterday-trendy Ruby clearly borrows much from Perl 5. | 08:47 | |
labster | sorear: It's more making a language that people will *want to use* in 20-30 years. | 08:49 | |
Arindam | I love perl to my heart .. but when I try to use it for Web using Catalyst or something .. I get a lot of burns, most of them come from the fact that not lot of people consider perl as a serious web language .. the is same is not true for Rails | 08:50 | |
08:50
dakkar joined
|
|||
sorear | Arindam: how does the opinions of other people cause you burns? | 08:51 | |
[0xF] | Arindam: www.paulgraham.com/icad.html | ||
Arindam | well I don't get to learn or get help whenever I need .. i can google around for rails for all possibles errors that might happen .. all sorts of cool libraries and books around | 08:52 | |
tadzik | Arindam: build awesome stuff, show them, shut their mouths | ||
always works | |||
Arindam | I agree | ||
08:55
[0xF] left
|
|||
labster | I agree that we need more documentation, but I'll work on that. | 08:55 | |
labster is not sure that being needing to look up lots of error messages is a good thing for a language. | 08:56 | ||
hoelzro | heh | 08:57 | |
09:01
berekuk joined
|
|||
sorear | man perldiag | 09:02 | |
every perl error message is in there | |||
sleep& | |||
hoelzro | one thing that keeps me sticking with Perl is that the documentation always includes a *lot* of examples | 09:03 | |
imo, it's easier to pick up a new library and getting going with it | |||
labster | S32: role IO { }; The base role only tags that this is an C<IO> object for more generic purposes. It doesn't specify any methods or attributes. | 09:09 | |
Huh. That is not how it is implemented in Rakudo or Niecza. | |||
moritz | yes, I know | ||
the plan was as follows: there are two ways to work with files. One is through filenames (prone to race conditions), one is through file handles (only works with sufficient privs) | 09:10 | ||
FROGGS | <labster> Huh. That is not how it is implemented in Rakudo or Niecza. <--- that is some sort of rule that will apply for ages | ||
moritz | so $filename.path should return an IO::Path, and $filename.open or $filename.IO will return an IO::Handle or so | 09:11 | |
so the plan was to migrate IO to IO::Handle or so | 09:12 | ||
but I never got around to it | |||
labster | Still the plan? | ||
moritz | yes | 09:16 | |
I hate it that file handles have such an unspecific type 'IO' | |||
09:16
kresike joined
|
|||
kresike | hello all you happy perl6 people | 09:17 | |
dalek | kudo/nom: 24532ac | (Brent Laabs)++ | src/core/IO.pm: inch IO::Path closer to the recent spec changes (path, volume, Str) |
||
kudo/nom: 02b7524 | moritz++ | src/core/IO.pm: Merge pull request #126 from labster/nom inch IO::Path closer to the recent spec changes (path, volume, Str) |
|||
FROGGS | awesome | ||
labster | w00t! My first commit to rakudo! | ||
FROGGS | labster++ | ||
hoelzro | labster++ | 09:20 | |
moritz | labster++ indeed | 09:21 | |
moritz hopes for many more | |||
09:26
snearch joined
09:32
census joined
09:33
snearch left
09:41
berekuk left,
dpk left
09:42
botton joined,
botton left
09:44
berekuk joined
09:45
berekuk left
09:46
dpk joined
09:48
jlaire left
09:50
Arindam left
|
|||
FROGGS | hoelzro: how is the pygments going? | 09:51 | |
hoelzro | FROGGS: PR is still being reviewed | 09:52 | |
in fact, I should check up on it | |||
I made a bunch of corrections like a week ago | |||
FROGGS | ahh, cool | ||
hoelzro | just poked the author. | 09:56 | |
er, maintainer. | |||
09:57
raiph left
|
|||
labster | thanks for chatting, everyone. good night. | 09:59 | |
09:59
araujo left
10:02
labster left
10:03
kaleem joined,
araujo joined
|
|||
timotimo | the new parrot release doesn't really thrill me all that much :| | 10:07 | |
FROGGS | you mean the three small patches? | 10:08 | |
10:09
denisboyun_ joined
10:18
anuby left
10:19
erkan joined,
erkan left,
erkan joined
10:20
immortal left
|
|||
FROGGS | moritz: does the order, in which I pass arguments to QAST::Op, matter? | 10:22 | |
like: QAST::Op.new( :named<a>, QAST::SVal.new(...) ) in exchange to QAST::Op.new( QAST::SVal.new(...), :named<a> ) | 10:23 | ||
I dont think so but the error messages I get maybe prove me wrong | 10:24 | ||
uhh, nvm, I think I got it now | 10:25 | ||
moritz | the position of named args doesn't matter | 10:32 | |
FROGGS | ya, dunno why it wasn't working before | 10:35 | |
10:39
tangentstorm left
|
|||
hoelzro | moritz++ # referral to containers docs | 10:39 | |
this is kinda blowing my $mind | |||
namely my $p = ( $x, 1, 2 ); $p[0] = 23; | 10:40 | ||
10:40
tangentstorm joined
10:44
jaldhar_ left,
_jaldhar_ joined
10:49
camelia left
10:51
camelia joined
10:52
ChanServ sets mode: +v camelia
11:02
PacoAir joined
11:05
census left
11:20
jlaire joined
11:24
PacoAir left
11:26
PacoAir joined
11:30
xinming left
11:32
xinming joined
11:48
_jaldhar_ left
11:53
SamuraiJack joined
11:59
domidumont left
12:01
tgt joined
|
|||
hoelzro | (whoever wrote doc.perl6.org/language/*)++ | 12:03 | |
so many ++ | |||
timotimo | ah, i recognize parts of the classtut from the perl6 book | 12:04 | |
moritz | yes, that's stolen from the book/OO chapter | 12:06 | |
12:07
domidumont joined
|
|||
timotimo | good call | 12:07 | |
12:08
rindolf joined
12:10
nyuszika7h left
12:13
stevan_ left,
stevan_ joined
12:20
cognominal joined
|
|||
timotimo | r: multi sub foo($a, $b) { say "two-arg" }; multi sub foo(*@a) { say "list version" }; foo(1, 2); foo(1, 2, 3); | 12:21 | |
camelia | rakudo 02b752: OUTPUT«two-arglist version» | ||
timotimo | hm | ||
hoelzro just noticed there's a Perl 6 hackathon at YAPC::EU | 12:32 | ||
12:38
domidumont left,
domidumont joined
|
|||
dalek | kudo/nom: c946d0f | (Tobias Leich)++ | src/Perl6/ (3 files): bring runtime importation closer to spec This enables: require PATH <imports> require $varibale <imports>, and require ModuleName:file(PATH) <imports>. So a given path or variable is always treated as a filename, and a module name can be specified to ease importing. |
12:44 | |
moritz | FROGGS++ | 12:45 | |
hoelzro | you can create your own subclass of ClassHOW and friends, right? | 12:46 | |
FROGGS | but it is rediculous that I spend days for just a bunch of lines | ||
moritz | it gets better with time | 12:47 | |
FROGGS | I hope so :o) | ||
hoelzro | FROGGS++ # import/export improvements! | ||
moritz | you can also view it a bit differently: it's amazing how little code changes some new/improved features require | ||
12:48
nyuszika7h joined
|
|||
dalek | ast: 7b00258 | (Tobias Leich)++ | S11-modules/require.t: add tests for require PATH and require $variable but also change a wrong test about require "ModuleName". |
12:48 | |
ast: 01c201d | (Tobias Leich)++ | S (7 files): fixed conflicts |
|||
colomon | moritz: +1 | ||
FROGGS | moritz: ya, and I am more confident if I only have to adjust a few lines, rather than adding hundreds of lines and helper functions | 12:49 | |
hoelzro | are the meta model classes not exposed to the Perl 6 namespace? | 12:51 | |
r: say(Perl6::Metamodel::ClassHOW) | |||
camelia | rakudo 02b752: OUTPUT«Could not find symbol '&ClassHOW' in method <anon> at src/gen/CORE.setting:10840 in any at src/gen/Metamodel.pm:2504 in any find_method_fallback at src/gen/Metamodel.pm:2492 in any find_method at src/gen/Metamodel.pm:939 in block at /tmp/Vj3qtDXQtZ:1»… | ||
timotimo | they are not in Perl6:: | ||
r: say Metamodel::ClassHOW.new; | 12:52 | ||
camelia | rakudo 02b752: OUTPUT«Perl6::Metamodel::ClassHOW.new()» | ||
timotimo | oh, that's interesting. they will .Str to Perl6::, but that won't work | ||
hoelzro | interseting... | ||
FROGGS | ENOSUCHINTERSETTING | ||
timotimo | :) | ||
hoelzro | r: say(Metamodel::ClassHOW.^methods) | ||
camelia | rakudo 02b752: OUTPUT«No such method 'gist' for invocant of type 'NQPRoutine' in method gist at src/gen/CORE.setting:5264 in method gist at src/gen/CORE.setting:902 in sub say at src/gen/CORE.setting:7811 in block at /tmp/_jm47M83t_:1» | ||
hoelzro | would it be a bad thing to add gist to NQPRoutine? | 12:53 | |
timotimo | r: say(Metamodel::ClassHOW.^methods.keys) | ||
camelia | rakudo 02b752: OUTPUT«0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91… | ||
timotimo | m) | ||
hoelzro | o_O | 12:54 | |
tadzik | varibale! :) | ||
timotimo | ah, interesting. the list-associativity will apparently cause infix:<~> to always be called with the **@things version, even though in a normal dispatch the two-arg version would be called instead | ||
i wonder if that's something that should be fixed? | 12:56 | ||
FROGGS | timotimo: do you mean it will call the two-arg version without the assoc<list> or with it? | ||
12:56
woolfy left
|
|||
timotimo | it has assoc<list> right now and it will not call infix:<~>(\a, \b) | 12:56 | |
FROGGS | btw, you can override the assoc from within tokens too... dunno if that helps | 12:57 | |
(I guess not) | |||
uhh: t/spec/S03-smartmatch/any-hash.t .......................... Failed 3/6 subtests | 12:58 | ||
what is wrong there? my rakudo is clean O.o | |||
moritz | didn't somebody unfudge tests in there? | ||
like, yesterday? | |||
I'll throw out the tests, they conform to an old spec | 12:59 | ||
like, the whole file | |||
timotimo | hehe | ||
[Coke] | hurm. I had unfudged some stuff in there for testing, but don't htink I committed. | 13:00 | |
timotimo | why is perl6 doing this to me :( | ||
well, i guess it's not perl6's fault, it's rakudo's fault | |||
dalek | ast: b0c6d66 | moritz++ | S03-smartmatch/any-hash.t: remove S03-smartmatch/any-hash.t, which conformed to an old spec |
||
[Coke] | moritz: it was isBEKaml | 13:01 | |
moritz: hopefully you won't remove array-array! | |||
hoelzro | when manually constructing a class (ex. Child), do you have to predeclare it before calling .^compose? | 13:02 | |
or is ::Child := $class.^compose() good enough? | |||
also, is there syntax sugar for using a custom metaobject for class construction? | 13:03 | ||
instead of class MyClassHow is Metamodel::ClassHOW { ... } my $class = MyClassHow.new($name); etc | |||
moritz | I don't think so | 13:06 | |
hoelzro | =( | 13:07 | |
13:07
skids left
|
|||
hoelzro was playing around, hoping to make a way to force subclasses to add 'is override' to methods that they're overriding | 13:08 | ||
13:09
domidumont left,
domidumont joined
|
|||
timotimo | the array i get as **@things in my infix:<~> from this call in Str.trans github.com/rakudo/rakudo/blob/nom/...tr.pm#L895 will explode in my face even if i just call infix:<+> on it to see how many elements it has :( | 13:12 | |
13:14
SamuraiJack left
13:15
cognominal__ joined
|
|||
timotimo | yeah, right, let's call .DUMP on the array in infix:<~>, what could possibly go wrong | 13:17 | |
dalek | kudo/nom: c39b887 | moritz++ | src/core/Mu.pm: remove reporting of variable name from uninit warnings they produced too many false positives |
||
kudo/nom: f3c3feb | moritz++ | t/spectest.data: track deletion of test file |
|||
13:20
cognominal left
|
|||
timotimo | gah, diese grütze, i can't DUMP the array either, because i get the very same error as before >_< | 13:23 | |
[Coke] wonders what is up with this commit: github.com/perl6/roast/commit/01c2...rce=feedly | 13:26 | ||
it seems to duplicate bits of other recent commits. | 13:27 | ||
timotimo | can someone else please implement proper handling of infix:<~> with list assoc? this is driving me nuts and i'd rather not waste any more brain cells on this terrible problem. | 13:29 | |
moritz | [Coke]: it's a merge commit | ||
[Coke] | ah. froggs must have edited the commit message and removed the word MERGE. (I see the "2 parents" now) | 13:32 | |
moritz: any ideas on rt.perl.org/rt3/Ticket/Display.html?id=117635 | 13:33 | ||
moritz | [Coke]: I guess we need to generate unique IDs for each run of 'gather', and put them into a contextual (not sure if that gives the right scope), and then take() throws a control exception that is only caught by this particular 'gather'. Or something similar. | 13:36 | |
[Coke] wonders why timotimo is complaining about groats. | 13:40 | ||
hoelzro | is it ClassHOW.new($class-name) or ClassHOW.new_type($class-name)? | 13:41 | |
13:41
domidumont left
|
|||
timotimo | new_type | 13:41 | |
if you'd like some example code, look at my ADT module: github.com/timo/ADT/blob/master/lib/ADT.pm6 | |||
13:42
domidumont joined
|
|||
hoelzro | thanks! | 13:42 | |
[Coke] | sergot: what tests are failing for Lingua::EN::Numbers::O* on feather.perl6.nl/~sergot/modules/ ? | 13:43 | |
(I thought I fixed them all, and my pull request was pulled) | |||
timotimo | it doesn't seem like the **@things "optimization" even makes stuff faster :| | ||
clearly i must be doing something stupid. | 13:44 | ||
13:47
domidumont left
|
|||
timotimo | why is .join not faster than adding pieces together with ~?! | 13:48 | |
is parrot's join function slow perhaps? | 13:50 | ||
maybe it's the cost of creating the array of pieces before calling nqp::join | 13:51 | ||
moritz | I guess it's nothing to do with the actual joining, but with how the lists are handled/iterated | ||
timotimo | could i implement a new join based on the Buf class? | ||
that will give me decoding/encoding overhead, right? | 13:52 | ||
moritz | right | ||
timotimo | damnit | ||
if join isn't even faster than adding the pieces together with ~, what's the point? :| | |||
13:53
domidumont joined
|
|||
[Coke] | timotimo: when I'm hacking on perl6 six stuff, if I get to this point of frustration, I will often go hack on a different thing instead. | 13:55 | |
... This is probably why I hardly ever finish anything! | |||
13:57
kaare_ joined
|
|||
gtodd | timotimo: are there any tickets associated with "proper handling of infix:<~>" | 13:59 | |
timotimo | gtodd: i don't think there are yet | 14:00 | |
dalek | ast: b1677fe | moritz++ | S32-io/io-path.t: fix fudging of io-path.t |
14:01 | |
gtodd | just wondered if it was a general perl6 thing and not a "platform" (parrot niecza) or implementation (rakudo) thing | 14:02 | |
14:02
wooden left
|
|||
timotimo | what. my naive version of join that just ~'s the parts and seps over and over is exactly as fast (slow) as the native implementation of join for rakudo | 14:04 | |
so i blame parrot's join thingie. | |||
gtodd | cause with perl6 the water gets deep real fast :-| | ||
14:06
FROGGS left
|
|||
timotimo | the question is: is rakudo super efficient or is parrot super slow? | 14:08 | |
gtodd | parrot seems like Scotty ... down in the engine room ... "Captain Kirk: Scotty/Parrot I've got to have more *speeeeed*" | ||
timotimo | because if we have an immutable string class, there should be a very noticable difference | ||
yeah, except scotty can always deliver more speed | |||
gtodd | Scotty: "I'm trying Captain we're practically breaking up as it - the shields won't hold!!" | 14:09 | |
Captain Kirk: "there is no try, only do" | |||
oops mixed up the space sagas | |||
14:10
awwaiid left
|
|||
timotimo | :) | 14:10 | |
14:11
awwaiid joined
|
|||
gtodd | hmm #parrot is full of folks ... maybe we can get them to pedal faster :) | 14:12 | |
timotimo | i don't feel like pushing them too hard | ||
their StringBuilder implementation must be pretty unoptimized. | 14:13 | ||
gtodd | timotimo: am I dreaming or is there now a steady trend to very gradually go a tiny bit faster with each release | 14:14 | |
timotimo | so when we say "use list.join to concatenate lots of string pieces", the user will actually end up with slower running code (although not very much) | ||
i have not noticed that | |||
[Coke] | timotimo: "you should see the OTHER guy". It used to be slower. | ||
timotimo | but i'm too new to this project to have noticed i think | ||
14:16
xilo left,
fgomez left
|
|||
gtodd | timotimo: it seems parrot development is shifting focus to being first and foremost a better vm for nqp + perl6 ... maybe that means speed | 14:20 | |
timotimo | i guess the constant factor is just so incredibly high that the O(n^2) growth is just invisible. | 14:23 | |
bbl. | |||
14:33
baest left,
fgomez joined
14:35
skids joined
14:37
arlinius left
14:38
xilo joined
14:40
frdmn left
14:46
woolfy joined
|
|||
kresike | bye folks | 14:47 | |
14:47
kresike left
14:52
FROGGS joined
|
|||
FROGGS | ahhh, home sweet home | 14:52 | |
14:54
stevan__ joined,
stevan__ left
15:02
thou joined
|
|||
hoelzro | you can't modify a class' metaobject via a trait, can do? ex. my multi trait_mod:<is>(Mu:U $class, :$happy) { $class.HOW does role { ... }; } class Foo is happy { ... } | 15:16 | |
15:16
stevan_ left
15:17
stevan_ joined
15:21
raiph joined
|
|||
hoelzro | what prompts doc.perl6.org to regenerate? | 15:27 | |
15:28
spider-mario joined
|
|||
moritz | there are no automatic rebuilds/regenerates | 15:28 | |
hoelzro | =/ | ||
tangentstorm | hoelzro: the ancient ritual of akh-naad-verun | ||
hoelzro | it's pretty out of date | ||
tangentstorm | performed by seven priests on the highest mountaintop. | ||
dalek | c: 6e965bb | (Rob Hoelz)++ | lib/variables.pod: Fix typo |
15:30 | |
hoelzro | could we install a POST receive hook to rebuild it after a push to GH? | 15:36 | |
moritz | not easily, it consumes quite some resources | ||
hoelzro | really? =( | 15:38 | |
what about POST -> schedules job to run in N minutes if no such job already exists | |||
moritz | well, that's doable, but quite some effort | 15:41 | |
are you willing to do it? | |||
hoelzro | if I get the tuits, yes =) | 15:42 | |
what is doc.perl6.org powered by? or it entirely static? | 15:43 | ||
moritz | it's static | 15:44 | |
hoelzro | mkay | ||
so we would need some sort of thing to enqueue the job | |||
I take it cron is running on the machine? | 15:45 | ||
moritz | the host doesn't have enough memory to compile (or run) rakudo | ||
hoelzro | hell, I think it'd be simpler that what I suggested | ||
ah crap. | |||
are the docs written in Pod6? | |||
moritz | so we generate the HTML on other machines, and rsync the .html files over | 15:46 | |
yes | |||
hoelzro | if it's fine with you, I'd be willing to generate the docs on my VPS | ||
moritz | sure | ||
hoelzro | I don't know how you feel about granting that access to my machine, though | ||
\o/ | |||
moritz | well, I'll trust you to generate an ssh key (can be passwordless) for that purpose | 15:47 | |
hoelzro | of course | ||
moritz | and I'll add that to the p6doc (iirc) .ssh/authorized_keys file | ||
hoelzro | well, I'll work on the notification part | ||
moritz | and then you can rsync stuff over, and not do much else | ||
hoelzro | so that I get log entries when I get a push | ||
then I'll implement the cronjob stuff and the rsync | |||
moritz | the rsync is already implemented | 15:48 | |
there's a script in the perl6/doc repo | |||
you just have to launch ist | |||
*it | |||
hoelzro | easy peasy. | ||
moritz: do you have permission to set up a POST hook for perl6/doc? | 15:50 | ||
moritz | hoelzro: aye | 15:51 | |
hoelzro | moritz: if you'd like, you can set up a hook to point to p6doc.hoelz.ro/update | ||
timotimo | neato :) | 15:52 | |
i like this development | |||
moritz | hoelzro: done | ||
hoelzro | \o/ | ||
hopefully GH doesn't throw a fit for a 404... | 15:53 | ||
timotimo | don't think it will | 15:54 | |
hoelzro | =) | 15:55 | |
timotimo | grah. | 15:56 | |
i'm looking for a square, but i can't find it | |||
hoelzro | now to wait for the DNS entries to propagate... | ||
16:00
DQP left,
arlinius joined
|
|||
timotimo | the native join method is - even for very, very large lists of strings - slower than my naive implementation that's based on just $result = $result ~ piece | 16:01 | |
at 200000 elements (each being 16 characters long) the naive implementation takes 8.4 seconds per full join and the native implementation (which should algorithmically be better) takes 13.2 seconds | 16:02 | ||
16:05
kaleem left
|
|||
masak | oh hai, #perl6 | 16:05 | |
16:05
daxim left
|
|||
timotimo | i can't seem to get the native string join to go faster than my naive version. maybe i should replace rakudo's join method with my naive implementation? | 16:06 | |
in that case, replacing long chains of ~ with a join on a list is useless, because the join would actually do the same thing as a two-argument version of ~ already does | 16:07 | ||
16:07
isBEKaml joined
|
|||
isBEKaml | OHHAI, #perl6! | 16:08 | |
PerlJam | timotimo: where's your benchmark code? | ||
isBEKaml | <FROOGS> uhh: t/spec/S03-smartmatch/any-hash.t .......................... Failed 3/6 subtests | ||
Sorry about that, I was wondering the same thing last night - but since I saw p6eval treating this differently, I thought mine must be broken or something. | 16:09 | ||
timotimo | gist.github.com/timo/d0df11c807241005fc1e PerlJam | ||
it doesn't seem to handle infinite lists yet. i wonder if that makes it any slower? | 16:10 | ||
huh. the same "while $list.gimme(0)" logic from the join method doesn't seem to cause my naive implementation to join all the parts of the list?! | 16:15 | ||
masak quite enjoyed aanandprasad.com/articles/negronis/ and its explanation of how monads keep popping up in useful places | 16:18 | ||
FROGGS | pals: files (foo.pl) cant export things, right? only packages can, right? | 16:21 | |
masak | right. | 16:22 | |
FROGGS | isBEKaml: so we just need to fudge it again? | 16:23 | |
isBEKaml | FROGGS: never mind - it's sent to hell. :) | ||
FROGGS | masak: so, how shoul that work?: require PATH <imports> | ||
hehe | |||
*should | 16:24 | ||
masak: I see how (and that) `require ModuleName:file(PATH) <imports>`can work, but not without the package-name | |||
timotimo | r: say (0, 1 ... *).join | 16:28 | |
camelia | rakudo f3c3fe: OUTPUT«0123...» | ||
pmichaud | timotimo: your benchmark code for timing joins has some flaws | 16:29 | |
FROGGS .oO( your timing code will have some flaws O.o ) | 16:30 | ||
timotimo | pmichaud: i'd be interested to know. i'm making lots of changes right now to make it play well with separators and infinite lists | ||
pmichaud | it's not taking into account gc effects, for one | ||
timotimo | okay. i suppose i should make measurements with different amounts of elements and graph them, rather than get out one single number? | 16:31 | |
pmichaud | and in different order | ||
and independently, not in the same program | |||
timotimo | mhm | ||
pmichaud | right now the timing for the second join is being affected by whatever garbage was produced by the first | 16:32 | |
and parrot's gc sometimes does weird stuff, especially depending on the specifics of your hardware's memory | 16:33 | ||
timotimo | good point. | 16:34 | |
pmichaud | the first thing I'd try to do is see what is making the native join slow | ||
timotimo | probably the part that creates an nqp-level list by copying each element | ||
pmichaud | maybe, but that really shouldn't be all that slow | 16:35 | |
timotimo | and pushing it into the other list. and doing it with a shift. | ||
pmichaud | oh! | ||
timotimo | maybe i could make it faster by doing a regular for loop | ||
pmichaud | that would be slow, yes. | ||
I don't think a for loop would be faster | |||
just a second. | |||
16:36
domidumont left
|
|||
pmichaud | the shift part is probably slow. I think List may still need to be converted to use QRPA instead of RPA | 16:36 | |
RPA's shifts are horribly slow | |||
timotimo | give me a second and i'll try it with a for loop instead of shifts | 16:37 | |
pmichaud | a for loop just does shifts on lists | ||
timotimo | oh? | ||
pmichaud | so that's not really "faster" | ||
for -> map | |||
you can try it, and it might become faster, but if so it'll be because of the wrong reasons. | |||
timotimo | let me quickly verify that with an experiment | ||
i'll take any speedups i can get :P | |||
pmichaud | it'll be another "optimization" that is only faster because there's a problem elsewhere that you're working around. | ||
that's likely to be a "speedup" I'll reject. | 16:38 | ||
timotimo | hm, ok | ||
pmichaud | I'm not in favor of speedups that are simply working around known bugs. | ||
because it's a technical debt that needs to be repaid when the known bug is actually fixed. | |||
timotimo | indeed | ||
but it's not something i feel like i can fix by myself | |||
pmichaud | I'd rather find the underlying bug and solve all of the problems there, rather than implement lots of workaround "speedups" to avoid the pain of fixing the core problem. | 16:39 | |
masak feels he's learning about code review and project management just by backlogging over pmichaud | |||
arnsholt | I'm hoping to fix NQP's list relatively soon | ||
timotimo | oh, that would be neat | ||
arnsholt | Just need to get past this article deadline that's coming up soon | ||
timotimo | procrastinate past it! :)) | ||
pmichaud | anyway, underlying the "for" is "map", and map just does repeated shifts over lists (although it does get a few 'cheats' because it's special) | 16:40 | |
arnsholt | Yeah, that'd be nice to do, except that won't result in a publication =) | ||
timotimo | WOW. | ||
pmichaud | but the problem with using for/map is that it may not release the elements to gc as smoothly as directly shifting a list does | ||
timotimo | for my super silly implementation of just replacing a "shift while" with a for, i get from 10 seconds down to 2. | 16:41 | |
pmichaud | yeah, that's probably the cost of rpa versus qrpa, or it's relying on map's "cheats" | ||
timotimo | mhm | ||
if arnsholt is going to fix that, then i see no reason to keep this cheat | |||
pmichaud | what's wrong with NQP's list, ooc ? | 16:42 | |
arnsholt | It's an RPA | ||
pmichaud | that's why we have QRPAs | ||
timotimo | what do QRPA and RPA mean? | ||
pmichaud | QRPAs don't have the performance issues that RPAs do | ||
arnsholt | RPA is Resizable PMCArray | ||
FROGGS | rpa is resizable pmc array | ||
arnsholt | Parrot's object array type, essentially | ||
FROGGS | and the q? | ||
pmichaud | (and they're drop-in-replacements for RPAs) | ||
masak | Quanttum | ||
Quantum* | |||
pmichaud | QRPA is NQP's resizable pmc array | 16:43 | |
arnsholt | QRPA is pmichaud's replacement | ||
timotimo | they are a drop-in replacement? then that should be easy to do, isn't that right? | ||
FROGGS | so I can call it pmRPA too :o) | ||
masak | you mean qmichaud's ;) | ||
isBEKaml | It just came with the Q (after P) | ||
pmichaud | it should be easy to do; I got blocked because NQP didn't have serialization code for QRPA | ||
arnsholt | Or, I seem to remember pmichaud writing QRPA. I might be wrong =) | 16:44 | |
pmichaud | and then I ran out of tuits to figure out how to do the serialization stuff | ||
yes, QRPA is mine. | |||
anyway, NQP already has nqp::qlist which does the same as nqp::list but uses a QRPA instead of an RPA | 16:45 | ||
timotimo | oh, hm, serialisation | ||
pmichaud | the plan was to migrate NQP/Rakudo to use nqp::qlist instead of nqp::list, make sure everything works, and then switch nqp::list to generate QRPAs instead of RPAs | 16:46 | |
timotimo | yikes, C code?! | ||
pmichaud | and then s:g/'nqp::qlist'/nqp::list/ to bring everything back to normal | 16:47 | |
FROGGS | sounds like it is time to do that these days | ||
pmichaud | it's all part of the list reworking that I've been wanting to do since last summer but can't because of tuit blockages :-/ | 16:48 | |
(I never have enough tuits in bulk to be able to work on it for the dedicated week I'm likely to need) | |||
anyway, if someone can get it so that NQP uses QRPA/nqp::qlist instead of nqp::list, that'd be a huge boost. | |||
then we could start moving Rakudo across. | 16:49 | ||
and yes, QRPA is hugely faster. I did some statistics when writing QRPA... just a sec... | |||
FROGGS | pmichaud: you maybe sketch down you brain.... err, your thoughts about that in an issue, so someone can hook in | ||
pmichaud | oh, I can create an NQP issue for it, sure. | ||
FROGGS | and you can comment from time to time on that if there are questions | ||
(spread the wisdom) | 16:50 | ||
pmichaud | from last june: | 16:54 | |
gist.github.com/2860944 # time differences, RPA vs QRPA for 100000 unshifts followed by 100000 shifts | |||
timotimo | oh, whoa | ||
that's amazing | 16:55 | ||
pmichaud | anyway, you can see why lists and shifts are slow in Parrot. | ||
timotimo | i can't see ",why", but i can see ",that" | 16:56 | |
pmichaud | here's the impact of switching for/map to use qrpa instead of rpa: | 16:57 | |
gist.github.com/2877497 # preliminary timing of new .map implementation vs existing one on "for 1..200000 { $i++ }" | |||
cognominal__ | may be the shift is internally really a shift in parrot, instead of a pointer moving? | ||
pmichaud | cognominal__: in parrot it's a memcpy, yes. | ||
so it goes quadratic over multiple shifts | |||
qrpa moves an index | 16:58 | ||
and only does memcpys when the buffer boundaries are reached. | |||
timotimo | you let all this niceness sit around for >half a year and didn't think to give someone the task to do it for you? :) | ||
pmichaud | timotimo: well, it also involves rewriting a lot of the List code, if done right. | ||
timotimo | of course | 16:59 | |
pmichaud | we can do the drop-in replacement and ought to be able to get some good speedup, but List still needs some significant refactoring. | ||
I didn't expect my tuit starvation to be this long. | |||
cognominal__ | so where qrpa is used in rakudo? | 17:00 | |
pmichaud | MapIter | ||
(for/map) | |||
but it needs to be used for List, too. | |||
Currently List is still using RPA, which is why doing repeated shifts on a List are slowish | |||
do "ack qlist src" | |||
MapIter can use qlist because MapIters are apparently never serialized (they tend to exist only at runtime) | 17:01 | ||
Lists get serialized, which is one of the things that blocked me from using ::qlist there. | |||
17:01
dakkar left
|
|||
arnsholt | pmichaud: My planned list stuff is to replace qlist entirely with the VMArray REPR, FYI | 17:02 | |
pmichaud | arnsholt: what's the timeline for that, ooc? | ||
and do we have benchmarks versus qrpa? | |||
arnsholt | And then nqp::list will return a VMArray-backed sixmodel object, which is in line with NQP-JVM | ||
Well, the internal implementation of VMArray is essentially QRPA's | 17:03 | ||
pmichaud | arnsholt: anyway, yes, I know that's also coming down the pike. | ||
arnsholt | But no benchmarks yet, since it's not properly implemented yet (unfortunately) | ||
pmichaud | I'm fine with abandoning qrpa in favor of VMArray as soon as it's ready, as long as peformance doesn't suffer too much. | ||
timotimo | is the QRPA code already in nqp master? | ||
pmichaud | timotimo: yes. | ||
timotimo | mhm | ||
arnsholt | timotimo: src/pmc/qrpa.pmc | ||
I'm a bit fuzzy on the timeline, but I'm hoping a month, two at the outside | 17:04 | ||
Depends a bit on what happens to my tuits post-article | |||
There's a semi-functional implementation in nqp/vmarray-list | |||
pmichaud | anyway, first step would probably be to get nqp itself to use qlist (QRPA) instead of list (RPA). This _might_ also speed up the grammar engine a fair bit. | ||
I don't know if the grammar engine classes are still using RPAs... likely, if QRPA serialization isn't done yet. | 17:05 | ||
timotimo | what exactly can be made to use qrpa before one hits the serialisation necessity? | 17:06 | |
17:06
SamuraiJack joined
|
|||
pmichaud | not a lot beyond MapIter, I suspect. | 17:06 | |
QRPA is a low-level type that gets used by other Perl6/NQP low-level types. | |||
timotimo | is serialisation used for anything but precompiled modules? it seems every time something gets compiled to .pir there'll be huge blobs of serialised data. | 17:07 | |
PerlJam | pmichaud: Can RPAs not be fixed? Or was this one of those "easier to do ourselves" decisions? | ||
pmichaud | easier to do ourselves, by far. | ||
like, not even close. | |||
PerlJam | okay | ||
pmichaud | Parrot's RPA isn't a standalone thing. RPA derives from FixedPMCArray. | 17:08 | |
timotimo | i suppose a new enum_class_ResizablePMCArray like constant would have to be introduced for QRPA? | ||
pmichaud | timotimo: there's one already -- it's the type id | ||
we just look it up when initializing the rest of the dynops | 17:09 | ||
timotimo | oh, ok | ||
pmichaud | see qrpa_id in src/binder/bind.c and src/ops/perl6.ops | ||
timotimo | so these enum_class_ things are just for things that come from parrot itself? | ||
pmichaud | anyway, fixing RPA in Parrot would require fixing FixedPMCArray. | 17:10 | |
17:11
isBEKaml left
17:25
Chillance joined
|
|||
pmichaud | github.com/perl6/nqp/issues/89 # bit of a QRPA brain dump | 17:25 | |
it's _almost_ LHF. | |||
PerlJam | Is there any specific hangup with serializing qlists or is it just that no one has had the tuits to just make sure everything continues to work when switched? | 17:28 | |
pmichaud | I don't think there are specific hangups. | ||
it's just another thingy that needs to be added to the serializer/unserializer | |||
I wouldn't do a "switch", per se, I'd just make sure the serializer can handle qrpa | 17:29 | ||
masak just got one of his plpw talks accepted o/ | 17:30 | ||
pmichaud | the serialization code *ought* to be almost identical to the rpa serializer code, with just the type names changed and maybe some of the understanding of the underlying structs | 17:31 | |
I'm afk | |||
17:41
gdey joined,
domidumont joined
17:43
bluescreen10 joined
17:47
gdey_ joined
|
|||
timotimo | masak: \o/ | 17:48 | |
17:50
dmol joined
17:51
gdey left
|
|||
dalek | rl6-roast-data: f3005bd | coke++ | / (4 files): today (automated commit) |
17:58 | |
[Coke] | argh, someone dirtied pugs. | 17:59 | |
18:00
dmol left
18:01
fgomez left
|
|||
timotimo | ah, vmarray will completely replace qrpa, that's interesting | 18:06 | |
18:09
alester joined
18:12
fgomez joined
18:14
dmol joined
18:16
SamuraiJack left,
DreamingInCode joined
|
|||
timotimo | hm. i would assume the read_array_* functions would have to be remade for the qrpa objects? | 18:27 | |
dvj | perl6: say 3 | 18:41 | |
camelia | rakudo f3c3fe, niecza v24-37-gf9c8fc2: OUTPUT«3» | ||
dvj | woah, new name! | 18:42 | |
diakopter | better name visibility for the mascot | ||
18:52
fgomez left
|
|||
timotimo | i put a bit of code into serialisation.c but i have no idea how to test this :| | 18:54 | |
arnsholt | Hack it into a shape where it's used in NQP itself and see what explodes | 18:57 | |
'S how I did it for my vmarray work | 18:58 | ||
pmichaud | just start switching nqp::list thingies to be nqp::qlist and keep going until things break. | 19:02 | |
19:05
frdmn joined
|
|||
timotimo | hehe, ok | 19:09 | |
i am scared. | |||
arnsholt | Don't be =) | ||
IME the hack-segfault-gdb cycle is relatively straightforward, once you get used to it | 19:10 | ||
timotimo | :D | 19:12 | |
src/pmc/qrpa.h is an empty file :| | 19:20 | ||
do i have to add it to some file? | |||
19:21
berekuk joined
|
|||
timotimo | it's already in PMC_SOURCES in the main Makefile | 19:21 | |
masak | allison tweets her wisdom about how to succeed on other VMs: twitter.com/allisonrandal/status/3...1152685056 | 19:23 | |
dalek | ast: 38dd97e | dagurval++ | S32-temporal/calendar.t: test output from say |
||
ast: 4946ee3 | dagurval++ | S (20 files): Merge branch 'master' of github.com:perl6/roast |
|||
masak | (that's sarcasm on my part, for the Poe-impaired) | ||
diakopter | she didn't mean on other VMs | ||
she meant in the same users/markets as those two clans | 19:24 | ||
masak | fair enough. | ||
timotimo | i'm a bit annoyed at the nitpicking that "rakudo isn't perl6 yet, so perl6 doesn't exist at all!" is | 19:25 | |
masak | oh well. I leave all discussion about name-changing to those who think they can convince TimToady that the language he's been working on for the past 13 years isn't "Perl 6". | ||
geekosaur | "we need some excuse to keep claiming it's DEADDEADDEAD so we'll just invent some" | 19:26 | |
moritz will happily program in Perl 6, whether it's called Perl or not, as long as it's Perl | 19:27 | ||
masak too | |||
geekosaur | "...(does our insecuerity show too much?)" | ||
19:28
loops left
|
|||
masak | diakopter: I never saw the thing that needed fixing. what was it? | 19:28 | |
diakopter | I'll tell you in a few years... | ||
timotimo | pmc_qrpa.h should be a generated file, isn't that correct? | 19:29 | |
diakopter | kidding, it was the sponsor blurb for perl6.com, unintelligible incoherence, as @chromatic_x correctly pointed out | ||
masak | oh, ok. | 19:31 | |
chromatic++ | |||
19:32
PacoAir_ joined,
integral_ left
|
|||
dalek | ast: 4e71281 | dagurval++ | S32-temporal/calendar.t: niecza fudge |
19:32 | |
19:33
integral joined,
integral left,
integral joined
|
|||
masak | apparently it was incoherent enough to spawn a Twitter discussion on naming... so, pretty incoherent! :P | 19:33 | |
19:33
sergot left,
PacoAir left,
PacoAir_ is now known as PacoAir,
rindolf left,
sergot joined
|
|||
dvj | did I fudge that correctly for niecza? | 19:33 | |
19:33
cognominal joined,
rindolf joined
|
|||
masak | dvj: looks like an unfudge, but yes. | 19:33 | |
oh, the one above is a fudge. | 19:34 | ||
yeah, looks good. dvj++ | |||
19:34
domidumont left
|
|||
dvj | great! | 19:34 | |
masak | dvj: your nick, 'dagurval', means "choice of days" in Swedish. | ||
:) | |||
.tr sv en "dagurval" | |||
yoleaux | sv than " dagurval " (is → en) | 19:35 | |
19:35
awwaiid left
|
|||
tadzik | hello #perl6 :) | 19:35 | |
masak | hrm. | ||
dvj | I haven't thought of that :) | ||
masak | tadziku! \o/ | ||
tadzik | \o/ | ||
pre-schedule for PLPW is ready \o/ | |||
masak | or perhaps "selection" is a better translation than "choice". | ||
19:35
cognominal__ left
|
|||
timotimo | so, a qrpa.c, qrpa.dump and a qrpa.o are properly generated, but the pmc_qrpa.h file is empty? i'm confused | 19:35 | |
tadzik | act.yapc.eu/plpw2013/talks | ||
masak | tadzik: yay! and I get to talk about flying robots! \o/ | ||
tadzik | I'm looking forward to that :) | 19:36 | |
the idea of The Day of Classes and Hackathons didn't quite work out | |||
we had too many talk submissions we wanted to accept | |||
moritz | that's the best problem you can have as an organizer :-) | 19:38 | |
tadzik | yeah, it's not that bad of a problem :) | 19:39 | |
[Coke] invites people to Albany for a hackathon. ;) | 19:41 | ||
colomon | [Coke]: that's not that far-fetched for me. :) | 19:44 | |
moritz | std: sub m { }; m Str | 19:46 | |
camelia | std 86b102f: OUTPUT«===SORRY!===Alphanumeric character is not allowed as delimiter at /tmp/KPhM9DyOqh line 1:------> sub m { }; m ⏏StrParse failedFAILED 00:00 42m» | 19:47 | |
tadzik | I was thinking about rt.perl.org/rt3/Ticket/Display.html?id=117641 | ||
and I can't quite figure out where the "is copy" logic is handled | |||
19:47
rindolf left
|
|||
tadzik | the closest thing seems to be set_copy in BOOTSTRAP.pm | 19:47 | |
moritz | aye, that's it | 19:48 | |
tadzik | on the other hand, it merely seems to set the ELEM_IS_COPY flag | ||
on the Parameter | |||
masak | magic! | ||
moritz | src/binder/bind. | ||
c | |||
is the other half | |||
masak | r: sub foo(Int $x is copy) { $x = 5; }; foo(1) | 19:49 | |
camelia | rakudo f3c3fe: OUTPUT«Cannot modify an immutable value in block at /tmp/NNBLvqJhbH:1» | ||
masak | r: sub foo($x is copy) { $x = 5; }; foo(1) | ||
camelia | rakudo f3c3fe: OUTPUT«Cannot modify an immutable value in block at /tmp/w_axQfwaFq:1» | ||
tadzik | that either looks for Array, or Hash, or looks up the flag to return TRIAL_BIND_NOT_SURE | ||
hey, bind.c, I'm NOT_SURE either | |||
masak | :P | ||
tadzik | where is the actual copy made? | ||
masak | go home, bind.c. you're drunk. | ||
tadzik | I feel stupid | 19:50 | |
maybe glasses will help me | 19:51 | ||
PerlJam | tadzik: glasses of beer? | ||
19:52
labster joined
|
|||
moritz | r: sub foo(Int $x is rw) { $x = 5 }; foo(5) | 19:52 | |
camelia | rakudo f3c3fe: OUTPUT«Cannot modify an immutable value in sub foo at /tmp/_Nz_9R_30X:1 in block at /tmp/_Nz_9R_30X:1» | ||
timotimo | i think the compilation has not failed | ||
that's a good sign! | |||
tadzik | PerlJam: naah, the eyeglasses :) | ||
moritz | tadzik: iirc set_copy also calls set_rw | ||
tadzik | oh, indeed | 19:53 | |
moritz | tadzik: so maybe you also have to take a look at IS_RW in bind.c | ||
tadzik | I'm going to get me some eyeglasses | ||
moritz | what 'is rw' currently does is actually what 'is parcel' (now gone, iirc) should do | ||
lizmat | r: sub foo(int $x is rw) { $x = 5 }; foo(5) | 19:54 | |
camelia | rakudo f3c3fe: ( no output ) | ||
moritz | and 'is rw' should vivify a container when there's none | ||
lizmat | int vs Int ? | ||
of is that the problem exactly? | |||
moritz | int + rw is known not to wrok | ||
tadzik | I think it's :571 and further | 19:55 | |
arnsholt | lizmat: int is the native type (not really an object), while Int is the full object | ||
19:55
awwaiid joined
|
|||
arnsholt | There are some limitations with the natives, realted to containers | 19:55 | |
timotimo | either my sed replacements didn't work or all tests just pass without trouble | 19:56 | |
lizmat | r: sub foo(int $x is rw) { say $x; $x = 5; say $x }; foo(6) | 19:57 | |
timotimo | yeah, it didn't work. | ||
camelia | rakudo f3c3fe: OUTPUT«65» | ||
Tene | timotimo: you're using sed -r, yes? | ||
lizmat | so, there is *no* problem with "int" ? | ||
timotimo | actually sed -i **/*.pm | ||
but my pattern was wrong | |||
Tene | timotimo: you'll have a much better time with sed if you use -r | ||
timotimo | "if you don't use -r with sed, you will not go to space today" | 19:58 | |
Method 'push' not found for invocant of class 'QRPA' - not much of a drop-in replacement yet, eh? | |||
moritz | or just use perl -pli -E '...' | ||
timotimo: you'll have to replace some .push calls with nqp::push | |||
timotimo | ah, sure can do that | 19:59 | |
diakopter | r: sub foo(int $x is rw) { say $x; $x = 99999999999999999999; say $x }; foo(6) | ||
camelia | rakudo f3c3fe: OUTPUT«61661992959» | ||
moritz | the nqp-jvm-prep thing did that too, iirc | ||
gtodd | [Coke]: Albany, NY | ||
moritz | though in nqp, not rakudo | ||
[Coke] | gtodd: hai. | 20:04 | |
diakopter | lizmat: I think the problem is you can assign to $x even if it's not 'is rw' | 20:05 | |
lizmat | aha, indeed, ok :-) | ||
moritz | the problem is that you can't always assign to $x even when it's 'is copy' | ||
tadzik | :) | 20:06 | |
I'm compiling a potential fix for it | |||
moritz blug: perlgeek.de/blog-en/perl-6/2013-repl-trick.html | |||
gah, wrong title | 20:07 | ||
... fox. | 20:08 | ||
diakopter | r: sub bar(int $y is rw) { say $y; foo($y); say $y; sub foo(int $x is rw) { say $x; $x = 999; say $x }; }; bar(6) | ||
camelia | rakudo f3c3fe: OUTPUT«669996» | ||
tadzik | moritz: ha, nice :) | ||
moritz++ | |||
diakopter | there, is rw acts like is copy | ||
timotimo | many tests are still passing | ||
moritz | only on natives. Yes, long known, boring | ||
diakopter | :'( | 20:09 | |
timotimo builds a new rakudo with the qrpa rakudo | |||
er, qrpa nqp | |||
this has no business of working yet! i haven't even done hard things yet! | |||
20:14
kaare_ left
|
|||
dalek | ast: efe8c9c | (Brent Laabs)++ | S32-io/ (2 files): linking to specs for dir, IO::Path |
20:16 | |
ecs: fb25fa4 | (Brent Laabs)++ | S32-setting-library/IO.pod: Remove IO::Dir and IO::File, too unwieldy to implement for too little gain |
20:18 | ||
timotimo | now i've reached hard things :) | 20:19 | |
labster | good postnoon, all you happy perl people | ||
timotimo | and now ... i have no idea what's going wrong :| | 20:23 | |
masak | labster! \o/ | ||
labster | timotimo: sounds like business as usual for me | ||
timotimo | i'll fit right in, won't i? :) | 20:26 | |
when i call nqp::push on something that's not an RPA or QRPA, will that spectacularly explode at compile time or mysteriously, silently, unnoticabley, inexplicabley explode at run time | 20:30 | ||
because i'm getting "Cannot auto-generate a proto method for 'Numeric' in the setting" and i think that's due to having accidentally replaced too many .push with nqp::push | 20:31 | ||
timotimo make&prays | 20:35 | ||
timotimo doesn't know the way forward from here | 20:38 | ||
FROGGS | :/ | 20:39 | |
timotimo | i'll try if my nqp::push changes would compile if i use nqp::list "every"where again | 20:42 | |
(at least in rakudo) | |||
no, actually not | |||
20:43
woolfy left
20:51
lue left
20:53
bruges left
20:55
bruges joined
21:04
spider-mario left
21:12
skids left
|
|||
lichtkind | cheers FROGGS | 21:15 | |
21:17
PacoAir left
|
|||
FROGGS | hi lichtkind | 21:23 | |
21:23
renormalist left
21:28
denisboyun_ left
|
|||
lizmat | goodnight #perl6! | 21:30 | |
21:30
cooper left
|
|||
FROGGS | gnight lizmat | 21:31 | |
21:31
renormalist joined
|
|||
lichtkind | have a good one liz | 21:34 | |
masak | 'night, lizmat. | 21:35 | |
21:46
cooper joined
|
|||
timotimo | pmichaud: i can hardly tell how to go forwards, because all the nqp tests pass, but rakudo won't compile with an error message that seems related but not directly to lists | 21:46 | |
21:49
lue joined
|
|||
FROGGS | timotimo: there is no nqp-qrpa branch? | 21:51 | |
FROGGS wants to test this | |||
timotimo | uh | ||
sure, i'll put it up on github | |||
FROGGS | cool, thanks | ||
dalek | p/qrpa_experiment: d0af2bb | (Timo Paulssen)++ | src/6model/serialization.c: add serialisation for qrpa |
21:52 | |
p/qrpa_experiment: af36e92 | (Timo Paulssen)++ | src/ (12 files): search&replace nqp::list -> nqp::qlist; change .push to nqp::push etc |
|||
timotimo | since i'm a naughty naughty boi i put it on perl6/nqp as "qrpa_experiment" | ||
FROGGS | well, that's the place where it belongs | 21:53 | |
masak | "Sometimes I words out." | ||
timotimo words out | 21:54 | ||
diakopter | |||
timotimo | FROGGS: look at timo/rakudo:qrpa_experiment for some rakudo internals poking | ||
FROGGS | timotimo: k, will do | ||
timotimo | partially sed search&replace, partially turning .push into nqp::push by hand | ||
diakopter | timotimo: did you run the regex tests too? | 21:55 | |
timotimo | i did "make test", so ... dunno? | ||
21:55
dmol left
|
|||
timotimo | i'm trying them now. | 21:55 | |
diakopter | ah, nm, test includes them | 21:56 | |
FROGGS captures the output of 'make' and will have a look for weird warnings | 21:57 | ||
timotimo | All tests successful. - yup. | ||
needs more tests it seems like! | 21:58 | ||
masak | 'night, #perl6 | ||
timotimo | i am *not* sure if the qregex thing actually already uses qrpa lists? | 21:59 | |
where can i change what nqp will create if one writes my @l := [];? | |||
probably Actions.pm? | |||
ah, here it is! | |||
this may destroy everything now :) | 22:00 | ||
22:01
bluescreen10 left
|
|||
timotimo | FROGGS: for extra !!FUN!!, change :op( 'list' ) in default_for of Actions.pm in nqp to 'qlist' and start up your !!SCIENCE!! | 22:02 | |
FROGGS | k | ||
timotimo: what about the othe :op('list') ? | 22:03 | ||
22:04
lustlife left
22:05
xilo left
|
|||
timotimo | did not see it | 22:06 | |
oh | |||
yeah, change that, too | 22:07 | ||
for even more !!FUN!! :) | |||
FROGGS | like nqp/src/NQP/Actions.pm:528: my $name := ~$<sigil> eq '@' ?? 'list' !! | ||
hehe | |||
/home/froggs/dev/nqp/src/QRegex/P5Regex/Actions.nqp:595: my $past := QAST::Op.new( :op('list') ); | |||
/home/froggs/dev/nqp/src/QRegex/P6Regex/Actions.nqp:455: my $past := QAST::Op.new( :op('list') ); | |||
timotimo | all of them! | ||
timotimo changes more and more | |||
FROGGS | ya, done && compiling | ||
22:08
kurahaupo joined
|
|||
timotimo | next step is just to change lots of .pop and .push into nqp::pop and nqp::push ops | 22:08 | |
FROGGS | and unshift | ||
timotimo | yeah all that | ||
FROGGS | CHANGE'EM'ALL | ||
*g* | |||
timotimo made a vim macro | 22:11 | ||
it was LTA, though | |||
i should learn to use marks, especially in macros | 22:12 | ||
dalek | p/qrpa_experiment: 2102ba9 | (Tobias Leich)++ | src/ (5 files): more list -> qlist |
22:13 | |
timotimo | i think we might be duplicating work | 22:17 | |
i'm currently changing those ops around like a mad man | |||
FROGGS | hmmm, I'm trying something right now, so won't commit, even if we might do the same, ok? | 22:18 | |
timotimo | ok | ||
i mean | |||
you can commit | |||
but don't push - unless you make all of it work of course ;) | |||
FROGGS | k | ||
timotimo | are you trying something non-obvious? | 22:21 | |
FROGGS | hmm, no | 22:22 | |
but since I cant compile right now, I dont wanna push | |||
:o) | |||
22:23
xilo joined
|
|||
timotimo | hehe | 22:24 | |
i might be reasonably close | 22:25 | ||
but i need to go find my bed soon | |||
FROGGS | ya, I know what you mean | ||
timotimo | what, you have a bed, too? | ||
say, is "froggs" a far-fetched play on words on your last name? | 22:26 | ||
FROGGS | I'm going to bed in 30mins or so | ||
and yes, good guess :o) | |||
22:28
lichtkind_ joined
|
|||
timotimo | fixing up nqpp6regex now | 22:29 | |
22:31
lichtkind left
|
|||
timotimo | oh. that talk lichtkind did in berlin | 22:32 | |
is it up anywhere yet? | |||
FROGGS | hmmm, I dont now | ||
you may wanna ask him or Mithaldu in #perl @irc.perl.org | |||
timotimo | do you recall what the title was? or even what the conference was called? | 22:33 | |
FROGGS | german perl workshop 2013 (gpw2013) | ||
tangentstorm would have called it perlinberlin | |||
FROGGS | title was about perl 6 oo | 22:34 | |
timotimo | mh | ||
tangentstorm: :D | |||
FROGGS | slides: act.yapc.eu/gpw2013/wiki?node=Slides | ||
tangentstorm: that was the first idea of the shirt actually :o) | 22:35 | ||
PerlIn | |||
Berlin | |||
22:35
skids joined
|
|||
FROGGS | and the Tower right through both i's | 22:35 | |
tangentstorm | :) | 22:36 | |
timotimo | it seems like somewhere i generate code to call .qlist on some object >_< | ||
22:37
lichtkind_ is now known as lichtkind
|
|||
FROGGS | hmmm, and I'm not sure anymore I am doing the right thing | 22:38 | |
timotimo | FROGGS: there's a "qlist" we put there which is followed by a QAST::Op.new( :op("callmethod") :op($name) ... ) | 22:39 | |
which is wrong | |||
FROGGS | ya | ||
timotimo | if you fell into that same trap as me, we will not be going to space today | ||
FROGGS | timotimo: I'll revert my last commit | 22:46 | |
ok? | |||
timotimo | i can force-push over it | 22:47 | |
FROGGS | hmm, okay | ||
timotimo | oh my, there's lots and lots more .push to do in the QAST/Compiler.pm | 22:49 | |
FROGGS | ya, but this: $ops.push($looplabel); | 22:50 | |
$ops.push_pirop('inc', %*REG<pos>); | |||
doesn't need to be replaced, or? | |||
it is: my $ops := self.post_new('Ops', :result(%*REG<cur>)); | |||
that was the point where I though: "hold on, maybe I replace .push methods on thing which actually have these method" | 22:52 | ||
timotimo | er | 22:53 | |
i'm a brainless machine at this time of day | |||
FROGGS | yepp | ||
timotimo | i asked before if things will blow up appropriately if i nqp::push things that aren't actually nqp::pushable | ||
FROGGS | I can#t answer that | ||
timotimo | you can sift through them if you want :P | 22:55 | |
i'm going to bed. | |||
dalek | p/qrpa_experiment: 491eec9 | (Timo Paulssen)++ | src/ (6 files): so many search and replace. probably too many. |
||
timotimo | good night everyone! | ||
FROGGS | gnight # me too | ||
22:56
toddr left
22:59
fgomez joined
|
|||
FROGGS | .tell timotimo I think the changes in QAST::Compiler about $ops.push might be wrong, because it a PIRT::Ops and might really have that method... (have a look at QAST::Operations #295) | 22:59 | |
yoleaux | FROGGS: I'll pass your message to timotimo. | ||
23:06
xinming left
23:08
xinming joined
23:12
jerome_ left
23:18
BenGoldberg joined
23:23
Chillance left
23:25
jerome_ joined
23:27
Ben_Goldberg joined
23:30
BenGoldberg left
23:52
thou left
|