Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-11-20

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 PZt joined #perl6
00:01 btyler joined #perl6
00:12 Psyche^_ joined #perl6
00:23 araujo joined #perl6
00:23 araujo joined #perl6
01:06 dalek perl6-roast-data: 50d053e | coke++ | / (5 files):
01:06 dalek perl6-roast-data: today (automated commit)
01:06 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/50d053e24e
01:43 eternaleye joined #perl6
03:31 woosley joined #perl6
03:42 panchiniak_ joined #perl6
03:43 panchiniak_ left #perl6
03:55 woosley joined #perl6
04:10 preflex_ joined #perl6
04:13 colomon joined #perl6
04:57 raiph joined #perl6
05:07 SamuraiJack joined #perl6
06:24 [Sno] joined #perl6
06:28 moritz \o
06:52 xinming joined #perl6
07:04 salv0 joined #perl6
07:08 kaleem joined #perl6
07:11 FROGGS joined #perl6
07:22 FROGGS o/
07:43 moritz FROGGS: do you have any performance numbers for the JSON optimization patch?
07:45 FROGGS moritz: just that it was about 5.7s to parse the projects.json, and about 5.4s afterwards
07:45 moritz FROGGS: ok, thanks
07:45 FROGGS :o)
07:55 dmol joined #perl6
07:58 dalek rakudo/nom: e4385f8 | (Elizabeth Mattijsen)++ | t/spectest.data:
07:58 dalek rakudo/nom: Remove winner.t for now, will get merged if needed
07:58 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e4385f8b4f
07:59 dalek rakudo/WINNER: 38f32bb | (Elizabeth Mattijsen)++ | t/spectest.data:
07:59 dalek rakudo/WINNER: Make sure we test winner.t in WINNER branch
07:59 dalek rakudo/WINNER: review: https://github.com/rakudo/rakudo/commit/38f32bb00c
08:01 moritz tadzik: panda bootstrap is broken for me
08:01 moritz ==> Testing Shell::Command
08:01 moritz test stage failed for Shell::Command: Tests failed
08:02 moritz and later
08:02 moritz Compiling lib/JSON/Tiny/Actions.pm to pir
08:02 moritz build stage failed for JSON::Tiny: Failed building lib/JSON/Tiny/Actions.pm
08:02 moritz why does it even go on when one failed?
08:02 lizmat and good *, #perl6!
08:02 moritz good moarning, lizmat
08:02 lizmat starting to work on tomorrow's release now
08:02 lizmat as I will be on the road most of the 2nd half of the day
08:03 lizmat and touristing in Copenhagen and Malmö tomorrow
08:03 tadzik moritz: yeah, the reason is that sometimes a non-zero exit status is returned even if everything went fine
08:03 tadzik that's why there are no other error messages from the command ran
08:03 tadzik when I tried to debug it, it started working perfectly and I couldn't reproduce it anymore :./
08:03 tadzik will try again today
08:06 moritz Out of memory: Kill process 11330 (perl6-p) score 215 or sacrifice child
08:06 moritz Killed process 11330 (perl6-p) total-vm:1908136kB, anon-rss:1748792kB, file-rss:224kB
08:06 moritz "or sacrifice child" now I'm slightly scared
08:06 DrEeevil ... ulimit? ;)
08:07 moritz DrEeevil: the problem with ulimit is that it doesn't mix with the JVM
08:07 FROGGS morning lizmat
08:08 DrEeevil moritz: the JVM has some funny ass-umptions about this universe
08:08 lizmat morning moritz, FROGGS!
08:08 zakharyas joined #perl6
08:17 timotimo how did all of S17 not get tested on rakudo.jvm today? :(
08:18 lizmat I have no idea...
08:19 lizmat problem is, "make spectest" on the jvm currently starts not testing files 1/3 the way through
08:19 zakharyas1 joined #perl6
08:19 lizmat also, there are currently some unstoppable threads started by the spectest
08:20 lizmat specifically for the ":every" supplies
08:20 lizmat that would interfere with tests following it when using the eval server
08:25 salv0 joined #perl6
08:27 moritz uhm, ufo is a bit b0rked
08:27 moritz env PERL6LIB=/home/mlenz/p6/ufo/blib/lib:/home/mlenz/p6/ufo/lib: prove -e 'perl6' -r t/
08:28 moritz erm no, I'm b0rked
08:28 moritz never mind :-)
08:35 moritz ... and now ufo hangs :(
08:35 lizmat .oO( Plan Nine From Outer Space )
08:42 labster joined #perl6
08:44 dalek rakudo/nom: fd69fc5 | (Elizabeth Mattijsen)++ | docs/ChangeLog:
08:44 dalek rakudo/nom: Some ChangeLog updates, tomorrow we have a release
08:44 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fd69fc5bc8
08:46 FROGGS ohh, good point
08:46 dalek rakudo/nom: 3b9ee86 | (Elizabeth Mattijsen)++ | docs/announce/2013.11.md:
08:46 dalek rakudo/nom: Create stub for announcement 2013.11
08:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3b9ee86e3c
09:01 dalek rakudo/nom: 95407f1 | (Elizabeth Mattijsen)++ | docs/announce/2013.11.md:
09:01 dalek rakudo/nom: Made 2013.11 announcement up-to-date
09:01 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/95407f19f6
09:02 lizmat would appreciate a set of eyes on the announcement / ChangeLog for omissions / errors
09:07 * moritz has trouble believing that this "Elizabeth Mattijsen" had the least number of commits among all the contributors this month
09:08 lizmat probably a copy/paste error  :-)
09:08 moritz I think 'grondilu' und L. Grondin are actually the same
09:08 moritz and the 'foo' there should probably removed
09:08 lizmat and who/s foo?
09:08 moritz well, the script looks for strings like 'TimToady++'
09:09 moritz and adds those ++'ed folks to the list of contributors
09:09 moritz so I guess somebody wrote $foo++
09:09 dalek rakudo/nom: 4fdd34d | moritz++ | docs/announce/2013.11.md:
09:09 dalek rakudo/nom: [announce] clean up contributor list
09:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4fdd34dad4
09:09 lizmat ++foo is faster than foo++ by 10%"
09:10 lizmat hehe
09:21 dalek rakudo/nom: 1f34257 | (Tobias Leich)++ | docs/ChangeLog:
09:21 dalek rakudo/nom: logged changes of run/shell and infix:<...>
09:21 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1f3425710c
09:21 dalek rakudo/nom: 8e6b19a | (Tobias Leich)++ | docs/ChangeLog:
09:21 dalek rakudo/nom: typo
09:21 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8e6b19a5f7
09:22 dalek rakudo/nom: 7f6b885 | (Elizabeth Mattijsen)++ | docs/release_guide.pod:
09:22 dalek rakudo/nom: We also need File::Slurp, I just found out
09:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7f6b885343
09:23 FROGGS -These are only some of the changes in this release. For a more detailed list, see "docs/ChangeLog".
09:23 FROGGS +These are only some of the changes mentioned in this release. For a more detailed list, see "docs/ChangeLog".
09:23 FROGGS ?
09:23 FROGGS err
09:23 FROGGS no
09:23 FROGGS nvm
09:24 dalek rakudo/nom: 180fcac | (Elizabeth Mattijsen)++ | docs/announce/2013.11.md:
09:24 dalek rakudo/nom: Mention run/shell in announcement
09:24 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/180fcac36f
09:24 iSlug joined #perl6
09:28 lizmat I intend to bump the NQP revision tomorrow morning
09:29 xinming_ joined #perl6
09:30 timotimo oh, oh, oh, should i get eqat into the stage0 and use it all over nqp to make it three times faster! (if it didn't do anything but substr+eq checks, that is)
09:31 FROGGS timotimo: if you intend to do it, then do it now, so there is time to test
09:31 FROGGS for a certain definition of "now" :o)
09:34 timotimo hm. should i worry about getting WINNER into rakudo before its release this month?
09:34 FROGGS no idea... my feeling is that there will be still a lot of movement and renaming
09:36 timotimo mhm
09:37 timotimo maybe i could get for -> $a, $b? working in nqp-parrot at least?
09:37 timotimo (which also causes better error messages in the case of having a too-short list for $a, $b, $c, even without "?"
09:37 timotimo so that would be nice)
09:38 FROGGS will a user hit that issue?
09:38 timotimo hopefully not
09:38 timotimo except if they're a nqp user
09:38 FROGGS k
09:38 timotimo and developing a new language compiler i suppose
09:39 timotimo stage0 upgrades are so expensive :(
09:39 FROGGS yeah :/
09:39 timotimo yeah, i'll keep waiting until somebody really needs a new stage0 for something very worthwhile, and *then* i'll spread eqat all over nqp
09:39 denisboyun joined #perl6
09:39 timotimo it's already in the code the regex compiler creates, for example, so that's a step in the right direction
09:40 timotimo and the "lexreg optimisation" i made is mostly a cause for compilation failure, rather than any meaningful performance improvement
09:42 timotimo optimising rakudo seems hard. there seems to be a big thing that's slow that i'm just not getting my hands on. i suppose invocations are kind of costly? due to how awesome our signatures can get?
09:42 timotimo or method calls or something.
09:42 moritz due to parrot creating a GCable or two for every invocation
09:43 moritz so allocations + GC
09:43 timotimo so is that a thing we'd have to change parrot for or can we get around some of that overhead by tweaking nqp/rakudo?
09:43 moritz I think parrot is hopeless here
09:43 moritz timotimo: though iirc bigint allocation is also a bit slow
09:44 timotimo okay. and moarvm is already doing better, yes?
09:44 moritz timotimo: implementing a pool of allocated bigints might be helpful
09:44 timotimo hm. so if a bigint is no longer in use we can re-use an old one? or how do you propose the pool to work?
09:44 timotimo or are bigints immutable?
09:45 timotimo yeah, they certainly are
09:45 moritz well, under the hood they aren't
09:45 moritz the mp_int construct
09:46 timotimo would i have to teach parrot to move garbage collected mp_ints into a pool to be overwritten the next time a bigint is created?
09:48 moritz maybe it can be solved at the NQP level somehow
09:48 moritz iirc jnthn had some ideas
09:48 timotimo it seems i'd have to interact closely with the GC on that
09:48 timotimo ah. i wanted to come up with a benchmark to measure how much it's worth to skip known-length constructs after an "alt" regex.
09:49 darutoko joined #perl6
09:50 dalek nqp: af22bef | (Timo Paulssen)++ | src/vm/parrot/QAST/Compiler.nqp:
09:50 dalek nqp: use eqat or ord for length-one literals in regex.
09:50 dalek nqp: review: https://github.com/perl6/nqp/commit/af22bef4a3
09:54 timotimo that was worded awkwardly
09:54 dakkar joined #perl6
09:55 moritz use ord for length-one substrings, and eqat for longer substrings
09:59 timotimo yes
10:01 * moritz rages against $work code he can't wrap his head around
10:03 timotimo oh, i wonder if "add $foo, 1" is slower than "inc $foo"
10:03 berekuk joined #perl6
10:11 timotimo well, no reason to have an add 1 instruction generated if it could just as well be inc.
10:13 FROGGS if it does the same, yes
10:21 fhelmberger joined #perl6
10:26 brrt joined #perl6
10:33 jnthn joined #perl6
10:34 jnthn Hello, #perl6
10:35 moritz good antenoon, jnthn
10:35 timotimo huh, do we never generate literal zerowidth nodes in qregex?
10:36 jnthn timotimo: No, 'cus literal doesn' support zerowidth, iirc
10:36 timotimo it's easy for it to do so, though
10:36 timotimo at least the part in QAST/Compiler
10:37 darutoko joined #perl6
10:37 FROGGS hi jnthn
10:37 timotimo if there's any <?before 'foo'> in nqp's or rakudo's grammar, that could be turned from a subrule call into a simple inlined literal
10:37 timotimo probably not worth much, though.
10:40 jnthn True, they could.
10:40 jnthn And making it work is "just" not adding
10:40 timotimo the way i see it, it'd be enough to put a "unless $node.subtype eq 'zerowidth'" after the ... yes
10:40 jnthn Be sure to support the negate case too if that ain't already done.
10:41 timotimo negate is in there already
10:41 timotimo negate zerowidth doesn't need additional work, right?
10:41 jnthn It actually avoids a call to before *and* before calling the thunk...
10:41 jnthn No, not if negate is in there already.
10:41 timotimo good
10:42 jnthn So long as you only do it for things that are precisely a literal I think you're fine.
10:42 jnthn Though...
10:43 jnthn r: 'i like food' ~~ /<?before foo> food/; say $/
10:43 camelia rakudo-parrot 180fca, rakudo-jvm 180fca: OUTPUT«「food」␤␤»
10:43 jnthn r: 'i like food' ~~ /<before foo> food/; say $/
10:43 camelia rakudo-parrot 180fca, rakudo-jvm 180fca: OUTPUT«「food」␤ before => 「」␤␤»
10:44 jnthn timotimo: Note ^^ difference. Make sure yo check that the before call is non-capturing.
10:44 jnthn Need to look at .name iirc
10:44 timotimo sounds good
10:44 jnthn Just checking the before call is zerowidth won't but it because
10:44 jnthn r: 'i like food' ~~ /<foo=?before foo> food/; say $/
10:44 camelia rakudo-parrot 180fca: OUTPUT«「food」␤ foo => 「」␤ before => 「」␤␤»
10:44 camelia ..rakudo-jvm 180fca: OUTPUT«「food」␤ before => 「」␤ foo => 「」␤␤»
10:45 jnthn oh hmm :)
10:46 jnthn bbi10
10:48 timotimo there's actually a few befores in rakudo's grammar that could be sped up this way
10:51 timotimo there's also a few mentions of <?before \S> for example, which could just become a zerowidth enumcharlist/encharrange
10:51 timotimo but many before's have alt or altseq in them
10:52 timotimo of course <?before \s | '#'> could just as well be turned into a zerowidth combined character class
10:52 timotimo that'd be a bit more advanced and applicable less often
10:53 FROGGS timotimo: it would if a # in <?[ ]> would work :/
10:53 timotimo :)
10:54 timotimo oh, $node.subtype could already be ignorecase for literal, that's probably why it doesn't have a zerowidth option
10:54 timotimo so it could only be either of the two :(
10:57 timotimo ah, moar already had code in place to support zerowidth literals
10:58 brrt left #perl6
11:08 jnthn \S is a cclass, not enumcharlist
11:09 timotimo ah, right
11:09 timotimo in that case, it goes back to the cached multilevel bitmap thingie moritz and i started prototyping outside of nqp
11:15 rindolf joined #perl6
11:22 salv0 joined #perl6
11:36 markov joined #perl6
11:39 denis_boyun joined #perl6
11:53 iSlug joined #perl6
12:10 lizmat onwards to Copenhagen
12:10 lizmat I'll be trying to cut the release tomorrow morning, about 20 hours from now
12:10 lizmat be sure to make your code work (TM) :-)
12:10 lizmat cu all later&
12:11 FROGGS I'll do some testing and let you know :o)
12:14 tgt joined #perl6
12:16 robinsmidsrod joined #perl6
12:34 woolfy left #perl6
12:37 xenoterracide joined #perl6
12:54 mstwu00 joined #perl6
12:56 telex joined #perl6
13:01 timotimo say, jnthn, couldn't i just in general wrap whatever's inside the <?before > into something like a concat that has zerowidth?
13:01 timotimo i don't see why that wouldn't work for everything
13:02 jnthn timotimo: concat really is very very simple
13:02 jnthn timotimo: I mean, it doesn't make a mark or anything
13:03 timotimo well, i just want something that can do zerowidth and contain other things, so maybe not concat specifically
13:04 FROGGS joined #perl6
13:07 jnthn timotimo: I'd not over-optimize the complicated cases
13:08 jnthn timotimo: Anything that captures is gonna get icky fast
13:08 jnthn timotimo: I'd just look for cases where <?before single_thing> where single_thing is easy to zero-width already, for the time being...
13:08 jnthn timotimo: The more that happens inside the before, the less significant its overhead comes.
13:10 denisboyun joined #perl6
13:10 timotimo right.
13:11 timotimo curiously, /^<?before foobar>/ generates a concat of a scan and a literal inside the before
13:11 timotimo that can't be right?!
13:11 jnthn timotimo: It's just that scan ends up in everything, I think...
13:11 timotimo oh, hm.
13:11 jnthn timotimo: It'll never actually scan 'cus from will never be -1
13:12 timotimo should i throw it away if i do this specific optimisation?
13:12 jnthn We could actually suppress generating that in the case we know we can never possibly scan.
13:12 jnthn Yes, you can.
13:12 timotimo thanks :)
13:12 jnthn You'll have a pass to throw away too
13:12 timotimo i do
13:15 timotimo can i do the same thing if the name was "after"? because the qregex will be flipped so that it matches in reverse? or something like that?
13:21 timotimo it kind of irks me that i can't combine subtype zerowidth with subtype ignorecase
13:22 jnthn I'd leave "after" alone...
13:23 jnthn It's uncommon and yeah, it's evil...
13:23 jnthn The string has to be flipped as well as the regex.
13:25 timotimo well, i'll get the already-flipped qast where i'm at
13:25 timotimo but i'll leave it alone for now.
13:26 prevost joined #perl6
13:27 * timotimo tries to compile the first prototype
13:29 timotimo +@$a_qast_node should work, right?
13:29 timotimo as in +@$a_qast_node == 1
13:30 moritz nqp: my $a := ['a', 'b']; say(+@$a)
13:30 camelia nqp-jvm: OUTPUT«Confused at line 2, near "say(+@$a)"␤  in panic (gen/jvm/stage2/NQPHLL.nqp:379)␤  in comp_unit (gen/jvm/stage2/NQP.nqp:922)␤  in TOP (gen/jvm/stage2/NQP.nqp:820)␤  in parse (gen/jvm/stage2/QRegex.nqp:1251)␤  in parse (gen/jvm/stage2/NQPHLL.nqp:1378)␤  in …»
13:30 camelia ..nqp-moarvm: OUTPUT«Confused at line 2, near "say(+@$a)"␤panic␤»
13:30 camelia ..nqp-parrot: OUTPUT«Confused at line 2, near "say(+@$a)"␤current instr.: 'panic' pc 16308 (gen/parrot/stage2/NQPHLL.pir:6020) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
13:30 moritz nqp: my $a := ['a', 'b']; say(+$a)
13:30 camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«2␤»
13:31 jnthn +@($a_qast_node) # works
13:31 jnthn YOu need the parens
13:31 timotimo ah
13:32 timotimo good to know
13:34 timotimo well, nqp still compiles
13:38 timotimo (turns out it never actually ran the optimization)
13:38 ajr joined #perl6
13:40 PacoAir joined #perl6
13:44 tgt joined #perl6
13:45 * timotimo wrote QAST::QRegex instead of QAST::Regex %)m)
13:45 timotimo er, those backspaces were swallowed apparently
13:54 kaleem_ joined #perl6
13:55 timotimo jnthn: i think i'm running into trouble because i'm simply throwing away a QAST::Block. at least it now gives me errors like Could not find sub cuid_14_1384955545.6123
14:02 jnthn timotimo: ah, yeah...you can't just toss those out of the tree as they will already have made it into the SC...
14:03 jnthn timotimo: The Rakudo optimizer just empties them of content and adds a QAST::Op.new( :op('die'), QAST::SVal.new( :value('Optimized out code executed!') ) ) or so
14:04 btyler joined #perl6
14:05 kbaker_ joined #perl6
14:05 timotimo ah, ok
14:05 timotimo where do i throw it, then?
14:06 timotimo can it become just an extra child for cclass, literal, enumcharrange, ... that won't be looked at by the actual QRegex compiler, but will still be compiled for the SC?
14:07 jnthn I'd just throw it in the QAST::Stmts [0] of the surroudning block.
14:07 timotimo hm, do i even have access to it where i am? :\
14:08 jnthn I dunno, where are you?
14:08 jnthn An optimizer really should know what block it's currently in... :)
14:08 jnthn At worst you can shove it in a $*CUR_BLOCK when you are walking the tree...
14:08 timotimo actually, i'm in the actions of p6regex
14:09 jnthn I thought you were implementing optimizations?
14:09 timotimo but the code could just as well live in the optimizer
14:09 jnthn s/could just as well/should/
14:09 timotimo that gives me another problem, though
14:09 timotimo how do i re-use the optimizations in rakudo?
14:10 jnthn Factor them into a QRegex::Optimizer class, and use that in both NQP's and Rakudo's optimizer, maybe.
14:10 timotimo that sounds sane.
14:11 jnthn Could go with a role, but I think simple delegation is saner in this case.
14:12 timotimo probably is, yeah
14:12 timotimo i thought the benefit of putting it in the actions is that i don't have to manually walk the whole tree to find the few instances where i can do my optimization
14:12 jnap joined #perl6
14:13 timotimo well, before i move it over, i want to get it to at least work :)
14:13 timotimo so i'll do the current_block dynamic variable trick you told me about and see if i can get it to work, then i'll clean it up
14:13 jnthn Well, but the optimizer already goes walking the tree.
14:14 timotimo it doesn't descend into qregex i believe
14:15 jnthn Right, it currently says "oh, regexes, I don't know how to optimize those" :)
14:17 timotimo there's something called $*RX that seems to be helpful to my current subgoal
14:18 timotimo oh. it's NQPMu at that particular moment >_>
14:18 jnthn argh ffs I need to teach the folks who made WPF a class in API design and making the easy things easy or something :/
14:19 jnthn uh, ww :)
14:19 * jnthn has enough other things to rant about here without ranting about WPF here too... :)
14:20 timotimo ah, i didn't look closely enough, it's actually %*RX and it just stores information, not the block i'm in
14:20 timotimo i should move the code to the optimiser now.
14:21 timotimo fwiw, i already have a regex optimizer stubbed in a different branch
14:24 * colomon had the smoke tester results script running for so long he doesn't remember how to reboot it (after the power outage)
14:25 timotimo hum. i even jogged today, but they're still not shipping my new laptop :(
14:27 tadzik maybe pushups will help :P
14:28 timotimo my wrists are not fond of push-ups
14:34 colomon masak: HTML::Template started failing smoke tests this week
14:36 bluescreen10 joined #perl6
14:48 mstwu00 left #perl6
14:49 nnunley joined #perl6
14:54 btyler joined #perl6
14:59 thou joined #perl6
15:02 tgt joined #perl6
15:07 kaare_ joined #perl6
15:15 FROGGS[mobile] joined #perl6
15:16 stevan_ joined #perl6
15:20 stevan_ joined #perl6
15:21 timotimo now i'm getting Method 'backtrack' not found for invocant of class 'NQPMu' so i think i'm not transferring something over that i should.
15:22 timotimo the dump unfortunately seems to elide something
15:26 masak colomon: I'll have a look. thanks.
15:27 darutoko joined #perl6
15:40 masak colomon: I just ran the tests on Rakudo 853e255 and they all passed.
15:40 masak compiling 180fcac now to run them again.
15:43 jnthn An appropriate sha-1 if it's now broken...
15:43 jnthn It used to work, then it did a 180, f'ing cac!
15:45 masak jnthn: excuse me?
15:45 jnthn :)
15:45 jnthn masak: cac(k) is slang for "crap" :)
15:46 masak oh!
15:46 masak is it perchance baby language too?
15:46 masak for the same thing.
15:46 jnthn Actually I mostly heared it used by teenagers :P
15:46 jnthn *heard
15:46 jnthn So basically, yeah, baby language :P
15:47 masak :P
15:47 timotimo i had another QAST::QRegex in there >_<
15:48 timotimo can we get a parameter on NQPMu that tells us what expression caused the NQPMu to get created? >_<
15:49 jnthn timotimo: We could just fix it to while about undeclared symbols...
15:49 jnthn *whine
15:50 timotimo i guess we could
15:50 jnthn Which I've no idea why it doesn't.
15:50 jnthn 'cus we don't/won't have listops in NQP
15:58 FROGGS joined #perl6
16:03 timotimo i seem to have made it work
16:06 timotimo not sure how to get the NQP Regex Optimizer into the rakudo optimizer though
16:06 timotimo could someone verify if nqp passes its qregex tests and its regex-interpolation tests?
16:06 jnthn Well, where'd you put it?
16:06 timotimo NQP/Optimizer ;)
16:06 jnthn Oh...
16:07 jnthn Maybe stick it in QRegex library?
16:07 jnthn No, not there
16:07 jnthn NQPP6QRegex I mean
16:07 FROGGS rp: use NQP::Optimizer:from<NQP>
16:07 camelia rakudo-parrot 180fca: OUTPUT«===SORRY!===␤"load_bytecode" couldn't find file 'NQP/Optimizer.pbc'␤»
16:07 timotimo well, wherever i put it, the optimizer of NQP needs to find it, too :P
16:07 timotimo FROGGS: not like that :)
16:07 jnthn Along with P6Regex::Grammar and P6Regex::Actions, you'll have P6Regex::Optimizer
16:07 FROGGS :o)
16:07 timotimo the rakudo optimizer is also in nqp
16:08 timotimo but that sounds good.
16:08 jnthn Yes, but NQP and Rakudo both use NQPP6QRegex :)
16:08 timotimo will i need to call back into the main language optimizer if i encounter a Block, btw?
16:08 jnthn Also, that is the most acronym library name...
16:08 jnthn timotimo: Up to you...
16:08 japhb_ r: constant %foo = ().list; say %foo.perl;
16:08 camelia rakudo-parrot 180fca, rakudo-jvm 180fca: OUTPUT«().list␤»
16:08 japhb_ ^^ Is that a bug, or me being silly?
16:09 timotimo it seems like both
16:09 jnthn japhb_: It's me not really grokking how constant is meant to work and wanting a model rather than just hacking something... :)
16:09 tadzik r: my %foo = ("a", 5); say %foo.perl
16:09 camelia rakudo-parrot 180fca, rakudo-jvm 180fca: OUTPUT«("a" => 5).hash␤»
16:09 jnthn japhb_: So right now it doesn't impose any context or check anything...
16:09 tadzik looks legit to me
16:09 japhb_ Ah.
16:09 tadzik r: my %foo = ("a", 5).list; say %foo.perl
16:09 camelia rakudo-parrot 180fca, rakudo-jvm 180fca: OUTPUT«("a" => 5).hash␤»
16:09 tadzik oh
16:09 jnthn Oh...it does .hash it?
16:10 tadzik well, it's a hash container
16:10 jnthn I didn't now that :)
16:10 tadzik I'd expect that :)
16:10 japhb_ tadzik: That was actually golfed down quite a bit.
16:10 tadzik but constant doesn't trigger it
16:10 jnthn Right, I just didn't thing that it'd been tweaked to do it.
16:10 jnthn Oh...sorry, you wrote my
16:10 jnthn And I read constant.
16:10 jnthn Well, yeah, we could simply .list or .hash the RHS depending on sigil
16:10 tadzik r: my constant %foo = ("a", 5).list; say %foo.perl
16:10 camelia rakudo-parrot 180fca, rakudo-jvm 180fca: OUTPUT«("a", 5).list␤»
16:10 timotimo t/nqp/49-regex-interpolation.t ........ 1/? Unrecognized regex metacharacter + (must be quoted to match literally) at line 2, near "b+"  -  i did a wrong :(
16:10 tadzik best of both worlds? :P
16:11 jnthn timotimo: looks like
16:11 jnthn Those tests pass for me on Moar and did on other backends last I knew.
16:11 timotimo d'oh
16:13 timotimo #      got: Unrecognized regex metacharacter + (must be quoted to match literally) at line 2, near "<+upper>+"
16:13 masak r: my %h = 4
16:13 camelia rakudo-parrot 180fca: OUTPUT«Odd number of elements found where hash expected␤  in method STORE at gen/parrot/CORE.setting:8810␤  in block  at /tmp/_8sZDgKNUk:1␤  in any  at /tmp/_8sZDgKNUk:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2…»
16:13 camelia ..rakudo-jvm 180fca: OUTPUT«Odd number of elements found where hash expected␤  in method STORE at gen/jvm/CORE.setting:8785␤  in block  at /tmp/w9Z82qaM0f:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_…»
16:13 timotimo huh?
16:13 masak re constant hash: I'd very much expect 'constant' to give the above warning just as much as 'my'.
16:13 timotimo i must have left something in some other file or something
16:13 * masak submits rakudobug
16:14 FROGGS masak++
16:14 tadzik r: constant %h = 4
16:14 camelia rakudo-parrot 180fca, rakudo-jvm 180fca: ( no output )
16:14 tadzik phihihi
16:15 jnthn That one is, like, so already in RT..
16:15 masak I will look for it.
16:16 masak p: constant %h = 1, 2; say %h.WHAT
16:17 camelia rakudo-parrot 180fca: OUTPUT«(Parcel)␤»
16:17 masak that's https://rt.perl.org/Ticket/Display.html?id=111944
16:17 masak I will attach the current complaint to it.
16:18 ajr joined #perl6
16:19 fhelmberger_ joined #perl6
16:21 dalek nqp: bdbb63a | (Timo Paulssen)++ | src/vm/parrot/QAST/Compiler.nqp:
16:21 dalek nqp: tiny performance tweaks in the parrot regex compiler
16:21 dalek nqp: review: https://github.com/perl6/nqp/commit/bdbb63a19f
16:21 timotimo another tiny snippet of regex fasterness for you :)
16:22 beastd joined #perl6
16:23 daxim joined #perl6
16:25 japhb_ (another fasterness)++
16:25 tadzik timotimo: does that bring some noticable win, ooc?
16:26 japhb_ masak++ # RT wrangling
16:26 timotimo tadzik: that commit i just pushed?
16:26 tadzik aye
16:26 timotimo probably not more than a centillion
16:26 tadzik :)
16:26 timotimo er, centillionth
16:27 tadzik still nice
16:27 timotimo maybe a bajillionth
16:27 timotimo it's an optimisation that doesn't cost any run- or compiletime, though
16:27 timotimo so it's a strict win, no matter how little
16:27 tadzik yep
16:28 timotimo that's what i'm all about, you see? :P
16:29 timotimo i ignore the big flaws and just improve the tiny details
16:29 tadzik timotimo++ :)
16:37 kaleem joined #perl6
16:38 timotimo jnthn: should all Regex nodes have min and max? or should they be made available once you set either of them with a role like compile_time_value does?
16:38 timotimo because it seems like only quant actually needs it
16:39 masak colomon: aha!
16:39 masak colomon: two "Failed to parse the template" errors.
16:39 masak my bet is that something has changed with grammars between those two revisions.
16:40 masak investigation pending -- currently spread over washing clothes and baking cinnamon buns :)
16:40 jnthn timotimo: I think only quant needs them, but not sure we have enough QAST::Regex nodes to be worth the mixin overhead...
16:41 timotimo should i measure? :)
16:41 diakopter anyone going to the london perl workshop?
16:41 timotimo i'm going through all Regex nodes anyway
16:41 jnthn Could do, but remember that you have different cost models on different VMs.
16:42 jnthn diakopter: Not me.
16:44 timotimo jnthn: yeah, i'll leave it be then.
16:44 raiph joined #perl6
16:45 ajr_ joined #perl6
16:54 diakopter anyone else going to LPW?
16:56 timotimo by not changing any negated things, i get the tests to stay passing. sadface :(
16:58 ajr_ joined #perl6
16:59 timotimo oh, i was apparently wrong
17:00 timotimo i think my handling of cclass may be wrong still.
17:01 rurban1 joined #perl6
17:06 timotimo oh no, it takes 120 seconds instead of 104!
17:07 timotimo (well, maybe i shouldn't be running 10 different things at the same time ... )
17:08 jnthn .oO( Pessimization )
17:08 dalek p6-pb: 82af612 | (Geoffrey Broadwell)++ | lib/PB/Model/Generator.pm:
17:08 dalek p6-pb: Add speculative comment in PB::Model::Generator
17:08 dalek p6-pb: review: https://github.com/samuraisam/p6-pb/commit/82af612910
17:08 dalek p6-pb: b1569a3 | (Geoffrey Broadwell)++ | lib/PB/Binary/Writer.pm:
17:08 dalek p6-pb: Refactor and extend write-message()
17:08 dalek p6-pb:
17:08 dalek p6-pb: Factor out wire type map and value encoding, and sketch support for
17:08 dalek p6-pb: repeated fields (no packed handling yet, though).
17:08 dalek p6-pb: review: https://github.com/samuraisam/p6-pb/commit/b1569a380d
17:08 timotimo japhb_: cool :)
17:08 japhb_ :-)
17:09 jnthn <multi-lang-pun>If you *pes*simize it, it goes slow as a dog...</multi-lang-pun>
17:12 ajr_ joined #perl6
17:12 timotimo the "before" optimization doesn't save a noticable amount of time in stage parse of the setting unfortunately
17:13 timotimo but currently i'm skipping negated befores and cclasses
17:14 timotimo well, most of the befores had already been optimized to be call-less befores
17:15 timotimo i'm thinking i should revert the changes from <?before '['> to <?[\[]> again, so that it'll be a literal check instead of a enumcharlist, because that should just get the ord and do an integer comparison
17:16 jnthn timotimo: Well, or just make an enumcharlist of 1 char turn into a literal... :)
17:16 jnthn As a more general opt.
17:17 timotimo ah, sure
17:19 timotimo would you be fine with that optimisation going into the Actions instead of the Optimizer?
17:20 timotimo that's also where it decides to create charrange instead of enumcharlist.
17:21 jnthn I think I'd prefer that one goes into the optimizer, so it can work on enumcharlists however they happen to come about...
17:21 timotimo well, at that point i already know if there's just a single range, rather than multiples
17:22 timotimo and don't have to go through the string and compare all the ords
17:24 jnthn timotimo: Yes, I'm not saying move the range one.
17:24 timotimo ah, oops :)
17:24 jnthn timotimo: I'm saying put the one char enumcharlist -> literal one in the optimizer.
17:25 timotimo i'm confused. now i'm getting "Missing or wrong version of dependency 'gen/parrot/stage2/QRegex.nqp'"?!
17:25 timotimo ah, whoops
17:25 timotimo i still had a compilation running in the background that probably blocked the file
17:26 jeff_s1 joined #perl6
17:31 timotimo ah, i see!
17:32 timotimo i need to merge the negatedness of the cclass with the negatedness of the before
17:32 jnthn Yes, if you want it to not not be right...
17:32 timotimo so .. :negate($one.negate != $other.negate), is that right?
17:33 timotimo no, that gives 1 for 0 0
17:33 jnthn xor?
17:33 timotimo yeah, i need that one
17:33 timotimo nqp: say(nqp::xor(1, 1))
17:33 camelia nqp-jvm: OUTPUT«java.lang.NullPointerException␤  in  (gen/jvm/stage2/NQPCORE.setting:672)␤  in print (gen/jvm/stage2/NQPCORE.setting:671)␤  in say (gen/jvm/stage2/NQPCORE.setting:678)␤  in  (/tmp/mL_PQi91OW:1)␤  in  (gen/jvm/stage2/NQPHLL.nqp:1100)␤  in eval (gen/jvm/sta…»
17:33 camelia ..nqp-moarvm: OUTPUT«Error while compiling op xor (source text: "nqp::xor(1, 1)"): No registered operation handler for 'xor'␤frame_name_1109␤»
17:33 camelia ..nqp-parrot: OUTPUT«␤»
17:34 zakharyas joined #perl6
17:34 timotimo wow, oopsie-daisies
17:34 timotimo nqp: say(1 ^ 1)
17:34 camelia nqp-jvm: OUTPUT«Confused at line 2, near "say(1 ^ 1)"␤  in panic (gen/jvm/stage2/NQPHLL.nqp:379)␤  in comp_unit (gen/jvm/stage2/NQP.nqp:922)␤  in TOP (gen/jvm/stage2/NQP.nqp:820)␤  in parse (gen/jvm/stage2/QRegex.nqp:1251)␤  in parse (gen/jvm/stage2/NQPHLL.nqp:1378)␤  in…»
17:34 camelia ..nqp-moarvm: OUTPUT«Confused at line 2, near "say(1 ^ 1)"␤panic␤»
17:34 camelia ..nqp-parrot: OUTPUT«Confused at line 2, near "say(1 ^ 1)"␤current instr.: 'panic' pc 16308 (gen/parrot/stage2/NQPHLL.pir:6020) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
17:34 ajr joined #perl6
17:35 timotimo nqp: say(nqp::bitxor_i(1, 1))
17:35 camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«0␤»
17:35 timotimo there we go. just hope they'll always be 0 or 1 :)
17:39 [Sno] joined #perl6
17:40 ajr__ joined #perl6
17:44 timotimo yeah, the performance difference isn't very noticable :(
17:44 timotimo oh well. i'll try to integrate the regex optimizer into rakudo now
17:44 dalek rakudo-star-daily: 6b43502 | coke++ | log/ (5 files):
17:44 dalek rakudo-star-daily: today (automated commit)
17:44 dalek rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/6b435026d2
17:46 FROGGS preflex: tell lizmat Here are spectest results https://gist.github.com/FROGGS/9304a3aba8a6f9a4cc04
17:46 preflex Consider it noted.
17:49 ajr_ joined #perl6
17:49 Rotwang joined #perl6
17:54 timotimo how do i test something related to capturing with befores?
17:54 timotimo i'm not sure what i need to be aware of there ...
17:55 FROGGS does that capture at all? I thought not
17:55 timotimo i may be able to make it capture and it'd break if i'm not careful enough in the optimization
17:56 timotimo oh, crud, i still have some broken tests in here
17:56 iSlug joined #perl6
17:56 timotimo didn't the tests all pass just a bit ago? :\
17:57 ajr joined #perl6
17:58 FROGGS timotimo: nqp-p passes here
17:59 timotimo yes, it's my optimization causing trouble with parsing regexes apparently
17:59 FROGGS btw, I tend to create diffs locally if I fiddle with it longer...
18:00 FROGGS git diff >201311201900.diff
18:00 timotimo i commit instead :)
18:03 FROGGS hummm
18:03 FROGGS nqp-j fails one qregex test, where nqp-p does not:
18:03 FROGGS t/qregex/01-qregex.t                (Wstat: 0 Tests: 748 Failed: 1)
18:03 FROGGS Failed test:  492
18:03 jeff_s1 joined #perl6
18:03 FROGGS is that known?
18:05 timotimo can you look what test that is?
18:05 kurahaupo joined #perl6
18:07 moritz test 492 :-)
18:07 REPLeffect joined #perl6
18:07 jeff_s2 joined #perl6
18:09 timotimo i can't see a harmful transformation that's being done :\
18:09 timotimo so it's a fiendish transformation, most likely
18:09 FROGGS ok 491 - negated allows ws
18:09 FROGGS not ok 492 - negated character range
18:09 FROGGS not ok 493 - illegal character range# TODO reversed character range
18:10 timotimo oh?
18:10 timotimo could i have b0rked that?
18:10 timotimo i recently touched character ranges.
18:12 timotimo can you put if $node.negate { return self.enumcharlist($node) } at the beginning of method charrange in src/vm/jvm/QAST/Compiler.nqp and see if it's still broken, please?
18:12 ajr_ joined #perl6
18:12 timotimo oh, i see what's going on
18:13 jeff_s1 joined #perl6
18:13 timotimo there's an ifge that should be a ifgt
18:13 timotimo feel free to attempt that fix and commit it if you have a moment
18:13 timotimo i think i need a nap :|
18:13 ssutch joined #perl6
18:13 dalek nqp/simplify_before: aadd31e | (Timo Paulssen)++ | src/vm/ (2 files):
18:13 dalek nqp/simplify_before: teach parrot and jvm about zerowidth literals
18:13 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/aadd31efc0
18:13 dalek nqp/simplify_before: 0e3b819 | (Timo Paulssen)++ | src/QRegex/P6Regex/Actions.nqp:
18:13 dalek nqp/simplify_before: first draft of a before-assertion simplifier.
18:13 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/0e3b819e1c
18:13 dalek nqp/simplify_before: 060b723 | (Timo Paulssen)++ | src/ (2 files):
18:13 dalek nqp/simplify_before: NQP RegexOptimizer for before assertions
18:13 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/060b723a3e
18:13 dalek nqp/simplify_before: 06b8477 | (Timo Paulssen)++ | src/NQP/Optimizer.nqp:
18:13 dalek nqp/simplify_before: less debug output
18:13 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/06b84779d5
18:13 dalek nqp/simplify_before: 29a6eb5 | (Timo Paulssen)++ | src/NQP/Optimizer.nqp:
18:13 dalek nqp/simplify_before: need to factor in both negations.
18:13 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/29a6eb5c58
18:14 dalek nqp/simplify_before: 0de4547 | (Timo Paulssen)++ | src/QAST/Regex.nqp:
18:14 dalek nqp/simplify_before: more dump output for Regex nodes.
18:14 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/0de4547e5b
18:14 timotimo if you want to, you can play around with this branch. it won't run all spectests successfully, though :(
18:19 rindolf joined #perl6
18:29 * [Coke] apparently does not have rights to update post-commit hooks on nqp & parrot. can someone who does remove the sends to #parrot ?
18:30 FROGGS [Coke]: I'd think that these commit go to dalek and dalek itself must be tweaked
18:31 [Coke] FROGGS: no, it's a post-commit hook on github.
18:31 FROGGS I have no admin rights either though to actually check that
18:34 FROGGS [Coke]: but the IRC hook is for one channel only
18:34 [Coke] FROGGS: no, you can specify multiple channels.
18:35 [Coke] the hook posts to dalek. dalek posts to IRC.
18:35 [Coke] the hook that posts to dalek specifies any number of channel/server combos.
18:35 FROGGS room - Supports single or multiple rooms (comma separated). Also supports room passwords (room_name::password). Prefixing '#' to the room is optional.
18:35 FROGGS yeah
18:35 [Coke] so github is the thing that needs changing.
18:35 FROGGS jnthn: can you have a look?
18:36 FROGGS jnthn: or give me admin rights :o)
18:38 Rotwang hi
18:39 Rotwang I'm trying to comprehend this code: https://github.com/grondilu/libdigest-perl6/blob/master/lib/Digest.pm
18:39 Rotwang what is: my \foo ?
18:40 jeff_s1 joined #perl6
18:41 FROGGS Rotwang: a declaration of a sigil-less variable
18:41 [Coke] sigil-less variable.
18:41 [Coke] you can then use it later as a bare foo
18:43 Rotwang cool, although it looks ugly
18:43 FROGGS true :o)
18:46 TimToady the alternative is to blow up if anybody ever defines a 'foo' type
18:46 berekuk joined #perl6
18:47 TimToady or come up with a less ugly method of saying "this isn't meant to be a type constraint"
18:47 FROGGS the alternative is to use $foo
18:47 TimToady no
18:47 TimToady that itemizes
18:47 TimToady \foo is just a bare parcel binding without itemization
18:47 FROGGS ahh, it is not just about style?
18:47 TimToady no
18:48 TimToady it just happened that after we added it to signatures to do parcel binding, it works for 'my' too :)
18:48 FROGGS well I have just the rosettacode examples in mind where you said that it would look more like a mathematical formula in the end
18:48 TimToady we could, instead, add another declarator, I suppose, but we'd still need to have the \ in siggies, so it doesn't help that much
18:48 TimToady or something to do what \ does
18:49 FROGGS but yeah, I knew about its behaviour in signatures... just wasn't aware that it had that meaning in Digest.pm
18:49 TimToady in fact, it doesn't exactly create a variable, just an alias
18:49 TimToady r: my \foo = 42; foo = 43;
18:49 camelia rakudo-jvm 180fca: OUTPUT«Cannot modify an immutable value␤  in block  at /tmp/ZJnxNYBYe6:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  in any command_eval at…»
18:49 camelia ..rakudo-parrot 180fca: OUTPUT«Cannot modify an immutable value␤  in block  at /tmp/R4WPDfJCR9:1␤  in any  at /tmp/R4WPDfJCR9:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/parrot/stage2/NQPHLL.nq…»
18:49 FROGGS I don't think replacing \ by something else makes it better :o)
18:49 TimToady as you see, foo doesn't vary :)
18:50 TimToady it's our SSA form of assignment currently
18:50 FROGGS mhm
18:50 japhb TimToady, What is the linguistics term for languages like German that tend to build long compound words?
18:50 * FROGGS .oO( my *FOO = 42 )
18:50 TimToady hmm, agglutinative maybe?
18:50 japhb .oO( It's linguistics, it can't be OT in #perl6 ... )
18:51 FROGGS japhb: I like that btw, and I find split-up-words very disturbing
18:51 FROGGS well, maybe not "very", but still
18:52 japhb One's natal language's customs are comforting, I think.
18:52 FROGGS possibly :o)
18:52 TimToady well, it helps to have some standardish word endings so that the internals of the word tend to be self-clocking
18:53 TimToady the greeks had standard enough word endings that they didn't need word spacing at all, or didn't think they needed it :)
18:54 japhb Wikipedia has an entire category tree for agglutinative languages.  19 sub-categories and 370 pages directly at the top level.
18:54 TimToady in german most of your verbal prefixes would end -en
18:55 TimToady .oO( sitzen Sie down und watchen die Blinkenlights )
18:55 FROGGS hehe
18:56 jnthn [Coke]: Remove the hooks for reporting of commits to nqp and *parrot*? Doesn't #parrot want to know about Parrot commits? Or did you mean NQP and Rakudo?
18:56 jnthn [Coke]: Done the nqp one, anyways...
18:57 TimToady my father used to quote: "Die Kuh hat über die fence gejumped, und hat der Cabbage verdamaged."
18:57 TimToady er, Fence
18:57 FROGGS ewww
18:58 FROGGS that is bad Germish
18:58 arnsholt TimToady: At least most people don't have to worry about rendering boustrophedon digitally =)
18:58 TimToady well, mixed ltr and rtl languages are worse
18:58 arnsholt I wouldn't call German agglutinative, though
18:58 TimToady that's mostly used on verbs, if I recall
18:59 TimToady eskimo and such
18:59 arnsholt Compounding isn't orthogonal to agglutinativity, but at a bit of an angle
18:59 TimToady well, you probably remember a lot more linguistics than I do :)
18:59 FROGGS Klingon certainly is
19:00 arnsholt I'd class German as more analytic than agglutinating, but with some variability in word order
19:00 TimToady my `foo = 42;
19:00 TimToady that would be slightly prettier
19:00 FROGGS true
19:01 TimToady and only recognized in siggies
19:01 TimToady so we're still kinda reserving ` for user, er, use
19:01 arnsholt japhb: Oh, and English makes compound words quite frequently as well. It's just that they're mostly written with spaces in between, so they're not as obvious on the page
19:01 jnthn doesn't look better than \ to me :)
19:01 jnthn uh
19:01 jnthn `
19:02 jnthn ...also my ` key is sticky, so don't change it :P
19:02 * TimToady snerks
19:02 FROGGS *g*
19:02 FROGGS then we need to get rid of all C-s
19:02 FROGGS jnthn: don't you have a new laptop?
19:03 jnthn FROGGS: Yeah, but working on my desktop at the moment
19:03 TimToady y'know, new keyboards are really cheap these days
19:03 FROGGS jnthn: well, keyboards tend to have a plug
19:03 FROGGS TimToady: not the primus maximus or what it was called
19:03 jnthn I didn't realize my ` key was icky until just now :) I don't type those too often... :)
19:03 FROGGS about 1.800 €
19:04 TimToady obviously you don't exercise it enough
19:04 FROGGS usually a perler is used to `
19:04 TimToady you don't have to reach for qx :P
19:05 FROGGS that reminds me that qx is broken atm :/
19:05 FROGGS (it does not pass %*ENV along)
19:05 [Coke] jnthn: no, remove the rakudo & nqp notifications -to #parrot-. leave parrot/parrot notifications alone.
19:06 jnthn [Coke]: Rigth, that's what I guessed you meant, but wanted to check :)
19:06 [Coke] jnthn++ excellent guesser.
19:06 * [Coke] holds up a single finger.
19:06 * [Coke] gives up on charades and #dayjobs.
19:06 dalek rakudo/nom: 8e6b19a | (Tobias Leich)++ | docs/ChangeLog:
19:06 dalek rakudo/nom: typo
19:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8e6b19a5f7
19:06 dalek rakudo/nom: 7f6b885 | (Elizabeth Mattijsen)++ | docs/release_guide.pod:
19:06 dalek rakudo/nom: We also need File::Slurp, I just found out
19:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7f6b885343
19:06 dalek rakudo/nom: 180fcac | (Elizabeth Mattijsen)++ | docs/announce/2013.11.md:
19:06 dalek rakudo/nom: Mention run/shell in announcement
19:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/180fcac36f
19:07 jnthn uh, bother, wrong button...
19:07 jnthn Anyway, done :)
19:07 berekuk joined #perl6
19:08 FROGGS umm, my Inline module still depends on File::Spec, which is broken and rubbish nowadays
19:08 jnthn FROGGS: Didn't File::Spec make it into core?
19:08 japhb The IO::Spec API is damn near the same, and in core.
19:09 FROGGS jnthn: yes :o)
19:09 japhb (In fact, it's slightly simpler)
19:09 FROGGS I know I know... I just need to update the META.info I guess
19:10 FROGGS ohh dear, just the META.info required it, not even the code -.-
19:12 FROGGS btw, is "github:FROGGS" a nice auth?
19:14 japhb_ Certainly looks good to me.
19:15 japhb_ I think github definitely rises to the ranks of cpan as being a well known account authority for Perl programmers.
19:15 FROGGS cool, just need to wait for projects.json being generated and then I can test
19:15 FROGGS not only for Perl, but yes
19:16 japhb_ Well sure.
19:16 FROGGS I trust github where I don't trust sourceforge for example
19:16 japhb_ ditto
19:16 FROGGS soureforge is more like: here after the ad please download one of a bunch of zipfiles
19:19 TimToady crumb, getting a (hopefully painless) migraine--but I can't see what I'm typing very well...
19:19 TimToady so afk for a bit...
19:19 FROGGS ó.ò
19:19 FROGGS see you
19:20 lizmat joined #perl6
19:22 * lizmat is finally on the ferry to Rødbyhavn
19:22 preflex lizmat: you have 1 new message. '/msg preflex messages' to read it.
19:25 iSlug joined #perl6
19:25 jnthn lizmat: OH, I think that's the one they shove trains on too :)
19:26 lizmat yup, they do, although not on this particular one, afaik
19:26 jnthn :)
19:27 jnthn It putt-putts its way over the sea from Puttarden, iirc :)
19:27 tgt joined #perl6
19:27 jnthn *Puttgarden
19:27 lizmat seems I'm losing my internet: there's no Wifi on board that works
19:28 lizmat see you on the other side
19:44 sqirrel joined #perl6
19:59 lizmat joined #perl6
19:59 lizmat hi fron Denmark
20:00 lizmat commuting again&
20:03 dalek nqp: d959560 | dwarring++ | examples/rubyish/ (6 files):
20:03 dalek nqp: fixed rubyish object attribute scoping. adding recursion tests
20:03 dalek nqp: review: https://github.com/perl6/nqp/commit/d959560603
20:04 jnthn lizmat must be in Lolland :D
20:07 nwc10 In #perl6, every day is Punday
20:08 nwc10 looks like nqp commits now correctly don't show up on #parrot
20:08 nwc10 How long until someone commits something to Rakudo?
20:08 jnthn No, no, that's what it's actually called!
20:08 jnthn http://en.wikipedia.org/wiki/Lolland
20:15 berekuk joined #perl6
20:25 moritz was there a parrot release yesterday?
20:27 jnthn moritz: I didn't see an email about it
20:28 moritz no release-ish commits or tags either
20:29 * masak hopes for a Moar release soon :>
20:30 FROGGS masak: hoping is not enough! :P
20:31 timotimo bleeeh, i'm still super tired :(
20:31 FROGGS :/
20:31 timotimo but i've got the commit to fix charrange.
20:35 cooper joined #perl6
20:35 timotimo t/nqp/19-file-ops.t ................... Failed 8/40 subtests - is this known? (on jvm)
20:35 moritz yes, I've seen that
20:36 timotimo OK
20:36 arnsholt Yeah, happens on my machine as well
20:36 arnsholt And one or two fails in a different file
20:38 * moritz runs j-test
20:38 FROGGS a qregex test fails, 492 or so
20:39 timotimo t/qregex/01-qregex.t .................. ok
20:39 timotimo nope :)
20:39 FROGGS \o/
20:39 timotimo t/jvm/02-pipes.t ...................... Failed 1/7 subtests - this is known, too
20:39 FROGGS timotimo++
20:39 timotimo ?
20:40 FROGGS hmmm
20:40 FROGGS ahh, fails here too
20:41 dalek nqp: c293015 | (Timo Paulssen)++ | src/vm/jvm/QAST/Compiler.nqp:
20:41 dalek nqp: for !charrange, it had to be ifgt, not ifge.
20:41 dalek nqp: review: https://github.com/perl6/nqp/commit/c2930155bd
20:42 berekuk joined #perl6
20:52 raiph joined #perl6
20:59 aindilis joined #perl6
21:06 denis_boyun__ joined #perl6
21:07 Rotwang what is main difference between Blob and Buf?
21:08 FROGGS IIRC one of them is specced immutable while the other is not
21:08 FROGGS but atm both are
21:08 timotimo yeah, but it's     # TODO: override at_pos so we get mutability
21:08 timotimo :)
21:09 Rotwang thanks
21:12 timotimo huh. restricting my optimisation from turning negated literals into things (why would that even happen?) causes a segmentation fault while parsing the setting o_O
21:15 FROGGS uhh
21:16 timotimo https://gist.github.com/timo/0fc6de61754e18ae6825 - dunno what's causing it
21:16 timotimo don't even know what thaw does
21:24 FROGGS damn, I want to open( "$*VM<config><cc> -c -xc -", :w, :p ), but open() prepends the cwd to cc >.<
21:25 FROGGS on linuxes I could `which` to get an abspath to cc, but how do I do that on windows?
21:25 FROGGS meh
21:26 timotimo when not optimising for literal befores, i get a tiny speed-up it seems
21:29 dalek nqp/simplify_before: 51192c4 | (Timo Paulssen)++ | src/vm/ (2 files):
21:29 dalek nqp/simplify_before: teach parrot and jvm about zerowidth literals
21:29 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/51192c4dd0
21:29 dalek nqp/simplify_before: 795d519 | (Timo Paulssen)++ | src/QRegex/P6Regex/Actions.nqp:
21:29 dalek nqp/simplify_before: first draft of a before-assertion simplifier.
21:29 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/795d5199ae
21:29 dalek nqp/simplify_before: 5c4d88d | (Timo Paulssen)++ | src/ (2 files):
21:29 dalek nqp/simplify_before: NQP RegexOptimizer for before assertions
21:29 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/5c4d88dbf1
21:29 dalek nqp/simplify_before: 12d5660 | (Timo Paulssen)++ | src/NQP/Optimizer.nqp:
21:29 dalek nqp/simplify_before: less debug output
21:29 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/12d56605fd
21:29 dalek nqp/simplify_before: 387e382 | (Timo Paulssen)++ | src/NQP/Optimizer.nqp:
21:29 dalek nqp/simplify_before: need to factor in both negations.
21:29 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/387e3827b9
21:29 dalek nqp/simplify_before: e4e9ac8 | (Timo Paulssen)++ | src/QAST/Regex.nqp:
21:29 dalek nqp/simplify_before: more dump output for Regex nodes.
21:29 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/e4e9ac82f3
21:29 dalek nqp/simplify_before: 342e93b | (Timo Paulssen)++ | src/NQP/Optimizer.nqp:
21:29 dalek nqp/simplify_before: remove apparently dangerous literal optimization
21:29 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/342e93b839
21:34 lue FROGGS: is there no :abs adverb for &open or anything? also, you could try open( qx"$*VM<config><cc> -c -xc -", :w, :p ), seeing as you seem to be executing cc
21:35 lue qqx rather
21:35 FROGGS qqx just does an open, readall, close
21:36 FROGGS and then returns the slurped output
21:36 FROGGS I need to open cc as a pipe, to print to it C source
21:38 labster joined #perl6
21:39 FROGGS there is no :abs...
21:44 Mouq joined #perl6
21:45 benabik joined #perl6
21:47 jeff_s1 joined #perl6
21:54 lue FROGGS: the only other thing I can think of is to count the number of directories in CWD and prefix that many ../ to the string.
21:54 japhb r: say $*VM<config><cc>
21:54 camelia rakudo-parrot 180fca: OUTPUT«cc␤»
21:54 camelia ..rakudo-jvm 180fca: OUTPUT«(Any)␤»
21:55 FROGGS lue: and then I had a ../../../cc ? this would not find my cc either :o)
21:55 FROGGS I just use the nqp:: ops now :/
21:56 FROGGS japhb: yeah, I'll care about that when we have NativeCall there
21:57 japhb FROGGS, Oh, I was just checking whether the cc defaulted to having paths of its own.
21:57 japhb I wasn't (intentionally) pointing out the JVM difference.
21:57 FROGGS ahh
21:57 lue FROGGS: try "; $*VM<config><cc>" as the start of the string
21:57 FROGGS well no, cc and friends usually come without path
21:57 japhb lue:  >.<
21:57 FROGGS gah
21:58 FROGGS no :o)
21:58 japhb Little Johnny Tables strikes again
21:59 lue I understand you don't want STDERR clogging things up. Try 2>/dev/null; then :)
21:59 * timotimo is unsure what to do with nqp/simplify_before now
21:59 timotimo maybe i should try measuring some times
22:02 berekuk joined #perl6
22:02 FROGGS lue: I like that better :o) https://github.com/FROGGS/p6-Inline-C/commit/9113eb2d88c297c1283fc9848ac3020d67afa223
22:04 denis_boyun joined #perl6
22:04 FROGGS ==> Testing Inline
22:04 FROGGS t/c.t .. ok
22:04 FROGGS All tests successful.
22:04 FROGGS \o/
22:04 FROGGS 'love it
22:05 lue :)
22:07 xenoterracide joined #perl6
22:07 benabik joined #perl6
22:08 lue I don't see anything in S32::IO that requires a CWD prefix from open. If it is in fact supposed to happen, I'd like :abs/:rel adverbs, where :rel does the CWD prefixing and :abs doesn't.
22:08 lue (maybe :rel would take a value, default to $*CWD)
22:09 lue Ah, here it is in S16:  * When a IO::Path object is created, if the string it is given is not an
22:09 lue absolute path, then $*CWD is prepended to it.
22:10 FROGGS :/
22:11 FROGGS I'm not sure but I think the $*CWD only messes up when opening a pipe
22:11 FROGGS so maybe this should be special-cased
22:16 timotimo my super biased benchmark seems to suggest that using simple befores is now quite a couple of times faster. exact numbers in a minute.
22:17 timotimo matching "foobarfoobar " x 1000 ~ " bazbaz" against /<?before \s> \s bazbaz/
22:17 timotimo previously: 19.5s for 100 rounds
22:18 lizmat joined #perl6
22:18 timotimo now:        26.0s for 10_000 rounds
22:18 raiph joined #perl6
22:18 * lizmat checks backlog while enjoying the view on Copenhagen from the 7th floor
22:19 jnthn :)
22:19 jnthn lizmat: Glad you made it.
22:20 lizmat yeah, we just missed the ferry in Puttgarden and had to wait ~ 1 hour  :-(
22:20 timotimo so yeah, it seems like there's some overhead to calling a subrule and then a thunk in addition
22:21 * timotimo runs the rakudo spectest suite to make sure nothing obvious is broken
22:21 timotimo jnthn: do you think i can merge this into nom?
22:21 timotimo the overhead of running the optimizer over regexes may not yet be worth the payoff
22:22 timotimo except if you hit a pathological case like mine
22:22 timotimo and literals are currently b0rked in a way that befuddles me
22:24 timotimo (but the optimizer will not try to do that any more)
22:24 jnthn timotimo: Hmm...not now, I think. Release very soon.
22:24 jnthn timotimo: Maybe let's look at doing it after release...I can perhaps find a moment to review it too ;)
22:24 timotimo that would be great :)
22:25 btyler joined #perl6
22:32 timotimo jnthn: do you think the analysis overhead makes up for the winnings of turning an alt or altseq of single-character literals into an enumcharlist?
22:33 dalek specs: 724cff7 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
22:33 dalek specs: Fix TAB pollution
22:33 dalek specs: review: https://github.com/perl6/specs/commit/724cff7051
22:37 denisboyun joined #perl6
22:41 BenGoldberg joined #perl6
22:43 jnthn timotimo: Well, better question is, does that ever occur in real code?
22:44 jnthn timotimo: Removing the scan from a regex whose first thing is a ^ is probably a more worthwhile optimization...
22:45 timotimo huh, is that even going to give a speed improvement?
22:45 timotimo i thought scan is going to immediately finish if its "from" isn't -1?
22:47 berekuk joined #perl6
22:48 timotimo t/spec/S05-modifier/perl5_5.rakudo.parrot  Failed tests:  5, 7, 9  - uh oh
22:49 jnthn timotimo: Yeah, but it is -1 in /^foo/
22:49 timotimo oh!
22:50 timotimo so it'll scan across the whole source text, even though it's going to fail at every spot except the beginning?
22:52 jnthn Yeah. It fails quickly (integer comparison) each time but it's still stupid to bother :)
22:53 timotimo well, if you have a hundred thousand bytes to scan through, it may take a bit :P
22:56 timotimo well, i'm glad there's lots of things to improve >_<
23:03 japhb Was the 100_000 bug ever fixed?
23:04 japhb Memory allocation histograms would probably be very revealing.
23:05 japhb Cut off the long tail of that histogram, and I bet Rakudo gets a LOT happier.
23:05 japhb Is there a way in jvm or parrot to produce such a histogram relatively easily?
23:06 timotimo someone, i think it was hoelzro or dwarring, recently experimented with something on JVM
23:07 lizmat jnthn: coming back to our concurrency / locking issues we talked about yesterday
23:08 timotimo it led us to find out that the linepos cache was being regenerated for each and every BEGIN block, which caused a full re-scan of the source code about 130 times for the setting compilation
23:08 lizmat pretty sure we need some way to either make sure array's are push/pop safe from different threads
23:08 lizmat or we need to be able to mark them as safe
23:08 lizmat otherwise, something as simple as registering a tap on a Supply might fail
23:09 woolfy joined #perl6
23:09 jnthn lizmat: I'm pretty sure I threw in appropriate locking to not have the issue in that case (on the basis that it's OK to use low level things when you're implementing the high level things)
23:09 lizmat otoh, I now see that the push/pop in Supply are actually protected by a lock
23:09 lizmat indeed
23:10 lizmat ok, false alarm there  :-)
23:10 jnthn The other one to consider is iterating, given we have laziness :)
23:11 japhb timotimo, Was the 130x rescan bug fixed?
23:11 jnthn That that comes into play with push too...
23:11 jnthn japhb: I thougth it was but when I looked at the code doing it the other day I became a little less convinced it is, but I was very tired...
23:12 japhb jnthn, understood.
23:12 jnthn (Stuff changed to address the issue, I just couldn't quite convince myself that the code actually *did* address the issue)
23:12 japhb That should be a relatively easy thing to check, should it not?
23:13 timotimo japhb: yeah, the line pos cache was just passed on to Compiler.compile if it was available and it didn't have to rescan any more
23:13 jnthn Think so
23:13 japhb (Meaning, it shouldn't be hard to instrument the rescan)
23:13 jnthn Right.
23:13 timotimo i'll do that right now.
23:14 japhb timotimo, Thank you.
23:14 jnthn timotimo: My concern was that I don't think we ever create a data structure to re-use.
23:14 jnthn timotimo: That is, we never bind an empty thing to the otuermost line pos cache contextual.
23:14 japhb Who are the JVM coders?  jnthn, arnsholt, who else?  I'm wondering if one of them knows how to get a memory alloc histogram out of it.
23:15 jnthn Or if we do I couldn't see where.
23:15 japhb Actually,
23:15 * japhb searches online
23:15 jnthn japhb: jvisualvm *may* do it...
23:17 timotimo jnthn: no need to put in an empty datastructure, because if it's not truthy, it'll be regenerated
23:18 rurban1 joined #perl6
23:19 jnthn timotimo: Yes, but if you don't, and you redeclare the contextual in the compile method, it will only store the computed thing in that contextual, *NOT* the outer one.
23:19 jnthn as in, further down the callchain
23:19 jnthn Where it could be re-used
23:19 timotimo oh!
23:19 timotimo yes, i see multiple rebuilds of the linepos array, actually.
23:19 timotimo i'll see if it's still in the 100s for the setting
23:19 stevan_ joined #perl6
23:20 timotimo i thought it might be dangerous to just let an inner compile call leak into the outer dynamic variable because what if you call eval on some file or string?
23:21 timotimo yeah, you were right
23:22 japhb D'oh
23:22 timotimo it's a good thing you notified the authorities, mister!
23:23 timotimo jnthn: a suggestion for how to make passing the cache on safe? cache the WHICH of $target as well?
23:24 jnthn timotimo: I think the trick is to look at definedness in method compile
23:24 timotimo actually, it seems like in the setting we only build one linepos array
23:24 jnthn timotimo: If you're passed something defined, bind it to the contextual
23:25 timotimo but in bootstrap and metamodel, for example, we build multiple
23:25 jnthn And not, then bind an empty nqp::list() there
23:25 jnthn And in the thing that builds the cache, only create and bind a data structure iff it's not defined, and if it's defined but false, populate *that* empty data structure.
23:25 timotimo where do i put the my $*LINEPOSCACHE then?
23:26 jnthn Still in method compile
23:26 timotimo ok
23:26 sivoais joined #perl6
23:26 japhb From a bit of searching, it looks like jmap and jhat are the first port of call when looking for aggregate heap info, standard since 1.6 JDK
23:26 diakopter eh
23:26 jnthn method compile(blah blah, :$lineposcache, blah) { my $*LINEPOSCACHE := nqp::defined($lineposcache) ?? $lineposcache !! nqp::list_i(); ... }
23:27 diakopter japhb: jvisualvm is the tool
23:27 timotimo yeah
23:27 * japhb shrugs
23:27 japhb <--- very not a Java person
23:29 jnthn <--- not one either, just learned JVM instruction set, and indy :P
23:29 timotimo i wonder if there's a trick to find a \r or \n very quickly in a whole 64 bit area with some fancy integer arithmetic or something
23:32 timotimo huh. i still get multiple regenerations of the lineposcache
23:32 timotimo src/Perl6/Actions.nqp
23:32 timotimo linepos cache regenerated in 4.71963596343994 seconds
23:32 timotimo this is surprising
23:32 timotimo given that the setting only takes 0.002s for the linepos cache
23:33 timotimo it doesn't seem like your change changed much, or maybe i misimplemented it
23:33 timotimo but in the setting it only gets called once and is surprisingly fast
23:33 timotimo even in the metamodel where it gets regenerated like 20 times, it only takes 0.0002s each
23:34 timotimo well, 0.0005s, but whatever.
23:35 timotimo i'll go to bed now
23:35 timotimo good night!
23:40 jnthn Grr, didn't get to hack on p6store *again*. :(
23:44 stevan_ joined #perl6

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo