»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:34 fgomez joined
dalek kudo/nom: 1d4eb48 | pmichaud++ | / (2 files):
Refactor unary hypers to avoid .pick(*) and for loops, resulting in a 9x speed improvement for @array>>.xyz calls.

Even with this level of improvement, unary hyper methods are not yet faster than @array.map( *.xyz ). This is partially due to some indirect block call overhead and some unneeded boxing of native values.. More improvements are forthcoming, but this is a really good first step.
01:07
01:11 scott___ joined 01:28 whiteknight joined 01:29 whiteknight is now known as Guest87046
sergot good night o/ 01:35
01:36 sergot left 01:40 UncleFester6 left 01:44 Ex left 01:57 Guest87046 left 02:01 orafu left, orafu joined 02:02 mucker_ joined 02:10 adu left 02:12 Ex joined, Ex left, Ex joined 02:23 adu joined 02:36 Psyche^ joined 02:40 Patterner left, Psyche^ is now known as Patterner 02:59 orafu left, orafu joined
[Coke] S32-list/first.t uses 1...10; doesn't have to be a series, does it? 03:28
03:31 mucker left 03:32 mucker_ left 03:38 cognominal left 03:39 cognominal joined
TimToady nope 03:51
and wouldn't need the parens with .. 03:52
04:10 fbjork joined 04:15 fbjork left
diakopter hm 04:42
TimToady hmm, don't need them with ... either, I guess
nr: my @x = 1 ... 10; say +@x; 04:43
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«10␤»
diakopter n: say my @x .. @x 04:46
p6eval niecza v19-15-g051783d: OUTPUT«[]..[]␤»
diakopter n: say (my @x .. @x)[0].WHAT 04:48
p6eval niecza v19-15-g051783d: OUTPUT«Array()␤»
diakopter n: say (my @x .. @x)[1].WHAT 04:49
p6eval niecza v19-15-g051783d: OUTPUT«Any()␤»
TimToady r: (my @x .. @x)[0].WHAT 04:50
p6eval rakudo c1bfbb: OUTPUT«No such method 'succ' for invocant of type 'Array'␤ in sub postfix:<++> at src/gen/CORE.setting:1348␤ in method reify at src/gen/CORE.setting:4865␤ in method reify at src/gen/CORE.setting:4987␤ in method gimme at src/gen/CORE.setting:5365␤ in method exists at …
TimToady r: say [] ~~ [] 04:51
p6eval rakudo c1bfbb: OUTPUT«True␤»
TimToady r: (my @x ... @x)[0].WHAT
p6eval rakudo c1bfbb: ( no output )
TimToady r: say [] ... []
p6eval rakudo c1bfbb: OUTPUT«(timeout)» 04:52
TimToady n: say [] ... []
p6eval niecza v19-15-g051783d: OUTPUT«␤»
TimToady why is rakudo not smartmatching the [] and stopping immediately?
r: say [] .. [] 04:53
p6eval rakudo c1bfbb: OUTPUT«[]..[]␤»
TimToady r: print [] .. []
p6eval rakudo c1bfbb: OUTPUT«No such method 'succ' for invocant of type 'Array'␤ in sub postfix:<++> at src/gen/CORE.setting:1348␤ in method reify at src/gen/CORE.setting:4865␤ in method reify at src/gen/CORE.setting:4987␤ in method gimme at src/gen/CORE.setting:5365␤ in method print at s…
TimToady and why is it looking for a .succ when (presumably) it has turned the .. into a ...?
n: print [] .. [] 04:54
p6eval niecza v19-15-g051783d: ( no output )
diakopter o_O
TimToady n: print [], *.succ ... [] 04:55
p6eval niecza v19-15-g051783d: ( no output )
TimToady r: print [], *.succ ... []
p6eval rakudo c1bfbb: OUTPUT«No such method 'succ' for invocant of type 'Array'␤ in block at /tmp/myIBzUnMPR:1␤␤»
TimToady rakudo should be smartmaching the [] first, methinks
n: print [].succ 04:56
p6eval niecza v19-15-g051783d: OUTPUT«Unhandled exception: cannot increment a value of type Array␤ at /home/p6eval/niecza/lib/CORE.setting line 1414 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 272 (Mu.succ @ 9) ␤ at /tmp/8ZH84JxK3p line 1 (mainline @ 3) ␤ at /home/p6eval/niecz…
TimToady yes, it's not that it's defined in niecza either, it just doesn't call it
diakopter r: say [] ~~ [] 04:59
p6eval rakudo c1bfbb: OUTPUT«True␤»
diakopter r: say ~~ [] ~~ [] 05:00
p6eval rakudo c1bfbb: OUTPUT«False␤»
diakopter 0_0
n: say ~~ [] ~~ [] 05:01
p6eval niecza v19-15-g051783d: OUTPUT«===SORRY!===␤␤Expecting a term, but found either infix ~~ or redundant prefix ~␤ (to suppress this message, please use space between ~ ~) at /tmp/eFZwaDVzaB line 1:␤------> say ~~⏏ [] ~~ []␤␤Parse failed␤␤»…
diakopter rn: say [] ~~~ [] 05:02
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«True␤»
05:02 quietfanatic left
diakopter someone explain r: say ~~ [] ~~ [] 05:03
oh nm 05:04
rn: say ([] ^^ []).WHAT 05:05
p6eval rakudo c1bfbb: OUTPUT«Array()␤»
..niecza v19-15-g051783d: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in type Any␤ at /tmp/etWH_osYdY line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3929 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3930 (module-CORE @ 564…
diakopter well, one of them's wrong 05:06
rn: say ([] ^^^ []).WHAT 05:07
p6eval niecza v19-15-g051783d: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in type Any␤ at /tmp/7eF9VXRR7v line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3929 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3930 (module-CORE @ 564…
..rakudo c1bfbb: OUTPUT«Range()␤»
diakopter o__ 05:11
05:19 birdwindupbird joined 05:20 am0c joined
moritz \o 05:28
diakopter o/
o__ .> ___ 05:33
moritz is that diakopter lying down? 05:34
diakopter eye closing
moritz sleep well then :-) 05:35
05:37 test_ joined 05:39 test_ left 05:44 wtw joined
moritz r: <a b c d>».say 05:45
p6eval rakudo c1bfbb: OUTPUT«a␤c␤d␤b␤»
05:53 brrt joined 06:14 brrt left 06:18 xdbr joined 06:22 birdwindupbird left 06:24 birdwindupbird joined 06:42 SamuraiJack joined 06:44 kaleem joined 06:55 PacoAir left 06:59 drbean left 07:00 drbean joined 07:01 GlitchMr joined 07:03 vinian joined 07:08 brrt joined, crab2313 joined 07:13 brrt left
tadzik hello #perl6 07:13
sjohnson ( `ー´) 07:17
moritz \o tadzik, sjohnson
sjohnson moritz: *equivalent happy fat face emoticon* 07:18
:3
07:24 hoelzro|away is now known as hoelzro 07:35 cognominal left 07:36 cognominal joined 07:43 cognominal left 07:44 cognominal joined 07:45 rhr joined
dalek Heuristic branch merge: pushed 217 commits to nqp/dyncall-callbacks by arnsholt 07:49
volaj/callbacks: dc43e90 | (Arne Skjærholt)++ | lib/NativeCall.pm6:
Change to right Parameter accessor for signatures.
volaj/callbacks: 2680acd | (Arne Skjærholt)++ | lib/NativeCall.pm6:
Unbreak everything.
volaj/callbacks: 79429d9 | (Arne Skjærholt)++ | / (3 files):
Return values from callbacks seem to work now as well.

Tests and some small tweaks to the code.
arnsholt 217 commits? I think most of those weren't mine ^_^
moritz arnsholt: probably the toqast and pirt merges 07:50
arnsholt Just toqast I think
moritz "Unbreak everything."
I like that commit
frettled especially my heart
arnsholt Yeah, not sure why it worked before that commit, but that's life
And since the previous commits were already there I couldn't rewrite history 07:51
moritz hopes frettled's comment was purely rhetorical
arnsholt: I know the desire for a clean history, but in the end it's in a branch anyway :-) 07:52
arnsholt True true
Now, to see if pirt (what's that stand for anyways?) has any conflicts with my branch
moritz PIR Tree 07:53
Promiscuous IR Trap
GlitchMr Unbreak everything?
But why it wouldn't work with "return"?
moritz Probabilistic Intermediate Representation Transformer 07:54
arnsholt GlitchMr: jnthn and pmichaud explained it to me last night (Europe time)
Since the value I'm returning isn't actually a Perl 6 object (but an NQP entity) return and falling of the end of the block are slightly different after all 07:55
GlitchMr Exception catching?
moritz ah yes, return is just a p6 code object 07:56
&return, that is
r: say &return.WHAT
p6eval rakudo c1bfbb: OUTPUT«Block()␤»
GlitchMr return is just exception behind the scenes, am I right?
moritz yes
arnsholt GlitchMr: irclog.perlgeek.de/perl6/2012-07-29#i_5858172 07:58
07:59 fhelmberger joined 08:11 kaleem left, dudz joined
jnthn morning o/ 08:15
arnsholt \o
moritz mrnng 08:16
jnthn arnsholt++ 08:17
Callback support seems pretty advanced. :D 08:18
arnsholt You wanna review my changes before I merge it back into master?
Yeah, callbacks are looking fairly good 08:19
Wasn't ridiculously tricky to get working either, as it turns out
jnthn arnsholt: If you're comfortable with it, feel free to merge 08:20
arnsholt 'k
frettled moritz: it was :)
jnthn I'll take a look over it, but not right now... Gotta do $dayjob sometimes. ;)
08:20 Chillance joined
frettled moritz: </joe cocker> 08:20
moritz frettled: unresolved culutural reference at frettled line *-3 :-) 08:21
dalek p: 3a126fd | (Arne Skjærholt)++ | / (4 files):
Initial callback handling.

It works, but it'll leak memory since all the information needed to handle a callback is recreated (and allocated on the heap) on each call without ever being freed.
08:24
p: 0897370 | (Arne Skjærholt)++ | src/ops/nqp_dyncall.ops:
Add caching of callback handling data.
p: fc4115b | (Arne Skjærholt)++ | / (12 files):
Merge branch 'master' into dyncall-callbacks
p: e74bc7e | (Arne Skjærholt)++ | / (37 files):
Merge branch 'master' into dyncall-callbacks
p: e63f932 | (Arne Skjærholt)++ | src/ops/nqp_dyncall.ops:
Decontainerize callback return value.
p: ef3e3e4 | (Arne Skjærholt)++ | / (10 files):
Merge remote branch 'origin/master' into dyncall-callbacks
08:25 dakkar joined 08:26 cognominal left, cognominal joined 08:27 kaleem joined
frettled woops, I confused Toni Braxton with Joe Cocker 08:27
Joe Cocker had «Unchain My Heart», Toni Braxton had «Unbreak My Heart». Both are pop hits, the latter from sometime during the nineties.
www.youtube.com/watch?v=pU2LzuVrqLQ 08:28
moritz frettled: I've heard both 08:29
frettled: but I didn't quite make the connection
08:30 nwc10 joined
nwc10 jnthn++ 08:31
08:34 sergot joined
hoelzro if I'm consuming a role and I impelment a method that a role provides, is there a way to call the consumed role's version of that method from my own? 08:35
moritz hoelzro: self.Role::Name::methodname(args)
hoelzro moritz: thanks! 08:36
sergot hi o/
08:38 fgomez left
moritz nwc10++ # rakudo on raspberry pi 08:40
08:43 IamContagious joined
nwc10 but I might be -- for distracting jnthn further 08:43
what I forgot to say - I've no access to other ARM systems to try to rule out different things 08:44
as all the ARM boxes on the GCC compile farm are offline and have been for a while
moritz nwc10: do you know how to detect ARM in perl 5 code_
s/_/?/
(for nqp's Configure.pl)
nwc10 you can't get that fixed upstream? 08:45
moritz that would be the better approach :-)
nwc10 something like this would probably bodge it: 08:47
$ perl -MConfig -le 'print $Config{archname} =~ /^arm[a-z0-9]*-/ ? "Y" : "n"'
Y
But it might trip up on armbe
moritz maybe just /^arm/ ?
nwc10 would still trip up on armbe, but not sure how many people are using the big endian "port", or how finished it even is 08:48
masak good antenoon, #perl6
08:49 benabik_ joined
jnthn nwc10++ # just saw the post on perl6-compiler \o/ 08:51
08:51 benabik left, benabik_ is now known as benabik 08:56 Tedd1 joined 08:58 crab2313 left
dalek volaj: 46d9cce | (Arne Skjærholt)++ | / (3 files):
Functionality and tests for callbacks.
08:58
volaj: dc43e90 | (Arne Skjærholt)++ | lib/NativeCall.pm6:
Change to right Parameter accessor for signatures.
volaj: 2680acd | (Arne Skjærholt)++ | lib/NativeCall.pm6:
Unbreak everything.
volaj: 79429d9 | (Arne Skjærholt)++ | / (3 files):
Return values from callbacks seem to work now as well.

Tests and some small tweaks to the code.
08:59 cognominal left, daxim joined, cognominal joined
arnsholt Hmm... 08:59
r: sub foo(--> Int) returns Str { say "hi" }
p6eval rakudo c1bfbb: ( no output )
nwc10 at what level of parrot's toolchain does PIRT interact?
nwc10 is curious
jnthn nwc10: PIRT produces PIR which is then fed to Parrot to get bytecode. 09:01
nwc10 POST also produces PIR etc?
jnthn Yes
PIRT is a replacement of POSt
*POST
nwc10 direct replacement 09:02
GlitchMr perl6: sub foo(--> Int) returns Str { say "hi" }; foo
p6eval rakudo c1bfbb: OUTPUT«hi␤Type check failed for return value; expected 'Str' but got 'Bool'␤ in sub foo at /tmp/cRqLY1iFF9:1␤ in block at /tmp/cRqLY1iFF9:1␤␤»
..niecza v19-15-g051783d: OUTPUT«hi␤»
jnthn Fairly direct
GlitchMr perl6: sub foo(--> Int) returns Str { "hi" }; foo
p6eval rakudo c1bfbb, niecza v19-15-g051783d: ( no output )
jnthn The API it exposes is basically the same.
The way it does stuff on the inside is quite different.
And it's written in NQP, not PIR. :)
nwc10 it benefits from several years more experience, and 6model can lay things out more tightly in memory? 09:03
jnthn Also it collapses the tree more often.
arnsholt r: sub foo of Str { ... }; say &foo.signature.returns; 09:04
p6eval rakudo c1bfbb: OUTPUT«Str()␤»
arnsholt r: sub foo of Str returns Int { ... }; say &foo.signature.returns; 09:05
p6eval rakudo c1bfbb: OUTPUT«Int()␤»
jnthn With POST we built the whole tree up and turned it into PIR. PIRT can be told "this bit of the tree won't change any more", and then immediately turns that bit into PIR and throws away the more memory-intensive data structures it held onto before.
GlitchMr duckduckgo.com/?q=say+perl
Actually, I might attempt to make version of this for Perl 6 :P 09:06
daxim please do, then blog about it 09:08
GlitchMr I like DuckDuckGo and I would like it to help in Perl 6 programming too
Possibly search.cpan.org/~dconway/Perl6-Perl.../Parser.pm will work 09:09
daxim ddg have a dev kit somewhere so you can easily integrate this specialised search
GlitchMr I know :P
daxim U+1F44D 09:10
arnsholt jnthn: Would throwing an exception in trait_mod:<of>/trait_mod:<is> be the best solution to handle setting the return type of something that already has one?
GlitchMr Except that parser fails tests
so no
jnthn arnsholt: Yes, and moritz++ would probably like it if it were a typed exception ;-)
GlitchMr Or this: search.cpan.org/dist/Perl6-Pod/lib/Perl6/Pod.pm 09:12
... possibly this will work 09:13
tadzik GlitchMr: or just doc.perl6.org, maybe
we have our own Pod renderer and a doc infrastructure built around it
GlitchMr Hmm... ok :)
But parsing doc.perl6.org could be problematic 09:14
It's HTML file
jnthn But it's produced from Pod, no? 09:16
GlitchMr Hmmm... parsing it would be possible 09:17
09:18 nwc10 left
tadzik I don't think that reparsing formatted Pod is the right way to do it:) 09:18
09:18 cognominal_ joined
moritz GlitchMr: htmlify.pl in the perl6/doc repo is what generates the HTML files on doc.perl6.org 09:19
GlitchMr It's Perl 5 script?
... oh, Perl 6
Well, it probably will be Fathead, just like Perl 5 documentation :) 09:20
09:21 cognominal left
moritz the Pod in perl6/doc is pretty basic 09:22
I guess existing p5 based parsers for it can easily work for it too 09:23
arnsholt Hmm. Can I throw exceptions and such from methods added in BOOTSTRAP.pm? 09:25
jnthn Not easily
Not typed ones at least 09:26
arnsholt Right. Problem is that Signature.set_returns, which the trait_mods use to set the return type is defined there
09:27 brrt joined
arnsholt I suppose I could just diddle the object directly with nqp:: stuff in traits.pm 09:28
09:29 MayDaniel joined
jnthn What exactly do you need to do? 09:29
arnsholt I need to check whether the $!returns attribute of the Signature is set (current idea is nqp::defined(nqp::getattr(...))) and throw an exception if it is set 09:30
moritz uhm
$!returns will hold a type, yes?
09:31 kaleem left
moritz if so, it's not defined 09:31
arnsholt Yes. I was hoping nqp::defined was on the level below that
=)
09:31 kaleem joined
moritz r: nqp::say nqp::defined :(--> Int).returns 09:31
p6eval rakudo c1bfbb: OUTPUT«0␤»
arnsholt But yeah, that's another problem
moritz r: nqp::say nqp::isnull :(--> Int).returns
p6eval rakudo c1bfbb: OUTPUT«0␤»
moritz r: nqp::say nqp::isnull :().returns
p6eval rakudo c1bfbb: OUTPUT«0␤»
arnsholt Well darn
moritz I guess whatever comes from .returns (which is a p6 level method) can never be null
r: nqp::say nqp::isnull nqp::getattr(:(), Signature, '$!returns') 09:32
p6eval rakudo c1bfbb: OUTPUT«1␤»
moritz r: nqp::say nqp::isnull nqp::getattr(:(--> Int), Signature, '$!returns')
p6eval rakudo c1bfbb: OUTPUT«0␤»
arnsholt There we go
moritz ok, nqp::isnull works for you
arnsholt Indeed. Testing with just die and a string now 09:35
Then I'll go looking for a nice typed exception I can use =)
moritz you could abuse X::Redeclaration for that 09:36
arnsholt Yeah. Sounds good
moritz X::Redeclaration.new(what => 'return type for', symbol => &theroutine, postfix => " (previous return type was {$prevtype.^name}").throw 09:37
or so
arnsholt Buh, "Can not get non-existent attribute '$!returns' on class 'Signature'"?
moritz did you decontainerize?
and is Signature fully set up already?
arnsholt Oh, that's it perhaps 09:38
traits.pm is before Signature.pm in the list, so it might not be set up properly?
moritz the funs of bootstrapping
isn't Signature set up in BOOTSTRAP.pm? 09:39
if so, that shouldn't be the problem
jnthn That error is pretty much always a failure to decontainerize
arnsholt Hmm. Troo
jnthn Or you're passing an object of the wrong type in
arnsholt Oh, durr. I didn't decontainerize the string
09:39 SamuraiJack left 09:41 MayDaniel left
arnsholt Although from other nqp::getattrs that doesn't seem to be required? 09:41
moritz it always depends what you work on
arnsholt Aha 09:42
moritz if you work on a variable to which you have bound an object (and not another variable, and not assigned), you don't need to decontainerize
erm, to to rephrase, you only need to decont if there's actually a container 09:43
09:43 GlitchMr left, bbkr joined
arnsholt It's just nqp::getattr(decont($obj), Signature, '$!returns') which should be ok, no? 09:43
moritz yes
nqp::decont 09:44
nqp::p6decont akshually
09:46 SamuraiJack joined
arnsholt Not pir::perl6_decontainerize? Looks like that's what most of the rest of the code uses 09:49
jnthn That wants updating (and probably can be now). 09:50
Oh, unless you mean in BOOTSTRAP.pm
arnsholt No, this is traits.pm
jnthn Then nqp::p6decont is preferable 09:51
arnsholt I'll have a whack at that after lunch then
noms &
10:08 scott___ left 10:10 vinian left
dalek kudo/nom: 3a20b76 | moritz++ | / (2 files):
remove some deprecated subs and methods
10:10
10:12 mucker joined 10:23 colomon joined 10:28 GlitchMr joined 10:29 cognominal_ left, cognominal_ joined 10:33 gongyiliao left
arnsholt Hmm. Still can't get non-existent attribute, even when I p6decont all the things 10:45
jnthn What's the code look like?
arnsholt my $returns := nqp::getattr(nqp::p6decont($target), nqp::p6decont(Signature), nqp::p6decont('$!returns')); # decont all the things 10:46
From similar code elsewhere, it looks like only decont($target) should be necessary
10:47 cognominal_ left
jnthn What is $target? 10:47
arnsholt Routine:D $target
jnthn Right, so you need $target.signature, no?
arnsholt Durr. That might be it >.< 10:48
Of course =)
10:48 cognominal_ joined
tadzik "What is $target?" -- Routine :D 10:48
10:49 spider-mario joined
arnsholt Yeah, I like that particular bit of syntax =) 10:49
tadzik r: sub a(LoL:D) { }; say &a.signature.perl
p6eval rakudo c1bfbb: OUTPUT«:(LoL:D )␤»
tadzik p6eval: what's so funny?
jnthn Lunch & 10:51
flussence does Cat operate non-recursively? if so, would that make a recursive one a LoLCat? 10:53
tadzik /o\ 10:55
r: class Cat {}; sub a(Lol:D, Cat:D) {}; say &a.signature.perl 10:56
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Invalid typename in parameter declaration at line 2, near ", Cat:D) {"␤»
tadzik r: class Cat {}; sub a(Lol:D, Cat) {}; say &a.signature.perl
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Invalid typename in parameter declaration at line 2, near ", Cat) {};"␤»
tadzik r: class Cat {}; sub a(Lol:D $a, Cat $b) {}; say &a.signature.perl
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Invalid typename in parameter declaration at line 2, near " $a, Cat $"␤»
tadzik oh 10:57
r: class Cat {}; sub a(LoL:D $a, Cat $b) {}; say &a.signature.perl
p6eval rakudo c1bfbb: OUTPUT«:(LoL:D $a, Cat $b)␤»
tadzik r: class Cat {}; sub a(LoL:D, Cat) {}; say &a.signature.perl
p6eval rakudo c1bfbb: OUTPUT«:(LoL:D , Cat )␤»
10:58 adu left
flussence oh nice, nqp/master just built without needing -G on the stage1 bit. Just needs the stage2 to work now... 10:58
11:08 JimmyZ_ joined
arnsholt moritz: With your exception snippet, I get "Redeclaration of return type for (previous return type was Str)". Should :symbol be &target.name or something like that instead? 11:13
masak .u 😶 11:15
phenny U+1F636 (No name found)
arnsholt Oh, never mind. I think I just typoed it
jnthn++ # Spotting my brainos 11:16
WTF? My code works for of, but if I add it to returns compiling the setting segfaults. 11:20
jnthn: Segfault is in container.c, so I'm guessing it's a rakudobug? 11:24
Oooh, fun. STABLE(var) (container.c:20) is 0x1 11:26
jnthn arnsholt: Only if you can reproduce it when you ain't using nqp:: ops and stuff :) 11:28
arnsholt: What is var?
Does it claim to be a 6model object?
(look at the v-table)
11:30 colomon left
arnsholt Looks like it isn't a sixmodel object, yeah. Vtable looks like it's all Parrot_default_* 11:32
Although shouldn't my variable be a sixmodel thing when it's multi trait_mod:<returns>(Routine:D $target, Mu:U $type) { ... }? 11:33
jnthn Looks like it sneaked in somewhere that we don't have a check that it really is one
Should be 11:34
moritz arnsholt: ah, yes, &sym.name
arnsholt moritz: Actually that wasn't necessary. The problem was that I had &target where it should've been $target 11:35
jnthn: Any ideas for the best way to track down the error? 11:39
masak r: say [] ... [] 11:41
p6eval rakudo c1bfbb: OUTPUT«(timeout)»
masak submits rakudobug
<TimToady> why is rakudo not smartmatching the [] and stopping immediately?
moritz wait 11:42
masak n: say [] ... []
p6eval niecza v19-15-g051783d: OUTPUT«␤»
moritz it doesn't even generate list elements
it's in sink context
so it must loop in the detection stage somewhere
masak ...still a bug...
moritz yes
11:45 birdwindupbird left
moritz r: say [] ~~ [] 11:48
p6eval rakudo c1bfbb: OUTPUT«True␤»
11:53 colomon joined
colomon o/ 11:59
colomon is back from the great white north
moritz r: [] ... []
p6eval rakudo c1bfbb: ( no output )
moritz ok, I was wrong, just missed to see the say 12:00
wb colomon
colomon moritz: thanks!
did qast go live in rakudo master while I was gone?
moritz colomon: yes 12:01
colomon I see someone beat me to building rakudo on Raspberry Pi... (mine arrived while I was gone)
moritz PIRT (a replacement for POST written in NQP) also landed
now compiling the setting just takes ~1GB virtual memory
masak hm, Doug Crockford uses 'closure' (in the CS sense) as a mass noun. 12:02
12:02 mtk joined
arnsholt masak: Wuh? That's a bit odd, innit? 12:03
12:03 cotto left, cotto joined
masak it's a little intriguing. 12:05
it makes it an *effect*, not a *thing*.
he does it very consistently at www.youtube.com/watch?v=ya4UHuXNygM
12:10 skids left
masak I have never encountered this usage before. I wonder where he got it from. I know he's very history-savvy. 12:11
GlitchMr function foo() {} expands to var foo = undefined; foo = function foo() { }; 12:12
sure...
moritz GlitchMr: anything wrong with that statement?
cognominal_ what the T stands for in PIRT? 12:13
translation?
moritz cognominal_: tree
cognominal_ ha! moritz++
GlitchMr moritz: jsfiddle.net/JZqUN/ 12:14
It's more complex than Crockford has said
cognominal_ I forgot where the nqp:: are translated into their PIR equivalent
jnthn src/QAST/Operations.nqp 12:15
GlitchMr var foo = function foo() {} is not function foo() {} 12:16
cognominal_ jnthn++
GlitchMr In case of function statement, its moved to top as whole (with function itself). 12:17
But with var, only declaration itself is moved to top
cognominal_ that's add_core_pirop_mapping? 12:18
jnthn cognominal_: That declares the translation, yes. 12:19
cognominal_ sounds like a nice cleaning of stuff that was elsewhere
nice to see the decoupling from PIR get cleaner 12:20
masak GlitchMr: but that's exactly what Crockford says in that talk. 12:24
moritz has trouble not to understand "pseudo" as "sudo", his "p" is so soft :-) 12:26
r: say try die "foo"
p6eval rakudo c1bfbb: OUTPUT«foo␤ in block at /tmp/8E2QgHAkB0:1␤␤» 12:27
timotimo strange. i was sure pseudo was supposed to sound just like sudo 12:29
hoelzro some people pronounce it 'soo-doo' 12:30
arnsholt Depends I think. The French pronounce it (and Greek words in ps- in general) with clear p and s
hoelzro sudo, that is
moritz jnthn: I'm curious, why do print, say etc. get a :pure(1) mark in QAST::Operations? 12:33
they don't look very pure to me
jnthn moritz: This is why I didn't really like the name "pure" 12:34
moritz: It really means "can inline without it causing problems"
moritz what are examples of non-"pure" ops in that sense? 12:35
jnthn call
Calls involve a lexical lookup of the thing we wish to dispatch to.
And thus transplanting it into the caller's scope could yield very different results. 12:36
moritz but currently the :pure thing isn't even stored, right?
jnthn No
That's the next step. :)
arnsholt jnthn: Is there a Perl6-accesible way to figure out if what I have in a variable actually is a sixmodely thing? 12:37
moritz try $thing.WHAT; if $! { say "no 6model" } 12:38
jnthn That kind of introspection is rather discouraged.
nqp::p6type(...) will make the thing you have safe. 12:39
Or at least, should.
arnsholt Well yeah, but since my problem is that I get a non-sixmodely thing the easiest way to figure out where it comes from I'm thinking is to check in Perl 6 and die if it isn't
[Coke] nwc10++
jnthn arnsholt: Ah, if it's just for debugging then try what moritz++ said then. 12:40
moritz arnsholt: if you want to die anyway, just do $thing.WHAT
r: say pir::set__Ps('foo').WHAT
p6eval rakudo c1bfbb: OUTPUT«Null PMC access in set_string_native()␤ in block at /tmp/YguO1tSq4t:1␤␤»
arnsholt Cool. Trying that now 12:41
moritz r: my $x := pir::new__Ps('String'); $x.WHAT
p6eval rakudo c1bfbb: OUTPUT«Can only use get_what on a SixModelObject␤ in block at /tmp/qcqWMeMeql:1␤␤»
arnsholt Bah. Still segfaults if I add $target.signature.WHAT before the call 12:48
moritz r: QAST::Operations.add_core_pirop_mapping('exit', 'exit', '0i', :pure(1)); 12:50
p6eval rakudo c1bfbb: OUTPUT«Could not find symbol '&Operations'␤ in method <anon> at src/gen/CORE.setting:9629␤ in <anon> at src/gen/Metamodel.pm:2304␤ in any find_method_fallback at src/gen/Metamodel.pm:2302␤ in any find_method at src/gen/Metamodel.pm:843␤ in <anon> at src/gen/BOOTSTRAP…
moritz sorry, miss-copy
r: say Date.new('2012-12-24').truncated-to(:week)
p6eval rakudo c1bfbb: OUTPUT«2012-12-24␤»
moritz r: say Date.new('2012-12-24').day-of-week 12:51
p6eval rakudo c1bfbb: OUTPUT«1␤»
dalek c: ea27baf | moritz++ | lib/Date.pod:
[Date] document truncated-to
12:52
12:53 MayDaniel joined
felher Anyone here to review and maybe even apply the following rakudo patch: gist.github.com/3206000 . I attached a spectest log and the output of the two failing tests. I don't think the failing tests have anything todo with my patch. 12:53
moritz r: BEGIN { @*ARGS.push: '--foo' }; sub MAIN() { } 12:56
p6eval rakudo c1bfbb: OUTPUT«Unexpected named parameter 'foo' passed␤ in sub MAIN at /tmp/yfkqRKz8X5:1␤ in block at /tmp/yfkqRKz8X5:1␤␤»
12:57 PacoAir joined
moritz felher: and the patch changes that to instead print the usage message? 12:57
moritz compiles it
felher moritz: yeah. It works on my machine.
daxim the rakudo deatch star has TWO lazzz0rs? impressive. 12:59
dalek kudo/nom: f4b83df | moritz++ | tools/build/NQP_REVISION:
bump NQP revision to get dyncall callbacks, arnsholt++
13:05
kudo/nom: 705fabb | (Felix Herrmann)++ | src/core/Main.pm:
make Main.pm output a usage message on an unexpected named argument instead of bind failing

Signed-off-by: Moritz Lenz [email@hidden.address]
felher \o/
moritz++: thnx
dalek ast: 9ca79dd | moritz++ | S06-other/main-usage.t:
test that MAIN + unexpected named args trigger USAGE message
13:06
13:06 IamContagious left 13:10 kaleem left 13:15 atrodo joined 13:26 bluescreen10 joined
cognominal_ what is a "local variable" in QAST? 13:26
13:27 PacoAir left, benabik left, PacoAir joined, benabik joined, drbean left
cognominal_ local versus lexical does not say much about what is local 13:27
13:28 thou joined 13:29 drbean joined
diakopter cognominal_: afaik, local translates to a PIR local register; lexical transates to a PIR find_lex from lexical to register, store_lex from register to lexical 13:34
I assume you're talking about :scope on QAST::Var 13:35
cognominal_ ok. so I should see the PIR doc. thx. diakopter++ 13:37
diakopter well, if you want the variable to be able to be used in closures taken from the block you're in, use a lexical.. otherwise, local.
13:39 kaleem joined 13:40 brrt left
cognominal_ "The C<.local> directive indicates that the named register is only needed inside the current subroutine (that is, between C<.sub> and C<.end>)." 13:40
diakopter what about it? :) 13:42
cognominal_ well, I just cite the doc.
which confirms what you just said 13:43
13:43 skids joined
pmichaud good morning, #perl6 13:47
colomon \o
hoelzro morning pmichaud 13:48
[Coke] pmichaud: hio 13:49
moritz good am, pm
[Coke] wonders what the perl6 folks attending yapc::eu are going to do. Take over the cafeteria or something? 13:50
Just have a week long hackathon?
moritz I might not attend (though not because of the talks, but rather because of timing issues) 13:51
it's not decided yet
[Coke]: in Pisa (2010) we had an inofficial p6 hallway track :-)
13:52 fhelmberger left
pmichaud [Coke]: I have no idea. I'm guessing we'll figure something out. 13:53
moritz nr: say (a => 42)<a> 14:02
p6eval rakudo c1bfbb: OUTPUT«42␤»
..niecza v19-15-g051783d: OUTPUT«Unhandled exception: Cannot use hash access on an object of type Pair␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 354 (Any.at_key @ 9) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/wwCIi9OKlQ line 1 (mainli…
dalek c: 5a88982 | moritz++ | lib/Associative.pod:
document Associative
14:05
c: 8ea8a99 | moritz++ | lib/X/Comp.pod:
X::Comp (needs more work)
14:10 cognominal_ left
jnthn o/ pmichaud 14:10
pmichaud o/ jnthn 14:11
14:11 cognominal joined
pmichaud works outdoors in the 30degC weather 14:11
today's forecast is 40degC, though :-( 14:13
jnthn ouch :/
Today we finally got some rain, which has made things less stuffy.
jnthn focuses on $dayjob stuff again for a bit
moritz nrp: say ?all() 14:15
p6eval pugs: OUTPUT«all()␤»
..rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«True␤»
moritz nrp: say ?none() 14:16
p6eval pugs: OUTPUT«none()␤»
..rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«True␤»
14:17 MayDaniel left 14:28 MayDaniel joined 14:34 fr0g joined
dalek c: 4296057 | moritz++ | TODO:
update TODO
14:35
14:37 wtw left 14:38 dudz left 14:42 jerome left 14:43 jerome joined 14:44 cognominal left, cognominal joined
dalek c: dbc6f4e | moritz++ | / (2 files):
Junction
14:49
c: 7ef8834 | moritz++ | / (2 files):
remove TODO

instead add a script which shows missing types, using type-graph.txt as reference
pmichaud moritz++ # docs 14:52
moritz has anybody check if p6doc works with star? 14:53
*checked
pmichaud not me 14:54
moritz fascinating. It seems that Num has no methods except those provided by roles or superclasses 14:56
dalek c: beb5d73 | moritz++ | lib/Num.pod:
Num
14:57
14:58 birdwindupbird joined
dalek c: e951297 | moritz++ | lib/Int.pod:
[Int] method/sub chr
15:00
moritz I find that I don't live under the constant fear that the majority of the docs will be obsolete soon 15:01
(though I also avoid documenting stuff of which I suspect that it'll go away)
[Coke] r: say .chr() 15:04
p6eval rakudo c1bfbb: OUTPUT«No such method 'chr' for invocant of type 'Any'␤ in block at /tmp/Ljf5v_vjEL:1␤␤»
[Coke] r: say Int.chr()
p6eval rakudo c1bfbb: OUTPUT«Parameter '' requires an instance, but a type object was passed␤ in method chr at src/gen/CORE.setting:2764␤ in block at /tmp/JJWAox2GHx:1␤␤»
moritz r: say v1.0.* 15:10
p6eval rakudo c1bfbb: OUTPUT«v1.0.*␤»
moritz r: say v1.0.*+
p6eval rakudo c1bfbb: OUTPUT«v1.0.*+␤»
moritz r: say v1.alpha.*+ 15:11
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Confused␤at /tmp/kcCtr07_Y1:1␤»
moritz r: say v 15:12
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&v' called (line 1)␤»
15:17 kaleem left
masak why is v1.0.*+ allowed? 15:18
I mean, what does it add on v1.0.0+ ?
moritz just no reason to forbid it 15:19
dalek c: 7a00159 | moritz++ | lib/Version.pod:
document Version (missing: method new)
15:20
pmichaud ...versions can contain alphas 15:21
ah, it says "version literals". never mind.
moritz which is why it would be important to document method new 15:22
because it's currently the only way to create versions with alphas
pmichaud yup
.new just takes a string and makes a version out of it :-)
I can work on that one.
moritz thinks that the docs for Whatever will be fun to write 15:25
in general, I've tried to include language features that relate to a type in the documentation for that type 15:26
ie autothreading is documented in Junction.pod
so Whatever.pod would explain Whatever-currying
but I wouldn't go so far to document grammars in Grammar.pod :-) 15:27
15:31 p6eval left
dalek c: 1e8e00f | pmichaud++ | lib/Version.pod:
Add draft of method 'new'.
15:31
15:33 dalek left, Juerd left 15:35 pmichaud left 15:37 tadzik left 15:38 dalek joined, ChanServ sets mode: +v dalek, Juerd joined, Util left, Util joined
GlitchMr Is version like v1.*.2 pointless? 15:39
15:41 pmichaud joined
masak std: v1.*.2 15:43
oh, p6eval is on holiday since 17:32.
jnthn Well, it is summer. 15:44
geekosaur brb watching olympic evalthlon? 15:45
TimToady std sez ok 15:46
but pragmatically, it's likely to be pointless, unless community standards require .2 to mean something in every case 15:47
which they ain't gonna
otoh, we're talking about versions in general, so it's not just Perl community standards 15:48
geekosaur it occurred to me that while v1.*.2 /per se/ is dubious, v1.*.0 is potentially useful
TimToady a nd 1.*.0 might make more sense
you beat me :)
15:52 p6eval joined, ChanServ sets mode: +v p6eval 15:53 cognominal left 15:56 raiph joined 16:00 JimmyZ_ left 16:01 SamuraiJack left 16:02 zamolxes joined
moritz 1.*.alpha 16:02
geekosaur right, same idea 16:03
there are some milestone-like things that are useful, but 1.*.2 isn't really a meaningful milestone that is at all coordinated over values for the whatever 16:04
16:04 SamuraiJack joined
moritz unless you create a piece of software where it is 16:05
or somebody else does
16:06 xinming_ joined
GlitchMr gist.github.com/3208055 16:07
:)
So, I think I parse Perl 6 documentation :) 16:08
(order doesn't matter0
)
moritz \o/
GlitchMr Now to convert it to DuckDuckGo's output.txt format
16:09 cognominal joined
crazedpsyc GlitchMr++ :) 16:09
moritz has received two duckduckgo t-shirts today :-) 16:10
16:10 xinming left
flussence
.oO( v1.(* %% 2).* would be useful, but that's overcomplicating things. )
16:10
moritz (wrong size, but still close enough to wear them)
GlitchMr Well, they wanted to give me DuckDuckGo's T-Shirts
But why I would take them :P
16:10 bbkr left
GlitchMr For "contributions" 16:11
moritz why wouldn't you?
GlitchMr Why I would
moritz has lots of geek t-shirts at home, and isn't shy about wearing them
jnthn Most of my t-shirts come from conferences :) 16:12
masak 's too
GlitchMr Now, only my problem is colon thing
"Takes a format string, and returns a string the key and value parts of the Pair formatted. Here's an example:"
"Adds the @new elements to the hash with the same semantics as hash assignment, but with three exceptions:"
Well, I guess that example thing could be removed... simply as that 16:13
16:13 sergot left
moritz GlitchMr: what is the problem with the excerpts you cited? 16:13
GlitchMr Here's an example: 16:14
16:17 tadzik joined
GlitchMr It currently looks like paste.uk.to/ada2216b 16:19
moritz ah, it requires more effort to parse 16:22
elsif ( $tags[-1] eq 'pre' && !$fields{prototype}) # might help
GlitchMr oh thanks 16:23
I haven't noticed
== Numeric.succ == 16:24
'12.34'.succ # 13.34
'img001.png'.succ # img002.png
something went wrong... weird
oh, I see
16:25 shinobicl joined
shinobicl hello! 16:25
i'm having troubel compiling perl6
"invoke() not implemented in class '$post'"
GlitchMr $fields{prototype} ||= $dtext; would work too, I guess? 16:26
moritz shinobicl: is that while compiling nqp?
masak shinobicl: in which part of the build?
moritz GlitchMr: but then you'd skip the examples
GlitchMr: which might be weird if text before or after the examples talks about them 16:27
GlitchMr No space
shinobicl make: *** [src/stage1/NQPCORE.setting.pbc] Error 1
yep, NQPCORE
GlitchMr I will try to remove examples instead
masak shinobicl: hm. :/
moritz shinobicl: that's a known bug
shinobicl: as a workaround, you can try to add the -G flag to the command that failed 16:28
GlitchMr All I want is function prototype and short description
Just like with duckduckgo.com/?q=perl+split
moritz GlitchMr: then you should probably only ever use the first paragraph
GlitchMr Yes, I only use first paragraph 16:29
shinobicl this is my script for updating rakudo: pastebin.ca/2175902
16:29 sergot joined
tadzik shinobicl: git clean -fdx may save you some bandwidth :) 16:29
GlitchMr Unless I've done something wrongly? 16:30
moritz (but needs to be repeated in rakudo/parrot/ and rakudo/nqp/)
tadzik hm, true
shinobicl ahh i have lots of bandwidth :) i use that machine mostly for playing with perl6 and i update like once a week
so, i should add -G in the like with MAKE then
like=line
moritz shinobicl: no
shinobicl: you have to add that to the last command that the build process ran before it encountered that error 16:31
GlitchMr doc.perl6.org/routine/new#EnumMap
moritz (as I said, it's a workaround)
GlitchMr It seems that lack of information confused my script
shinobicl thanks moritz, i'll look into that 16:32
moritz GlitchMr: oops, that shouldn't be like that
dalek c: 19335e2 | moritz++ | lib/EnumMap.pod:
elaborate on EnumMap.new, GlitchMr++
16:34
c: a3cad24 | moritz++ | lib/X/AdHoc.pod:
harmonize markup
16:35
masak moritz++ # untiring work on perl6/doc
dalek c: c5af24c | moritz++ | .gitignore:
[gitignore] ignore html dir
16:36
GlitchMr doc.perl6.org/routine/Str#Match 16:37
No prototype
multi method Str(Match:D:) returns Str:D?
Actually, whole Match lacks prototypes 16:41
I should make it ignore lack of prototypes
16:43 hoelzro is now known as hoelzro|away 16:44 birdwindupbird left
TimToady moritz: re 'say [] ... []' I fail to see how the ... is in sink context, since 'say' is looser than ... 16:46
moritz TimToady: yes, I noticed that too (later in the backlog) 16:47
GlitchMr: there are actually many methods without prototypes :( 16:48
16:52 thelazydeveloper joined 16:53 dakkar left 17:01 shinobicl left 17:05 pyrimidine joined 17:08 mtk left 17:09 mtk joined
arnsholt moritz: Could you have a look at gist.github.com/3206774 (my patch for not having several return types) when you get a chance? 17:10
Two weird things: 1) Doing X::Redeclaration.throw nets me two "use of uninitialized value of type Any in string context in any apply_trait at src/Perl6/World.pm:1301", but just doing die works fine 17:11
2) The segfault thing if you don't comment out the code in trait_mod:<is> 17:12
masak arnsholt: that double "use of uninitialized..." behavior has hit some of us previously. it's mysterious.
arnsholt Good to know, I suppose 17:13
The second one seems mysterious as well :/
masak arnsholt: ...um, which trait_mod:<is>? 17:16
arnsholt Bah. <returns> 17:17
I keep thinking it's sub foo is returns, not sub foo returns
masak arnsholt: what about commenting out a subset of those lines of code? 17:18
moritz arnsholt: I think I know where the warnings come from 17:20
arnsholt: X::Redeclaration is X::Comp, which carries around file name and line number of the error
flussence Q: is there a way to get at a module's pod? Something like "use Foo::Bar; Foo::Bar::$=pod;"? 17:21
moritz flussence: not yet :(
flussence aww :(
moritz flussence: p6doc helps itself with eval slurp($file) ~ "\n\$=pod"
17:21 mtk left
moritz which MTA (More Than Aweful) 17:22
17:22 mtk joined
moritz arnsholt: so if you don't provide file name and line number, you get uninit warnings for both (more) 17:22
masak flussence: it would probably be $=Foo::Bar::pod, because of how sigils/twigils and package names nest.
17:23 shinobicl joined, am0c left
moritz arnsholt: the correct way to supply those is to wrap the location where the trait handler is called in $*W.rethrow($/, { codeblock that calls the trait handler}); 17:23
which catches the exception, adds file and line number, and rethrows 17:24
masak moritz++
17:24 am0c joined
dalek c: 1c0e7f4 | raiph++ | lib/Junction.pod:
typos
17:24
moritz wow, people actually read what I write :-) 17:25
arnsholt moritz: Aha! That explans the the undefs. Thanks! 17:26
17:26 seldon joined 17:27 fr0g left
moritz moritz.faui2k3.org/tmp/p6doc # crude visitor stats for doc.perl6.org. About 75 per day so far 17:29
17:31 Raimiss joined
dalek c: 448d5cf | raiph++ | lib/List.pod:
typos
17:38
17:42 [particle] left
moritz Failed to copy 'html-files/favicon.ico' to 'html': Is a directory 17:47
of course, 'html' is a directory
that's the whole point, stupid
17:48 cognominal_ joined
dalek c: d5477a8 | moritz++ | html (2 files):
[htmlify] add copying of static files; add favicon
17:49
17:51 cognominal left 17:52 [particle] joined 18:06 ilogger2 joined, ChanServ sets mode: +v ilogger2, birdwindupbird joined 18:09 Raimiss joined
arnsholt Progress! The segfault isn't triggered by the attribute get part 18:10
moritz: When I wrap the trait application in $*W.ex-handle(...) I get "Can not bind non-existent attribute '$!filename' on class 'X::Comp::AdHoc'" instead of what I expected. Familiar? 18:12
18:13 Raimiss left
moritz arnsholt: not expected, but I might know how to fix that 18:14
18:15 Raimiss joined
moritz arnsholt: basically World.rethrow doesn't handle that case yet 18:21
arnsholt: currently it assumes an untyped exception, and turns that into X::Comp::AdHoc
arnsholt: but of course it shouldn't do that with something that is already X::Comp
I need to refactor that routine a bit :( 18:22
arnsholt Right
I'll leave it for now, then
moritz arnsholt: gist.github.com/3208907 totally untested shot-in-the-dark patch 18:23
it compiles :-9
jnthn: halp. In Perl6::World, I need to find out into which class (of potentially several superclassses) a role was applied to 18:25
hm 18:26
maybe I simply provide a setter method
18:30 birdwindupbird left
moritz r: role A { has $.x; method set { $!x = 5 } }; class B does A { }; given B.new { .set; say .x } 18:31
p6eval rakudo c1bfbb: OUTPUT«5␤»
arnsholt jnthn: While we're on the subject (ish), I'm starting to suspect the segfault is triggered somewhere in the callgraph above the returns trait application when an exception is thrown 18:32
moritz arnsholt: gist.github.com/3208907 updated with less ad-hoc patch 18:39
arnsholt Cool. I'll play with it tomorrow 18:41
Right now I'm trying to squash that annoying segfault bug >.< 18:42
jnthn r: role R { }; class A { }; class B is A does R { }; class C is B { }; say C.^mro.grep(*.^roles(:local).grep(R).elems) 18:46
p6eval rakudo c1bfbb: OUTPUT«use of uninitialized value of type B in string context in block at /tmp/jsuL8j85KO:1␤␤␤»
jnthn er
r: role R { }; class A { }; class B is A does R { }; class C is B { }; say C.^mro.first(*.^roles(:local).grep(R).elems)
p6eval rakudo c1bfbb: OUTPUT«B()␤»
jnthn moritz: Like ^
?
18:46 MayDaniel joined
jnthn Oh, but in world...but the approach works :) 18:46
moritz I'm just going with an all-caps setter method now 18:47
jnthn arnsholt: Did you add something on the code-path that leads to the segfault to validate that we really have a 6model object there?
18:48 [particle] joined
arnsholt Yeah, I think I've tried $thing.WHAT on all the relevant things before the exception throwing, so I'm not sure what it is 18:48
Also, commenting out the exception throwing fixes it, so it's not the nqp::getattr. It's not the nqp::isnull($returns) either, since putting just that it doesn't break it either 18:50
jnthn arnsholt: No, I meant a check like github.com/rakudo/rakudo/blob/nom/...iner.c#L65
moritz sometimes exception + segfault is an infinite loop of exceptions + catching + rethrowing, which leads to stack overflow or so
jnthn Could be that also I guess.
arnsholt Hmm. Is there a way to do that vtable thing from Perl 6? 18:51
jnthn No
arnsholt Hmm
jnthn But the segfault is in container.c somewhere, no? 18:52
So look down the stacktrace to see where the object entered C land.
arnsholt runops_fast_core > Parrot_perl6_enter_multi_dispatch_from_onlystar_block_p > Rakudo_md_dispatch > find_best_candidate > Rakudo_cont_decontainerize 18:54
With some more Parrot stuff above runops_fast_core, of course
18:58 Psyche^ joined, Psyche^ is now known as Patterner
raiph r: sub f(\$parcel, $non-parcel) { } 18:58
p6eval rakudo c1bfbb: ( no output )
jnthn arnsholt: eek, a non-Perl 6 value is getting passed into the multi-dispatcher. 19:00
That's gonna be ungood.
arnsholt Weird. Kinda odd that it didn't blow up already 19:01
jnthn But it tells you what you're looking for: some place we do a multi-dispatch with the "wrong thing"
arnsholt Hmm
19:02 fgomez joined
arnsholt jnthn: Is there a way to poke at things in gdb and find the name of the sub we're multidispatching for? 19:08
raiph r: sub f(\$parcel, $non-parcel) { say $parcel.WHAT; say $non-parcel.WHAT }; f((), ()) 19:16
p6eval rakudo c1bfbb: OUTPUT«Parcel()␤Parcel()␤»
raiph moritz: i'm looking at doc.perl6.org/type/Parameter 19:17
specifically doc.perl6.org/type/Parameter#parcel 19:18
i don't understand why you've included the line of code i sent above to p6eval
moritz raiph: the terminology is a bit misleading... (more) 19:19
raiph: if a parameter is prefixed with \ it means that it doesn't decontainerize
so if you pass a variable to it, you can assign to the parameter
and if not, you cannot
(which is in contrast to 'is rw', which (should) fail at bind time if a non-variable is bound to it) 19:20
19:23 fridim_ joined
moritz r: class A is Real { } 19:24
p6eval rakudo c1bfbb: ( no output )
moritz r: module A { }; class B is A { }
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤B cannot inherit from A because it is not inheritable␤»
19:25 Raimiss left
jnthn arnsholt: Hmm...not easily, I fear. 19:29
arnsholt Drat. Also, I have to admit I'm mystified by find_best_candidate 19:31
Or at least a bit
I guess GETATTR_CallContext_positionals is a macro masquerading as a function 19:32
19:32 birdwindupbird joined
arnsholt Nah. I'll try this again tomorrow. Brain full now 19:38
raiph moritz: i'm still mulling what you wrote. i don't yet see a connection from what u just said to the code sample
moritz raiph: the code sample isn't too helpful :( 19:39
raiph moritz: (and also the one for the .capture entry: sub f(\capture) { } ) 19:40
hmm. i'll just finish the typo check and come back to this another time. 19:41
moritz raiph: I'll try to improve the docs 19:42
dalek c: b7e4919 | raiph++ | lib/Parameter.pod:
typos
19:43
19:50 crab2313 joined
dalek c: 8666fe3 | moritz++ | lib/Parameter.pod:
[Parameter] elaborate on parcel and capture params, raiph++
19:50
kudo/trait-exceptions: afe141b | moritz++ | src/ (2 files):
refactor World.rethrow a bit

you can now throw typed exceptions without file/line information, and have World.ex-handle add them for you previously only untyped exceptions were supported, and wrapped into X::Comp::AdHoc.
  arnsholt++ for poking me
19:54
kudo/trait-exceptions: de73915 | moritz++ | src/ (3 files):
enable throwing of X::Comp exceptions from trait handlers
moritz arnsholt: I'm spectesting that branch now. If it passes tests, that can serve as foundation for the exception stuff you want to do, instead of the crappy patches I pasted earlier :-) 19:55
and we'll finally get line numbers from failed traits 19:56
(at least, some of them :-)
nqp: my $_ := 3; ( -> { say $_ })() 20:00
p6eval nqp: OUTPUT«Missing block at line 2, near "-> { say $"␤current instr.: 'nqp;HLL;Grammar;panic' pc 22407 (src/stage2/gen/NQPHLL.pir:8523) (src/stage2/gen/NQPHLL.pm:326)␤»
moritz nqp: my $_ := 3; ({ say $_ })() 20:01
p6eval nqp: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 2, near "say $_ })("␤current instr.: 'nqp;HLL;Grammar;panic' pc 22407 (src/stage2/gen/NQPHLL.pir:8523) (src/stage2/gen/NQPHLL.pm:326)␤»
moritz nqp: my $_ := 3; ({ say($_) })() 20:02
p6eval nqp: OUTPUT«3␤»
dalek kudo/trait-exceptions: 92b627f | moritz++ | src/Perl6/Actions.pm:
ex-handle routine traits
20:03
kudo/trait-exceptions: 85800a0 | moritz++ | src/ (2 files):
more exception fixes
20:15
20:29 birdwindupbird left 20:30 birdwindupbird joined
dalek kudo/trait-exceptions: ff98fd1 | moritz++ | src/core/Exception.pm:
X::Export::NameClash now also does X::Comp
20:38
20:40 birdwindupbird left
dalek kudo/trait-exceptions: fe675c9 | moritz++ | src/Perl6/ (2 files):
fix pod
20:44
moritz I hope that cleans up the spectest again 20:46
dalek kudo/nom: afe141b | moritz++ | src/ (2 files):
refactor World.rethrow a bit

you can now throw typed exceptions without file/line information, and have World.ex-handle add them for you previously only untyped exceptions were supported, and wrapped into X::Comp::AdHoc. 96699c0 | jnthn++ | docs/ChangeLog: Be a little more precise/informative about magnitude of memory improvements.
21:01
21:02 dalek joined, ChanServ sets mode: +v dalek
lue hello world o/ 21:04
masak lue! \o/ 21:05
moritz \o
sorear lue! \o/
masak sorear! \o/ 21:06
moritz masak! \o/ 21:07
masak does a little happy dance
21:09 pnu joined 21:10 preflex joined
moritz jnthn: ChangeLog also doesn't mention PIRT yet 21:10
21:10 Exodist joined
dalek kudo/nom: 7b678c3 | jnthn++ | docs/ChangeLog:
Mention PIRT.
21:11
21:13 DarthGandalf joined
dalek kudo/nom: 7c4c8b1 | moritz++ | docs/ChangeLog:
mention trait exception improvements in ChangeLog
21:13
moritz sleep time here 21:14
lue goodnight moritz o/ 21:15
jnthn 'night, moritz
masak good night, moritz. dream of wonderful ChangeLogs and squeaky-clean documentation.
moritz and informative exceptions! 21:16
masak sssh! :P 21:17
21:22 benabik joined
masak > x right rod 21:25
It's a rod and it's on the right. It's made of liquorice.
Nah, just kidding! It looks to be made of copper or something.
:P
PerlJam starts cranking his portable Van der Graaf generator and stands near the rod 21:26
[Coke] uhoh, we're in trouble.
sorear Does the description change if you move it to your left? 21:27
[Coke] I just heard that the Hobbit is going to be /3/ movies.
masak sorear: the rod is fixed to the floor. 21:28
PerlJam "Van der Graaf"? or "Van de Graaf"?
sorear masak: you can use your feet to move the floor in your reference frame, though.
unless the floor is also fixed to you?
benabik [Coke]: It should not take the same amount of film for the Hobbit as the entire Lord of the Rings. 21:29
2 was stretching it, I thought
sorear hands PerlJam a Wimshurst Machine. 21:30
dalek p: 127288f | jnthn++ | src/QAST/Operations.nqp:
Using 'pure' is gonna confuse everyone as to what it means, so just call it inlinable.
21:31
p: d94369f | jnthn++ | src/QAST/Operations.nqp:
Collect op inlinability information and allow it to be queried.
masak sorear: you can use your feet to move the floor in your reference frame, but only at the granularity of rooms. (in my game) 21:32
[Coke] benabik: they're pulling in some of the other source material. 21:36
masak doesn't know whether to like that or not 21:37
lue masak: safe to say it's probably going to anger a few fans :) .oO(Ooh, there's this part in The Lion, the Witch, and the Wardrobe that'll work perfectly for this scene!) 21:39
21:39 fridim_ left 21:43 benabik left 21:44 benabik joined
masak lue: I just pushed today's crypt work. 21:45
lue: you can now 'put the tiny disk on the right rod'.
masak blogs
lue \o/
huf i wonder what ties in with the hobbit so strongly that you can include it... 21:47
lotr is written to be much "wider", so i'd think it'd be easier to add things to it
masak too
huf were it not already too goddam long for a movie
i can't really imagine bits of the silmarillion in the mittle of the hobbit, and what else is there? 21:48
cutting to the story of celebrimbor in the middle of the movie to explain the origin of the ring is ... doesnt sound very fortunate
they shouldda picked the story of turin. also has a dragon in it AND is sad enough to make stone weep 21:50
21:52 MayDaniel left
lue masak: finally beat the game! (also, I half-expected > x camelia to work :P) 21:55
masak lue: I also beat the game on the CLI for the first time tonight ;)
lue: how should I make 'x camelia' work? I don't have noun synonyms... 21:56
lue looks at how other synonyms work in crypt before making an answer
masak do we have an ASCII art Camelia?
huf "Camelia" is fairly distinctive... 21:57
sorear masak: yes.
masak: well, latin1 art
lue »ö« 21:58
TimToady it's only, like, in the topic
21:58 crab2313 left
masak I know about that one ;) 21:59
I meant a bigger one, like 15x20.
TimToady ah
we could probably do one in braille dots...
masak :P 22:01
lue maybe a .make_synonym or .make_alias method? .oO(make_ln) 22:02
masak could work. not a half-bad idea, actually. 22:05
I haven't needed it for crypt, but I could see how other games might need it.
and we only do that for directions.
lue++
s/only/already/
lue you have a %exit_aliases hash in Adventure::Engine, so I don't think %object_aliases should be too difficult :) 22:06
22:06 tanzdebil joined
tanzdebil evening 22:06
masak ooh -- got an email with bug reports!
jnthn evening, tanzdebil 22:07
tanzdebil was wondering if anyone was up on the state of KeyBag & friends in rakudo
masak lue: %thing_aliases, keeping with the naming scheme, but yes :)
r: KeyBag; say "well, we have KeyBag"
p6eval rakudo c1bfbb: OUTPUT«well, we have KeyBag␤»
masak lol, I blogggggggggged! \o/ strangelyconsistent.org/blog/july-3...loose-ends
(only one day to go! *pant* *pant*) 22:08
jnthn Looking at the test list, we certainly run a bunch of tests for KeyBag and KeySet.
masak reads the email
tanzdebil as in, looks like the nice little set operators are in the spec but not yet impl - yes? 22:10
ingy where is the p6 cpan and what is it called?
tanzdebil r: my $x = KeyBag.new({a => 1}); my $y = KeyBag.new({a => 2}); my $z = $x ⊍ $y; say "z = ", $z; 22:11
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Confused␤at /tmp/qfkI0fnNOu:1␤»
masak ingy: modules.perl6.org
TimToady n: my $x = KeyBag.new({a => 1}); my $y = KeyBag.new({a => 2}); my $z = $x ⊍ $y; say "z = ", $z; 22:12
p6eval niecza v19-15-g051783d: OUTPUT«z = keybag("a" => 1)␤»
TimToady hmm
colomon is suddenly paying attention...
ingy masak: does it have a common name? 6pan? 22:13
TimToady looks like an entymological entity
sorear colomon! \o/ 22:14
masak ingy: no, nothing like that. it's generally considered a temporary solution, because we have a "real" CPAN.
tanzdebil TT: ok, double checking... 22:15
ingy well I'll call it 6PAN in the talk proposal
I think people will get it...
masak [Coke], lue: you just got completely ousted by the guy (Kevin Colyer) who just sent me an email about crypt.
jnthn tanzdebil: Right, we don't have the unicode forms of them in Rakudo at least.
lue masak: how so?
masak he sent me a transcript of things he tried!
colomon sorear: I started scheming on vastly improved case-routines while up north, but decided to fish more instead of actually trying to implement them.
masak with dozens of good suggestions! 22:16
jnthn Hmm...or even the ascii ones it seems.
tanzdebil jnthn: ok cool, just making sure.
sorear colomon: what's a case routine? 22:17
jnthn tanzdebil: I guess they're not terribly hard to implement, just nobody got to 'em yet.
dalek p: a8df907 | jnthn++ | / (12 files):
Add a QAST::InlinePlaceholder to represent a place in the QAST where an argument needs to be filled in when inlining. Implement a first cut of producing a tree with the placeholders substituted in.
lue I thought the unicode set ops were NYI, and it seems still to be so (unless I'm awful at searching through perlcabal.org's google search)
masak lue: I added his email to gist.github.com/3034482 22:18
the totality of all the things he unearthed makes him an easy winner of this month's contest. 22:19
there's still time left, though :)
tanzdebil r: my $x = KeyBag.new({a => 1}); my $y = KeyBag.new({a => 2}); my $z = $x ⊍ $y; say "z = ", $z;
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Confused␤at /tmp/zGS9ZlOYgp:1␤»
masak phenny: de en "tanz"?
phenny masak: "dance" (de to en, translate.google.com)
masak phenny: es en "debil"? 22:20
phenny masak: "weak" (es to en, translate.google.com)
jnthn S03-operators/set.t has a bunch of tests. 280 of 'em. Tempting... :)
tanzdebil tanzdebil = made up german word
masak ah.
tanzdebil tho not made up by me:)
OK, thx everyone who answered. am new to the source, and not entirely sure when to trust my own eyes. 22:22
lue masak: one nice thing, although you'd probably need NativeCall for it, would be "up arrow=go back in history" (also: the OOPS command, though I usually use the up arrow instead :) )
TimToady n: my $x = KeyBag.new({a => 3}); my $y = KeyBag.new({a => 2}); my $z = $x ⊍ $y; say "z = ", $z; 22:23
p6eval niecza v19-15-g051783d: OUTPUT«z = keybag("a" => 3)␤»
masak lue: yes, there should definitely be bindings for a readline with history. I think that's possible at this point, thanks to arnsholt++ 22:24
tanzdebil n: my $x = KeyBag.new({a => 1}); my $y = KeyBag.new({a => 2}); my $z = $x ⊍ $y; say "z = ", $z;
p6eval niecza v19-15-g051783d: OUTPUT«z = keybag("a" => 1)␤»
tanzdebil n: my $x = KeyBag.new({a => 2}); my $y = KeyBag.new({a => 1}); my $z = $x ⊍ $y; say "z = ", $z;
p6eval niecza v19-15-g051783d: OUTPUT«z = keybag("a" => 2)␤»
tanzdebil hmm
TimToady n: my $x = KeyBag.new({a=> 2}); my $y = KeyBag.new({a => 3}); my $z = $x ⊍ $y; say "z = ", $z;
p6eval niecza v19-15-g051783d: OUTPUT«z = keybag("a" => 2)␤»
masak looks rong to me. 22:25
TimToady seems to just take the first one
tanzdebil okay, so it's all up in the air then.
masak would make more sense if it took the max of the values.
TimToady precedence maybe?
tanzdebil masak: well there are two interpretations -- for union, max does seem more reasonable.
TimToady n: my $x = KeyBag.new({a => 3}); my $y = KeyBag.new({a => 2}); my $z = ($x ⊍ $y); say "z = ", $z; 22:26
p6eval niecza v19-15-g051783d: OUTPUT«z = bag("a" => 6)␤»
tanzdebil for +, which I'm not sure is defined yet (because it's not in set.t) a sum of the weights may be more reasonable.
TimToady yes, listop looser than item assignment
tanzdebil that way people can use ⊍ for max, and + for sum of weights.
n: my $x = KeyBag.new({a => 5}); my $y = KeyBag.new({a => 2}); my $z = $x - $y; say "z = ", $z; 22:27
p6eval niecza v19-15-g051783d: OUTPUT«z = 3␤»
tanzdebil and - functions just like we think it should.
masak tanzdebil: I'm not that comfortable with infix:<+> being anything other than scalar addition.
we work pretty hard in Perl to keep it that way. 22:28
tanzdebil ok then
TimToady n: my $x = KeyBag.new({a => 3}); my $y = KeyBag.new({a => 2}); my $z = ($x ∪ $y); say "z = ", $z;
p6eval niecza v19-15-g051783d: OUTPUT«z = bag("a" => 3)␤»
tanzdebil but then - is not, symmetrically, scalar subtraction in this case 22:29
TimToady n: my $x = KeyBag.new({a => 3}); my $y = KeyBag.new({a => 2}); my $z = ($x ⨄ $y); say "z = ", $z;
p6eval niecza v19-15-g051783d: OUTPUT«===SORRY!===␤␤Confused at /tmp/kr9ZFjCuP1 line 1:␤------> $y = KeyBag.new({a => 2}); my $z = ($x ⏏⨄ $y); say "z = ", $z;␤␤Parse failed␤␤»
TimToady there's plenty of unicode without overloading things that maybe shouldn't be 22:30
22:30 cognominal_ joined
dalek p/sigsp: 5c0a24b | pmichaud++ | src/ (2 files):
Initial patches to ignore leading whitespace in rules.
22:41
tanzdebil TT: cool 22:48
jnthn is happy to see pmichaud++ taking this on :)
22:48 snearch joined
pmichaud nqp works with the new spacing requirements; now it's time to get rakudo to work :) 22:50
masak \o/ 22:51
jnthn TimToady: Are the set operators (some/all) in standard Perl 6? 22:56
TimToady: STD doesn't include them, nor does S03. 22:57
lue jnthn: I've never found them (although I'm not too trusting of perlcabal's google search)
jnthn No, though they are covered in spectest. 22:58
And I note that Niecza doesn't need a "use" statement to get at them at present.
Dunno if that's intended for the long them though. 22:59
23:00 kaare_ joined 23:01 whiteknight joined, whiteknight is now known as Guest47300
dalek kudo/setops: f0c5c2d | jnthn++ | src/ (4 files):
Initial stab at porting of set operations from Niecza's CORE.setting. Doesn't pass set.t yet, but worse somehow slows down CORE.setting parse quite a bit. Pushing this to allow @other to investigate either issue; need to resolve whether the ops even belong in core before this is merged also.
23:06
jnthn Hm. Seems that raises more questions than answers, but it gives it a shove in some direction. :) 23:07
sorear jnthn: it slows down CORE.setting parse quite a bit because you've just added characters >= 256 to the setting 23:08
pmichaud actually, I think because they're in the grammar.
The setting should be able to handle codepoints above 256 just fine.
sorear now the setting has to be encoded in UTF-8 becuase Parrot's support for UTF-32 sucks
pmichaud doesn't matter too much, we do ucs4 internally.
jnthn Apart from the regex engine does everything in ucs4 afaik.
Which is why it's kinda surprising.
pmichaud not *everything*
it encodes the target string as ucs4, yes. but source literals might not be. 23:09
jnthn Evidently. ;-)
Ah, that's possible.
sorear pmichaud: oh, that finally got fixed? I thought you couldn't use ucs4 in the grammar because parrot's UCS4 required ICU
pmichaud there's also the possible problem that the regex method names aren't latin1
ucs4 requires ICU for a lot of operations, but not for basic string comparison.
i.e., you can't upcase/downcase codepoints >= 256 in ucs4 without icu
well.... actually larger than 256 iirc; we do some good cheating there when icu isn't present. 23:10
jnthn *nod*
Well, a way to reproduce the slowdown is there for anyone who wants to have a dig. :)
23:11 benabik left
jnthn will be spending his tuits on the inlining stuff mostly in the next days, though. 23:11
masak good night, #perl6 23:14
lue goodnight, masak o/ 23:15
jnthn hm, some rest sounds like a good idea... 23:17
'night o/
23:23 snearch left, gongyiliao joined 23:26 benabik joined 23:35 Transformer joined
tanzdebil nitey ~~ all 23:35
23:36 Transformer left 23:44 kaare_ left
dalek c: 82c90c5 | (Geoffrey Broadwell)++ | lib/Perl6/TypeGraph.pm:
Pre-sort types by name before doing topo sort
23:51
23:52 tanzdebil left, japhb_ joined
japhb_ moritz, in doc commits c5af24c8af and d5477a86d, did you intend to move the JS/CSS out of html/ and into html-files/ (this would of course require the html-files copying to become recursive)? 23:55
moritz, or did you intend instead to only .gitignore the *generated* directories within html/ ?