»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
lizmat more like sleepcrawling :-) 00:00
timotimo :)
00:01 telex left 00:02 telex joined, ajr_ left 00:03 rurban1 left 00:04 dmol left
timotimo oh damn, i didn't map it properly :( 00:04
00:07 jeffreykegler joined
timotimo ah, i found where i had missed the mapping, in nqp itself! 00:08
00:10 benabik joined, benabik left 00:17 lizmat_ joined, lizmat left 00:18 mtj_ joined 00:24 jeffreykegler left 00:26 adu joined 00:40 Mouq joined 00:42 jnap left 00:46 dayangkun_ joined, dayangkun_ left 00:47 lowpro30_ joined 00:50 lowpro30 left, dayangkun left 00:51 prevost left 01:00 lowpro30_ left 01:10 tgt left 01:13 jnap joined 01:14 raiph left 01:15 Ben_Goldberg joined 01:16 BenGoldberg left 01:18 jnap left 01:20 Ben_Goldberg left 01:21 BenGoldberg joined, kurahaupo_ left 01:30 raiph joined 01:33 adu left 01:40 BenGoldberg left 01:43 jnap joined 01:44 dalek left, dalek joined, ChanServ sets mode: +v dalek 01:45 BenGoldberg joined 01:47 adu joined 01:55 raiph left 02:15 btyler left
colomon building latest rakudo gives me a broken executable. :( 02:34
Missing or wrong version of dependency 'gen/parrot/stage2/QRegex.nqp' 02:35
current instr.: '' pc 952 (src/gen/perl6.pir:336) (gen/parrot/main.nqp:58)
02:47 thou left 03:23 jnap left 03:31 Mouq left
colomon complete rebuild fixed it. 03:31
03:33 cem_ joined 03:36 cem_ left 03:50 berekuk left 03:51 dwoldrich joined, adu left 03:53 btyler joined 04:02 rurban1 joined 04:06 adu joined 04:09 ssutch left 04:13 jnap joined 04:14 dwoldrich left 04:17 rurban1 left 04:18 jnap left 04:27 benabik joined 04:28 Mouq joined 04:35 btyler left 05:00 preflex_ joined, ChanServ sets mode: +v preflex_ 05:01 xenoterracide left, preflex left, preflex_ is now known as preflex 05:06 dwoldrich joined 05:08 dayangkun joined 05:19 fridim__ left 05:20 PacoAir left 05:25 [Sno] left
segomos where is moarvm these days? 05:29
05:33 kurahaupo joined 05:34 kurahaupo left 05:50 adu left 05:55 SamuraiJack__ joined 05:57 xinming left 05:58 xinming joined 06:07 sqirrel joined 06:08 BenGoldberg left
FROGGS segomos: pretty good on its way actually 06:10
segomos: when building rakudo it passes stage parse but explodes in the optimizer due to NYI ops 06:11
06:15 sftp joined, jnap joined 06:17 benabik left 06:19 jnap left 06:22 SmokeMachine joined 06:25 sqirrel left 06:40 PacoAir joined 06:41 [Sno] joined 06:46 Mouq left 07:02 xinming_ joined 07:03 kaleem joined, xinming left 07:14 darutoko joined 07:21 dmol joined 07:22 raiph joined 07:24 benabik joined, FROGGS left 07:25 bonsaikitten joined 07:46 REPLeffect joined
jnthn yawns 07:50
07:55 FROGGS joined
FROGGS jnthn: what do you yawn for? :o) 07:55
good morning all
moritz \o 07:56
jnthn FROGGS: 'cus it's morning
FROGGS ahh, I forgot :P
hi moritz
jnthn oh, THAT's why the 30 min walk to teaching felt chilly... 07:57
it's -6
FROGGS nice
jnthn yes, though probably hat and gloves woulda been wise :) 07:58
FROGGS -3 here
moritz FROGGS: I've given you a rakudo.org account
jnthn ok, gotta teach; bbl
FROGGS ohh
jnthn: have fun
moritz: so I'd be able to fix the guide?
moritz anybody else need one? (like, for publishing release announcements or fixing docs on rakudo.org)?
FROGGS: I dearly hope so :-)
08:01 hummeleB1 joined 08:14 zakharyas joined, nnunley left 08:15 yves_ joined 08:17 jnap joined 08:22 jnap left 08:39 chturne left 08:46 raiph left 08:47 ssutch joined, ssutch left 08:52 kurahaupo_ joined
timotimo o/ 08:59
masak good antenoon, #perl6 09:00
FROGGS[mobile] morning 09:01
masak good mobile morning to you, FROGGS. 09:02
timotimo maybe i'll have a closer look at newexception on moarvm today
skipping the optimizer gives clearer instructions on what's next.
masak nice.
timotimo though newexception being needed could hint at "something in the logic is going wrong, such that it wants to throw an exception"
masak if I have time today, I will do either t4 reviewing, or start looking at the event framework needed to get Nomic off the ground.
timotimo which could be benign, like a missing op causing not an ad-hoc exception, but a "real" exception this time
cool :) 09:03
and i'll go pick up my in-ear headphones
i'm fed up with those hand-me-down ipod earplugs that keep falling out of my left ear every minute >_<
09:04 dmol left 09:18 denis_boyun joined
jnthn timotimo: I expect somewhere uses nqp::newexception 09:20
09:23 xinming_ left, xinming joined 09:27 denis_boyun left 09:29 MikeFair left 09:36 MikeFair_ joined 09:37 kurahaupo_ left, benabik left 09:38 denis_boyun joined, benabik joined
timotimo jnthn: i expect that, too. the question is, is it an exception that points to a bigger problem than just ops missing, like some op misbehaving or even worse, or if it's totally benign ;) 09:39
i guess i'll only find out once i implement it.
09:41 dakkar joined, kurahaupo joined 09:43 benabik left 09:46 denis_boyun left
jnthn timotimo: What was the exact error? 09:47
timotimo Error while compiling op newexception: MoarVM op 'newexception' is unknown as a core or extension op 09:49
at gen/moar/stage2/QAST.nqp:4105 (/home/timo/build/rakudo/install/languages/nqp/lib/QAST.moarvm:frame_name_1131:21)
from gen/moar/stage2/QAST.nqp:4103 (/home/timo/build/rakudo/install/languages/nqp/lib/QAST.moarvm:as_mast:70)
jnthn Yeah, don't think it's trying to throw, just compile an nqp::newexception 09:50
timotimo ah, sounds good
now i'll just have to figure out how to work the hllconfig of moar
is there another op that demonstrates?
09:52 kurahaupo left 09:53 MikeFair_ left
jnthn hllboxtype maybe 09:53
uh...or something like that
of hllize
timotimo thanks :) 09:55
would the op go in core/exception.c?
09:59 eiro left 10:01 kurahaupo joined 10:04 dmol joined 10:07 pecastro left, dmol left 10:08 pecastro joined, dmol joined 10:09 denis_boyun joined
arnsholt Do we have any tests, either in NQP or Rakudo, that exercise sockets? 10:13
10:13 dmol left
timotimo there's a test in rakudo, aye 10:14
FROGGS arnsholt: S32-IO_Socket-INET.t?
timotimo it is usually the test that takes the longest :|
10:14 daxim left
FROGGS preflex: tell ajr_ it works on my box: gist.github.com/FROGGS/7582ad250ea...l-txt-L349 10:15
preflex Consider it noted.
10:15 dmol joined
FROGGS jnthn: btw, you can merge cursor-mem-opts into master 10:16
10:18 jnap joined, dmol left 10:19 dmol joined, kurahaupo left 10:20 kurahaupo joined
timotimo i don't really understand how the concepts i see in the jvm implementation of newexception map to moarvm 10:22
but if it calls newexception, it probably also directly calls setpayload and setmessage and friends
10:23 jnap left
timotimo huh, the line in question just calls "die" 10:24
10:24 dmol left
timotimo shouldn't that work already? 10:24
oh, haha
that part does work
10:24 dmol joined
FROGGS maybe it happens when creating the X::AdHoc? 10:25
timotimo no, nqp::die works. it's just dieing with the message "unable to compile op 'newexception'" 10:26
10:26 kurahaupo left 10:27 kurahaupo joined 10:28 daxim joined 10:29 odoacre joined, denis_boyun left 10:35 dmol left 10:36 kurahaupo left, kurahaupo joined
hoelzro morning #perl6 10:37
10:37 dmol joined
hoelzro I'm looking over jnthn.net/papers/2013-npw-conc.pdf 10:37
and trying to understand slide 25
(nth_or_timeout 4)
timotimo i can help with that
hoelzro I understand the bit about checking the timeout promise in the for loop
but after the check, I see $result = @source[$n] 10:38
and that line confuses me
timotimo ah, easy enough
hoelzro wouldn't that just fetch @source[$n] $n times?
timotimo @source is supposed to be a lazy evaluated list that does some computation each time you get a new item
hoelzro is it supposed to be @source[$_]?
timotimo oh, hah
10:38 kurahaupo left
timotimo yeah, you're right 10:38
10:38 kurahaupo_ joined
hoelzro ok, I thought I was missing something! 10:39
10:45 denisboyun joined 10:46 kurahaupo_ left 10:47 kurahaupo joined 10:48 dmol left 10:50 dmol joined 10:51 tgt joined, kurahaupo left 10:58 denisboyun left, dmol left 11:00 dmol joined
jnthn FROGGS: You can merge cursor-mem-opts into master too :P 11:01
FROGGS jnthn: yes, now I can :o)
jnthn ;) 11:02
dalek p: 3b28064 | jonathan++ | src/QRegex/ (2 files):
Be more eager to throw out things we'll not need.

This saves memory and eases the GC's role, especially as we keep hold of a lot less call frames.
p: ef756d4 | (Tobias Leich)++ | src/QRegex/ (2 files):
Merge branch 'cursor-mem-opts' of github.com:perl6/nqp
FROGGS - [deleted] cursor-mem-opts 11:04
11:04 dmol left 11:07 denisboyun joined, dmol joined 11:16 eiro joined
masak perl6: label1: say "OH HAI"; label1: say "OH NOES" 11:40
camelia rakudo-parrot 60c8c1, rakudo-jvm 60c8c1: OUTPUT«OH HAI␤OH NOES␤»
..niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Illegal redeclaration of symbol 'label1' (see line 1) at /tmp/jjMkfXZYjO line 1:␤------> label1: say "OH HAI"; label1: ⏏say "OH NOES"␤␤Unhandled exception: Check failed␤␤ at /home/p6ev…»
masak submits rakudobug 11:41
FROGGS masak: I've fixed that in nqp in my branch fwiw
masak what a wonderful coincidence.
it's been too long since I submitted a good rakudobug. 11:42
you guys need to put more bugs in the code so I can submit them! :P
FROGGS :(
there are too many open bugs
masak s/guys/guys, gals, and bots/
11:42 denisboyun left
FROGGS I'll introduce some when we have less then a hundred :o) 11:42
11:42 denis_boyun joined
masak deal. 11:43
I wonder when we last had less than a hundred... 11:44
sometime in 2008, I bet.
11:49 rindolf joined
moritz in the days before the masak 11:50
11:52 carlin joined
carlin hi all, I've been out of the perl6 loop for a while... is rakudo on parrot still the way to go? 11:54
moritz carlin: depends on what you want to do :-)
carlin: rakudo-parrot still has the best module support, but rakudo-jvm now does proper threads and async stuff 11:55
the patch in RT 120630 has this hunk 11:56
-p-runner-default-install: p-all
+p-runner-default-install: p-all | $(DESTDIR)$(PARROT_BIN_DIR)
what does the | mean, and do non-gnu makes understand it?
carlin I guess I'll go with parrot for now since it's what I was familar with 11:57
moritz carlin: the good news is, you can now build rakudo-parrot and rakudo-jvm from the same source dir, and install them alongside 11:58
perl Configure.pl --backends=parrot,jvm --gen-parrot 11:59
timotimo that's for nqp, though, right? or do you not have to --gen-nqp for that?
moritz that's for rakudo 12:01
and gen-parrot implies gen-nqp
timotimo that's good
arnsholt moritz: | DEPS just makes sure that the DEPS exist, it doesn't check timestamps 12:07
Useful for creating directories and such 12:08
Probably a GNU extension
timotimo does gdb offer something like time travel? regular checkpoints? so we could see what the last ops were that were called? 12:09
moritz I wonder if we shouldn't just always create the directory in that target, and be done
arnsholt timotimo: The GDB term for it is reverse debugging 12:11
It's supported, but logging all the required information takes up quite a bit of memory, so I doubt you'll be able to use it on a setting compilation
I had trouble using it on anything with Rakudo/Parrot 12:12
timotimo mhm
can it selectively be activated late-ish?
arnsholt Not sure 12:13
But you can walk the stack in GDB
That can often help
timotimo i know about that part
arnsholt Sometimes knowing where the NULL pointer originates is an important clue
12:29 geekosaur joined 12:32 dylanwh joined 12:35 jercos joined
timotimo the advent calendar is going to start real soon 12:43
moritz \o/
I could do the "State of Perl 6" post, or claim Dec 02 with a to-be-determined topic 12:44
what do you folks prefer?
tadzik I think you're the right person to do the State of Perl 6 :) 12:45
moritz thanks :-) 12:46
12:46 atroxaper joined
dalek : fe6fa2f | moritz++ | misc/perl6advent-2013/schedule:
[advent] claim Dec 01, SoP6
12:46
timotimo already wrote 0 bytes on my experiences of contributing during the first year 12:48
moritz timotimo: then I recommend exponential progression :-) 12:51
diakopter timotimo: better than 10000000000000000000000000000000000 bytes, I guess
or negative byts.
timotimo :)
diakopter timotimo++ # moar progression 12:52
timotimo (by a tiny bit)
i don't see what i have to do to make newexception and friends work
13:10 cognominal__ left, cognominal__ joined 13:12 jnap joined 13:22 kaleem left
dalek ecs: 0f9df8a | (Elizabeth Mattijsen)++ | S32-setting-library/Containers.pod:
Change the listless map into a Whatever map
13:23
13:27 ajr joined 13:28 ajr is now known as Guest16419, Guest16419 is now known as ajr_
dalek kudo/nom: b4cd1da | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Transmogrify listless map into Whatever map
13:32
moritz lizmat++ # epic commit messages 13:34
13:35 lizmat_ is now known as lizmat, jnap left 13:39 denis_boyun left 13:41 cognominal joined 13:44 cognominal__ left 13:46 araujo left 13:47 araujo joined 13:49 kaare_ joined
dalek kudo/nom: e5fd34e | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Channel.pm:
Channel.list now uses Whatever map
13:59
14:05 berekuk joined
masak +1 # moritz++ doing "State of Perl 6" 14:08
colomon +1 indeed 14:23
arnsholt Does anyone happen to know about how frequently donaldh stops by here? 14:29
lizmat preflex: seen donaldh 14:33
preflex donaldh was last seen on #perl6 28 days, 2 hours, 23 minutes and 17 seconds ago, saying: does anyone know a FAX number for TPF ?
atroxaper What is the magic eval slurp($file.path) ~ "\n\$=pod"; ? What is $=pod mean and how does it work? 14:34
arnsholt Not very often then. In that case I'll try to decipher his readline code 14:35
masak hehe, Crockford in www.youtube.com/watch?v=QgwSUtYSUqA demos "loop { ... }", and says it's a pity JavaScript doesn't have it. :) 14:39
(he doesn't mention Perl 6 by name, but I haven't seen "loop { ... }" in any other language, I think)
moritz atroxaper: slurp() just reads the whole file 14:40
atroxaper: and ~ "\n\$=pod" appends a newline, and then the string $=pod
atroxaper: and $=pod contains a data structure with the whole pod of this compilation unit
Woodi hallo :) 14:42
masak Woodi! \o/
lizmat masak: FWIW, "loop" was in TenCORE, afair 14:43
atroxaper moritz: thanks. I didn't know that $=pod can help eval to parse pod file. Are there another methods for making pod structure from file or is it good one? 14:44
Woodi I wonder do Perl6 want to include "suspend to disk" feature.. something like Smalltalk: en.wikipedia.org/wiki/Smalltalk#Im...ersistence 14:45
moritz atroxaper: I didn't find a better way, which is why I wrote the line you quoted above 14:46
atroxaper: I don't find it very nice though
14:47 bluescreen10 joined
atroxaper moritz: ok. Just to know. 14:48
Woodi and btw. can we have something like: class Object is frankenstained with Thread { ... } # :)
14:50 jnap joined, denis_boyun joined
FROGGS Woodi: everything you put in a BEGIN block is "suspended to disk" 14:50
Woodi I assume we can have thousands and thousands of VM threads like in Erlang or Go... 14:51
FROGGS: precompiled ? right :)
FROGGS Woodi: only when you compile it, correct 14:52
Woodi but seems nice to have feature like: kill -SIGSUSPENS perl6prog 14:54
14:55 denis_boyun left, fridim__ joined 14:57 rurban1 joined 14:59 dwoldrich left
Woodi "=date col1 col2 col3" ~~ m/^ '=date' [\s(\S+)]+/; say @$/.join(':'); 14:59
r: "=date col1 col2 col3" ~~ m/^ '=date' [\s(\S+)]+/; say @$/.join(':');
camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«col1:col2:col3␤»
Woodi it works this way but can someone help me with grammar for that line format ? especially how to say @$result from grammar... 15:01
I have something like this: pastebin.com/Dw6R7NuB 15:02
moritz rule colname { $<colname>=(\S+) } 15:03
you can just write token colname { \S+ }
and the mere fact that you call it as <colname> generates a named capture alreay
15:03 benabik joined
FROGGS rp: "=date col1 col2 col3" ~~ m:s/^ '=date' (\S+)+ % \s /; say @$/.join(':'); 15:04
camelia rakudo-parrot e5fd34: OUTPUT«col1:col2:col3␤»
Woodi ok, I will try this
FROGGS rp: grammar Header { rule TOP { '=data ' <cs> $ }; rule cs { <cn>+ % \s }; rule colname { \S+ } }; say Header.parse("=date col1 col2 col3") 15:06
camelia rakudo-parrot e5fd34: OUTPUT«#<failed match>␤»
FROGGS :( 15:07
rp: grammar Header { rule TOP { '=data ' <cs> $ }; rule cs { <cn>+ % \s }; rule cn { \S+ } }; say Header.parse("=date col1 col2 col3")
camelia rakudo-parrot e5fd34: OUTPUT«#<failed match>␤»
FROGGS rp: grammar Header { rule TOP { '=data ' <cs> $ }; token cs { <cn>+ % \s }; rule cn { \S+ } }; say Header.parse("=date col1 col2 col3") 15:08
camelia rakudo-parrot e5fd34: OUTPUT«#<failed match>␤»
FROGGS arrgg! 15:09
rp: grammar Header { rule TOP { '=data ' <cs> $ }; rule cs { <cn>+ % \s }; rule cn { \S+ } }; say Header.parse("=data col1 col2 col3")
camelia rakudo-parrot e5fd34: OUTPUT«#<failed match>␤»
FROGGS rp: grammar Header { rule TOP { '=data ' <cs> }; rule cs { <cn>+ % \s }; rule cn { \S+ } }; say Header.parse("=data col1 col2 col3") 15:10
camelia rakudo-parrot e5fd34: OUTPUT«「=data col1 」␤ cs => 「col1 」␤ cn => 「col1 」␤␤»
FROGGS rp: grammar Header { rule TOP { '=data ' <cs> }; token cs { <cn>+ % \s }; token cn { \S+ } }; say Header.parse("=data col1 col2 col3")
camelia rakudo-parrot e5fd34: OUTPUT«「=data col1 col2 col3」␤ cs => 「col1 col2 col3」␤ cn => 「col1」␤ cn => 「col2」␤ cn => 「col3」␤␤»
FROGGS rp: grammar Header { rule TOP { '=data ' <cs> $ }; token cs { <cn>+ % \s }; token cn { \S+ } }; say Header.parse("=data col1 col2 col3") 15:11
camelia rakudo-parrot e5fd34: OUTPUT«「=data col1 col2 col3」␤ cs => 「col1 col2 col3」␤ cn => 「col1」␤ cn => 「col2」␤ cn => 「col3」␤␤»
FROGGS good, so I am not stupid :o)
sorry for the spam
Woodi about frankenstaining objects :) : everyone is looking for composability in general case, for N threads, etc... I think we should start with 2 or 3 threads sharing memory/work. Boss is delegating work and shares documents with few assistants... Then we should make TEAM of objects/threads sharing data and threads outside of team should lock/be messaged...
thank you FROGGS, now I have my problem resolved :) 15:12
FROGGS Woodi: yw, now you have to pick an RT ticket instead :P 15:13
15:13 berekuk left
FROGGS btw, the problem was the the *rule* cn eats up whitespace 15:14
where a token does not
Woodi becouse our programs emulate humanity :) human read book, human slurp coffe, human smokes... but computers (with many cores) are not humans, they are more like ZOO animals: they are all spawned at program start... 15:15
15:15 kaleem joined
Woodi EOSCIFI :), thinking on, dreaming off :) 15:15
what % in <cn>+ % \s means ? 15:17
15:18 thou joined
FROGGS look a the symbol % 15:18
it is a thing, divided by another thing 15:19
so it is: <cn> split by \s
Woodi Perl6 grammar have split build in ? :)
FROGGS and the + is just a quantifier like in other positions too 15:20
15:20 atroxaper left
FROGGS no, it is just about token repetition with a thing in between 15:20
15:20 btyler joined 15:21 atroxaper joined
FROGGS rp: say "ababa" ~~ / a+ % b / 15:21
camelia rakudo-parrot e5fd34: OUTPUT«「ababa」␤␤»
FROGGS rp: say "ababa" ~~ / $<thing>=a+ % $<divider>=b /
camelia rakudo-parrot e5fd34: OUTPUT«「ababa」␤ thing => 「ababa」␤ divider => 「b」␤ divider => 「b」␤␤»
FROGGS rp: say "ababa" ~~ / [$<thing>=a]+ % $<divider>=b / 15:22
camelia rakudo-parrot e5fd34: OUTPUT«「ababa」␤ thing => 「a」␤ divider => 「b」␤ thing => 「a」␤ divider => 「b」␤ thing => 「a」␤␤»
15:26 kaleem left 15:31 ajr_ left, ajr joined, ajr is now known as Guest1324, Guest1324 is now known as ajr_ 15:33 nnunley joined, rurban1 left 15:37 atroxaper left 15:41 xenoterracide joined
Woodi hmm, is something like $r.perl.prettyprint available maybe ? :) 15:42
15:49 FOAD joined 15:53 rurban1 joined 15:58 Psyche^_ joined
Woodi rp: grammar Header { rule TOP { '=date ' <cn>+ % \s+ $ }; token cn { \S+ } }; my $r = Header.parse( '=date col1 col2 col3' ); say @(%$r{'cn'}).join(':'); 16:00
camelia rakudo-parrot e5fd34: OUTPUT«col1:col2:col3␤»
Woodi this work but 'say @(%$r{'cn'}).join(':');' part is not nice...
FROGGS rp: grammar Header { rule TOP { '=date ' <cn>+ % \s+ $ }; token cn { \S+ } }; my $r = Header.parse( '=date col1 col2 col3' ); say $r<cn>.values.join(':'); 16:01
camelia rakudo-parrot e5fd34: OUTPUT«col1:col2:col3␤»
16:02 telex left
FROGGS rp: grammar Header { rule TOP { '=date ' <cn>+ % \s+ $ }; token cn { \S+ } }; my $r = Header.parse( '=date col1 col2 col3' ); say @($r<cn>).join(':'); 16:02
camelia rakudo-parrot e5fd34: OUTPUT«col1:col2:col3␤»
16:02 Psyche^ left
FROGGS rp: grammar Header { rule TOP { '=date ' <cn>+ % \s+ $ }; token cn { \S+ } }; my $r = Header.parse( '=date col1 col2 col3' ); say join(':', @$r<cn>); 16:02
camelia rakudo-parrot e5fd34: OUTPUT«postcircumfix:<{ }> not defined for type List␤ in method Str at gen/parrot/CORE.setting:12003␤ in method Str at gen/parrot/CORE.setting:996␤ in method join at gen/parrot/CORE.setting:1593␤ in sub join at gen/parrot/CORE.setting:1781␤ in su…»
FROGGS err, ok
16:04 xenoterracide left, telex joined, atroxaper joined 16:09 dmol left 16:12 benabik left
japhb_ Another variant use case for blobs: Blob.subbuf() should be a constant-time, memory sharing operation. 16:12
16:12 thou left 16:13 btyler left, [Sno] left 16:16 benabik joined 16:22 FROGGS left 16:28 SamuraiJack joined 16:31 rindolf left, atroxaper left 16:32 SamuraiJack__ left 16:33 SamuraiJack_ joined 16:36 thou joined, SamuraiJack left 16:39 Gwyxx joined, xenoterracide joined, Gwyxx is now known as SL-RHanson 16:43 FOAD left 16:44 FOAD joined 16:46 zakharyas left 16:51 asyoulikeit joined 16:52 Celelaptop left 17:00 xenoterracide left, asyoulikeit left 17:02 Celelaptop joined 17:06 jeffreykegler joined, raiph joined, rindolf joined 17:07 dmol joined, fridim__ left 17:09 carlin left 17:14 ssutch joined 17:21 kaleem joined 17:30 arnsholt left 17:39 spider-mario joined 17:42 kaleem left
dalek -pb: 49074a5 | (Geoffrey Broadwell)++ | lib/Metamodel/Perlable.pm:
Only use .container_descriptor if method exists
17:50
p6-pb: 5c7c5dd | (Geoffrey Broadwell)++ | lib/Metamodel/Perlable.pm:
p6-pb: Don't try to .perl a non-PerlableAttribute
17:50 dalek left, dalek joined, ChanServ sets mode: +v dalek
TimToady lizmat: I still don't see how "map {}, *" is better than just "{} xx *" 17:51
jnthn TimToady: You can use "last" with map when you're done; how do you say you're done with {} xx * ? 17:52
TimToady point
jnthn TimToady: Also, does {} xx * not actually produced a bunc of closures? :)
r: say ({ 42 } xx *)[^5].perl 17:53
camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«(Block.new(), Block.new(), Block.new(), Block.new(), Block.new())␤»
jnthn Yeah...
Though I dunno if that's spec or accident ;)
I just know it's what it does :)
TimToady seems rightish
but then, of course, simply loop {} is specced to work like that in lazy context 17:55
17:57 Entonian joined
jnthn Um...it is? 17:58
I knew, though never felt keen to implement, the thing where the loop keeps all its results... 17:59
...didn't really think that would need laziness to get involved too
Feels like we're asking for the same trouble as for. Or maybe you need the parens around it like for?
TimToady S04:371 has been in there from time immemorial 18:00
synopsebot Link: perlcabal.org/syn/S04.html#line_371
TimToady use at statment level just makes it eager, unless it's in sink context, in which case you can not produce any values 18:01
jnthn Well, that doesn't say anything about laziness...
TimToady all lists are lazy by default :) 18:02
18:03 dakkar left
jnthn Ugh. It's a good bit harder to efficiently implement these when they gotta deal with laziness 18:03
Or maybe the insight is, if I'm going to code-gen the lazy case completely different from the sink case, I'll just got ahead and do that for "for" also :) 18:04
*go
TimToady that was the original idea; sink context is generally known at compile time 18:07
jnthn OK. So seems like we just need loop { ... } up to spec 18:11
jnthn looks forward to working on this; also to doing great evil with for :P 18:12
Which I hope will make most cases of it faster.
18:13 Entonian_ joined
TimToady loop in eager context probably deserves a warning, so maybe we end up with "lazy loop {...}" or an appropriately listy return type 18:14
18:14 Entonian left, Entonian_ is now known as Entonian
TimToady I believe lazy is specced as a statement prefix...yeah 18:15
18:15 kivutar joined 18:18 Entonian_ joined, Entonian left, Entonian_ is now known as Entonian 18:20 Entonian left
lizmat is back from cycling 18:21
fwiw, map {} feels more natural to me than loop {} 18:22
map means returning values to me, loop doesn't
18:22 Entonian joined
TimToady map is a correspondence, and you're missing one end of it 18:23
lizmat that's why I respecced with Whatever, so there *would* something at the other end, at least conceptually 18:24
*be
sub foo { loop {} }; my @a=foo; foo; # how would we know at compile time whether or not to return values? 18:26
composability would dictate that sub foo would be generated only in one way, with return values, to accommodate the first call, right? 18:27
benabik You would always return values, just one of them would be discarded.
18:27 Entonian left, FROGGS joined
TimToady statement level loops are never lazy now 18:27
18:27 jnap left 18:28 jnap joined
TimToady we could either warn on a last-less loop, or make that one default to sink instead of eager 18:28
lizmat so, in the case of Channel.list, you would use a loop {} instead of a map {} ?
TimToady or "lazy loop {}"
there's really not much use for an eager loop {} unless there's a last in it :) 18:29
since it would chew up all your memory 18:30
moritz or an exit, or a return
TimToady but I'm inclined to change the default on statement loop from eager to sink
lizmat well, I guess I'll have to reprogram my brain to look at "loop" as a thing returning values
timotimo or a goto to an outer label
TimToady well, any exception, really 18:31
so changing the default looks saner
you might be able to argue me into extending that to 'while', but probably not to 'for' :) 18:32
18:32 sizz_ joined
PerlJam moritz++ (Advent day 1 :) 18:33
FROGGS I just hope that this does not break too much code :o)
18:36 yves_ left
TimToady how many people are using 'while' loops to return values without gather/take? 18:36
not many, I think
jnthn TimToady: I'd really like it if for sunk by default in statementlist :) 18:37
moritz well, people put while-loops as the last statement in a routine, and then expect to return() from it
jnthn TimToady: I think that's better than eager + a warning. 18:38
TimToady: It'd avoid memory-hungry accidents too 18:39
TimToady: Personally I'd tend towards using map all the time I wanted to convey "I'm returning stuff"
moritz +1
jnthn TimToady: Or shove a "lazy for ..." in to be clear. 18:40
18:40 sqirrel joined
moritz we should just says that loop and while and for always return Nil by default 18:40
jnthn *at statement level*, yes
moritz aye
jnthn statementlist, that is
18:43 ajr_ left
dalek ecs: 2772066 | larry++ | S04-control.pod:
all loops but 'for' default to sink

At statement level, all loops used to default to eager. That behavior is now reserved to 'for' loops, and all other statement loops default to 'sink'.
18:45
jnthn Dang...so close... :(
TimToady chaning for would break existing code :)
*ng
jnthn It'd probably bring down the memory use of even more code :P 18:46
18:46 eternaleye left
PerlJam
.oO( Are we starting to worry about backcompat now? ;-)
18:46
TimToady well, I know changing 'for' would break some rosettacode entries... 18:47
jnthn TimToady: At statementlist level? 18:48
Hmmm
TimToady might be worth it, but we'd also have to change eager into a statement prefix, to go with lazy 18:49
jnthn It's not today?
Just a function?
TimToady r: say eager {...}.WHAT 18:50
camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«(Block)␤»
TimToady just a function
r: say lazy {...}.WHAT
camelia rakudo-parrot e5fd34: OUTPUT«===SORRY!=== Error while compiling /tmp/YOdEcqvZfz␤Undeclared routine:␤ lazy used at line 1␤␤»
..rakudo-jvm e5fd34: OUTPUT«===SORRY!=== Error while compiling /tmp/1F0ylWEpBt␤Undeclared routine:␤ lazy used at line 1␤␤»
TimToady 'course, that's better than not existing at all :P
18:51 eternaleye joined
FROGGS I'd think we should care more about the few modules we have rather then rosettacode example we can edit 18:51
jnthn FROGGS: True.
TimToady I'd think we should care more about the millions of people who will write code someday, not the few who have done so already 18:52
FROGGS that is true too
jnthn I'm pretty sure none of the ones I've written depend on for returning a result, fwiw.
'cus I'm pretty sure I'd not write it like that...
But that's just one data point :)
FROGGS yeah
and a P5er would not do that either
jnthn Well, it's not like we don't smoke the modules... :) 18:53
18:53 dmol1 joined, dmol left
jnthn puffs on Rakudo::Debugger, and takes a long draw on Bailador... 18:53
.oO( I think this means I need dinner... :) )
18:54
18:55 benabik left
dalek ecs: 96e17b9 | larry++ | S04-control.pod:
add eager as a statement prefix
18:56
diakopter keyword all the things 18:57
dalek kudo/moar-support: 826f2b3 | jonathan++ | src/Perl6/World.nqp:
Add a missing null check.
FROGGS .oO( Do we always have to call it "thing" Jim? ) 18:58
diakopter jnthn: theoretically, can NQP do this? (nqp::getattr($_, $code_type, '$!compstuff') || [])[0] 19:00
jnthn diakopter: Not if it's null
the boolification will choke on the null
19:01 bluescreen10 left
diakopter nqp-m: say($*h || []) 19:01
camelia nqp-moarvm: OUTPUT«cannot stringify this␤frame_name_8␤»
diakopter nqp-p: say($*h || [])
camelia nqp-parrot: OUTPUT«0␤»
diakopter nqp-j: say($*h || [])
jnthn nqp-j: say($*h || [])
camelia nqp-jvm: OUTPUT«Cannot stringify this␤ in (gen/jvm/stage2/NQPCORE.setting:672)␤ in print (gen/jvm/stage2/NQPCORE.setting:671)␤ in say (gen/jvm/stage2/NQPCORE.setting:678)␤ in (/tmp/_8zqD221xW:1)␤ in (gen/jvm/stage2/NQPHLL.nqp:1100)␤ in eval (gen/jvm/stage2/NQPHL…» 19:02
nqp-jvm: OUTPUT«Cannot stringify this␤ in (gen/jvm/stage2/NQPCORE.setting:672)␤ in print (gen/jvm/stage2/NQPCORE.setting:671)␤ in say (gen/jvm/stage2/NQPCORE.setting:678)␤ in (/tmp/PVA4k1pxWM:1)␤ in (gen/jvm/stage2/NQPHLL.nqp:1100)␤ in eval (gen/jvm/stage2/NQPHL…»
jnthn There we go :)
diakopter moar did that too
jnthn Right :)
JVM and Moar agree. Parrot is the odd one out.
FROGGS yeah, why does the perl6-j actually build?!
diakopter don't know why moar's stack traces sometimes are truncated to camelia
jnthn How old is it?
19:03 sahadev joined
jnthn I fixed that bug a while back.. 19:03
diakopter dunno; I thought it was auto-updating, maybe it isnt
jnthn Or a bug in that area
FROGGS nqp-m: say(nqp::backendonfig<version>)
camelia nqp-moarvm: OUTPUT«Error while compiling op backendonfig (source text: "nqp::backendonfig"): No registered operation handler for 'backendonfig'␤frame_name_1109␤»
FROGGS nqp-m: say(nqp::backendconfig<version>)
camelia nqp-moarvm: OUTPUT«2013.10-120-gb08a229␤»
dalek ecs: beef8e6 | larry++ | S04-control.pod:
Okay, statement 'for' is now also sunk.

Now Perl 6 is perfect.
FROGGS 2013.10-167-g0f2ec7
47 commits behind
<dalek> specs: Now Perl 6 is perfect. \o/ 19:04
19:04 darutoko left
diakopter std: lazy eager lazy eager lazy eager 3 19:04
camelia std 8370f3f: OUTPUT«ok 00:01 123m␤»
jnthn TimToady++ \o/
19:04 yves_ joined
FROGGS sad the he didn't meant the implementation *g* 19:04
diakopter pugs: lazy eager lazy eager lazy eager 3 19:05
camelia pugs: OUTPUT«*** Cannot cast from VList [VInt 3] to VCode (VCode)␤ at /tmp/7y33SDZ7iw line 1, column 23 - line 2, column 1␤»
diakopter p: lazy eager lazy eager lazy eager 3
camelia rakudo-parrot e5fd34: OUTPUT«===SORRY!=== Error while compiling /tmp/UIefyVxOCF␤Undeclared routine:␤ lazy used at line 1␤␤»
diakopter j: lazy eager lazy eager lazy eager 3
camelia rakudo-jvm e5fd34: OUTPUT«===SORRY!=== Error while compiling /tmp/TNXtlkQNfB␤Undeclared routine:␤ lazy used at line 1␤␤»
19:05 bluescreen10 joined
jnthn really dinner & 19:05
dalek d: 3b262af | larry++ | STD.pm6:
add statement_prefix:eager
19:06
19:07 vky joined
dalek p: c8b4012 | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
mapped nqp::replace
19:16
19:16 SamuraiJack_ left 19:23 [Sno] joined
TimToady j: $*POSIX.tap({ .say }); await start { alarm 1 } 19:23
camelia rakudo-jvm e5fd34: OUTPUT«===SORRY!=== Error while compiling /tmp/0RAnQaLPwS␤Undeclared routine:␤ alarm used at line 1␤␤»
TimToady aww
j: $*POSIX.tap({ .say }); kill 1, $*PID; 19:24
camelia rakudo-jvm e5fd34: OUTPUT«===SORRY!=== Error while compiling /tmp/0ux4eOKUBU␤Undeclared routine:␤ kill used at line 1␤␤»
TimToady aww
j: $*POSIX.tap({ .say }); sleep 1 19:25
camelia rakudo-jvm e5fd34: OUTPUT«Dynamic variable $*POSIX not found␤ in any find_method_fallback at gen/jvm/Metamodel.nqp:2607␤ in any find_method at gen/jvm/Metamodel.nqp:945␤ in block at /tmp/ngk33UliQd:1␤ in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤ in any evalfiles at…»
itz_ /last state 19:26
oops
TimToady hmm, that traceback seems to be exposing a little more mechanism than the user is likely interested in
well, better too much than too little, I suppose... 19:27
but speaking of $*POSIX, we seem to need some mechanism for telling the system which signals we're really interested in, so that every process doesn't have to trap every signal 19:29
oh, and the name "$*POSIX" is too general :)
FROGGS what about $*POSIGNAL ? :o) 19:30
TimToady is grumpy today for some reason...
19:30 jeffreykegler left
TimToady you think that's cute today... 19:30
FROGGS maybe more like POSIKNAL
k is a good compromise for X <=> G
TimToady that's not even cute today :P
FROGGS hehe, exactly 19:31
TimToady thinks that "signals" are entrenched enough in our culture that $*SIGNALS would work--except for the other problem I mentioned of need to register for specific signals 19:32
*needing
FROGGS like subscribing to the signals one is interested in? 19:33
use signal <...> # that feels like a workaround
TimToady what you want is a tap on a specific set of signals 19:35
19:35 sqirrel left, rhr joined
TimToady you might want a different tap on a different set of signals 19:36
so we need a configurable signal supply
a 'grep' is probably not good enough here
19:37 rurban1 left
TimToady not unless the supply can introspect the smartmatch to determine which signals it should sign up for 19:39
but maybe smartmatch is overkill here 19:41
FROGGS what if one would register some sort of callback function: signal-handler( Signal $s where ... } ?
TimToady that's what .tap does
FROGGS ahh, okay
TimToady with supplies it's reactive all the way down 19:42
'reactive' being the fancy term for callbacks these days :)
but in this case, partitioning a subset of the reactions is more like de-combinating than combinating... 19:44
it's just we have a general problem of how do combinators push their optimizations up the supply chain? 19:45
one could view not subscribing to all signals as a kind of optimization in that brainstate
though in this case the semantics of signals change if you even observe them, so it's not just an optimization 19:46
19:47 SL-RHanson left
TimToady in addition to trapping or dying on a signal, presumably we also need a way to register that a signal should be ignored outright 19:48
otoh, one could argue that one thread might choose to ignore a signal, while another might choose to trap it, so in that case you have to trap it and pretend to ignore it in the one thread, I suppose 19:49
setting SIG_IGN then is just an upstream optimization of all taps wanting to ignore the signal, I guess 19:51
TimToady wonders how far we can drive this; we've been relatively successful at distributing other "process" concepts like $*CWD and %*ENV 19:52
FROGGS mhm
TimToady so maybe "temp $*SIGNALS;" lets us have a local signal feed that informs PROCESS::SIGNALS what it should collect all around 19:53
(assumping "temp" clones the supply appropriately, and that we can then tailor it) 19:54
well, maybe we just want "my $*SIGNALS = Signals.new(...)" instead
FROGGS my $*SIGNALS = Signals.new( :subscribe([...]), :filter(...) ) 19:56
TimToady not sure how the local supply would coordinate with its parents, unless it went straight to PROCESS::SIGNALS
FROGGS yeah
TimToady maybe one level is sufficient here
or two, depending on how you count :)
FROGGS *g*
TimToady hmm, but likely a multi-interpreter process will want a GLOBAL level too 19:57
FROGGS what if you could say that you want to inherit the pre-filtered signals from the parent? and the default is not to do so? 19:58
TimToady "yes, you can set a signal handler in your apache interpreter, but the other interpreters won't see it"
19:59 vky left
FROGGS like: my $*SIGNALS = OUTER::Signals.new... 19:59
(sort of)
lizmat so what's wrong with the conceptual simplicity of $*POSIX handling *all* POSIX signals ?
TimToady well, CALLER probley
overhead to set up, distortion of the semantics 20:00
lizmat you want to handle a particular signal, you $*POSIX.tap and ignore all the ones you don't want?
TimToady many signals default to killing your process if you don't handle them; and are difficult to handle correctly when things are breaking badly
lizmat hmmm... worrying about overhead now feels like a premature optimization
TimToady and no way to say you want to ignore a signal 20:01
cxreg do i remember right that moarvm uses libuv?
TimToady it's startup time
lizmat there should always be a POSIX.tap for SIGINT and the like
TimToady likely, but what about SIGFPE
cxreg if so, might be noteworthy that node.js had a usage bug that was causing memory leaks: www.joyent.com/blog/walmart-node-js-memory-leak 20:02
20:02 beastd joined, rindolf left
cxreg the actual diff: github.com/joyent/node/commit/1693...5d636ce693 20:03
lizmat TimToady: maybe some signals aren't meant to be visible at the code level ?
TimToady cxreg: you probably want to point that out on #moarvm
20:03 FROGGS[mobile] left
cxreg thanks just found that channel 20:03
TimToady reads 'man sigaction' and wonders how to shoehorn all that into a supply 20:06
20:08 rurban1 joined
TimToady is starting to think that each signal gets its own supply, and the system just tracks which signals have been tapped and which haven't 20:10
and if you want to trap a set, you write a combinator
but maybe that's overkill
for sure, any signal that might indicate low memory needs to have at least one event message of the appropriate type pre-allocated 20:12
20:12 rurban1 left
TimToady can we guarantee that a call to a tap routine allocates no memory for a simple supply/tap relationship? 20:12
what the tap does from there is of course its own responsibility... 20:13
signal handling is really, really, really tricky
and oversimplifying usually ends up in greater pain downstream 20:14
japhb just discovered that <Ctrl> is a hotkey for "Look for new lines" in the irclogs, and LOVES THAT.
moritz++
jnthn Moar lazily allocates frames at present so can't promise any invocation won't allocate righ tnow. We could do something about that (keep one in supply)...
preflex jnthn: you have 3 new messages. '/msg preflex messages' to read them.
jnthn ...but harder to make promises on other backends. otoh, their signal support will vary too :) 20:15
TimToady varying from the norm is okay, if we know what the norm should be :)
20:16 stevan_ left 20:17 jnap left 20:18 rindolf joined, stevan_ joined 20:24 rindolf left
lizmat perhaps it should be %*POSIX, a hash of signal taps ? 20:26
20:26 stevan_ left
jnthn I doubt it 20:27
Well, could work I guess...
But feels a little clumsy compared to the methods... 20:28
lizmat possibly even auto-vivifying
thing is, that different systems may have other keys in the %*POSIX hash, no?
jnthn yes, some weird tying stuff is what I'm trying to avoid :P
Auto-viv is a race condition, so mixing it with supplies feels odd ;) 20:29
lizmat ok, I guess that's a premature optimisation thought :-)
japhb Why call something signals related POSIX? That seems like a very broad term for such a specific use case. 20:40
s/use case/domain/ 20:41
jnthn
.oO( POSIGS )
20:42
lizmat %*SIG then ?
FWIW, I didn't want to combine them with other signally things such as events on Win systems 20:47
to me, the feel like different things, and should be handled differently 20:48
japhb I always liked the $SIG{INT} syntax in Perl 5. %*SIG<INT> works for me.
lizmat if someone wants to merge them into a system-agnostic interface, they can write combinators on the taps :-) 20:49
japhb Yes, well, that would indicate calling the events thing something other than SIG. ;-)
Nodnod
21:00 jnap joined 21:02 dayangkun left, woolfy left 21:03 stevan__ joined 21:04 berekuk joined, woolfy joined 21:08 rurban1 joined
dalek kudo/moar-support: 2fa3cf8 | (Tobias Leich)++ | src/vm/moar/ (2 files):
stub p6routinereturn
21:09
21:11 rurban1 left 21:17 dayangkun joined 21:18 xenoterracide joined 21:19 btyler joined 21:21 jnap left
colomon is confused by TimToady's latest changes to looping 21:21
lue r: token FOO { \d \d \d }; say "333" ~~ /<FOO>/ 21:25
camelia rakudo-jvm e5fd34: OUTPUT«Useless declaration of a has-scoped method in mainline (did you mean 'my token FOO'?)␤No such method 'FOO' for invocant of type 'Cursor'␤ in method ACCEPTS at gen/jvm/CORE.setting:12325␤ in block at /tmp/fM6IvXbRsg:1␤ in any eval at gen/jvm/stag…»
..rakudo-parrot e5fd34: OUTPUT«Useless declaration of a has-scoped method in mainline (did you mean 'my token FOO'?)␤No such method 'FOO' for invocant of type 'Cursor'␤ in regex at /tmp/aKqP54CUDC:1␤ in method ACCEPTS at gen/parrot/CORE.setting:12355␤ in method ACCEPTS at …»
lue I need slangs, don't I? :(
FROGGS r: regex FOO { \d \d \d }; say "333" ~~ /<FOO>/ 21:26
camelia rakudo-parrot e5fd34: OUTPUT«Useless declaration of a has-scoped method in mainline (did you mean 'my regex FOO'?)␤No such method 'FOO' for invocant of type 'Cursor'␤ in regex at /tmp/FRToa8Sea8:1␤ in method ACCEPTS at gen/parrot/CORE.setting:12355␤ in method ACCEPTS at …»
..rakudo-jvm e5fd34: OUTPUT«Useless declaration of a has-scoped method in mainline (did you mean 'my regex FOO'?)␤No such method 'FOO' for invocant of type 'Cursor'␤ in method ACCEPTS at gen/jvm/CORE.setting:12325␤ in block at /tmp/mrTtUUqimY:1␤ in any eval at gen/jvm/stag…»
FROGGS r: my regex FOO { \d \d \d }; say "333" ~~ /<FOO>/
camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«「333」␤ FOO => 「333」␤␤»
lue o... k?
r: my method bar { say "OK" }; say bar 21:27
camelia rakudo-jvm e5fd34: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in block at /tmp/japUNgY2RM:1␤ in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤ in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤ in any command_eval at gen/jvm/stage2/NQPHLL.nqp:11…»
..rakudo-parrot e5fd34: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in method bar at /tmp/rAu3ag2MQF:1␤ in block at /tmp/rAu3ag2MQF:1␤ in any at /tmp/rAu3ag2MQF:1␤ in any at gen/parrot/stage2/NQPHLL.nqp:1146␤ in any eval at gen/parrot/stage2…»
21:29 berekuk left
FROGGS lue: a method gets its SELF as the first argument 21:32
r: my method bar { say self }; bar 42
camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«42␤»
21:33 kivutar left
dalek kudo/moar-support: a32376d | (Tobias Leich)++ | src/vm/moar/ (2 files):
stub p6recont_ro
21:37
timotimo hi 21:38
21:39 berekuk joined
FROGGS hi 21:39
21:41 berekuk left
lizmat S06:3377 21:41
synopsebot Link: perlcabal.org/syn/S06.html#line_3377
21:41 ssutch left
dalek kudo/moar-support: f38804e | (Tobias Leich)++ | src/vm/moar/Perl6/Ops.nqp:
remove already implemented op p6bindattrinvres
21:41
timotimo FROGGS: oops, i had already made a commit to map nqp::replace, but i forgot to pullrequest it 21:50
FROGGS timotimo: well, it is just a line :o)
timotimo: we pass the optimizer now btw 21:51
timotimo \o/
but that wasn't replace
can you tell me what did it?
FROGGS replace was one thing I think, the other was the explosion due to atpos_o on a NULL pointer 21:52
timotimo no, replace was first needed after the optimizer because it was the first thing i hit when i ran --optimize=off
FROGGS ahh, but it got us further at least :o) 21:53
21:53 BenGoldberg joined
timotimo well, not necessarily "no", but ... you know :) 21:53
jnthn It was just a place that expected null to throw when it current explodes on Moar. 21:54
timotimo ah!
jnthn I tweaked it to check for that and things got better :)
timotimo it's that easy :)
thanks
jnthn Commit is only one of mine today so should be easy to find
dalek kudo/moar-support: 6c8adf4 | (Tobias Leich)++ | src/vm/moar/ (2 files):
stub p6finddispatcher
21:55
21:56 PZt left
timotimo and now we're just doing NYI-throwing ops? 21:56
FROGGS well, I am unable to implement these, so I stub them which helps jnthn++ as he said :o) 21:57
timotimo :D 21:58
sounds good to me
FROGGS if you want you could look into p6routinereturn, it is not too hard I think
timotimo i should get into backlog reading for the evening
21:58 PacoAir left
jnthn p6shiftpush should at least be easy enough ;) 21:59
FROGGS will that live in Ops.nqp directly?
22:00 Pzter33-- joined 22:02 Pzter33-- is now known as PZt
jnthn No, can do it in perl6_ops.c 22:02
It's just quite straightforward to do :)
22:02 rurban1 joined
dalek kudo/moar-support: ee9a069 | (Tobias Leich)++ | src/vm/moar/ (2 files):
stub p6argsfordispatcher
22:06
kudo/moar-support: bffdc26 | (Tobias Leich)++ | src/vm/moar/Perl6/Ops.nqp:
remove already implemented op p6inpre
FROGGS umm, now we're stuck at openpipe 22:07
timotimo ah, not running, but compiling, right?
FROGGS compiling, yes
I'll just comment it out to see what is next 22:08
dunno how much fun it is to implement openpipe O.o
22:09 kaare_ left 22:12 spider-mario left
FROGGS w.r.t. S11: my CompUnitRepo implementation can locate and load modules as specced in S11, and sticks the CompUnitRepos in %*CUSTOM_LIB under their name... e.g. perl/vendor/site/home/usb-stick/... 22:13
lizmat FROGGS++ 22:14
FROGGS so, next is that panda uses such a CUR if the destination path is under a CUR's control
japhb Yes, FROGGS++ 22:15
FROGGS and to handle perl6 -ICompUnitRepo=/path/to/my/usb/stick -e ...
japhb And ++FROGGS for the panda work
FROGGS :o)
22:15 btyler left
FROGGS yeah, I hope it is not too painful 22:15
timotimo: xor is the next missing op after openpipe 22:16
timotimo is it as easy as i think it is? 22:17
FROGGS dont think so
jnthn xor is a control flow op that needs interesting compilation 22:18
timotimo that means i won't do it :D
jnthn Needs doing it QASTOperationsMAST in the NQP repo
FROGGS hmmm, maybe it is: github.com/perl6/nqp/blob/master/s...s.nqp#L777 22:19
jnthn It shooldn't be ofervder hard to port 22:21
shouldn't, overly
from the Parrot version, that is
dalek p: a67cbd1 | dwarring++ | examples/rubyish/ (6 files):
improved rubyish method and var parsing.
22:41
22:42 stevan__ left
FROGGS I wonder why nobody is working on PHPish :o) 22:52
timotimo hehe :) 22:54
22:56 hummeleB1 left
jnthn I dunno! It's not like there's many built-in functions to do... 22:56
FROGGS the problem might be the implicit parameter mixup 23:02
and the minimum_function_name_length of 47 or so 23:03
jnthn Or everybody is keen to escape parsing the namespace syntax... 23:04
FROGGS we should stop ranting about the successor of Perl :P
jnthn Well...sleep, I guess... 23:06
'night
FROGGS gnight 23:07
timotimo gnite :)
23:08 prevost joined 23:16 stevan_ joined, vky joined 23:23 ssutch joined
lue Am I right in thinking that there's no alternative to DateTime.in-timezone() that let's me specify timezone as, say, "+0200" ? 23:30
timotimo The general notation for the [offset] is +hhmm or -hhmm. The time zone of the new object is assumed to be a static offset equal to the [offset]. 23:31
lue timotimo: that refers to ISO 8601 strings though. 23:32
retupmoca lue: github.com/supernovus/perl6-timezone/ has a tz-offset() that claims to parse the "+0200" format 23:34
timotimo ah 23:35
retupmoca I have a fork of that repo where I'm attempting to implement proper timezone support, but it's not really ready for use yet
lue ah. Pulling in a module for one function seems a bit heavy-handed here though.
FROGGS nqp: say(nqp::xor(1, 1)) 23:36
camelia nqp-jvm: OUTPUT«java.lang.NullPointerException␤ in (gen/jvm/stage2/NQPCORE.setting:672)␤ in print (gen/jvm/stage2/NQPCORE.setting:671)␤ in say (gen/jvm/stage2/NQPCORE.setting:678)␤ in (/tmp/4ZrqzlF_FF:1)␤ in (gen/jvm/stage2/NQPHLL.nqp:1100)␤ in eval (gen/jvm/sta…»
..nqp-moarvm: OUTPUT«Error while compiling op xor (source text: "nqp::xor(1, 1)"): No registered operation handler for 'xor'␤frame_name_1109␤»
..nqp-parrot: OUTPUT«␤»
FROGGS nqp-m: say(nqp::null) 23:37
camelia nqp-moarvm: OUTPUT«␤»
lue r: say DateTime.new("2013-11-23T19:00Z")
camelia rakudo-jvm e5fd34: OUTPUT«Invalid DateTime string '2013-11-23T19:00Z'; use an ISO 8601 timestamp (yyyy-mm-ddThh::mm::ssZ or yyyy-mm-ddThh::mm::ss+0100) instead␤ in method new at gen/jvm/CORE.setting:14391␤ in block at /tmp/tlmM5xAgfL:1␤ in any eval at gen/jvm/stage2/NQPHLL…»
..rakudo-parrot e5fd34: OUTPUT«Invalid DateTime string '2013-11-23T19:00Z'; use an ISO 8601 timestamp (yyyy-mm-ddThh::mm::ssZ or yyyy-mm-ddThh::mm::ss+0100) instead␤ in method new at gen/parrot/CORE.setting:14654␤ in method new at gen/parrot/CORE.setting:795␤ in block at /tm…»
lue well, that's wrong.
timotimo you need :00 before your Z 23:38
japhb lue: The problem is that with timezones you should generally support either: A) full Olson TZ info, or B) UTC/TAI only. If you support anything in between, you just guarantee a lot of code in the wild that Does It Wrong. It's like partial locale support.
lue timotimo: nope. en.wikipedia.org/wiki/ISO_8601 23:39
retupmoca japhb: I'm (slowly) extending that module to parse the olson tzdata files 23:40
timotimo oh
japhb retupmoca, Good! But I wasn't saying anything negative about the module, just that people plead for "Just give me offset, it's pretty easy and good enough!" And they're usually wrong on both counts. :-( 23:41
retupmoca oh yeah, I agree on that point
japhb Fixed offset notation was, I think, a major mistake of the otherwise decent ISO 8601 idea.
23:41 xenoterracide left
lue timotimo: S32::Temporal, to be fair, ignores a majority of the ISO 8601 format. (And that's not even looking at the duration or interval notations) 23:42
timotimo mhm :(
if you have the necessary knowledge, why not patch the synopsis? 23:43
FROGGS well, it is easily improvable
japhb Time is one of the Humans Made It Painful portions of CS. And unfortunately, attempts to make it less painful have the opposite effect in the long run.
timotimo :)
lue timotimo: I probably should, although I don't know how much of a ISO 8601 primer that would require. :) 23:44
japhb: in ISO 8601's defense, timezones on a strictly technical basis shouldn't need to know squiggly map lines :) 23:45
japhb "shouldn't" Oh, the pain that word has caused. ;-) 23:46
timotimo :D
lue personally has never really liked the location-based timezone specifiers anyway. Always felt too imprecise and redundant.
I'll refrain from filing an IS0-8601 bug for the time being, seeing as the spec is lacking in the details. 23:49
23:52 bluescreen100 joined
lue (anyone else think it's a bad thing that S32::Temporal doesn't mention Duration objects at all?) 23:52
23:55 bluescreen10 left
japhb_ lue: Kinda seems the right place for that, doesn't it? 23:56
lue japhb_: a little bit :)