»ö« 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.
raiph swarley: is there a difference between perl6 and nqp regex syntax? 00:02
00:03 lue joined
swarley Well, I mean for tokens an stuff, and I've not ever used Perl 6 regular expressions to be honest 00:05
and*
raiph hi lue
lue Why, upon bootstrapping panda after updating perl6, is there a ~/.perl6/2012.10-151-g112307b/bin I now need in my PATH in as well?
raiph lue: is nqp regex syntax the same as p6?
lue AFAIK, nqp regex syntax is basically P6's, but don't be surprised if something doesn't work. (Not Quite an expert in nqp, so I can't say for sure.) 00:07
00:09 swarley left
lue I can understand wanting to version-separate panda (considering it doesn't work anymore if you update), but why not turn the normal ~/.perl6 directories (~/.perl6/bin, etc.) into symlinks? 00:10
(come to think of it, there are a couple of other improvements I might make to panda...) 00:12
raiph lue: iirclog.perlgeek.de/search.pl?channe...mp;q=panda 00:15
s/ihttp/http/ 00:16
00:16 swarley joined, BillySeth left
raiph hi again swarley. i'm pretty sure nqp regex are the same syntax as perl 6 regex, except in code blocks ... and, for the most part, nqp code is a subset of perl6 00:18
swarley Well, I understand PCRE
lue For the record, my initial typings on panda were me being taken aback by being asked to amend my PATH (which I don't like doing freely) to a version-specific location, the implication being I have to do this with every update. 00:19
swarley What I dont understand is this syntax pastebin.com/sHU4Sa0S
japhb swarley, PCRE is based on Perl 5 regex; Perl 6 grammers are different (similar basics, but more powerful, and with a cleaner and not-compatible syntax) 00:20
raiph yeah, that's perl6 regex
swarley Okay, i suppose i mean rule syntax
japhb swarley: This is the official grammar/rule/token/regex spec for Perl 6: perlcabal.org/syn/S05.html 00:21
swarley thank you very much
japhb np
00:22 tokuhiro_ joined
raiph swarley: that's a great document; it's one of the language specification documents; it may well be overwhelming; you have other options for gaining information 00:24
nqp: say "hi"
p6eval nqp: OUTPUT«Confused at line 2, near "say \"hi\""␤current instr.: 'panic' pc 13089 (src/stage2/gen/NQPHLL.pir:4619) (src/stage2/gen/NQPHLL.pm:324)␤»
japhb raiph, nqp requires parens there
lue nqp: say("hi")
p6eval nqp: OUTPUT«hi␤»
00:27 zjmarlow_ left
lue & 00:28
00:38 Pleiades` joined 00:45 whiteknight left 00:52 zjmarlow_ joined
dalek rl6-bench: 3525cb8 | (Geoffrey Broadwell)++ | bench:
Allow extraction of specific release tags, instead of all of them
01:05
rl6-bench: 7f84c9c | (Geoffrey Broadwell)++ | components.json:
Do local clones of parrot and nqp when building rakudo, instead of allowing full network clones from --gen-parrot
01:15 indasky__ joined 01:19 wamba left 01:32 spider-mario left 01:42 zjmarlow_ left 02:03 xinming left 02:05 xinming joined 02:07 tokuhiro_ left 02:08 bowtie left 02:11 tokuhiro_ joined 02:12 cognominal left 02:14 indasky__ left 02:15 tokuhiro_ left 02:19 cognominal joined 02:24 swarley left 02:30 tokuhiro_ joined 02:42 am0c joined, tokuhiro_ left 02:43 tokuhiro_ joined 02:48 grondilu joined, tokuhiro_ left 02:55 swarley joined 03:07 xdbr left 03:08 xinming left 03:13 grondilu left 03:18 xinming joined 03:52 orafu left, orafu joined 04:07 skids joined 04:08 jaldhar joined 04:23 armitage81 joined 04:29 skids left 04:37 raiph left 04:38 Chillance left 04:41 armitage81 left, gootle joined 04:43 tokuhiro_ joined 04:47 tokuhiro_ left 04:53 am0c left
xenoterracide is there anything like p5's __SUB__ (reference to the current subroutine) 05:22
sorear &?ROUTINE 05:28
(p6 had it first)
05:32 cognominal left
xenoterracide sorear++ 06:04
sorear: figured it had it first, I just din't know what I was looking for
06:25 tokuhiro_ joined 06:55 swarley left 07:46 cognominal joined 07:47 tokuhiro_ left 07:48 tokuhiro_ joined 07:50 tokuhiro_ left, tokuhiro_ joined 07:59 sisar joined 08:16 FROGGS joined, flightrecorder joined 08:23 xinming left 08:24 GlitchMr joined 08:29 wamba joined, domidumont joined 08:53 rindolf joined, xinming joined 08:55 domidumont left 08:56 domidumont joined 08:59 zjmarlow_ joined 09:01 sisar left 09:04 xdbr joined, SamuraiJack joined, xinming left 09:07 kaare_ joined 09:08 zby_home_ joined 09:13 zjmarlow_ left, zjmarlow_ joined 09:16 xinming joined
FROGGS morning pals 09:16
sorear morning FROGGS 09:22
tipdbmp How can I match only space characters (\s), that are not \n (newlines), cause it seems \s matched \n as well. 09:25
space characters = ' ', '\t', and probably more. 09:26
FROGGS <[\s]-[\n]> ? 09:27
just a guess
r: say so "\n" ~~ <[\s]-[\n]> 09:28
p6eval rakudo 112307: OUTPUT«False␤»
FROGGS r: say so "\t" ~~ <[\s]-[\n]>
p6eval rakudo 112307: OUTPUT«False␤»
xenoterracide tipdbmp: why? just curious
FROGGS r: say so " " ~~ <[\s]-[\n]>
p6eval rakudo 112307: OUTPUT«False␤»
FROGGS meh
xenoterracide tipdbmp: not being all that familiar with p6 I wonder if things like /xms still apply 09:29
09:29 MayDaniel joined
tipdbmp Having fun with grammars, and noticed that \s matched \n but I want to show an error if if the "input" was something like A \nB instead of just A B. 09:29
xenoterracide and so if you're asking about not seeing \n maybe your problem is that options like /ms aren't applied
FROGGS r: say so " " ~~ /<[\s]-[\n]>/
p6eval rakudo 112307: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block : Unrecognized subtype 'zerowidth' in QAST::Regex cclass␤»
FROGGS r: say so " " ~~ /<[\s]>/ 09:30
p6eval rakudo 112307: OUTPUT«True␤»
FROGGS okay, I dunno how
tipdbmp Why does "\n" ~~ /<[\s]-[\n]>/ give an error? 09:33
09:33 zjmarlow_ left, zjmarlow_ joined
FROGGS maybe its not a valid syntax of the regex 09:33
the problem with perl6 regex is that you find pretty old stuff when googling for it 09:34
tipdbmp "b" ~~ /<[a..c]-[b]>/ # False
i.e it works.
FROGGS r: "b" ~~ /<[a..c]-[b]> 09:35
p6eval rakudo 112307: OUTPUT«===SORRY!===␤Regex not terminated at line 2, near ""␤»
FROGGS r: "b" ~~ /<[a..c]-[b]>/
p6eval rakudo 112307: ( no output )
FROGGS r: say so "b" ~~ /<[a..c]-[b]>/
p6eval rakudo 112307: OUTPUT«False␤»
FROGGS r: say so "a" ~~ /<[a..c]-[b]>/
p6eval rakudo 112307: OUTPUT«True␤»
FROGGS hmmm
tipdbmp What's so? =)
boolean context?
FROGGS boolify the thing on the right
huf opposite of not
09:36 zjmarlow_ left
FROGGS r: say so " " ~~ /<[a-c]-[b]>/ 09:36
p6eval rakudo 112307: OUTPUT«===SORRY!===␤Unsupported use of - as character range; in Perl 6 please use .. for range, for explicit - in character class, escape it or place as last thing at line 2, near "c]-[b]>/"␤»
FROGGS r: say so " " ~~ /<[a..c]-[b]>/
p6eval rakudo 112307: OUTPUT«False␤»
FROGGS r: say so " " ~~ /<[a..c]-[\n]>/
p6eval rakudo 112307: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block : Unrecognized subtype 'zerowidth' in QAST::Regex cclass␤»
FROGGS bug?
r: say so " " ~~ /\n/ 09:37
p6eval rakudo 112307: OUTPUT«False␤»
FROGGS r: say so " " ~~ /<[\n]>/
p6eval rakudo 112307: OUTPUT«False␤»
FROGGS r: say so " " ~~ /<-[\n]>/
p6eval rakudo 112307: OUTPUT«True␤»
FROGGS r: say so " " ~~ /<[\n]-[a]>/
p6eval rakudo 112307: OUTPUT«False␤»
FROGGS hmmm
09:38 zjmarlow__ joined 09:41 domidumont left, domidumont joined
FROGGS made a bugreport 09:46
but I hate that RT -.-
09:52 cognominal left 09:55 domidumont left
GlitchMr >>> "".join(sorted("qwertyuiop")) 09:56
oops
wrong paste
10:01 xinming left 10:04 birdwindupbird joined
jnthn morning, #perl6 10:17
phenny jnthn: 17 Nov 22:46Z <[Coke]> ask jnthn you recently worked on a bug /like/ rt.perl.org/rt3/Ticket/Display.html?id=77064 (114362) - this one has slightly different expected (by the OP) behavior.
FROGGS hi jnthn 10:18
sorear good morning #jnthn
jnthn
.oO( there's a channel where *I'm* the topic? oh my... :) )
FROGGS it is good as long as the ppl dont stop talking when your appear 10:20
;o)
jnthn :) 10:21
10:29 moritz joined 10:31 zjmarlow__ left
xenoterracide how can I ask the meta object what methods it has? 10:33
10:34 xinming joined
moritz r: my $meta := 1.HOW; say $meta.HOW.method($meta) 10:34
p6eval rakudo 112307: OUTPUT«No such method 'method' for invocant of type 'NQPClassHOW'␤ in block at /tmp/Twksu1eBCE:1␤␤»
moritz r: my $meta := 1.HOW; say $meta.HOW.methods($meta)
p6eval rakudo 112307: OUTPUT«No such method 'gist' for invocant of type 'NQPRoutine'␤ in method gist at src/gen/CORE.setting:5031␤ in sub say at src/gen/CORE.setting:7460␤ in block at /tmp/SXns63zmty:1␤␤»
moritz xenoterracide: did I understand correctly you want the meta object's methods, not the original object methods? 10:35
jnthn Like that, but NQP routines don't know much about Perl 6 :)
xenoterracide moritz: yeah, I was just reading your code
moritz xenoterracide: which code?
xenoterracide moritz: what you put for the p6 eval 10:36
moritz ah
xenoterracide though seems like currently doesn't work? 10:39
r: "".HOW.^methods
p6eval rakudo 112307: ( no output )
xenoterracide r: say "".HOW.^methods
p6eval rakudo 112307: OUTPUT«No such method 'gist' for invocant of type 'NQPRoutine'␤ in method gist at src/gen/CORE.setting:5031␤ in sub say at src/gen/CORE.setting:7460␤ in block at /tmp/ynvnAycnux:1␤␤»
moritz xenoterracide: oh, it works, it just doesn't work to print the list so easily
xenoterracide ah
moritz r: my @list := 1.HOW.^methods; say @list.elems 10:40
p6eval rakudo 112307: OUTPUT«163␤»
moritz r: my @list := 1.HOW.^methods; for ^@list.elems { say @list[$_].name }
p6eval rakudo 112307: OUTPUT«No such method 'name' for invocant of type 'NQPRoutine'␤ in block at /tmp/GIFG9CdVRI:1␤␤»
moritz r: my @list := 1.HOW.^methods; for ^@list.elems { say ~@list[$_] } 10:41
p6eval rakudo 112307: OUTPUT«Cannot call 'prefix:<~>'; none of these signatures match:␤:(str $a)␤:(Str:D \a)␤:(\a)␤␤ in block at /tmp/iomDBp53IZ:1␤␤»
jnthn should use his copious amounts of travel time in the next couple of weeks to design a decent solution to this...
moritz r: my @list := 1.HOW.^methods; for ^@list.elems { say nqp::p6box_s(nqp::set__PS(@list[$_])) }
p6eval rakudo 112307: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block : Error while compiling op call: Error while compiling op p6box_s: Error while compiling op set__PS: No registered operation handler …
moritz r: my @list := 1.HOW.^methods; for ^@list.elems { say nqp::p6box_s(nqp::assign__PS(@list[$_])) } 10:42
p6eval rakudo 112307: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block : Error while compiling op call: Error while compiling op p6box_s: Error while compiling op assign__PS: No registered operation handl…
moritz r: my @list := 1.HOW.^methods; for ^@list.elems { say nqp::p6box_s(pir::set__PS(@list[$_])) }
p6eval rakudo 112307: OUTPUT«Null PMC access in set_string_native()␤ in block at /tmp/O6TOw5lMrQ:1␤␤»
xenoterracide thinks that someday $obj.^.^methods should work... it's the obvious? 10:43
moritz jnthn: could you explain QAST::Want to me? There are no docs for it. 10:44
it seems to be some way to support coercion to a particular type/format/whatever 10:45
but there's not much code for that
10:46 sisar joined
jnthn moritz: It's kind of like a switch statement based on context. 10:47
For example: QAST::Want.new( QAST::WVal.new(...), 'Ii', QAST::IVal.new(...) )
Here, we say that the default thing you get from this node is a WVal, but if the thing that will consume our result wants an integer (register or constant), then used the IVal instead. 10:48
QAST::Want.new( $past, 'v', QAST::Op.new( :op('call'), :name('&sink'), $past ) ) 10:49
moritz doesn't that have to be QAST::BVal($past) for the last usage of $past?
jnthn This one says "normally emit just $past, but if we're in a void context (nothing will use the result), then instead emit the call 10:50
moritz I kind thought you're not allowed to reuse a qast tree just like that
*kinda
jnthn The rules are a little more interesting than that. :) 10:51
But with Want, it promises to only ever actually follow one of the branches.
So re-use doesn't matter
moritz ok
jnthn Also $past need to have been a QAST::Block
The big problem with re-using a QAST::Block is you get the block compiled twice
moritz right
so QAST::Want is a *compile time* switch statement, right? 10:52
jnthn Correct.
QAST::Compiler decides which child it wants.
For example, see the proto method in there, and also the stuff dealing with void context in compile_all_the_stmts 10:53
GlitchMr perl6: say 3 !!= 3 10:54
p6eval niecza v22-32-gee5dcf1: OUTPUT«===SORRY!===␤␤An infix may not start with !! at /tmp/xrDHn2vYHE line 1:␤------> say 3 !!=⏏ 3␤␤Parse failed␤␤»
..rakudo 112307: OUTPUT«True␤»
GlitchMr Interesting
10:55 xinming left
GlitchMr Niecza thinks it's second part of ternary operator. Rakudo thinks it's opposite of != (read: ==). 10:55
moritz jnthn: can i emit the equivalent of a nqp::can as QAST::Op(:op<can>) ?
GlitchMr std: say 3 !!= 3
p6eval std d38bbd0: OUTPUT«===SORRY!===␤An infix may not start with !! at /tmp/tx8ts3TtDN line 1:␤------> say 3 !!=⏏ 3␤Parse failed␤FAILED 00:00 42m␤»
jnthn moritz: missing a .new :)
moritz: But yes.
moritz erm, yes
GlitchMr perl6: say 3 ![!=] 3
p6eval niecza v22-32-gee5dcf1: OUTPUT«Unhandled exception: Writing to readonly scalar␤ at /tmp/qPaAT14EIf line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4211 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4212 (module-CORE @ 578) ␤ at /home/p6eval/niecza/li…
..rakudo 112307: OUTPUT«True␤»
moritz jnthn: because I just saw an QAST::VM.new(:pirop('can IPs'), ...)
GlitchMr std: say 3 ![!=] 3 10:56
jnthn moritz: ooh...kill it! :D
p6eval std d38bbd0: OUTPUT«ok 00:00 42m␤»
GlitchMr What is ![!=] anyway?
jnthn GlitchMr: You can always bracket parts of a meta-operator
GlitchMr And why it doesn't work in Niecza? 10:57
jnthn r: say (1,2,3) Z[*] (4,5,6)
p6eval rakudo 112307: OUTPUT«4 10 18␤»
jnthn No idea.
moritz maybe NYI
jnthn GlitchMr: If you had a ZTop operator and you wanted to use the Z meta-operator with it, but somebody had already created a ZZTop operator, you could be clear you wanted the meta-operator for doing Z[ZTop] for example. 10:59
11:13 sunnavy left
dalek kudo/nom: cecc9fa | moritz++ | src/Perl6/Actions.pm:
replace QAST::VM with QAST::Op
11:16
11:19 sisar left 11:20 sunnavy joined 11:30 zjmarlow__ joined 11:34 spider-mario joined 11:39 Su-Shee joined
Su-Shee hello everyone. 11:39
FROGGS hi
moritz \o FROGGS, Su-Shee
GlitchMr Just wondering, what editors are people on this channel for Perl 6? 11:51
Personally, I use Kate, but I'm wondering what other people use. 11:52
using for Perl 6* 11:54
jnthn GlitchMr: notepad++ here 12:07
Stockholm &
xenoterracide wonders why multi methods are explicit rather than implicit 12:09
12:13 xinming joined 12:17 Moukeddar joined 12:18 bowtie joined 12:27 Kharec joined
moritz xenoterracide: to catch accidental redeclaration of methods 12:27
12:33 zjmarlow__ left 12:36 Psyche^ joined 12:39 Patterner left, Psyche^ is now known as Patterner 12:51 Moukeddar left 13:08 xinming left 13:13 PacoAir joined 13:18 Kharec left 13:19 xinming joined 13:22 whiteknight joined 13:27 _ilbot left, _ilbot joined
tipdbmp How does one check if a file exists? 13:28
13:28 xinming left
moritz r: say 'star/version'.path.e 13:28
p6eval rakudo cecc9f: OUTPUT«True␤»
moritz r: say 'nosuchfile'.path.e 13:29
p6eval rakudo cecc9f: OUTPUT«False␤»
tipdbmp Okay, tnx (vim 7.3 here, with the awesome perl6 syntax highlighting :P [which kinda laggs?])
13:32 imarcusthis left
dalek kudo/qast-sink-1: 5ad032d | moritz++ | src/Perl6/Actions.pm:
first cut at sink context

compiles the setting, but fails during startup
13:36
13:54 SamuraiJack_ joined
nwc10 jnthn: forgot to say. I'd infer Rakudo uses more memory (again) as a couple of days ago the Raspberry Pi took just over 24h to build Rakudo 13:55
anyway, good news
rummaging round Andrea's mum's store of goodies looking for the power supply for an old parallel port scanner, bumped into a(nother) 5V micro USB power supply.
So that now means I no longer have to *return* the phone charger I need to steal to power the external hard drive 13:56
(network swap fails badly. Suspect dodgy USB drivers)
13:57 SamuraiJack left
nwc10 also, curiously t-mobile used micro USB about a decade ago, but then switched *from* it to something custom 13:57
13:59 SamuraiJack_ left
FROGGS nwc10: t-mobile is not a vendor, just a reseller 14:00
14:04 xinming joined
nwc10 aha 14:11
14:29 dayangkun joined 14:30 dayangkun left 14:36 jaldhar left, jaldhar joined 15:04 imarcusthis joined 15:17 Chillance joined
TimToady tipdbmp: maybe you're looking for \h, horizontal whitespace 15:26
n: say 3 ![!==] 3 15:28
p6eval niecza v22-32-gee5dcf1: OUTPUT«True␤»
TimToady the problem with ![!=] in niecza is probably that != is a shorthand for !==
but it's not sufficiently high-order to be used inside somehow
or it just doesn't do the translation at the right spot 15:29
also, it's not that it's confusing !! with the ternary operator, but that there is an explicit rule forbidding !! so that we *can* catch a missing ?? 15:30
15:37 zjmarlow__ joined 15:49 spider-mario left
tipdbmp What are the equivalents for __FILELINE/PACKAGE__? 15:54
15:54 whiteknight left 15:59 skids joined
moritz r: say $?LINE 16:05
p6eval rakudo cecc9f: OUTPUT«1␤»
moritz r: say ::?PACKAGE
p6eval rakudo cecc9f: OUTPUT«GLOBAL()␤»
moritz r: say $?FILE
p6eval rakudo cecc9f: OUTPUT«/tmp/AmekjwEERe␤»
16:07 wamba left
Su-Shee moritz: are you doing a talk in march at the german perl workshop? 16:10
moritz Su-Shee: I haven't submitted one yet 16:12
Su-Shee moritz: will you/are you planning to?
moritz Su-Shee: not sure yet what to talk about 16:13
16:13 SamuraiJack joined
moritz Su-Shee: but it's likely that I'll attend, and at least submit one 16:13
Su-Shee it's a very nice location. ;) 16:14
moritz Su-Shee: and you still owe me a nougat trouffle :-) 16:16
*truffle
Su-Shee moritz: I'm planning to attend, it's basically served to me with a red carpet around the corner where I live, it can't get any more convenient :)
16:17 SamuraiJack left
Su-Shee moritz: if you drop a hint in time, I can deliver ;) 16:17
16:19 SamuraiJack joined 16:23 wamba joined 16:30 bapa left 16:31 ChoHag joined 16:34 bapa joined 16:35 pmurias joined
pmurias hi 16:35
jnthn: what's the difference between orig and target on a cursor?
16:43 raiph joined 16:54 zjmarlow__ left 17:00 wamba left, snearch joined 17:01 snearch left, snearch joined 17:04 snearch left, birdwindupbird left, snearch joined, s1n joined 17:05 hash_table joined 17:06 snearch left 17:07 snearch joined 17:09 snearch left, wamba joined 17:10 snearch joined 17:12 snearch left 17:22 pmurias left
moritz Su-Shee: I will :-) 17:23
17:28 ChoHag left 17:29 ChoHag joined
jnthn evening o/ 17:32
moritz \o jnthn 17:33
I've now decided that for developing sink context, I'll only enable it with a command line option
so that I don't have to debug the sunk-compiled setting first
jnthn phenny: tell pmurias orig is whatever the original input string was; target is it transcoded into something fixed width so we can scan it quickly.
phenny jnthn: I'll pass that on when pmurias is around.
jnthn moritz: Sounds sane. 17:34
nwc10: There's various things that could have made a difference, but it's hard to think of anything that'd make a really huge one. 17:36
17:57 pmurias joined
pmurias jnthn: thanks 18:04
phenny pmurias: 17:33Z <jnthn> tell pmurias orig is whatever the original input string was; target is it transcoded into something fixed width so we can scan it quickly.
pmurias jnthn: I'm implementing rules in js, and I'm not sure how to implement backtracking into rules, in pir there seems to be a stack of labels but I can't implement that in js 18:07
jnthn pmurias: You can do it with an integer and switch statement. 18:08
And just keep a stack of integers. 18:09
(the labels become case statements, and then you just fall through) 18:10
pmurias that would work 18:11
dalek kudo/qast-sink-1: 3f12074 | moritz++ | src/ (3 files):
only sink when --sink command line option is provided
18:16
pmurias viv works by having rules return lists of cursors? 18:18
jnthn Lazy lists. 18:19
In NQP, it always returns a cursor, which keeps around enough to know how to produce the next cursor if backtracking happens. 18:20
pmurias and how does niecza do it? 18:21
jnthn Not sure
18:28 jaldhar left, jaldhar joined
jnthn time to find some dinner & 18:31
pmurias what is cstack?
moritz pmurias: capture stack
pmurias: it somehow[tm] tracks where each capture begins and ends 18:32
jnthn actually, c can also stand for cursor. it's cursors that live on it :)
and the cursors know where the match started/ended. :)
really ogne & :) 18:33
18:50 spider-mario joined 18:52 zjmarlow__ joined 19:22 imarcusthis left 19:24 imarcusthis joined 19:36 imarcusthis left 19:42 imarcusthis joined
tadzik oh hai 19:47
moritz oh tadzik 19:48
tadzik oh shark
19:50 colomon_ joined, colomon left, colomon_ is now known as colomon 19:51 colomon_ joined, colomon left, colomon_ is now known as colomon 19:52 colomon_ joined, colomon left, colomon_ is now known as colomon 19:53 colomon_ joined, colomon left 19:54 colomon_ is now known as colomon, rurban_ joined
rurban_ we got a little problem with parrot threads and empty parents in Parrot_interp_new() #856 19:55
19:56 thou joined
rurban_ I've "fixed" parrot threads now for github.com/parrot/parrot/issues/856 on darwin. But we need to disallow subsequent empty parents for Parrot_interp_new(). Is this a problem? The workaround is to create a master interp and the childs have this as parent. 19:57
diakopter why? (curious) 20:06
20:12 GlitchMr left 20:16 zjmarlow__ left, GlitchMr joined
dalek ast: 60042a9 | moritz++ | S03-metaops/zip.t:
RT #73948: Z, flattens in list context
20:22
sorear good * #perl6
moritz good morning sorear
jnthn back 20:24
o/ sorear
mathw \o/ wonderful people hello \o/ 20:25
tadzik hello hello :)
moritz btw basic sinking works now
jnthn rurban_: I don't think we call that anywhere directly in NQP or Rakudo...unless you know otherwise. :)
moritz: yay!
moritz: Does it still bust setting compilation? 20:26
moritz note that I only sink subcalls and method calls for now
jnthn: yes
jnthn Any clues why?
rurban_ jnthn: I just committed a better fix. No API changes needed. I just clarified a corner case with empty parents.
jnthn is a bit surprised it does so, having looked at the patch. 20:27
moritz gist.github.com/4107222
jnthn: last I looked, it died during startup while concatenating some paths 20:28
seems one of them was a Failure
jnthn Oh..
sorear mathw: \o/ its been a while 20:29
mathw sorear: busy busy busy!
sorear btw, does anyone remember TimTom?
jnthn Maybe it is actually a case of something putting a Failure in sink context (e.g. the bug is a bad assumption in the setting)
moritz jnthn: yes, maybe
rurban_ darwin: libtool -static -o libdyncall_s.a dyncall_vector.o dyncall_api.o dyncall_callvm.o dyncall_callvm_base.o dyncall_struct.o dyncall_callf.o dyncall_call.o. libtool: unrecognized option `-static'
geekosaur "darwin"? OS X? 20:31
moritz std: 42 20:32
p6eval std d38bbd0: OUTPUT«ok 00:00 41m␤»
mathw Is anybody aware of any XML parsing work in Perl 6?
rurban_ ar -r works fine
20:33 brrt1 joined
moritz jnthn: what do you think of extending the QAST::Want mechanism to closures, so that you do something like QAST::Want.new(QAST::IVal.new(:value(42)), 'v', sub { warn "Useless use of Int 42 in sink context" }) ? 20:33
jnthn moritz: Doesn't sound too crazy. 20:34
moritz: Question is what it evaluates to... 20:35
mathw notes: look first, THEN ask
jnthn As in, does it in this case just emit nothing?
Guess it could...
mathw: Maybe look on modules.perl6.org :P 20:36
mathw jnthn: yeah I'm not moving at top speed this evening...
moritz jnthn: well, if the closure returned a QAST::Node, it could be used, otherwise nothing is emitted
jnthn moritz: wfm
tadzik mathw: yeah, I've heard of like 2 implementations 20:37
mathw it was inevitable somebody would do it
moritz $ ./perl6 -e ''
===SORRY!===
postcircumfix:<{ }> not defined for type Failure
mathw I'm just very glad that if I want to try what I want to try I don't have to write an XML parser first
'write an XML parser' is pretty far down my List Of Fun Things To Do With Perl 6
tadzik mathw: feather.perl6.nl/~sergot/modules/ shows test results next to names :)
may be of help
moritz my $prefix := $VM<config><libdir> ~ $VM<config><versiondir> ~ '/languages/perl6'; 20:38
that's the line that dies
r: say $*VM<config>
p6eval rakudo cecc9f: OUTPUT«("git_describe" => "RELEASE_4_8_0", "sha1" => "7847e55203a7e06a54dc146fed5590751869ff05", "a" => ".a", "ar" => "ar", "ar_extra" => "", "ar_out" => "", "archname" => "i486-linux-gnu-thread-multi-64int", "arflags" => "cr", "as" => "as", "backtrace" => "1", "bigendian…
jnthn r: say $*VM<config><libdir>.WHAT 20:40
p6eval rakudo cecc9f: OUTPUT«Str()␤»
jnthn r: say $*VM<config><versiondir>.WHAT
p6eval rakudo cecc9f: OUTPUT«Str()␤»
jnthn moritz: Wait, why $VM not $*VM?
moritz it complains about postcircumfix:<{ }>
jnthn: it's the place where $*VM is installed 20:41
jnthn ah, ok
moritz jnthn: and there it's also available as $VM
jnthn --ll-exception?
moritz that's where I got the line from :-)
jnthn r: Failure.sink
p6eval rakudo cecc9f: OUTPUT«Cannot look up attributes in a type object␤ in method <anon> at src/gen/CORE.setting:10154␤ in at src/gen/Metamodel.pm:2401␤ in any find_method_fallback at src/gen/Metamodel.pm:2389␤ in any find_method at src/gen/Metamodel.pm:925␤ in block at /tmp/zMp2OuZ32w…
jnthn Failure.new.sink 20:42
r: Failure.new.sink
p6eval rakudo cecc9f: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method new at src/gen/CORE.setting:10126␤ in block at /tmp/NV9fvtps0q:1␤␤»
jnthn r: Failure.new("oh noes").sink
p6eval rakudo cecc9f: OUTPUT«No such method 'throw' for invocant of type 'Str'␤ in method <anon> at src/gen/CORE.setting:10154␤ in at src/gen/Metamodel.pm:2401␤ in any find_method_fallback at src/gen/Metamodel.pm:2389␤ in any find_method at src/gen/Metamodel.pm:925␤ in block at /tmp/yqh…
jnthn bah :)
moritz r: sub f() { fail('foo') }; f().sink
p6eval rakudo cecc9f: OUTPUT«foo␤ in method <anon> at src/gen/CORE.setting:10154␤ in at src/gen/Metamodel.pm:2401␤ in any find_method_fallback at src/gen/Metamodel.pm:2389␤ in any find_method at src/gen/Metamodel.pm:925␤ in block at /tmp/liw_tfK1n6:1␤␤»
moritz r: say Failure.^methods(:local) 20:44
p6eval rakudo cecc9f: OUTPUT«new BUILD defined Int Num Numeric Bool Str gist <anon>␤»
moritz no sink yet; it triggers the exception through the fallback method
jnthn ah, ok 20:45
Thing is...the line we're looking at does a bind, not a call
Unless the issue is with setting $VM somehow 20:46
moritz it does lots of calls
two to infix:<~>
several to postcircumfix:<{ }>
jnthn Yes but the statement itself isn't a call?
moritz no, it's not
jnthn oh, we're just transforming all calls... 20:47
But yeah, that still should certainly not come out vid.
*void
moritz (I sink calls at the QAST level)
well, now I'm trying to get more debug info out of it
jnthn Try doing a say $VM.WHAT before that line. 20:48
Or a $VM.perl
moritz $VM: Block.new() 20:55
20:55 armitage81 joined
jnthn hm, so something broke the hash/block distinction 20:56
20:57 SamuraiJack left 21:02 armitage81 left, GlitchMr left 21:09 rurban_ left
moritz jnthn: does that use the $past<bare_block> mechanism? 21:15
cotto gcc 4.7.2 doesn't seem to like variables named "typeid", which breaks nqp 21:16
21:16 zby_home_ left
xenoterracide can I mix in roles at new? 21:17
moritz cotto: does it dislike type_id too?
jnthn moritz: Hm, perhaps. I'm pretty sure it looks at calls to infix:<,> and maybe infix:<=>>
moritz: If the calls are getting wrapped, perhaps it's that.
cotto moritz, checking 21:18
moritz jnthn: right
jnthn cotto: meh /
:/
cotto moritz, it seems happy with type_id
moritz then it's an easy fix
seems to be just one place
jnthn sigils++ # avoid this problem
cotto It also requires either -fpermissive or some void* casts.
jnthn requires? 21:19
Or just warns without?
cotto explodes without
jnthn Where, ooc?
cotto VTABLE_set_pointer in nqp_dynop_setup 21:20
moritz jnthn: in fact it checks elements under $past<past_block> 21:21
jnthn moritz: Yeah, but that should be fine?
I think that's happening is it looks at the top level call
And now that top level call is wrapped
In a QAST::Want
cotto a couple places in repr_registry.c (177, 209)
moritz not if $past is now a QAST::Want
or does QAST::Want forward that stuff? 21:22
jnthn No
moritz should it, maybe?
jnthn But...I thought we just wrapped stuff at the top of the statement list?
moritz right
jnthn my $elem := $past<past_block>[1][0][0]; 21:24
This looks into the second node of the block, gets the first (and only) statement, and then tries to take it out of the QAST::Stmt node 21:25
Now there's a QAST::Want in the way as well.
moritz $elem := $elem[0] if $elem ~~ QAST::Want
jnthn Riht.
*right
FROGGS +
21:25 rurban_ joined
moritz FROGGS: right :-) 21:26
moritz tries
21:30 Kharec joined, kaare_ left
moritz yay, unbroken \o/ 21:33
dalek kudo/qast-sink-1: 5574863 | moritz++ | src/core/Failure.pm:
Failure.sink makes the exception blow up
21:34
kudo/qast-sink-1: 3ee7808 | moritz++ | src/ (2 files):
unbreak Hash/Block distinction
jnthn \o/ 21:37
Now for the spectest ;)
moritz I'm building on my quadcore server now
to spectest there 21:38
jnthn :)
moritz and I've locally reverted 3f12074d13a51b2602039ece5f95454055e8abd0 first
so that it sinks by default
jnthn Wow, having sink context in this next relesae too would be awesome :)
moritz hm, four days until the compiler release 21:39
not unthinkable, but not a give either
*given
jnthn aye 21:43
21:43 brrt joined
moritz and I don't know how easy or hard it will be to write a proper List.sink that does more than .eager 21:43
21:44 brrt1 left
jnthn moritz: I guess mostly it's not keeping the results of the block around. 21:45
brrt r: my %hash = (foo => 'bar', quix => 'quam); say %hash.perl
p6eval rakudo cecc9f: OUTPUT«===SORRY!===␤Unable to parse expression in quote:sym<apos>; couldn't find final "'" at line 2, near ""␤»
moritz though as a first step, forwarding .sink to .eager might not be too bada first approximation 21:46
brrt: missing closing quote after 'quam
brrt my %hash = (foo => 'bar', quix => 'quam'); say %hash.perl;
thanks moritz :-)
r:my %hash = (foo => 'bar', quix => 'quam'); say %hash.perl;
r: my %hash = (foo => 'bar', quix => 'quam'); say %hash.perl; 21:47
p6eval rakudo cecc9f: OUTPUT«("foo" => "bar", "quix" => "quam").hash␤»
brrt is a parcel or a closure the prefered way to make a hash?
moritz it seems sinking breaks autothreading right now
brrt: use () for a flattening hash and {} for a hash in an item 21:48
brrt right, flattening, i forgot :-) 21:49
moritz or at least some autothreading tests
21:50 rindolf left
moritz anyway, sleep& 21:51
jnthn 'night 21:54
22:10 Pleiades` left 22:14 spider-mario left 22:16 Pleiades` joined
xenoterracide privatepaste.com/3faa6928f5 seems that whatever arch rebuilt parrot for broke the ability to build rakudo... 22:18
I guess I should try a few other things
lue just out of curiosity, where did you run that build command? 22:19
22:20 zjmarlow__ joined, PacoAir left 22:21 qu1j0t3 joined
qu1j0t3 hey, what's the impl language for perl6 these days? 22:23
is hugs still used much?
i mean the compiler
p6 compiler(s)* 22:24
masak qu1j0t3: Niecza is implemented in C# and Perl 6 on the CLR.
jnthn Rakudo is largely written in Perl 6 and NQP, plus some C low level bits.
Nie...ah, masak got their first.
(NQP being a Perl 6 subset)
xenoterracide lue: my home directory
qu1j0t3 masak: jnthn thanks.
masak qu1j0t3: given your question, I'm gussing you last paid attention to Perl 6 around 2005-2006 ;) 22:25
qu1j0t3 so Hugs is kind of out of the picture? it's /that/ long ago that I lurked here.
masak: well deduced, sir.
jnthn (and nqp is written in itself and bootstrapped these days)
lue Ah. I was thinking maybe it was some weirdness with running inside the git repo.
masak qu1j0t3: you might be thinking of Pugs, Perl 6 implemented on top of Haskell.
pugs: say "still alive!"
p6eval pugs: OUTPUT«still alive!␤»
lue (specifically, rakudo's)
qu1j0t3 yes, Pugs.
Pugs ran in Hugs, right?
sorear pugs these days runs on GHC 22:26
masak it has a REPL looking very much like Hugs's.
qu1j0t3 sorear: ah! thanks.
how current is pugs?
sorear pugs has been mostly unmaintained for a couple years
masak well, it's been maintained in an amortizing kind of way, keeping it up-to-date with the latest GHCs. 22:27
oh wait, that's the opposite of amortizing, isn't it? :) 22:28
sorear I do not think I have heard amortizing used that way before
masak au++'s been paing the GHC rent on it but not implementing new stuff, nor tracking the Perl 6 spec as it changed.
paying*
sorear Audrey is in any case not been much involed in pugs lately
22:29 Moukeddar joined
sorear that was almost grammatical 22:29
jnthn
.oO( a-mort-izing: non-death-maintaining )
xenoterracide attempts a nom/gen-nqp to see if it's been fixed more recnetly
sorear Moukeddar! \o/
Moukeddar o/ sorear
masak jnthn: actually, the etymology has to do with "mort"="death"
jnthn Oh!
masak Moukeddar! \o/
Moukeddar i just funished implementing a simple messaging Bus :)
masak, o/ , Ma man! 22:30
jnthn I thought I was punning, but no, etymology got their first.. :P
*there...wow.
masak .oO( etymology also got they're first )
jnthn I guess I should sleep given I'm meant to teach in the morning. :)
'night, #perl6
masak 'night, jnthn.
Moukeddar night jnthn
sorear jnthn means to teach in the morning? 22:31
this may prove a useful verb 22:32
lue xenoterracide: I just tried compiling rakudo-debugger, and it worked. (With non-gen'd nqp and parrot). The only differences I notice is that 1) I seem to be using the rakudo, etc. from /usr/local/bin, and 2) I compiled straight from the repo, and I don't think you did, judging from the paste.
Moukeddar did i log into the wrong room ? Etymology ?
qu1j0t3 sorear: certainly vowel-conserving.
Moukeddar: i'd have thought that literary digressions were assured with TimToady around. 22:33
masak Moukeddar: we're all a bit interested in languages here.
'night, #perl6
qu1j0t3 linguistic*
masak: ciao. thanks.
xenoterracide lue:I'm building from repo now, but I was building from the AUR pkgbuilds, arch maintains parrot, but I think they may have broken something today
Moukeddar welln #perl6 just keeps amazing me ^_^ 22:34
xenoterracide or this has to do with what was being talked about earlier
sorear keeps confusing AUR with AUD
lue Ah. Well, I use gentoo, but the rakudo toolchain is one of the couple of things I keep updated myself :) (along with lilypond and the latest LLVM) 22:35
xenoterracide tries --gen-parrot too
I abandoned gentoo ages ago, but the OS isn't really here nor there, if doing --gen-parrot works then I'll probably have to figure out what changed when they rebuilt parrot 22:38
22:44 brrt left 22:45 Moukeddar left 22:50 whiteknight joined 22:56 rurban_ left 23:10 MayDaniel left 23:17 pmurias left 23:20 zjmarlow__ left