»ö« 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.
TimToady irclog.perlgeek.de/perl6/2013-07-10 is really boring so far... 02:59
jeffreykegler Gee and I joined looking for the excitement 03:01
sorear good * #perl6 03:25
timotimo: I do not think is pure means what you think it means
moritz good morning 03:54
sorear o/ 03:55
Juerd re feather: underlying box had kernel panic after broken IO and was forcefully rebooted. 06:14
Seems to work just fine now.
sorear broken IO? 06:15
.oO( kernel doesn't like src/core/IO.pm breakage )
06:16
Dior Hi 06:40
:/
lizmat good *, #perl6! 07:36
.oO( if the backlog is boring, maybe we should restart the S11 discussion )
07:37
labster go for it lizmat 07:41
I haven't had so much perl6 time lately, due to starting my new $dayjob. 07:42
FROGGS S11++
FROGGS .oO( lets just call it S12 and all is fine ) 07:43
er even S13
lizmat maybe we should just boldly go where no version has gone before, and call it S111 :-) 07:44
FROGGS *g*
hehe
I like it
timotimo sorear: could very well be; i thought it meant "can be compile-time evaluated", but i realize now that the metaops probably needs to do things like closure cloning or something, so that won't be helpful? 08:29
jnthn morning, #perl6 08:45
timotimo hello jnthn
i think i understand now why you want the optimizer to be clever about the metapos
rather than my misguided attempts to just stick an "is pure" to each %) 08:46
FROGGS hi jnthn
timotimo ... what was the significance of QAST::Node.named again? 08:47
FROGGS a named param
timotimo oh, that's it?
FROGGS QAST::Var.new( :named<bin>, :value(...) ) 08:47
moritz yes, that's it 08:48
timotimo that's simpler than i thought it would be :)
FROGGS whoeverwhomadeqast++ # :P
moritz jnthn++ made QAST, and pmichaud++ made PAST, by which it was heavily inspired 08:50
timotimo that's interesting; the compile-time evaluator seems to skip any calls that have named parameters in them
i wonder if that's a limitation that cannot be broken; i don't see why it would be, to be honest
also, i'm surprised why it has to check every child of the op for istype QAST::Node; shouldn't that be basic sanity? 08:51
moritz no, there are cases where integers appear in the QAST tree 08:52
FROGGS or things like a 'v', right?
moritz right (in QAST::Want)
timotimo but not if the $optype == 'call' ;) 08:54
er, eq 'call' of course
moritz I'm pretty sure that if you remove the istype checks and try to spectest (or even build the setting), it'll blow up 08:55
(unless much has changed since I wrote that code)
timotimo oh, that was you! i just randomly assumed it was jnthns doing ;)
i think i'll try, because it really interests me to see what on earth causes that to blow up 08:56
moritz note that constant-folding stuff with .named arguments is quite possible, just has to be done
timotimo right, i was just about to ask
moritz but I didn't thought it was worth it when I did it, because mostly operators were inlined
timotimo i have no intuition on how many places that will optimize, though
moritz simply add an nqp::say('skipped inlining due to named arguments') to the place where the .named is check (if checked successfully) 08:57
and then compile the setting, and see if anything shows up
timotimo i'll need a tiny bit more than that
no skips in the setting :( 09:02
moritz: fwiw, removing the istype check doesn't make any tests fail 09:15
it also doesn't change the optimizer run time
jnthn wonders which istype... 09:21
The optimizer is often careful for subtle reasons... 09:22
timotimo when checking a call node for compile-time-evaluability, it will go through all the childs of the call node
and it requires each to be derived from QAST::Node
jnthn *nod*
timotimo in my limited experience with qast, i only ever see that happened in Want nodes 09:23
jnthn handle also
I think somewhere in the regex stuff too
timotimo okay. but still not in call ops?
either way, it doesn't seem to have an impact at all 09:24
man ? 09:27
FROGGS ! 09:32
ohh, and we have *, ^ and = too 09:33
timotimo not to mention ~ and - 09:39
FROGGS - as a twigil?
timotimo oh! 09:42
i didn't think of twigils
jnthn tbh, ?, !, *, ^ and = all show up as ops too :P
*tbf
FROGGS jnthn: tbh, averything shows up as an op nowadays :P
everything*
jnthn time to go ride some cool trains & 09:53
FROGGS have fun 09:54
timotimo trains with AC are the only good kind for traveling during summertime i find. 10:46
FROGGS yeah, AC-power is pretty useful :o) 10:52
timotimo .o(alternating climate?)
FROGGS cold/warm/cold/warm... 10:53
masak good afternoon, #Perl6 11:07
p*
feather crashed during the night?
moritz yes
brrt hi masak, moritz 11:09
moritz hi brrt
brrt how has the perl6 land been these days? long time no see
masak welcome back, brrt. 11:10
moritz brrt: rakudo-jvm now passes over 90% of the tests that rakudo-parrot passes 11:11
brrt oooh
nice
masak over 90%? over 97%!
I would tell you how we're doing, but I just lost all my irssi windows, and will need to spend some time reconstructing them... :)
moritz masak: 97% is over 90% :-)
lizmat but 97% is so much closer to 100% :-) 11:12
masak in other news, the temperature is over 30 Kelvin outside.
brrt it usually is, on earth at least
you should totally get the outside world to know 11:13
timotimo masak: have you seen /layout save? 11:38
BinGOs and /channel add 11:46
masak ooh 11:49
pmurias jnthn: are there any known circumstances where a "No code ref at index 107" could happen when loading a module? 13:43
lizmat jnthn is travelling at the moment 13:47
but maybe he just came online?
lizmat I guess not… :-( 13:49
Wifi on a high speed train can be flaky
pmurias: fwiw, I've never seen that 13:50
lizmat off to Niederrhein.pm meeting& 14:54
[Coke] S32-str/sprintf.rakudo aborted 63 test(s) 15:09
be nice if someone could patch that up in the next 30m or so. 15:10
FROGGS O.o 15:16
[Coke] I'm assuming it's just new tests that java passes that parrot doesn't. 15:18
FROGGS [Coke]: only the TODOs fail here 15:28
FROGGS but I'm using NQP HEAD, lemme switch to NQP_REVISION 15:29
timotimo FROGGS: you don't have much time left! =o 15:32
FROGGS yeah ó.ò
I'll already stalking some CPUs on ebay, but this wont help here
timotimo still haven't attached the tuit to my rucksack 15:36
[Coke] no worries if it doesn't hit. the rakudo.jvm run will be delayed today, though the others will start at noonish. 15:39
(eastern)
FROGGS [Coke]: even with NQP_REV it doesnt fail 15:42
ohh, hold on 15:43
hmm, no, still everything alright 15:44
timotimo [Coke]: shouldn't that read "S32-str/sprintf.rakudo.something"? 15:52
pmurias is there a way to remove '.' from the nqp search path? 15:53
flussence_ cd .. ?
FROGGS pmurias: when loading modules? no, that is hardcoded 15:59
FROGGS timotimo: with backend parrot it is still called .rakudo 15:59
timotimo ah, ok 16:01
pmurias FROGGS: looking at the source it seems to be 16:14
timotimo btw, i'm still not able to make sub EXPORT work properly :| 16:33
github.com/timo/ADT/blob/EXPORT_su...T.pm6#L176 - is there something obviously wrong about this?
or is it just that returning classes from EXPORT is NYI or something?
timotimo ah, the wrongness isn't that they don't properly get returned from the export sub 16:38
it's the dreaded "Type check failed in assignment to '$a'; expected 'Maybe' but got 'Maybe'" error that i now remember 16:39
timotimo i think that's highly unfortunate :( 16:42
FROGGS hmmm, your linky is 404
timotimo yes, i merged into master and deleted EXPORT_sub
github.com/timo/ADT/blob/master/li...T.pm6#L176
the tests succeed, but they fail if you add proper type restrictions 16:43
like my Tree $a .= new-leaf(...) 16:44
FROGGS timotimo: these types are created on demand? 16:46
timotimo yes indeed :) 16:47
FROGGS well, how should that work?
types are not compared by their name
timotimo er
FROGGS if you check their .WHICH it will be different
timotimo they are created at import time
FROGGS if you have a Tree, will it be created only once and reused then? 16:48
timotimo yes 16:49
FROGGS hmmm
can you check their .WHICH?
timotimo the EXPORT sub gets called when the user implements use ADT 'Tree = ...'
i suppose i can?
FROGGS I guess it wont be equal 16:50
timotimo Tree|2611048203208949061 16:51
Tree|2611048201061319506
you are right
but where does the difference come from? i don't understand.
i only create one tree ever
FROGGS ohh, .WHICH is about an object... 16:52
timotimo well, that would explain it?
FROGGS how to check a type object?
timotimo would also explain why i got only "Tree" when i did .WHAT.WHICH
with === perhaps?
but that'll only say False
FROGGS maybe .WHERE would do 16:53
timotimo yeah, they are different, too
-143857636322818261 vs -143857636735524802 16:54
FROGGS hmm, I'm not sure
timotimo but they are supposed to be the same >:( 16:55
FROGGS what if you would create a Tree class in your unit, and make it the parent class for the trees you create later on?
so you have a Tree that isnt created by some magic 16:56
timotimo wait what?
i only call ClassHOW.new_type once
the second Tree has no right to exist 16:57
or maybe the first one. hard to tell when they are both actually the same, but not actually
FROGGS I would add print statements for every call to new_type 16:58
FROGGS bbl 16:59
timotimo just one mention of it :( 17:00
timotimo i do create three different classes, Tree, Branch and Leaf 17:03
but i only create Tree once
benabik I wonder if the class is getting created at compile and at runtime... 17:24
diakopter is hoping there are several omfgduh flaws in nqp/rakudo that we're able to find once we get awesome profiling tools that when fixed achieve orders of magnitude speedups. 17:51
otherwise I'll remain despondent about the regex engine speed dearth
sorry, [OT] ish 17:52
masak well, you're not the only one who's curious about how grammars could be sped up. 18:03
diakopter well, if we can somehow designate (or infer) that we don't need the super-slow features... 18:06
for instance, certain matches can be compiled to much faster cpu-code/JIT'd automata just for pre-matching to see if it will match at all, then run the full thing to see which one's longest for the case of LTM 18:09
.. but that of course degenerates into caching all sorts of stuff, like breaking those compilations at rule/token boundaries and caching fates like std/niecza 18:10
flussence_ sometimes, all I want is to be able to tell the language "this is all opaque iso-8859-1 input, be fast and stupid like PHP"
diakopter P6'll have that. in our planning for moarvm, TimToady and I talked about having current default decoding/encoding pipelines set up 18:11
but that's a ways...
flussence I guess we can go the JS route of being slow by default and having lexical speed hacks like asm.js 18:14
that might be a bit nicer than being wrong by default :)
moritz which type will provide the fast iso-8859-1 view on strings?
diakopter seemed ok to me to hook them into IO methods
flussence well, the spec does say regexes should be able to operate on bufs... 18:15
moritz flussence: but regexes aren't the only string operation
flussence: there's concatenation, substr, numification, case folding...
oh, and will a regex match on a buf yield bufs inside the Match object? 18:16
diakopter so, you'd set "default" or "current settings" of various encoders/decoders and destination types on the IO object
(so you can read directly to a buf, or a Str, if you want)
flussence hmm... isn't that what the "global unicode semantics level" (graphs/codes/bytes) was supposed to be for?
diakopter it's better to provide those low-level because the detection of codepoint/character breaks can be integrated with a single level of buffering 18:17
flussence (or whatever it's called...)
diakopter that's a start
but it needs bunches more fleshing out, in my assessment 18:18
.ask TimToady Uni? plz?
yoleaux diakopter: I'll pass your message to TimToady.
diakopter flussence: the overengineerer in my wants something like: 18:22
eh. 18:25
don't have time to write it properly
moritz: good question about the regex matching on bufs
configurable! ;) 18:26
flussence I'd lean toward "yes" for that one, I can't think up a sane way to have it returning Strs... 18:29
moritz so $/.Str would return a Buf?
flussence that wouldn't make any sense 18:31
diakopter why?
(moritz)
moritz I find the whole idea quite absurd. First we introduce separate types so that we can distinguish bytes from text, and then we let Buf creep in everywhere that a Str can be?
IMHO the only sane way to deal with binary-data-but-viewable-as-a-string is decoding the buffer as Latin-1 18:32
then you have a proper Str, and can regex match, case fold and whatnot
diakopter on the other hand, what I find absurd is the lack of (or is it there?) Str.codepoint_at(idx)
moritz $str.substr($idx, 1).ord 18:33
diakopter ... without allocating a string.
(crazy)
skids
.oO(Zed-TeRminated string... Ztr... prettier than "CString")
18:35
diakopter *sigh* maybe I should put NFG into rakudo-jvm first.. er, actually, ooooo wouldn't be difficult at all to compile the unicode database the same way to java...
(same was as it is on moarvm)
Teratogen I am not a big fan of camelcase, coming from a Multics environment
diakopter doesn't see the camelcase 18:36
moritz TeraTogen 18:38
diakopter maybe he meant Zed-TeRminated
yeah, I guess so
Teratogen we used _ 18:39
this_is_a_variable
diakopter *facepalm*
oh, you mean for non-camelcase.. 18:40
diakopter gives up trying to figure out the context of that .. contribution 18:41
Teratogen I find it much more aesthetically pleasing
diakopter, just a stray thought
diakopter okay, I still don't see what camelcase you were referring to
*which camelcase
[Coke] r: my $tetatogen-code-style = "nonperlish"; 18:42
diakopter eh
bye bye camelia?
[Coke] probably didn't survive feather crashing.
diakopter feather crashed?
[Coke] oh. I broke the rakudo tests with my rakudo.parrot fuding.
diakopter is it returning? 18:43
[Coke] *fudgin*
diakopter: like, 14 hours ago.
diakopter Juerd seems online
[Coke] yes?
it came back, like 14 hours ago. 18:44
diakopter oh.
[Coke] so, camelia just needs to be restarted, I'd guess.
skids BTW tera_togen is called "snake_case". FWIW. 18:45
diakopter seems feather3 isn't up 18:46
Juerd: is feather3 returning?
diakopter sorear: ping 19:23
no dalek either I guess 19:26
diakopter colomon: hi 19:36
colomon o/ 19:37
what's the word on #p6?
diakopter ?
masak sees no word on it
diakopter WORD
masak oh, there it is. 19:38
colomon just checking for news, I'm only getting online for about 15 minutes a day this week
Word!
Y'all didn't start another VM while I wasn't looking? 19:43
skids Yeah how long until MOASTVM? :-) 19:44
or MOARBETTERVM?
diakopter YAVM was taken, I think 19:45
skids
.oO(you know a product space is saturated when...)
colomon just in case anyone wonders, the NQP tests and code I just pushed have one test failure. I know exactly what is going wrong, but am having trouble finding even a mildly elegant solution to the problem. :\ 19:49
[Coke] dalek also dead. whoops. 20:00
# 07/10/2013 839c3c3 rakudo++ (26132); niecza (81.48%); pugs (36.36%); rakudo.jvm (97.61%)
r: 25510 / (26132+72) # if rakudo.parrot passes all failing tests 20:01
r: say 25510 / (26132+72) # if rakudo.parrot passes all failing tests
0.9735
[Coke] Is anyone planning on looking into Buf on the jvm? 20:05
(I may poke at that tonight)
colomon [Coke]: I've been pondering what to tackle next. But I don't have a good feel for what other people are working on? 20:07
[Coke] colomon: I'm looking at: gist.github.com/coke/5879701 20:08
diakopter well if you'd like to hurry nfg to rakudo-jvm, you could port my ucd2c.pl script in moarvm to emit java instead
colomon [Coke]++
diakopter instead/as well 20:09
[Coke] looks like some dispatch issue, Buf, encode, a chdir bug, q:x, missing methods of various types, phasers..... there's some number stuff for you.
colomon: S32-num/power.rakudo.jvm, S32-trig/cosech.t, S32-num/int.t, S32-num/rounders.t 20:10
colomon aha! those look like natural choices. :) 20:10
[Coke]++
[Coke] look for fails or rakudo.jvm todos
(or skips) 20:11
colomon++ doing the actual work. :)
[Coke] feels like the flight attendant, pointing at the obviously located exits.
masak r: sub powerset(@e) { (^(2 ** @e)).map({ [.fmt("%0" ~ +@e ~ "b").comb.pairs.grep(*.value).map({ @e[.key] })] }) }; say .perl for powerset(<a b c>) 20:17
ENOCAMELIA :/
colomon \o # gotta get back to the cabin…. 20:17
masak anyway, I'm curious if anyone can do "better" than the above :) 20:17
masak (the above pulls out all the supersets from all binary expansions 000 001 010 ... 111) 20:18
PerlJam
.oO( /me does better by having masak do all the work ;)
20:18
masak heh 20:19
timotimo r: for Bool { say $_ } 20:30
evalbot is offline 20:31
masak aye.
timotimo this used to say True\nFalse some time ago, now it just says (Bool)
is that wrong? am i misremembering?
masak seems right to me. 20:32
you're probably misremembering.
why would an enumeration type object automatically listify to its constituent enums? that feels a bit too magical to me. 20:33
Guest91981 agrees
maybe for Bool[] { say $_ }
PerlJam timotimo: masak just said exactly what I was thinking too
FROGGS $ perl6 -e 'for Bool:: { say $_ }' 20:34
"False" => Bool::False
"True" => Bool::True
:o)
masak FROGGS++
that reads very well.
grondilu where is that documented?
masak "for the things in the Bool namespace"
grondilu: probably in S12 if anywhere.
timotimo ((^10) <<div>> (-3...3)).grep: { * !~~ Failure } - why does this sink the failure? :( 20:40
flussence ooh, that's a neat trick 20:49
r: say IO::.keys
(well, you get the idea)
flussence ~ $ perl -MData::Dumper -wE 'say ::Dumper IO::' 20:52
$VAR1 = 'IO';
aww...
jnthn evening, #perl6 22:10
yoleaux 14:16Z <FROGGS_> jnthn: is that better? gist.github.com/FROGGS/5964614
lizmat jnthn! 22:14
timotimo hey jnthn :) 22:15
how was your cool-train-rides 22:16
?
jnthn timotimo: Straightforward. Only the last one had a small delay :) 22:18
I did some hacking :)
lizmat does anybody know whether Juerd knows that feather is down? 22:25
diakopter feather1,2 are up; feather3 is down
masak lizmat: Juerd rebooted feather last night. 22:26
masak beyond that, I don't know what he knows. 22:26
lizmat ok, I'll try to text him
diakopter just ask about feather3 22:26
timotimo jnthn: looking forward to seeing your hackings :) 22:27
jnthn But there's no feather to report it :P 22:27
timotimo :( 22:28
have you pushed it already? *looks*
jnthn no...
diakopter feather1 is up 22:29
feather3 isn't
er, now it is
lizmat it is ?
diakopter yes, attempting to start dalek and camelia 22:30
timotimo thank you! :)
masak diakopter++
jnthn yay
lizmat guess my text message worked :-)
diakopter uptime says 39 min 22:31
lizmat ah, then it didn't 22:32
jnthn diakopter: no luck? 22:38
diakopter oh hm 22:39
diakopter well, there's that one 22:46
r: ;
camelia rakudo 29a248: ( no output ) 22:47
diakopter r: ;
camelia rakudo 29a248: ( no output )
diakopter heh. 22:49
lizmat r: say "I'm back!"
camelia rakudo 29a248: OUTPUT«I'm back!␤»
diakopter there, the magnet dalek is up too now 22:50
lizmat diakopter++
.oO( should be some commit soon now )
22:51
diakopter I'm not sure the psgi listener sorear wrote is running
jnthn I just pushed an nqp one...no sign 22:53
diakopter hm, this seems right 22:56
somebody push something :)
diakopter (it likely won't get the ones github tried to send it while the listener wasn't running) 22:57
jnthn here goes...
aww 22:58
diakopter give it a bit
github might be backoffing
dalek p: 90d0998 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java:
Enable interop to use untyped Java collections.

This provides a way to treat some 6model object as a plain old Java object for a while, then later on recover the underlying 6model object once again. This is useful when wanting to use some of the built-in Java collection classes.
23:00
jnthn ooh, there's the first
So the second? :)
dalek kudo/nom: b19f72b | jonathan++ | / (2 files):
Provide basic threads and promises on JVM.

This builds upon the interop primitives and threading example by
  sorear++ to provide a minimal Thread class, along with a thread pool
on which code can be scheduled to run. This in turn is used for a basic implementation of promises/futures, with an async sub that takes a code block and returns a Promise.
masak \o/
those look like train commits :) 23:01
NICE
lue can't wait to collect Promises that do IOU :) 23:02
Juerd feather3 should be back now 23:11
(I'm on a vacation and am not online very often.) 23:12
lizmat Juerd++ 23:13
jnthn Juerd++
masak Juerd++
jnthn Here's some examples of what we can do with what I just commat: gist.github.com/jnthn/5971100 23:15
masak nice! jnthn++ 23:16
'night, #perl6 23:17
lizmat night masak! 23:18
also calling it a day, sleep& 23:20
tadzik holy batman 23:32
them commits
gfldex jnthn++ put threads into your perl6 so you can perl6 while you perl6 23:40
timotimo jnthn: can you introspect if something is a promise? 23:49
snoopy r: say ("!".."~").grep({/<punct>/}) 23:54
camelia rakudo b19f72: OUTPUT«! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~␤»
jnthn ~~ Promise
snoopy ..on jakudo I get: ! " # % & ' ( ) * , - . / : ; ? @ [ \ ] _ { } 23:55
timotimo r: say +(("!".."~").grep(/<punct>/)) == +("!".."~")
camelia rakudo b19f72: OUTPUT«False␤»