»ö« 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 row␤at /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 row␤at /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-arg␤list 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 ⏏Str␤Parse failed␤FAILED 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«6␤5␤»
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«6␤1661992959␤»
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«6␤6␤999␤6␤»
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