»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by diakopter on 14 April 2013.
00:04 tgt left 00:28 lichtkind left
dalek ast: 7df5f66 | (Brent Laabs)++ | S32-io/ (4 files):
fix links to specs, change Path to IO::Path
00:43
00:57 Yappo______ left 00:58 FROGGS_ joined 01:02 Yappo______ joined, FROGGS left 01:04 anuby joined 01:06 berekuk left 01:08 shachaf_ joined, berekuk joined, shachaf left, shachaf_ left, shachaf_ joined 01:09 shachaf_ is now known as shachaf 01:10 berekuk left
labster well well, the recent changes to require broke File::Spec... and rightfully so, according to spec. Ok, easy fix. 01:10
01:14 berekuk joined 01:16 berekuk left 01:17 rking left, rking joined 01:27 Patterner left 01:29 Psyche^ joined, Psyche^ is now known as Patterner 01:38 gdey_ left 01:41 berekuk joined 01:50 sftp left 01:53 sftp joined 01:58 FROGGS__ joined 02:02 FROGGS_ left 02:18 lustlife joined 02:36 berekuk left 02:38 berekuk joined 02:47 berekuk left 02:56 preflex_ joined 02:57 preflex left, preflex_ is now known as preflex 02:58 gdey joined 03:03 d4l3k_ joined, dalek left, GlitchMr left, d4l3k_ is now known as dalek 03:04 lestrrat left 03:08 GlitchMr joined 03:10 lestrrat joined 03:16 xinming left 03:18 xinming joined 03:33 _jaldhar_ joined 03:39 rindolf joined 03:45 _jaldhar_ left 03:49 _jaldhar_ joined 04:00 ilogger2 joined, ChanServ sets mode: +v ilogger2 04:02 broquaint joined, jfried joined 04:04 avar joined
japhb .ask timotimo What error are you seeing at irclog.perlgeek.de/perl6/2013-04-17#i_6713750 ? Can you gist it for me? 04:05
yoleaux japhb: I'll pass your message to timotimo.
04:23 Gwyxx joined 04:24 Chillance joined 04:28 thou joined 04:37 rindolf joined 05:44 FROGGS__ joined, FROGGS__ is now known as FROGGS
FROGGS .ask timotimo Can't we just add a method .push to QRPA? 05:45
yoleaux FROGGS: I'll pass your message to timotimo.
FROGGS .tell labster Sorry that I broke "my own" module... Havn't thought of it.... glad you fixed it though. labster++ 05:47
yoleaux FROGGS: I'll pass your message to labster.
05:57 frdmn joined 05:59 Chillance left 06:07 SamuraiJack joined
labster FROGGS: Well, you wrote the code that broke, if you git blame back far enough. Which is just as well, because I would have been completely lost trying to figure out how to begin. 06:22
yoleaux 05:46Z <FROGGS> labster: Sorry that I broke "my own" module... Havn't thought of it.... glad you fixed it though. labster++
06:24 thou left 06:27 thou joined
FROGGS labster: ya, I know that I wrote that part :/ 06:29
FROGGS cries about not having module tests
labster Though I finally figured out why your handles branch didn't work -- you can't call access an attribute on a type object, and File::Spec are all used in undefined mode. 06:30
I know. I'm waiting for feather.perl6.nl/~sergot/modules/ to start getting up to speed. Or tell me why something fails. 06:31
FROGGS what 'handles branch'? 06:32
labster github.com/FROGGS/p6-File-Spec/tree/handles 06:33
FROGGS ahh, 7 months ago, I totally forgot :o) 06:34
06:37 thou left 06:39 kaleem joined 06:52 rindolf left, rindolf joined
labster I have a working version of delegation with "handles" now: github.com/labster/p6-File-Spec/bl...le/Spec.pm 06:58
06:59 rindolf left 07:00 rindolf joined
FROGGS cool 07:03
07:06 domidumont joined 07:07 SamuraiJack left
FROGGS I'd like to see panda that clean how File::Spec is now^^ 07:10
s/clean/readable/
07:11 SamuraiJack joined, takesako___ joined 07:13 preflex joined 07:15 sqirrel joined, hlin_ joined 07:17 rindolf left, rindolf joined
tadzik hehe 07:18
me too 07:19
07:21 domidumont left 07:22 domidumont joined 07:27 xinming joined 07:32 kaleem left 07:33 kaleem joined 07:36 rindolf left, rindolf joined 07:48 wooden joined, wooden left, wooden joined
timotimo good morning! 07:54
yoleaux 17 Apr 2013 22:58Z <FROGGS> timotimo: I think the changes in QAST::Compiler about $ops.push might be wrong, because it a PIRT::Ops and might really have that method... (have a look at QAST::Operations #295)
04:03Z <japhb> timotimo: What error are you seeing at irclog.perlgeek.de/perl6/2013-04-17#i_6713750 ? Can you gist it for me?
05:44Z <FROGGS> timotimo: Can't we just add a method .push to QRPA?
timotimo FROGGS: that was the last thing i realized before i went to bad that i should revert the $ops.push changes next time i'm conscious 07:55
japhb: i was getting infinite recursions
hoelzro morning #perl6!
timotimo domo arigato mister rob 07:56
07:56 rindolf left, rindolf joined
hoelzro is building HTML Perl6 docs on his VPS 07:57
50% memory atm =/
timotimo this runs with a perl6 script?
hoelzro yes
timotimo that would explain it
hoelzro it climbed to 48% really quicky, hung there, and slowly moved to 50 07:58
ugh
now it just failed with a "cannot allocate memory" error =/
moritz hoelzro: I did warn you that it hogs resources
timotimo aaw :(
hoelzro I know, but I thought my VPS could handle it =/
timotimo ooc, does parrot have a generational gc with a nursery and all that jazz?
moritz yes 07:59
hoelzro is it all Parrot's fault? or does Rakudo yes memory irresponsibly?
timotimo and cycle detection, too?
does perl6 maybe use hashmaps for all objects or something?
moritz no 08:00
timotimo is already out of ideas 08:02
08:03 daxim joined, berekuk joined
diakopter guessing game: match the # of distributions updated in <3yrs: 7,012 11,820 27,784 46,349 : GHC CPAN NPM JVM 08:04
er s/JVM/MVN/ 08:05
without cheating by looking it up
arnsholt timotimo: I think cycle detection happens by itself when you have generational/tracing
timotimo that makes sense 08:06
hoelzro I might try to trim htmlify.pl's memory usage 08:07
diakopter no one has a guess? 08:09
sorear hmm 08:10
NPM>CPAN>JVM>GHC
hoelzro CPAN is 46K, GHC is 27K, NPM is 11.8K, JVM is 7K
sorear is my guess
hoelzro shrugs
diakopter I'll wait another few minutes to reveal 08:11
08:11 rindolf left, rindolf joined
diakopter arnsholt? timotimo? moritz? yoleaux? a guess? 08:13
yoleaux: you know you want to guess
arnsholt I think I'd put NPM at 7k, at least 08:14
timotimo NPM is the node.js thing, right?
diakopter yep
timotimo it's the one with 46k.
arnsholt NPM < GHC < CPAN < MVN perhaps
diakopter heh, fairly different from sorear's 08:15
08:15 woolfy joined
diakopter and hoelzro's 08:15
nwc10 what's MVN?
diakopter maven
diakopter waits 1 more min in case nicholas wants to guess 08:16
nwc10 my network is so slow I probably can't even type something in 1 min 08:17
ad I don't want to guess
and I'm not sure what maven is
diakopter heh ok
this is maven: search.maven.org/#stats and www.jarvana.com/jarvana/info/reposi...statistics
answer: they're in the right order already 08:18
also, the mvn one is probably a huge underestimate since I was just able to measure the central repo 08:19
well maybe not huge, but significant
cpan by comparison: mirrors.cpan.org/stats/ 08:22
nwc10: another mvn site: has a pretty graph: mvnrepository.com/
cpan grew 36% in 2 years in number of files; mvn grew 100% 08:27
08:32 rindolf left, rindolf joined
jnthn morning, #perl6 08:33
diakopter GUGT jnthn
oh, I forgot to include the .NET package management system NuGet, which was only created a couple years ago, but already has 11,000 unique distributions 08:34
er, 12,191 to be exact 08:35
08:35 tangentstorm joined
timotimo jnthn: does turning .push into nqp::push for nqp-level arrays (rpa and qrpa) help portability at all? 08:39
08:41 FROGGS left
jnthn timotimo: No. 08:41
timotimo: Only in the MOP, where it's already been done.
timotimo hm. 08:42
so maybe adding a .push to qrpa would be a better idea?
for now, i'll just sift through the rest of nqp ...
08:45 fgomez joined 08:46 dakkar joined 08:52 cognominal joined, kresike joined
kresike hello all you happy perl6 people 08:52
08:53 rindolf left 08:54 rindolf joined
hoelzro does the Perl 6 spec dictate what form of GC should be used? (ref counting vs mark and sweep) 08:55
diakopter no, but once you handle cycle-detection fully in ref counting you've made a lot of progress toward a precise GC... 08:56
08:58 berekuk left
diakopter (sort of) 08:59
jnthn timotimo: Oh, you're working on RPA => QRPA? Hm. 09:01
timotimo: Well, the .push method isn't really a portability issue
nqp-jvm: my @a; @a.push(42); say(@a[0])
camelia nqp-jvm: OUTPUT«42␤»
diakopter nqp-jvm: (my @a).push(42); say(@a[0]) 09:02
jnthn timotimo: I suspect adding the push method to QRPA (along with the 3 others) is the most expedient way.
camelia nqp-jvm: OUTPUT«42␤»
jnthn Nice try :P
diakopter me?
tadzik there was no try { } ;) 09:03
jnthn :P
09:03 fgomez left, berekuk joined
tadzik "do {} or Acme::Don't. There is no try { }" 09:03
timotimo jnthn: it's too late for that now, i just compiled a complete nqp. 09:04
diakopter nqp-jvm: (BEGIN my @a)(42); say(@a.elems)
camelia nqp-jvm: OUTPUT«java.lang.NullPointerException␤ at org.perl6.nqp.runtime.Ops.invokeInternal(Ops.java:1229)␤ at org.perl6.nqp.runtime.Ops.invoke(Ops.java:1200)␤ at 32E184A159F2AB2B80B927BE69AB29A193D0E286.qb_25(<generated>)␤ at org.perl6.nqp.runtime.Ops.invokeInternal(Ops.java:1240)␤ at
..…
timotimo a few mistakes remain, though.
diakopter ftw
timotimo delete_keyed? what is that even?
tadzik you know your code is broken when even camelia says "..." 09:05
jnthn nqp: (BEGIN my @a)(42); say(@a.elems)
camelia nqp: OUTPUT«Method 'elems' not found for invocant of class 'ResizablePMCArray'␤current instr.: '' pc 69 ((file unknown):154827407) (/tmp/4HDpv_PkE7:1)␤»
diakopter nqp-jvm: BEGIN my @a
camelia nqp-jvm: OUTPUT«java.lang.NullPointerException␤ at org.perl6.nqp.runtime.Ops.invokeInternal(Ops.java:1229)␤ at org.perl6.nqp.runtime.Ops.invoke(Ops.java:1200)␤ at 32E184A159F2AB2B80B927BE69AB29A193D0E286.qb_25(<generated>)␤ at org.perl6.nqp.runtime.Ops.invokeInternal(Ops.java:1240)␤ at 09:06
jnthn Hm. :)
camelia ..…
diakopter golfed
jnthn Oh...
Yeah, and there's no tests for BEGIN either...
diakopter nqp-jvm: my @a := 7; say(@a.WHAT) 09:07
camelia nqp-jvm: OUTPUT«␤»
diakopter orly
nqp: my @a := 7; say(@a.WHAT)
camelia nqp: OUTPUT«Can only use get_what on a SixModelObject␤current instr.: '' pc 52 ((file unknown):141407052) (/tmp/Cxi7VnLKEA:1)␤»
diakopter tries to remember what that nqp:: op is to get the parrot type 09:08
nqp-jvm: BEGIN 1 09:09
camelia nqp-jvm: OUTPUT«java.lang.NullPointerException␤ at org.perl6.nqp.runtime.Ops.invokeInternal(Ops.java:1229)␤ at org.perl6.nqp.runtime.Ops.invoke(Ops.java:1200)␤ at 32E184A159F2AB2B80B927BE69AB29A193D0E286.qb_25(<generated>)␤ at org.perl6.nqp.runtime.Ops.invokeInternal(Ops.java:1240)␤ at
..…
jnthn There isn't an nqp:: op to do anything Parrot specific. :)
diakopter "there's just ops that aren't necessary to implement on the others..."
jnthn You use pir:: to get at those 09:10
Also, NQP doesn't make a gist/Str distinction, and Str on a type object gives back the empty Str
09:15 berekuk left, fgomez joined
timotimo what is delete_keyed for? seems like it would be for hashes 09:16
jnthn Parrot calls everything keeyed
*keyed
tadzik keyed_int is for arrays, iirc
jnthn *nod*
timotimo oh, ok 09:17
delete_keyed() not implemented in class 'QRPA' <- this confuses me.
there really is no delete_keyed in there. but why? 09:18
if it's supposed to be a drop-in replacement for rpa, why not implement that? maybe because it is only used in test code?
i'll be excited to see if rakudo compiles its setting faster with these nqp changes 09:20
oh, i probably need to create lots and lots of nqp::push/pop/shift/unshift changes in rakudo, too :|
jnthn digs back into the NQP bootstrap on JVM stuff 09:21
09:22 berekuk joined
timotimo wise jnthn, how do i properly add those methods to the qrpa pmc? 09:23
would it be sufficient to copy these following lines? github.com/parrot/parrot/blob/mast...y.pmc#L193 09:24
09:24 census joined
jnthn timotimo: I suspect delete_keyed should be delegating to delete_keyed_int. You may be able to steal directly from RPA 09:24
09:24 census left
jnthn shift_float? 09:24
jnthn gets curious where we hit that code path in NQP... 09:25
Anyway, no, that's not sufficient. You'd be better delegating to shift_pmc and then doing get_number on the result in QRPA, if you have to implement shift_float...
timotimo qrpa doesn't implement any method with "delete" in it 09:26
but as i said: the only place that seems to hit that is the test code.
wow, if i did this correctly, implementing .push and friends was super trivial 09:28
09:28 rindolf left 09:29 rindolf joined 09:33 frdmn is now known as kalle, kalle is now known as frdmn 09:36 frdmn is now known as rnarius
timotimo parsing wasn't any farster than it normally is, but maybe rakudo uses nqp::list in many places 09:38
oh, the optimizer is quite a bit faster though 09:39
er, at least i think so. i should do proper tests.
timotimo spectests
09:40 rnarius is now known as frdmn 09:42 berekuk left 09:46 fgomez left
timotimo ah, qrpa doesn't have a .sort method. makes one of the rakudo tests fail 09:46
.sort being missing seems to cause a big part of all test failures so far 09:47
09:49 fgomez joined, terrencehan joined
timotimo oh, whoops. these aren't supposed to be qrpa's. these are supposed to be List classes! 09:50
maybe the p6list op needs to learn about qrpa
$ops.add_hll_pirop_mapping('perl6', 'p6list', 'perl6_list_from_rpa', 'PPPP', :inlinable(1)); 09:51
yeah, that would be the problem
hm. 09:55
oh, that's not it. rakudo just delegates to the list to do the sorting 09:57
09:57 tgt joined
timotimo somehow qrpa is meant to inherit a sort method 09:58
but all the sort tests are commented out
10:07 baest joined 10:19 rindolf left 10:20 rindolf joined 10:21 kshamen joined 10:23 mtk joined 10:24 kshamen left
timotimo so, how do i make nqp link the parrot utils to my qrpa? perl6: symbol lookup error: /home/timo/build/rakudo/install/lib/parrot/5.2.0-devel/dynext/nqp_group.so: undefined symbol: Parrot_util_quicksort 10:24
10:31 grondilu joined
grondilu rn: say "a" .. "Z" 10:33
camelia rakudo f3c3fe, niecza v24-37-gf9c8fc2: OUTPUT«"a".."Z"␤»
grondilu rn: say list "a" .. "Z"
camelia rakudo f3c3fe, niecza v24-37-gf9c8fc2: OUTPUT«␤»
timotimo grondilu: do i remember correctly that you have some involvement in parrot?
grondilu timotimo: no, I don't. 10:34
timotimo hm, okay
jnthn: is it sensible to try to use Parrot_util_quicksort in a pmc created inside the nqp tree, rather than in parrot proper? 10:37
if i wanted to copypaste the implementation, i'd need to steal COMPARE, too and whatever hangs off of that :|
jnthn timotimo: If it's marked PARROT_EXPORT then maybe...but also need to know that it doesn't poke into internals anywhere 10:38
10:40 hlin_ left
timotimo it is not marked export; i don't see it poke around in internals, though 10:40
10:40 hlin_ joined
timotimo oh, what is PARROT_NCI? perhaps that's internal-ish? 10:40
jnthn Not sure
timotimo well, now i've gotten it to work by copypasting lots of bits into the qrpa pmc; Parrot_NCI_attributes (and the above macro seems to be a cast to that) seems a little bit internaly in that it would probably change some time in parrots future 10:42
can i implement a sort method for the pmc in nqp perhaps? that would be lovely. i don't have much experience with C :( 10:43
it amuses me that no list is ever sorted in the building process of nqp :)
more tests seem to pass now, i'll be excited to see the end result 10:48
and do benchmarks of course
THINE TESTS SHALL PASS 10:52
dalek p/qrpa_experiment: b136109 | (Timo Paulssen)++ | src/pmc/qrpa.pmc:
give qrpa the methods instead.
10:55
p/qrpa_experiment: 91353c0 | (Timo Paulssen)++ | src/pmc/qrpa.pmc:
steal the quicksort implementation from parrot
p/futile_qrpa: af36e92 | (Timo Paulssen)++ | src/ (12 files):
search&replace nqp::list -> nqp::qlist; change .push to nqp::push etc
p/futile_qrpa: 491eec9 | (Timo Paulssen)++ | src/ (6 files):
so many search and replace. probably too many.
p/futile_qrpa: ccfaf88 | (Timo Paulssen)++ | src/ (7 files):
lots and lots of nqp::un/shift/push/pop.
p/futile_qrpa: be526ca | (Timo Paulssen)++ | src/NQP/World.pm:
final fixups
nqp/futile_qrpa: 6c090d2 | (Timo Paulssen)++ | src/pmc/qrpa.pmc:
nqp/futile_qrpa: give qrpa the methods instead.
11:01 grondilu left
timotimo rakudo's setting compile step doesn't seem to become any faster with qrpa. i wonder if i did something wrong? 11:03
oh, i think i compiled the "pure" rakudo with a qrpa-nqp 11:10
11:13 fgomez left
timotimo is not sure how to have two different rakudos on the same machine without having multiple users 11:18
hoelzro different prefixes? 11:19
you probably need two separate parrots as well, I'd guess
nwc10 would hope that if both use the same parrot, life gets easier 11:21
[Coke] yawns. 11:22
timotimo hm, if i use two different versions of parrot - like just 5.3 and 5.3 - will that already be enough to allow me to have two different nqps and rakudos? 11:27
now i made extra sure. there is 0 speed difference in my benchmarks between qrpa and rpa ... >_> 11:29
but i've got to go now anyway
tadzik that's weird 11:31
timotimo yes, it is
tadzik maybe it still uses the old RPA?
timotimo my code is up on github in perl6/nqp and timo/rakudo if you want to see for yourself if i made any blatantly obvious mistakes
when i still missed the .sort method in qrpa, i got errors in the spectests about it missing, so ... i don't think so. i'd be glad if someone proved me wrong. 11:32
gotta run! ttyl
11:32 Heather joined
Heather hi! 11:32
jnthn hi, Heather
Heather how to get file extension? 11:33
jnthn Can always regex it... /'.'(\w+)$/ or so 11:35
[Coke] r: say "coffee" or die;
camelia rakudo f3c3fe: OUTPUT«coffee␤»
[Coke] smart bot. :P
jnthn tbh, if you said that to me, I'd say coffee as well...
:P
Heather ) 11:38
jnthn thank you! 11:43
11:44 rindolf left, rindolf joined 11:46 spider-mario joined
Heather how to declare enum 11:47
I see 11:48
r: enum <a,b>
camelia rakudo f3c3fe: ( no output )
jnthn Well, best give it a name
moritz perlgeek.de/blog-en/perl-5-to-6/16-enums.html
jnthn enum Drink <Tea Coffee>
Heather r: enum x <a,b>; say x.a
[Coke] also <a,b> is probably not quite what you meant.
camelia rakudo f3c3fe: OUTPUT«No such method 'a' for invocant of type 'x'␤ in block at /tmp/TNILTaVaRE:1␤␤»
[Coke] Heather: no comma
moritz oorks, that looks a bit out of date
I have to fix that, eventually
jnthn And ::, not .
Heather r: enum Drink <Tea Coffee>; say Drink::Tea 11:49
camelia rakudo f3c3fe: OUTPUT«Tea␤»
Heather thank you 11:50
[Coke] r: enum Drink <Tea Coffee>; say Coffee; #ahhhh.
camelia rakudo f3c3fe: OUTPUT«Coffee␤»
Heather wait ) p6eval is not camelia )
[Coke] she's a butterfly of many hats.
Heather "of many hats." ?
[Coke] colorful language for "she has many skills" 11:51
Heather r: given "a" { when "b" | "a" { say "a" } } 11:52
camelia rakudo f3c3fe: OUTPUT«a␤»
Heather sometimes perl pretty intuitive
when I get extension with $arg ~~ /'.'(\w+)$/ how can I get file name without extension .... 12:02
timotimo tadzik: were you going to try out the code?
Heather $arg - $/ ?
)
tadzik timotimo: no, sorry, no tuits 12:03
moritz Heather: $/.prematch iirc
r: 'abc.txt' ~~ /'.'(\w+)$/; say $/.prematch 12:04
camelia rakudo f3c3fe: OUTPUT«abc␤»
moritz aye
timotimo tadzik: no problem 12:05
Heather moritz works ! thank you
can I regex in given ? 12:11
timotimo you mean with "when"?
Heather yes or somehow alike
timotimo given "foo" { when /.../ { say "at least three letters" }; when /../ { say "at least 2 letters" } }
Heather r: given "foo" { when /.../ { say "at least three letters" }; when /../ { say "at least 2 letters" } } 12:12
camelia rakudo f3c3fe: OUTPUT«at least three letters␤»
Heather timotimo cool, thank you
timotimo sorry my ssh is dying. may need rx/.../
12:13 rindolf left 12:14 rindolf joined
Heather r: if "a.x" ~~ /z/ | /a/ { say "x" } 12:16
camelia rakudo f3c3fe: OUTPUT«x␤»
Heather r: if "a.x" ~~ /z/ | /y/ { say "x" }
camelia rakudo f3c3fe: ( no output )
Heather well... it like you write random code and it works... 12:17
I wonder...
12:18 domidumont left
Heather r: if "a.x" !~~ /z/ | /y/ { say "x" } 12:18
camelia rakudo f3c3fe: OUTPUT«x␤»
Heather r: if "a.x" !~~ /z/ | /x/ { say "x" }
camelia rakudo f3c3fe: ( no output )
timotimo it would appear the List class doesn't properly use qlist yet m( 12:19
12:19 domidumont joined
timotimo who ever has the tuits would be very welcome to correct nqp::p6list (apparently in rakudo rather than in nqp) to create qlist instead of list objects. i don't have the necessary overview to see what needs changing 12:23
Heather strange 12:24
r: given "foo" { when /f/ { say "fffff" }; }
camelia rakudo f3c3fe: OUTPUT«fffff␤»
timotimo you seem to expect implicit ^^^H and $? 12:25
oh. well that's interesting
oh, Heather, that's a optimization bug 12:26
i've already fixed it, but the fix hasn't been merged yet
12:27 sqirrel left
timotimo i seem to have forgotten to create a pull request 12:28
Heather good.
timotimo moritz: am i looking wrong or did you close the pullrequest without actually merging? 12:29
at least github didn't write "branch was merged"
moritz timotimo: I've done a fast-forward merge, which github didn't recognize
timotimo it seems i must look closer. 12:30
moritz timotimo: but commit 5122e2ead909c61ba2648023bb16f789d1389ac5 is in nom
timotimo yes, it's there!
moritz and in fact rakudo's behavior is correct
because !~~ is a negated operator, it desugars to if !('a.x' ~~ /x/|/y/) { ... } 12:31
timotimo my optimization doesn't touch it, either 12:32
that would explain it
timotimo unpanics
12:32 FROGGS joined
timotimo FROGGS: hey! 12:32
12:32 terrencehan left
FROGGS \o/ 12:32
12:32 Nom- joined
timotimo FROGGS: do you have a modicum of tuits for qrpa? 12:33
FROGGS google modicum
goodles*
timotimo: yes
timotimo 'perl6_list_from_rpa' seems to need a fix tocreate qrpa instead of rpa 12:34
FROGGS "give qrpa the methods instead." timotimo++
ahh, okay
timotimo so far it seems to dispatch to a parrot op, so it probably needs to be newly implemented in the rakudo/src/perl6/ops or whereever you'll find that
FROGGS timotimo: where is that?
k
timotimo src/Perl6/Ops.pm
FROGGS will give it a look 12:35
Nom- Hey guys... stumbled accross rdstar.wordpress.com/2012/07/12/nqp...w-to-port/ earlier... was wondering if anyone knows anything about whether those efforts might have started at all? 12:37
12:37 jtpalmer joined
moritz Nom-: lue should know 12:38
[Coke] though I imagine if lue is working on it without taking what jnthn is doing with nqp-jvm, that would be odd.
Heather I want tool to convert batch to bash and backward :) github.com/Heather/script/blob/mas...bin/script 12:39
Nom- It's something that interests me is all :) 12:40
I'm not very proficient with LLVM yet, but i'm learning
arnsholt Since that blog post was written, jnthn++ has ported almost all of NQP to the JVM 12:41
How he did that would likely be a good guide for how to do a different backend
jnthn The JVM provides significantly more runtime infrastructure than LLVM.
Nom- Yeah, aware of that
arnsholt Oh, definitely 12:42
jnthn Which isn't really a VM in the same sense.
Nom- I was actually toying with the idea of integrating it into the Rubinius VM
arnsholt Troo, troo
Rubinius or PyPy would be more similar to JVM I think
jnthn *nod*
jnthn is currently fighting separate compilation issues in the JVM port... 12:43
dalek osystem: 42c80de | colomon++ | META.list:
Change XML (exemel) to point to my working fork
12:43 tgt left
Heather Rubinius VM looks nice 12:43
FROGGS colomon++ # resistance is futile 12:44
Nom- Yeah, my experience with it has been quite positive... the startup time is slower than CRuby, but runtime performance is substantially faster now
And they're continually improving it
12:46 tgt joined 12:47 brrt joined
timotimo FROGGS: did you make any progress in understanding or implementing? 12:47
12:51 rindolf left
FROGGS timotimo: beeing at work, I'll let you know if I have something or when I get stuck 12:51
timotimo ah, good. thank you!
12:52 rindolf joined
timotimo what, i seem to not be using nqp::qlist at all yet m) 12:52
i must have reverted those changes some time and forgotten about it 12:53
12:54 Heather left, cognominal left 12:55 crab2313 joined
Nom- So if I follow this right... been a while since I knew this stuff... Parrot has a PIR language... there's a NQP compiler written in PIR 12:57
Although, from what I'm seeing, the compiler is currently generated from...not sure... perl5 code? 12:58
jnthn Nom-: NQP is written in NQP; it's bootstrapped.
12:58 silug joined
Nom- Ok, so phase 1 in any port is ultimately to rewrite that bootstrap I'm guessing... 12:59
timotimo the nqp compiler is being generade from nqp code
Nom- looks back at the JVM code again
timotimo FROGGS: feel free to sed nqp::list( to nqp::qlist in nqp/src/ 13:01
jnthn Nom-: I should write a "how to" doc on porting, but the overall approach is that you write a code generator for the backend, write the bits of runtime support, and then set things up as a cross-compiler. You then get to the point of cross-compiling/running/passing most of the NQP test suite. Then you use the cross-compiler to cross-compile NQP itself.
[Coke] wonders if the nqp repo is going to get a <vm> dir above the various stageN dirs now.
jnthn [Coke]: See jvm-support branch in NQP for how I have it so far.
FROGGS timotimo: k 13:03
jnthn [Coke]: But short answer is that stage0 is per-vm, and stage1/stage2 are always generated (this second bit is already true) 13:04
timotimo alternatively, maybe we should replace code like my @foo := nqp::q?list(); with my @foo; because there's the default_for thing anyway that will create a qlist or list
jnthn: does that make sense to you?
jnthn timotimo: Only if we were going to declare a variable anyway 13:05
timotimo of course
jnthn my @a := nqp::list() # is kinda a waste of code, for example
13:05 domidumont left
timotimo i was refering to only those kinds of list creation 13:06
jnthn ah, then feel to clean them up
pmichaud I'm worried about the autothreading commit in #128... it checks explicitly for Any in the signature. What about signatures that aren't Any, should they autothread? Or is Junction defined to autothread only over the Any type? 13:07
timotimo pmichaud: Junction derives from Mu, Any derives from Mu 13:08
pmichaud timotimo: what about another class that derives from Mu
timotimo oh. that's not a bad point actually. 13:09
what reason is there to derive from Mu rather than Any?
moritz r: class A is Mu { }; say A.^mro; sub f($x) { }; f A
camelia rakudo f3c3fe: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'f' will never work with argument types (A) (lines 1, 1)␤ Expected: :($x)␤»
moritz timotimo: if one doesn't want the gazillions of methods defined in Any 13:10
timotimo mhm
or even any of the gazillion
or even use any of the gazillion already existing subs :)
13:10 Gwyxx left 13:11 SamuraiJack left
pmichaud the fact that there's at least one class outside of Any (Junction) means that there may be models in which there will be more. 13:11
timotimo indeed. i will change the code. still curious ;)
pmichaud for example, S02 currently says that Failure derives from Mu (could be fossil)
moritz well, non-Any types don't autothread
timotimo r: say Failure.^mro;
camelia rakudo f3c3fe: OUTPUT«(Failure) (Any) (Mu)␤»
moritz as demonstrated above 13:12
timotimo pmichaud: i'll change that piece of spec for you :)
pmichaud timotimo: no, don't just "change the spec"
there may be a good reason for Failure to derive from Mu and not Any
and rakudo might just have it wrongly placed.
13:12 SamuraiJack joined
timotimo mhm, right 13:12
pmichaud moritz: do we know that non-Any types don't autothread? I can't seem to find that anywhere in the spec. 13:13
dalek p-jvm-prep: ddd73cb | jnthn++ | / (5 files):
Fix HLL types seperate compilation leaks.
p-jvm-prep: 5559d13 | jnthn++ | / (4 files):
More assorted separate compilation fixes.
p-jvm-prep: 9f40bc8 | jnthn++ | nqp-src/NQPCORE.setting:
Fix one more sep-comp leak.
jnthn pmichaud: Autothreading happens (in current impl, and afaik spec) as a binding failover.
pmichaud jnthn: right
colomon \o/
jnthn pmichaud: The fact that Junction !~~ Any causes the failure. 13:14
And then we say "oh, it's a Junction, let's autothread"
pmichaud jnthn: what about Junction !~~ Foo where Foo isn't an Any
jnthn So the auto-threader looks for the Junction type in particular.
pmichaud jnthn: yes, that's my point.
the autothreader looks for Junction type, while the optimization added is looking for Any
moritz so if you want your custom type to autothread, you have to subclass Junction
pmichaud let me summarize it this way 13:15
moritz still doesn't see the case where the optimizer can cause wrong behavior
13:15 domidumont joined
jnthn r: class OutOfAny is Mu { }; sub x(OutOfAny $x) { }; x(all(OutOfAny, OutOfAny)) 13:15
camelia rakudo f3c3fe: ( no output )
jnthn r: class OutOfAny is Mu { say 'here' }; sub x(OutOfAny $x) { }; x(all(OutOfAny, OutOfAny))
camelia rakudo f3c3fe: OUTPUT«here␤»
jnthn oops 13:16
r: class OutOfAny is Mu { }; sub x(OutOfAny $x) { say 'here' }; x(all(OutOfAny, OutOfAny))
camelia rakudo f3c3fe: OUTPUT«here␤here␤»
jnthn Yes, it works
pmichaud++ # noticing things
pmichaud does f3c3fe have the optimization applied?
here's the summary
the dispatcher is saying "autothread anything that isn't a Junction"
the optimizer is saying "autothread only those things with Any parameters" 13:17
the two are not equivalent.
moritz "autothread only those things with Any parameters" is a subset of "autothread anything that isn't a Junction", no? 13:18
pmichaud I didn't say that quite right.
but my point is that it's a subset. 13:19
which means that the optimizer won't autothread some things that it should.
moritz when the optimizer doesn't autothreads it, the runtime can still do it
the optimizer looks for cases where it's safe to perform its operation 13:20
it's not a problem that it can't optimize all cases
pmichaud hmmmm
moritz at least not a problem with correctness
13:20 cognominal joined
moritz possibly one with performance 13:20
pmichaud then at least the comment in the commit is wrong
# only if a chain operator handles Any, rather than Mu, in its signature
+ # will autothreading actually happen.
and also 13:21
+ # And the Any type, important for being the "not junction" type.
+ has $!Any;
both of those comments are at least semantically misleading.
timotimo ~i've changed it :) 13:22
jnthn Woo, NQP hosted on the JVM can now spit out an NQP for the JVM.
Now I "just" need to do the stage2 bit of the Makefile and hope it works... :) 13:23
pmichaud there are other issues with the commit. For example, the variable says $!SETTING but what it's really looking for is CORE
arnsholt jnthn: We eagerly await news of how it goes =) 13:24
timotimo my ssh connections are currently misbehaving, else i'd've already pushed the fixing commit
pmichaud CORE is *a* setting, it's not *the* setting
13:25 bluescreen10 joined
Nom- Just to be sure I'm not going crazy, t/nqp/* is *actual* NQP code I need to parse, right? 13:25
pmichaud moritz: I get your point about the optimizer only handling those it knows are safe... point well made. Thanks for clarifying. 13:27
13:27 nemesys left
jnthn Nom-: I don't suggest porting be done by writing an NQP parser. 13:28
Nom-: Things are factored so you can use the existing one and just write an extra backend, then plug your backend in. That way, you can focus just on cdoe generation at first. 13:29
*code
pmichaud more importantly, writing an NQP parser means writing a regular expression engine :-)
colomon do install failures kill pandabrew's rebootstrap?
er, tadzik ^^^ 13:30
arnsholt A key point about NQP, is that there's more to it than the parser and code generation. It also depends on runtime support for the object model and grammar engine, for example 13:31
Nom- hmmm
jnthn: You've written a parser, or no?
jnthn Nom-: I didn't write a parser for the JVM port, no. 13:32
Nom-: I implemented regex/grammar compilation and the various other bits of infrastructure so that I could cross-compile the existing parser.
13:33 kaare_ joined
dalek p/jvm-support: 613ccd6 | jnthn++ | src/vm/jvm/stage0/ (10 files):
Update stage0 to get sep-comp fixes.
13:33
p/jvm-support: a550ae8 | jnthn++ | / (8 files):
Bring in the various sep-comp fixes.
p/jvm-support: 08c8cb5 | jnthn++ | / (2 files):
Final tweaks to get a working stage1.
jnthn Nom-: The overall flow is source code => AST => code for the target VM
Nom-: You don't need to re-write the source code => AST bit. 13:34
pmichaud (You probably don't want to re-write the source code => AST bit :)
jnthn :D
Nom- Ok
dalek osystem: 619f286 | colomon++ | META.list:
Switch Template6 and XML back to supernovus++
13:35
Nom- So ultimately you need parrot in order to build anything then?
hmmmm i take that back.. i still don't understand this code et
*yet
jnthn Nom-: You need an existing NQP implementation while you build up your cross-compiler/runtime support, yes. 13:36
Nom-: Then once you have that, you use it to compile NQP itself.
Nom-: That gives you an NQP that is independent of Parrot.
Nom- Ok, that's making more sense to me
jnthn NQP on the JVM doesn't need Parrot at all by now.
moritz so you can bootstrap your own NQP backend from the JVM? 13:37
jnthn moritz: Yeah, you could use NQP on JVM as your starting point, though it's not so battle-hardened/convenient as the Parrot impl yet. I'm getting there with the build... :) 13:40
dalek p/jvm-support: 04782d5 | jnthn++ | tools/build/Makefile-JVM.in:
Add stage2 build to Makefile.

Works.
13:45
pmichaud "Works." jnthn++ 13:47
timotimo my simple fix make tests fail, great >_<
jnthn pmichaud: For convenience I'm wondering about having an nqp.bat / nqp.sh that fires off the JVM with the appropriate class path arguments. For the "make install", these could contain the paths we install to, menaing running NQP looks a lot like today, but relocation is just a matter of fixing up paths in a .bat/.sh file (meaning we should get a way to do the relocatable install...) 13:49
13:49 cibs_ joined
jnthn pmichaud: Does that sound sane? I basically suck at install related things :) 13:49
[Coke] jnthn: will perl ConfigureJVM eventually be perl Configure --jvm ? 13:50
arnsholt No boom? Cool!
jnthn Oh, that's another good question :)
[Coke]: I'm wondering if Configure.pl is just a facade and it delegates to ConfigureParrot/ConfigureJVM etc. 13:51
[Coke] if not, we might want to make it configureJVM.java
13:51 skids joined
jnthn [Coke]: Passing all arguments along except the --jvm or --parrot one 13:51
[Coke] no need to make the JVM port depend on perl5.
pmichaud jnthn: I'm not sure that .bat/.sh is the way to go in the long run, but it certainly should work out for the time being. 13:52
jnthn pmichaud: OK
arnsholt How much configuring does ConfigureJVM do ATM?
pmichaud I suspect the configure/build system will need some love after this, and that's okay.
jnthn arnsholt: Little.
13:53 crab2313 left
arnsholt Yeah, that's what I thought 13:53
jnthn pmichaud: Yeah. I don't feel like the right person to do it, but I know how your tuit supply is...
[Coke] jnthn: I need to make the nqpjvm generated makefile -j safe.
jnthn [Coke]: Hm, I thought I'd got he deps right, but maybe not
[Coke] make -j3 failed pretty quick.
waiting to see if single threaded fails.
jnthn [Coke]: OK. :) 13:54
arnsholt For the time being, I'd argue that consolidating everything into Configure.pl is probably the best solution
[Coke] jnthn++ # this is so exciting. ;)
arnsholt But I think pmichaud is right that the build system will likely need some polish now that we have several backends
pmichaud s/polish/refactoring/ # I suspect
13:55 cibs joined, cibs_ left
pmichaud anyway, I'll be willing to do the configure/build stuff when I get the tuits, but I don't really know when that will be. Until then we can go with "good enough to work" or hope that someone else comes along and does it. :) 13:56
jnthn +1 13:57
pmichaud since I'm giving a talk on p6/jvm at yapc::na, it's likely I'll try to make sure something happens before then :)
[Coke] jnthn: single threaded works. I'll see if I can get some tuits tonight.
[Coke] still hasn't decided if he's going. :(
jnthn [Coke]: OK. I'm still Makefile hacking at the moment, so I may catch it
pmichaud [Coke]: lots of us are going to be there.. might be worth the trip. :)
jnthn [Coke]: Even I will be at YAPC::NA this year, for the first time... :) 13:58
pmichaud just look at the talk schedule and then figure out how you can justify not coming :) :)
[Coke] pmichaud: the toughest part (aside from self funding) is that I do perl for fun, not for work. 13:59
well, not directly for work, anyway.
jnthn [Coke]: ah, I think I may have spotted it.... 14:01
colomon is still hoping to go...
[Coke] has an nqp.jar, and tries to figure out how to run it. 14:03
14:04 cibs_ joined
[Coke] could use that .sh file. ;) 14:04
pmichaud [Coke]: yeah, I hear ya. The decision is made a lot easier for me this year since yapc::na is within driving distance. If I was having to fly in, it'd be a much harder call for me to make.
[Coke]: maybe java -jar nqp.jar 14:05
jnthn [Coke]: Gimme a few moments...
14:07 cibs left
pmichaud decides he can wait no longer and has to attempt the nqp-jvm build. 14:08
jnthn C:\consulting\rakudo\nqp>nqp -e "say('OH YEAH')"
OH YEAH
pmichaud: 2 minutes, I'll push something to make that easier... :)
14:09 cibs joined
dalek p/jvm-support: c321800 | jnthn++ | tools/build/Makefile-JVM.in:
Various Makefile additions.
14:09
p/jvm-support: 459c817 | jnthn++ | .gitignore:
Update .gitignore.
[Coke] if I go, it'll be to catch up with my sixies! . o O (we need a better word for this. ;) 14:10
14:10 cibs_ left
jnthn [Coke]: Hopefully that may fix -j3 14:10
[Coke]: Not that a bootstrapped build is very parallelizable...
moritz can't you compile Actions.pm and Grammar.pm in parallel? 14:11
jnthn moritz: In NQP they go all into a single NQP.pm anyway 14:12
moritz: But even in Rakudo you can't as the grammar mentions Perl6::Actions
PerlJam [Coke]: you should go to YAPC::NA 14:14
pmichaud PerlJam: you are going, yes? 14:15
14:15 xilo joined
PerlJam I'm planning on it, yes. 14:15
colomon BTW, the URI module worked fine yesterday but is broken today. 14:16
might have been day before yesterday.
colomon needs to get automatic smoke testing running instead of doing it manually every few days....
PerlJam (I haven't yet registered or gotten a hotel room, but I've still got over a month, right? :)
timotimo i'd like to cut up a string into substrings for 1st, nth, 2nth, 3nth char, 2nd, 1+nth, 1+2nth, ... char etc etc; i thought to use classify, but that won't work properly like "foo bar baz".comb.kv.classify({$_.key % 4}) or something similar. advice? 14:17
14:17 woolfy left
moritz timotimo: small example of what you want to achieve? 14:17
[Coke] jnthn++ #makefile fixes. 14:19
jnthn [Coke]: It worked?
[Coke] pmichaud: the -jar complains, basically, that the jar isn't runnable.
colomon hopes PerlJam is right about registering, etc.... 14:20
[Coke] that is fixable (so we could have that automatically run some class)
14:20 PacoAir joined
gtodd are the updates to nqp (ie. those in nqp/jvm-support) that appear in the rakudo repo's nqp "submodule" enough for someone to try getting nqp running on the jvm? ... with presumably some manual hacking in nqp/ somewhere 14:20
[Coke] gtodd: that branch is working right now, I think.
check it out, "perl ConfigureJVM.pl", you get a .jar file. shortly you'll have a .sh script that runs the jar file for you. 14:21
jnthn: what's the class to run for the command line?
gtodd ok great ... I didn't see anything after git pull so will dig around a bit
timotimo moritz: vigenere breaking. "barbarbar" op 3 => "bbb", "aaa", "rrr" 14:22
gtodd hmm I guess it's because I'm not on a branch ... still learning git :-) 14:23
[Coke] jnthn: at the end, you're copying a lot of .class files (3x each) to the top dir?
gtodd: git checkout -b jvm-support remotes/origin/jvm-support
dalek p/jvm-support: 6918dfd | jnthn++ | / (5 files):
Add convenience .bat/.sh to run NQP on JVM.
moritz r: say 'barbarbar'.comb.classify({$_}).perl
camelia rakudo f3c3fe: OUTPUT«("b" => ["b", "b", "b"], "a" => ["a", "a", "a"], "r" => ["r", "r", "r"]).hash␤»
jnthn [Coke]: Yeah, I didn't figure out why on earth it copies them multiple times... 14:24
The .sh there is untested; the .bat is known to work.
moritz r: say 'barbarbar'.comb.classify({$_}).map({ .key => +.value }).perl
camelia rakudo f3c3fe: OUTPUT«No such method 'key' for invocant of type 'Any'␤ in block at /tmp/D9tPDJzNuF:1␤␤»
moritz r: say 'barbarbar'.comb.classify({$_}).pairs.map({ .key => +.value }).perl
camelia rakudo f3c3fe: OUTPUT«No such method 'key' for invocant of type 'Any'␤ in block at /tmp/TyvKh2fBNy:1␤␤»
moritz r: say 'barbarbar'.comb.classify({$_}).pairs.perl
camelia rakudo f3c3fe: OUTPUT«("b" => ["b", "b", "b"], "a" => ["a", "a", "a"], "r" => ["r", "r", "r"]).list␤»
moritz r: say 'barbarbar'.comb.classify({$_}).pairs.map(-> $p { $p.key => +$p.value }) 14:25
camelia rakudo f3c3fe: OUTPUT«b 3 a 3 r 3␤»
moritz r: say 'barbarbar'.comb.classify({$_}).pairs.map(-> $p { $p.key => +$p.value }).invert
camelia rakudo f3c3fe: OUTPUT«No such method 'invert' for invocant of type 'List'␤ in block at /tmp/swsAQvgvvD:1␤␤»
moritz r: say 'barbarbar'.comb.classify({$_}).pairs.map(-> $p { $p.key => +$p.value }).classify: *.key
camelia rakudo f3c3fe: OUTPUT«("b" => ["b" => 3], "a" => ["a" => 3], "r" => ["r" => 3]).hash␤»
moritz meh
r: say 'barbarbar'.comb.classify({$_}).pairs.map(-> $p { $p.key => +$p.value }).perl 14:26
camelia rakudo f3c3fe: OUTPUT«("b" => 3, "a" => 3, "r" => 3).list␤»
moritz r: say 'barbarbar'.comb.classify({$_}).pairs.map(-> $p { $p.key => +$p.value }).hash.invert.perl
camelia rakudo f3c3fe: OUTPUT«(3 => "b", 3 => "a", 3 => "r").list␤»
moritz timotimo: close enough? :-)
timotimo oh, you already count the occurences?
gtodd [Coke]: thanks
moritz timotimo: yes
r: say 'barbarossa'.comb.classify({$_}).pairs.map(-> $p { $p.key => +$p.value }).hash.invert.perl 14:27
camelia rakudo f3c3fe: OUTPUT«(2 => "b", 3 => "a", 2 => "r", 1 => "o", 2 => "s").list␤»
timotimo neat. now let me try to understand it :D
colomon r: say bag 'barbarbar'.comb;
camelia rakudo f3c3fe: OUTPUT«bag("b" => 3, "a" => 3, "r" => 3)␤»
timotimo i don't see where it gets sliced, though
moritz ooh, colomon++
timotimo: .comb slices it in characters
colomon bag: it's handy. ;)
moritz aye.
timotimo i have to run now, but i'll explain better what i meant when i get back on the puter 14:28
colomon rn: say 'barbarbar'.comb.bag
camelia rakudo f3c3fe, niecza v24-37-gf9c8fc2: OUTPUT«bag("b" => 3, "a" => 3, "r" => 3)␤»
[Coke] jnthn: it works. could use a chmod +x 14:29
jnthn++
moritz guesses that timotimo actually wants slicings of different lengths
[Coke] gtodd: now when you build, you can do:
sh src/vm/jvm/nqp.sh -e "say(3)"
3
pmichaud pmichaud@kiwi:~/p6/nqp-jvm$ ./nqp.sh -e "say(3)" 14:30
3
\o/
jnthn [Coke]: Hm, I put the chmod +x in the Makefile, I thought.
pmichaud no REPL?
[Coke] (oh, does it install it? I just ran it directly without rebuilding) 14:31
jnthn: never mind. ;)
pmichaud my nqp.sh is chmod +x already
jnthn pmichaud: Didn't figure out why the REPL ain't quite working yet.
[Coke] looks like parrot is winning on startuptime, but we knew that.
jnthn pmichaud: Probably because I didn't properly implement fhreadline or so :)
pmichaud something like that, probably.
probably won't be long to fix :)
14:31 fgomez joined
jnthn No...I've mostly focused on "critical path to bootstrap" 14:31
pmichaud pmichaud@kiwi:~/p6/nqp-jvm$ make test 14:32
make: *** No rule to make target `test'. Stop.
:-(
jnthn pmichaud: Yes, got that locally :)
Nom- jnthn: I feel like I'm missing an entire section of code on how you get from nothing to what's in the nqp repo... do I need to look at your other repo? 14:33
Like I see all the code which parses these JAST statements, but I can't *yet* see what's generating them 14:34
14:34 PacoAir left 14:35 PacoAir joined
jnthn Nom-: In the nqp repo (provided you're in jvm-support branch) it lives in src/vm/jvm/QAST/JASTNodes.nqp 14:37
alester ack2 is out! Whee! 14:40
pmichaud gist.github.com/pmichaud/5413260 # lots of passing tests 14:41
alester++ # ack2 14:42
jnthn pmichaud: Matches what I have here, yeah.
14:42 kaleem left
moritz alester++ 14:42
jnthn pmichaud: deletepos is just an NYI, 24-modules.t is a but I need to hunt and squish. :)
pmichaud jnthn: that's.... impressive. Beyond impressive.
jnthn *bug
moritz alester: did you release it, or did it escape? :-) 14:43
pmichaud I have to go do house-y things for a while... bbl
jnthn o/
14:44 frdmn left
colomon well, in the module smoke test, things got better because of Template6 and XML, and worse because a ton of modules depend on URI. :( 14:44
timotimo moritz: i wanted to turn "abcdef" into "ace" and "bdf" when i supply 2 or "ad" "be" "cf" when i supply 3 14:47
14:48 fgomez left
timotimo the "barbarbar" example was dumb, because all the same letters ended up in the same string each. 14:49
colomon r: say "abcdef".comb.kv.perl 14:50
camelia rakudo f3c3fe: OUTPUT«((0, "a"), (1, "b"), (2, "c"), (3, "d"), (4, "e"), (5, "f")).list␤»
moritz that's what we do with unpack in p5
timotimo i got that far, but classify seems to break that
moritz .comb breaks it
timotimo oh, maybe i have to .lol.classify? 14:51
moritz p5eval: [unpack '(A3)', 'barbarossa']
p5eval moritz: ["bar"]
moritz p5eval: [unpack '(A3)*', 'barbarossa']
p5eval moritz: ["bar","bar","oss","a"]
colomon r: say "abcdef".comb.kv.classify({ $_.key % 3 })
camelia rakudo f3c3fe: OUTPUT«No such method 'key' for invocant of type 'Int'␤ in block at /tmp/11ad1C8sIe:1␤␤»
moritz camelia: .comb.pairs
erm, meant colomon
timotimo r: say "abcdef".comb.kv.lol.classify({ $_.key % 3 })
camelia rakudo f3c3fe: OUTPUT«No such method 'key' for invocant of type 'ListIter'␤ in block at /tmp/7S5lUtO7yX:1␤␤»
colomon r: say "abcdef".comb.pairs.classify({ $_.key % 3 }) 14:52
camelia rakudo f3c3fe: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/iRkDrcxwwF:1␤------> say "abcdef".comb.pairs.cl⏏assify({ $_.key % 3 })␤ expecting any of:␤ method arguments␤ postfix␤ infix stopper␤ infix or meta-infix␤ …
timotimo r: say "abcdef".comb.kv.lol.classify({ $_[0].key % 3 })
camelia rakudo f3c3fe: OUTPUT«No such method 'key' for invocant of type 'ListIter'␤ in block at /tmp/0pEFNm9PUV:1␤␤»
timotimo r: say "abcdef".comb.kv.lol.classify({ $_[0] % 3 })
camelia rakudo f3c3fe: OUTPUT«Cannot call 'Real'; none of these signatures match:␤:(Mu:U \v: Mu *%_)␤ in method Real at src/gen/CORE.setting:870␤ in sub infix:<%> at src/gen/CORE.setting:2977␤ in sub infix:<%> at src/gen/CORE.setting:2974␤ in block at /tmp/y6_6hTMd5M:1␤␤»
moritz r: say "abcdef".comb.pairs.classify({ $_.key % 3 })
camelia rakudo f3c3fe: OUTPUT«("0" => [0 => "a", 3 => "d"], "1" => [1 => "b", 4 => "e"], "2" => [2 => "c", 5 => "f"]).hash␤»
PerlJam is this some kind of golf? 14:53
colomon PerlJam: collaborative problem solving.
timotimo ah, .pairs seems better 14:54
dalek p/jvm-support: c422bb3 | jnthn++ | src/vm/jvm/QAST/JASTNodes.nqp:
Add forgotten JAST node construction opt.
p/jvm-support: 0397e83 | jnthn++ | / (2 files):
Add testing targets.

Will need some triage.
moritz r: sub splitchars($str, $chars) { gather for (0, *+$chars ...^ *>$str.chars) { $str.substr($_, $chars) } }; say splitchars('barbarossa', 3)
timotimo i think i'll use something very much like classify, but for lists instead. that way i can just >>.value afterwards
camelia rakudo f3c3fe: OUTPUT«␤»
moritz r: sub splitchars($str, $chars) { gather for (0, *+$chars ...^ *>$str.chars) { take $str.substr($_, $chars) } }; say splitchars('barbarossa', 3) 14:55
camelia rakudo f3c3fe: OUTPUT«bar bar oss a␤»
moritz r: sub splitchars($str, $chars) { gather for (0, *+$chars ...^ *>$str.chars) { take $str.substr($_, $chars) } }; say splitchars('barbarossa', 3).classify({$_}).perl
camelia rakudo f3c3fe: OUTPUT«("bar" => ["bar", "bar"], "oss" => ["oss"], "a" => ["a"]).hash␤»
moritz r: sub splitchars($str, $chars) { gather for (0, *+$chars ...^ *>$str.chars) { take $str.substr($_, $chars) } }; say splitchars('barbarossa', 3).classify({$_}).pairs.map({ .key => +.value }).perl
camelia rakudo f3c3fe: OUTPUT«No such method 'key' for invocant of type 'Any'␤ in block at /tmp/MNnsf9Q1AM:1␤␤»
moritz r: sub splitchars($str, $chars) { gather for (0, *+$chars ...^ *>$str.chars) { take $str.substr($_, $chars) } }; say splitchars('barbarossa', 3).classify({$_}).pairs.map({; .key => +.value }).perl 14:56
camelia rakudo f3c3fe: OUTPUT«("bar" => 2, "oss" => 1, "a" => 1).list␤»
moritz timotimo: like this?
timotimo i'm not sure we're on the same page
moritz neither
timotimo i'd like "barbarossa" to turn into "bboa", "aas", "rrs"
each string only has every 3rd character
moritz ah
timotimo fails epically at communicating today 14:57
spider-mario r: ([Z~] 'barbarossa'.comb(/.**3/).map: {[.comb]}).perl
camelia rakudo f3c3fe: ( no output )
spider-mario r: ([Z~] 'barbarossa'.comb(/.**3/).map: {[.comb]}).perl.say
camelia rakudo f3c3fe: OUTPUT«("bbo", "aas", "rrs").list␤»
moritz then I'm totally on the wrong track
PerlJam timotimo: so, foo("abcdefg",3), you'd want "adg", "be", "cf" (assuming foo does whatever you wanted) >
er ?
moritz spider-mario: swallows the last letter
spider-mario I’m having trouble trying to interpolate a variable to replace the hard-coded 3 in the regexp
timotimo yes, PerlJam
use eval to create the regexp :D 14:58
colomon moritz: why? seems like it's just a matter of transforming ("0" => [0 => "a", 3 => "d"], "1" => [1 => "b", 4 => "e"], "2" => [2 => "c", 5 => "f"]) into a series of strings. Might not be the best golfed method, but will definitely work...
r: ([Z~] 'barbarossa'.comb(/.**1..3/).map: {[.comb]}).perl.say 14:59
camelia rakudo f3c3fe: OUTPUT«("bboa",).list␤»
14:59 kaleem joined
moritz r: sub slice($str, $chars) { (^$chars).map: -> $m { $chars.comb.pairs.grep(*.key %% $chars == $m)>>.value.join } } 14:59
camelia rakudo f3c3fe: ( no output )
moritz r: sub slice($str, $chars) { (^$chars).map: -> $m { $chars.comb.pairs.grep(*.key %% $chars == $m)>>.value.join } }; say slice 'barbarossa', 3
camelia rakudo f3c3fe: OUTPUT« 3 ␤»
moritz r: sub slice($str, $chars) { (^$chars).map: -> $m { $chars.comb.pairs.grep(*.key % $chars == $m)>>.value.join } }; say slice 'barbarossa', 3 15:00
camelia rakudo f3c3fe: OUTPUT«3 ␤»
timotimo you are combing chars
colomon on URI failure: it looks like require %rfc_grammar_build{$rfc} is now doing require %rfc_grammar_build ??
timotimo comb $str instead
moritz r: sub slice($str, $chars) { (^$chars).map: -> $m { $str.comb.pairs.grep(*.key % $chars == $m)>>.value.join } }; say slice 'barbarossa', 3
camelia rakudo f3c3fe: OUTPUT«bboa aas rrs␤»
moritz \o/
timotimo neat!
moritz timotimo: thanks
timotimo still looks a bit ... bewildering :)) 15:01
but i still like it
thank you!
moritz well, it's a desperat-ish attempt to fit it all into a single expression
15:01 kbenson joined
PerlJam timotimo: that's why I asked about golf. I would have done it a little more verbosely :) 15:01
timotimo right. 15:02
kresike bye folks
15:02 kresike left
PerlJam moritz++ that's a nice solution though. 15:02
alester moritz: I shoved it out because I knew if I didn't I never would.
moritz
.oO( it wasn't released, it was rejected from dev )
15:03
dalek p/jvm-support: 635e421 | jnthn++ | / (20 files):
Add bootstrap-files target; clean up.

The file names used for modules in the stage0 from nqp-jvm-prep were not the same as those produced by the build; this gets things to be consistent. Updates the bootstrap as part of doing so.
15:04
15:06 kaleem left
alester moritz: I was tired of waiting on getting all the ducks in a row, mostly docs. i just had to push it out and deal with docs after the fact. 15:10
moritz alester: I think it's a good move 15:13
15:16 kaleem joined, sqirrel joined
timotimo er, may i ask what alester has done? 15:17
alester moritz: Thanks. I'll make an announcement later in the day but right now I have work to do
timotimo: Released ack 2.00
beyondgrep.com/ack20/
timotimo oh! neat :) 15:18
15:21 isBEKaml joined
PerlJam alester: for me, the change in default search behavior will have the most impact. I used -a all the time in ack1 15:22
alester You and everyone else, PerlJam. We just had to add other stuff to take into account those who rely on that old behavior. 15:23
-k/--known-types puts you back to the ack 1.x behavior.
15:24 domidumont left
gtodd ack = killer app :-) 15:24
beyond its obvious reference, if I recall correctly, ack was the main spoken word of the bulbous green headed invaders in "Mars Attacks" 15:25
15:27 brrt left
moritz thought they said something "nag nag" or "nack nack" 15:30
ggoebel jnthn++
looking forward to the blog post on the jvm nqp bootstrap being merged 15:31
15:32 supernovus joined
supernovus ping colomon 15:33
yoleaux 16 Apr 2013 23:06Z <raiph> supernovus: i didn't see llamarider commit any TZ changes
[Coke] r: for 1..2 -> $ack { say "alester++ # ack $ack" } 15:34
camelia rakudo f3c3fe: OUTPUT«alester++ # ack 1␤alester++ # ack 2␤»
isBEKaml r: 0 ...^ *>5 # that's what S02 says, but times out 15:36
should that be <= or some such?
camelia rakudo f3c3fe: OUTPUT«(timeout)»
isBEKaml r: say 0 ... ^* <= 5
camelia rakudo f3c3fe: OUTPUT«0␤»
isBEKaml r: say 0 ... ^ <= 5
camelia rakudo f3c3fe: OUTPUT«===SORRY!===␤Unable to parse expression in quote words; couldn't find final '>'␤at /tmp/_cXE889ZqZ:1␤------> say 0 ... ^ <= 5⏏<EOL>␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ …
timotimo where would i get a value that makes sense in the same context as enum_class_ResizablePMCArray for a "custom" PMC? (qrpa in this case) 15:37
something like Parrot_pmc_get_type_str(interp, Parrot_str_new(interp, "QRPA", 0));?
15:38 simcop2387 joined, FROGGS left
jnthn timotimo: search for qrpa in perl6.ops; I think we have something in there for it. 15:38
timotimo oh, yes nideed 15:39
thank you :)
[Coke] r: print "\x0B HI \x0B" 15:42
isBEKaml r: say 0 ... ^*< 5
camelia rakudo f3c3fe: OUTPUT« HI »
rakudo f3c3fe: OUTPUT«===SORRY!===␤Whitespace required before < operator␤at /tmp/v9wrTuM3aZ:1␤------> say 0 ... ^*< 5⏏<EOL>␤ expecting any of:␤ postfix␤»
timotimo i'm starting small replacing ReziablePMCArray with qrpa_id and see when it breaks
isBEKaml ^^ bug?
[Coke] std: say 0 ... ^*< 5
camelia std 86b102f: OUTPUT«===SORRY!===␤Whitespace required before < operator at /tmp/TgSgZGq7wt line 1:␤------> say 0 ... ^*<⏏ 5␤ expecting escape␤Parse failed␤FAILED 00:00 42m␤»
[Coke] probably not. 15:43
isBEKaml std: say 0 ... ^*> 5
camelia std 86b102f: OUTPUT«ok 00:00 42m␤»
isBEKaml [Coke]: that.
This is from S02:1175 15:44
This is from S02:1176
r: say 0 ... ^* < 5
camelia rakudo f3c3fe: OUTPUT«0␤»
15:48 sqirrel left 15:54 thou joined
colomon supernovus: pong 15:55
supernovus colomon: Thanks for the bug fixes on Template6 and XML, even if I messed up the XML one by updating it before I noticed there was a pull request. My bad. :P 15:56
colomon isBEKaml: you can't put a space between the ... and the ^
supernovus: you're welcome. I've been trying to get more of the modules working, and these things are really LHF
supernovus I'm currently mucking with XML::Query to get it back into working order. It seems to have been affected by the change in how protos work. 15:59
16:01 FROGGS joined
isBEKaml colomon: sure, but that's not what the error message says? It seems to carp over the lack of space between * and < 16:04
masak oh hai, #perl6 16:06
isBEKaml hello, masak
supernovus Gah, this is some messed up stuff. "You cannot create an instance of this type". What kind of error message is that? 16:07
jnthn An accurate one?
isBEKaml supernovus: well, that's clear. :P
jnthn Not all types can be instantiated.
Granted it should probably metion the type name. 16:08
supernovus Apparently XML::Query (a class) is no longer able to be instantiated... oO
The weirdest part is, the tests work fine if the module is loaded from a .pm6 but fail if the module is loaded from a .pir file... 16:11
jnthn Ugh. :/ 16:13
Not another one of those bloody problems.
16:13 crab2313 joined
isBEKaml precompilation? 16:13
jnthn Sounds like
Well, hopefully it's the same as the not_gerd one I've got outstanding to look at. 16:14
supernovus With precompiled modules, if I use one of the overridden new() methods, I get an error of "Default constructor for 'Query' only takes named arguments" and if I use the default new(), I get the "cannot create an instance" error. If I force it to load non-precompiled modules, there are no errors. 16:15
colomon isBEKaml: *< may well be illegal as well.
std: *<
camelia std 86b102f: OUTPUT«===SORRY!===␤Unable to parse quote-words subscript; couldn't find right angle quote at /tmp/hexIN8CQft line 1:␤------> *<⏏<EOL>␤ expecting escape␤Parse failed␤FAILED 00:00 41m␤»
jnthn supernovus: It tends to happen in certain icky arrangements of nested packages.
colomon std: 1 *< 2 16:16
camelia std 86b102f: OUTPUT«===SORRY!===␤Unable to parse quote words at /tmp/sj6t7ne352 line 1:␤------> 1 *⏏< 2␤Couldn't find final '>'; gave up at /tmp/sj6t7ne352 line 1 (EOF):␤------> 1 *< 2⏏<EOL>␤Parse failed␤FAILED 00:00 42m␤»…
colomon std: 1 ^*< 2
camelia std 86b102f: OUTPUT«===SORRY!===␤Whitespace required before < operator at /tmp/defmKMx7xW line 1:␤------> 1 ^*<⏏ 2␤ expecting escape␤Parse failed␤FAILED 00:00 42m␤»
colomon okay, that's kind of weird
isBEKaml std: 0 ...^ *> 5 # is this a different case?
camelia std 86b102f: OUTPUT«ok 00:00 42m␤»
isBEKaml std: 0 ...^ *< 5 # this is weird. 16:17
camelia std 86b102f: OUTPUT«===SORRY!===␤Whitespace required before < operator at /tmp/3XRloPfE95 line 1:␤------> 0 ...^ *<⏏ 5 # this is weird.␤ expecting escape␤Parse failed␤FAILED 00:00 42m␤»
supernovus jnthn: Well, I'll leave it alone for now, as I don't actually use XML::Query in any of my other projects.
jnthn supernovus: Yeah. I'll get to it eventually. Such precomp bugs tend to be time consuming to hunt down, and that chunk of Rakudo has a bus number of 1 (me)... 16:20
16:20 frdmn joined 16:24 isBEKaml left 16:28 Nom- left 16:29 Nom- joined 16:31 kaleem_ joined 16:34 kaleem left
jnthn At long last, I blogged: 6guts.wordpress.com/2013/04/18/nqp-...qp-master/ 16:37
16:38 tgt left 16:40 markov left, markov joined
jnthn afk for a bit 16:42
masak jnthn++ # blug 16:52
colomon jnthn++ # blug indeed! 16:55
16:55 shinobicl joined, supernovus left
daxim keyboards and terminal applications are weird. I press a keycap that triggers a switch that closes a circuit which is interpreted by a controller which transmits packets on the serial bus which has a hardware driver in the kernel which provides a scancode which is mapped by X to a keycode which is mapped by Xkb to a symbol which is mapped by Konsole to a vt escape sequence which is looked up by terminfo in some fashion *mumble* and finally 16:56
is interpreted by Konsole again to cause a action, such as scrolling up one page
I don't quite understand what the decoupling at the terminfo step is good for, will someone educate me?
17:00 salv0 joined 17:06 isBEKaml joined 17:09 dakkar left
ggoebel jnthn++ 17:14
geekosaur daxim, while there is an ANSI standard for terminals now, originally there wasn't and terminfo was needed to deal with several hundred different kinds of terminals 17:15
17:15 domidumont joined
dalek ast: eba6362 | coke++ | S32-temporal/calendar.t:
directly test .gist instead of going through say
17:15
geekosaur also, that standard is (as a standard) somewhat limited and every termina/emulator has its own extensions, which often are intended to be compatible with others but sometimes have bugs... 17:16
terminfo means every program doesn't have to know exactly what function key escapes *this* terminal emulator supports and what the idiosyncrasies in its line wrap are 17:17
(since almost nobody gets the original vt100 algorithm right...)
(but xterm does...) 17:18
(and there are programs that Know That)
17:19 isBEKaml left, thou left 17:25 tgt joined
PerlJam jnthn: you realize it will be about 9 months between jvm-prep creation and merge into nqp repo? Aside from being approximately the same gestation period as a human :), that's a fairly amazing turn-around time. 17:32
jnthn++
17:34 crab2313 left 17:35 daxim left
masak .oO( did PerlJam just call jnthn fat? ) :P 17:35
17:42 japhb_ joined
dalek rl6-roast-data: 572d72e | coke++ | / (4 files):
today (automated commit)
17:45
[Coke] sorear: how would feel about nqp-mono ? 17:48
how are we going to deal with fudging once there are 2 rakudos? 17:52
#?rakudo-jvm skip vs #?rakudo(-parrot)? #?rakudo skip 'description' -jvm-only 17:54
17:55 pupoque joined
[Coke] (I'm leaning towards the latter - make fudge smart enough to deal with tags, then we can skip across the board (feature not even implemented), or for a particular variant (subtle bug on jvm version) 17:56
pmichaud iirc, fudge was designed so that you could activate multiple tags 18:08
so it should be possible to do #?rakudo #?rakudo-jvm and #?rakudo-parrot 18:09
when running tests for #?rakudo-parrot, it would activate those fudges marked #?rakudo and #?rakudo-parrot
japhb_ [Coke], I like that concept (though '-jvm-only' as an exact syntax is a tad limiting, if and when we get to 3 backend VMs) ... certainly we should put very gentle pressure on to keep Rakudo mostly self-compatible
pmichaud checking 18:10
japhb_ Ah, pmichaud responded while I was distracted
pmichaud oops, looks like fudgeall and fudge only handle one impl. 18:12
anyway, I'd be in favor of generalizing fudge/fudgeall to accept multiple impl specifiers on their command lines
jnthn Sounds sane. 18:15
pmichaud or, for real ickiness, treat whatever follows #? as a regex to be matched :-P
then you could have #?rakudoparrot, #?rakudojvm, and #?rakudo.* 18:16
18:16 DreamingInCode joined
Tene pmichaud: ITYM as a dns TXT record holding a regex 18:16
jnthn I agree we should be aiming for mostly self-compatible; I'm also aware that as we work backends towards that the spectests that are passing could be valuable.
(For knowing we aren't taking steps back as well as steps forward.) 18:17
diakopter (that would hurt?)
pmichaud I kind of like the regex approach, now that I think about it. 18:18
jnthn pmichaud: It's evil :)
pmichaud: But maybe good evil :D
pmichaud #?rakudo(parrot|mono) skip "but it works on rakudojvm"
#?rakudo(?!jvm) skip "every platform but jvm" 18:19
FROGGS #?rakudo(.+o.+) skip "but it works on rakudojvm"
:o)
[Coke] pmichaud: +1 from me. 18:20
FROGGS: I will remove your commit access. :P
FROGGS hehe
but ya, feels sane
(both the pattern and removing my commit access :P)
[Coke] I would make it end with an implicit .* 18:21
pmichaud might want to be sure to use the hyphen, then -- i.e., #?rakudo #?rakudo-parrot and #?rakudo-jvm 18:22
the hyphen makes a good separator
[Coke] so that you can say #?rakudo and have it mean all rakudoshudo.
pmichaud exactly.
looks like fudge:134 is the section that wants changing to use a regex match instead of eq 18:24
18:28 Psyche^ joined, Psyche^ is now known as Patterner
masak today's autopun: "As I understand it, the claim is that the less you use Homeopathy, the better it works. Sounds plausible to me." 18:32
-- David Deutsch
cognominal jnthn++ # great blogging
timotimo hehe. 18:33
pmichaud tweets. 18:43
moritz checks planetsix
jnthn++ # very nice blog post, and even better news :-)= 18:46
timotimo so, uh ... perl6 sockets ... what blocks us? 18:47
why are there dragons there in the spec?
moritz because the spec hasn't been undragonified yet 18:48
timotimo hm.
moritz basically the old version of the IO spec contained so much bs, that I declared all the parts that I hadn't sanitized as "here be dragons" 18:50
jnthn
.oO( I'm thinking he's not talking about bounded serialization... )
moritz if you review it, and find it to be sane, and loosly matches what's implemented, feel free to remove (or move) that marker 18:51
masak moritz++ # dragon slayer
timotimo well, there's not much in it yet. a readline method for instance would be neat 18:55
moritz readline is called get 18:56
timotimo oh, that's nice :)
it would be good to have the spec say if the line terminators are returned, too
No such method 'get' for invocant of type 'IO::Socket' - it's called get, but it isn't there yet :( 18:57
moritz IO::Socket::INET has a method get
and I'm sure it can't be too broken, because Net::IRC::Bot and thus ilbot6 use it 18:58
timotimo oooh, i need ::INET, duh 18:59
19:09 SamuraiJack_ joined
timotimo could it be that get stops too early? 19:09
19:12 raiph joined, SamuraiJack left 19:14 SamuraiJack_ left 19:17 lizmat joined
timotimo it seems get stops before a newline actually happens, which is very unfortunate. my very own get implementation is so slow, that my client gets shot down by the server before it can even finish reading the message 19:18
19:19 domidumont left 19:20 frdmn left, frdmn joined 19:21 frd|afk joined
lizmat hello #perl6 from the evening before the DPW 19:23
masak hello lizmat
moritz idly wonders if lizmat strives for a world record in attending Perl conferences and workshops 19:25
19:25 frdmn left
lizmat not really, as we will miss the French Perl workshop this year 19:25
:-)
moritz :-) 19:26
I guess D is Dutch here?
lizmat still, Perl Oasis, FOSDEM, Israeli PW, GPW, SPW, QA Hackathon, DPW, PLPW, YAPC::NA, OSCON, YAPC::EU, YAPC::Asia, LPW
is the planning so far 19:27
yes
19:27 berekuk joined
lizmat I think rafl did more last year 19:27
oh, and the monthly NL.pm and Niederrhein.pm meetings :-) 19:28
cognominal Perl Oasis?
lizmat Florida Perl Workshop 19:29
cognominal in Dubai? :)
lizmat in Orlando
cognominal we will miss you at fpw
lizmat yes, but it is wedged between YAPC::NA and OSCON 19:30
rafl Pretty sure I did fewer conferences than that last year
The most YAPCs a year record is all mine, though, I believe ;-) 19:31
19:32 kaleem_ left 19:33 jdv79 joined
jdv79 jnthn: saw your update re nqp on jvm - nice 19:33
lizmat argh, much less wedged than I thought 19:34
suddenly the chance that we'll be at the FPW has significantly increased 19:35
timotimo do i talk to the parrot people about this?
moritz timotimo: make sure to try on a recent parrot first 19:37
timotimo 5.2.0-devel, i'll retry with 5.3.0 now.
19:39 ggoebel joined
jnthn jdv79: Yes, things are moving along :) 19:41
19:41 labster joined
timotimo couldn't build a parrot from master, though 19:41
what? ./include/parrot/platform_interface.h:212:59: error: expected declaration specifiers or ‘...’ before ‘Parrot_Stat_Buf’ 19:44
for the latest RELEASE as well as master
oh, i accidentally pasted something in there and it didn't get cleaned or re-made 19:46
tadzik good evening #perl6 19:56
lizmat evening tadzik! 19:57
jnthn o/ tadzik 19:58
japhb_ o/
tadzik colomon | do install failures kill pandabrew's rebootstrap?
colomon: I suppose... do they? :)
japhb_ timotimo: HTTP::Client reveals some problems with the Socket API (it has bugs of its own too though) 20:00
tadzik first bicycle day today. Feels good
masak tadzik! \o/
tadzik \o/
and a new monitor at home. Choices, choices...
20:01 TreyRust joined, frd|afk left 20:02 frdmn joined
japhb_ timotimo, for instance, trying to fetch the entirety of a large web page will reveal difficulty reaching (and discovering) end of input. And the socket code does evil things to the network buffers when it comes to handling broken encoded character sequences 20:02
timotimo same problem on parrot/master
japhb_ (Note BTW that when testing, the most annoying bug in HTTP::Client is that if there is no content in the outgoing request (headers only), it will forget to put an extra CRLF after the header block -- which will make some HTTP servers error or hang forever. It's an easy fix though, just moving a line.) 20:04
timotimo :(
japhb_ My conclusion is that the existing Rakudo socket code needs to sit down with the current Parrot socket code and a good mediator/coder to hash things out until sanity is achieved. 20:05
timotimo may be. 20:08
japhb_ Will there be a new Rakudo release today? 20:11
20:13 kaare_ left
[Coke] tadzik: OOoh, bicyle day! 20:20
did we ever scam a volunteer for this month?
If not, I'll do it this evening.
tadzik [Coke]++ 20:21
masak ok, then I'll do June.
dalek kudo/nom: 203e3aa | masak++ | docs/release_guide.pod:
sign up Coke and me
20:22
20:27 pupoque left 20:28 frd|afk joined 20:32 frdmn left, rindolf left
sorear [Coke]: sounds like a great idea 20:36
timotimo [Coke]: neat! :)
japhb_ sorear, which of [Coke]'s comments were you responding to? nqp-mono? 20:37
sorear japhb_: yes
moritz wants nqp in stereo
sorear I don't read the whole backlog, just the "/lastlog sorear" parts 20:38
FROGGS nqp-5.1
not-quiet-dolby surround
timotimo :) 20:46
mathw o/ 20:47
dalek p/qrpa_experiment: 7d9d1ec | (Tobias Leich)++ | src/ (10 files):
FROGGS++ did all of the remaining things, like stage0
20:50
20:54 rindolf joined
masak mathw! \o/ 20:57
mathw: long time no see. :)
ooh, nice. didn't know about /lastlog before. sorear++ 20:58
shachaf masak: Also useful: /last -clear 20:59
mathw hi masak
masak shachaf: ooh, yes. I see what you mean. :) 21:00
mathw i thought I'd come by and say hello 21:01
masak glad that you did :) 21:02
mathw I'm trying to decide what to charge per hour for some consulting work with my old job, and it's harder than I thought. I obviously don't want to undervalue my skills but I also really don't want to rip them off.
timotimo with froggs and mine work of welcoming qrpa to nqp and rakudo, my dumb benchmark now shows that list.join is faster than a naive loop with $foo ~= $_ for @pieces
mathw \o/
Tene qrpa? 21:03
felher Good night, good people.
diakopter o/
lee_ timotimo: thats exciting, any chance of it being merged? :D
Tene mathw: Don't worry about ripping them off; they'll make a decision on whether it's worth it to them or not. Charge them fairly for your time. 21:04
masak Tene: Quantum <mumble> PMC Array.
oh! Resizable.
timotimo lee_: can't tell. others would have to do that. also, there's now stolen code from parrot to implement the .sort
mathw Tene: okay, so what are gorgeous and talented programmers charging for random consulting these days? :) 21:06
masak: there are quantum data structures now? Do I need to buy another new computer or can I get a quantum USB 3 stick?
Tene mathw: What rate would you be willing to pay for an extra few hours in a day? 21:07
Add some extra on top of that for taxes, etc.
21:07 skids left
Tene It depends on a lot of things, realistically; living costs in your area, what other work you have, etc. 21:07
tadzik timotimo: yay! What was wrong with the morning patches? 21:08
masak mathw: it's not the data structure that's quantum. it's pmichaud. we upgraded him to an entangled form of existence.
mathw does that mean he's now capable of solving compiler problems in multiple universes simultaneously? 21:09
tadzik he's _now_ capable?
mathw I'm struggling to think of how pmichaud could become more awesome
Also struggling to stay awake, so goodnight all 21:11
mst cyberisation.
masak there are hypotheses that state that pmichaud was always quantum, but the rest of us weren't at a suffuciently high plane of existence to understand it until recently. 21:12
mathw: 'night
dream of being awesome in multiple universes simultaneously. 21:13
sorear masak: there is some talk about quantum radix trees on page 7 of eprint.iacr.org/2013/199.pdf 21:14
timotimo tadzik: i can't tell ;) 21:17
masak sorear: nice. 21:20
masak doesn't feel at a sufficiently high plane of existence to understand that paper, though
I'm still enjoying arxiv.org/pdf/1302.6946.pdf in my copious spare time, though. 21:21
exactly what I needed to get deeper into that whole cat theory thing.
21:26 DreamingInCode left 21:28 spider-mario left, bluescreen10 left 21:29 bluescreen10 joined 21:44 rindolf left
masak 'night, #perl6 21:46
lizmat night masak!
japhb_ o/ 21:48
21:52 kurahaupo joined 21:55 pupoque joined 21:57 DreamingInCode joined
timotimo will adding "ratchet" to a rule cause speedups even if it wouldn't have backtracked any way? 22:16
22:16 lizmat left
sorear yes 22:16
adding ratchet tells perl that it's ok to not store backtrack points 22:17
also, a lot of stuff is specially optimized for the ratchet case
22:18 lizmat joined 22:19 lizmat left, lizmat joined
timotimo that's nice 22:20
maybe i can add more ratchets to the json tiny grammar without breaking it
22:27 snuffles joined
timotimo i'm feeling tempted to write a one-off parser for this very special json format, just so i get a little bit of performance out of it :( 22:29
22:29 skids joined
FROGGS there is no libjson which can be used? 22:31
timotimo hm.
i can totally try that. 22:33
sorear you'll lose 200% of the performance you gain when you try to convert the native lib objects into Rakudo objects 22:35
you need a C JSON library which directly constructs Rakudo objects 22:36
niecza has a C# JSON parser that's tightly integrated with the runtime, it's an order of magnitude faster than anything you could make with grammars
timotimo sorear: all i want is not to take 1 second to parse a few lines of json. 22:37
sorear n: use JSYNC; say from-json('{"foo":[1,2,3]}') 22:39
camelia niecza v24-37-gf9c8fc2: OUTPUT«{"foo" => [1e0, 2e0, 3e0]}␤»
timotimo hm. does niecza have IO::Socket::INET?
lizmat r: say 1e0
camelia rakudo 203e3a: OUTPUT«1␤»
timotimo kinda-sorta-working?
sorear n: use JSYNC; my $t1 = times[0]; say times[0]-$t1 say from-json('[]')
timotimo and kinda-sorta like rakudo does?
camelia niecza v24-37-gf9c8fc2: OUTPUT«===SORRY!===␤␤Two terms in a row at /tmp/9tSKUKXjWp line 1:␤------> C; my $t1 = times[0]; say times[0]-$t1 ⏏say from-json('[]')␤␤Parse failed␤␤»
sorear n: use JSYNC; my $t1 = times[0]; say times[0]-$t1; say from-json('[]')
camelia niecza v24-37-gf9c8fc2: OUTPUT«0␤␤»
sorear timotimo: yes and yes
n: use JSYNC; my $t1 = times[0]; '[' x 1e6; say times[0]-$t1; say from-json('[]')
camelia niecza v24-37-gf9c8fc2: OUTPUT«0␤␤»
timotimo in that case, i have found out how to make my stuff fast.
sorear n: use JSYNC; my $t1 = times[0]; '[' x 1e8; say times[0]-$t1; say from-json('[]') 22:40
japhb_ timotimo, have you been able to test the QRPA change in Rakudo, or just NQP?
camelia niecza v24-37-gf9c8fc2: OUTPUT«(timeout)»
FROGGS japhb_: rakudo as well
japhb_ So ... did that make any difference to Grammar parsing speed?
FROGGS no
ó.ò
japhb_ (I know he was testing with join)
sorear n: use JSYNC; say times; from-json(('[' x 10000) ~ (']' x 10000)); say times; 22:41
japhb_ is somewhat surprised by that, unless QRegex was already using QRPA
camelia niecza v24-37-gf9c8fc2: OUTPUT«1.300081 0.064004 1.300081 0.064004␤1.308081 0.064004 1.308081 0.064004␤»
sorear n: use JSYNC; say times; from-json(('[' x 1e5) ~ (']' x 1e5)); say times;
camelia niecza v24-37-gf9c8fc2: OUTPUT«1.480092 0.036002 1.480092 0.036002␤1.6081 0.040002 1.6081 0.040002␤»
sorear n: use JSYNC; say times; from-json(('[' x 1e7) ~ (']' x 1e7)); say times;
camelia niecza v24-37-gf9c8fc2: OUTPUT«(timeout)»
FROGGS ENOTENOUGHMEMORY 22:42
sorear n: use JSYNC; say times; from-json(('[' x 2e6) ~ (']' x 2e6)); say times;
timotimo japhb_: in rakudo.
camelia niecza v24-37-gf9c8fc2: OUTPUT«(timeout)5.880367 0.088005 5.880367 0.088005␤Stacktrace:␤␤ at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0xffffffff>␤ at JsyncReader.GetFromJson (bool) <0x0003f>␤ at JsyncReader.GetFromJson (bool) <0x000bb>␤ at Js…
sorear n: use JSYNC; say times[0]; from-json(('[' x 1e6) ~ (']' x 1e6)); say times[0];
camelia niecza v24-37-gf9c8fc2: OUTPUT«(timeout)3.480217␤Stacktrace:␤␤ at (wrapper managed-to-native) object.__icall_wrapper_mono_array_new_specific (intptr,int) <0xffffffff>␤ at JsyncReader.GetFromJson (bool) <0x00057>␤ at JsyncReader.GetFromJson (bool) <0x000bb>␤ at JsyncReader.GetFromJso…
diakopter sorear: stack overflow? 22:43
timotimo sorear: i am satisfied with the performance.
it takes 0.0005s instead of 1s per parse.
sorear diakopter: unchecked malloc return
+ total memory ulimit
timotimo sorear: do you think putting rakudo onto the jvm will give a similar performance boost to random workloads? :| 22:44
labster rn: class Foo is ::("Str") { }; say Foo.can('substr') 22:45
camelia rakudo 203e3a: OUTPUT«===SORRY!===␤'Foo' cannot inherit from '::("Str")' because it is unknown.␤at /tmp/xPHkAyyzA7:1␤------> ␤»
..niecza v24-37-gf9c8fc2: OUTPUT«True␤»
labster quacks like a rakudobug. 22:46
japhb_ Something is wrong if timotimo's case takes 2000x as long to run under Rakudo-parrot. (It's slow, sure -- but when it's more than 1.5-2 orders of magnitude, it almost always turns out to be hitting an outright performance bug, like one of the 10x or bigger improvements jnthn++ or pmichaud++ has found in the past.)
22:46 lizmat left 22:47 lizmat joined
sorear timotimo: i think you'll get half of the perfomance boost that way 22:47
timotimo that's excellent
that's already a metric shit-ton
sorear historically I've been much more prone to say "this needs to go into C# to be fast" while jnthn has been focusing efforts on the optimizer 22:48
which is probably going to pay off more in the long run, but less so in the past/present 22:49
22:52 bluescreen10 left 22:53 shinobicl left, frd|afk left
lizmat rn: say 10.WHAT; say 1e1.WHAT 22:55
camelia niecza v24-37-gf9c8fc2: OUTPUT«(Int)␤Num()␤»
..rakudo 203e3a: OUTPUT«(Int)␤(Num)␤»
lizmat wonders why 1e1 is a Num and not an Int? 22:56
japhb_ lizmat, using scientific notation explicitly requests Num treatment 22:57
as per spec
lizmat ah, ok, must have missed that 22:58
japhb_ Otherwise you'd have no way (other than Num.new()) to specify a Num that happened to be a rational or integer value 22:59
sorear especially since *all* (finite?) Num values are rational 23:01
23:01 xinming left
lizmat S02:3307 seems to imply that if a number with e notation can be fit in an Int, it should 23:02
23:02 xinming joined
japhb_ sorear, perhaps I should have said "happened to fit into a Rat" (as opposed to a FatRat, which must be explicitly requested). 23:03
23:06 pupoque left 23:10 dovahkin joined
lue lizmat: what you referenced seems to be talking about the previous paragraph, which has nothing to do (directly) with 'e' 23:11
lizmat it has to do with all string to number converters… 23:12
but I was just wondering, nothing to see here :) 23:13
lue [ besides, unless you're a scientist, you're unlikely to use 'e' for simple integers :) ] 23:14
lizmat very true
sorear ultimately, floating point *is* scientific notation 23:31
when a scientist writes 2.300e6, the semantics are that everything after the second 0 is unknown
this dovetails nicely with floats, though it would be better if we explicitly marked precision 23:32
jnthn sleep; 'night, #perl6 23:36
lizmat gnight jnthn! 23:37
dalek : 50cdb0f | (Tobias Leich)++ | Makefile:
make it installable via `make install`, even if the locations are not ideal
23:40
FROGGS gnight all
japhb_ o/ 23:41
23:44 berekuk left 23:50 berekuk joined 23:51 xinming left
lizmat night #perl6! 23:53
labster night lizmat
23:55 lizmat left, xinming joined