BenGoldberg | m: dd 42.kv | 01:21 | |
camelia | (0, 42).Seq? | ||
[Coke] | how can I examine the contents of "self!LINES-ITERATOR" in an IO::Handle object (I have the rakudo source open, so can cheat) | 02:16 | |
ah, it's doing the anon-class trick. | 02:17 | ||
if I have a checkout of rakudo built with --gen-moar & --gen-nqp; how can I bisect getting rakudo's requested version (and no higher) without having to rm -rf nqp each bisect? | 02:40 | ||
(if I leave the newer version in place, it satisfies the requirement) | |||
(and cloning nqp is slow) | 02:41 | ||
(me uses rakudobrew to do the builds, but git bisect in a rakudo checkout to keep track of the versions) | 02:47 | ||
timotimo | [Coke]: cd nqp; git checkout $(cat ../tools/build/NQP_REVISION); cd MoarVM; git checkout $(cat ../tools/build/MOAR_REVISION); perl Configure --prefix=...; make -j5 install; cd ../; perl Configure --prefix=...; make install; cd ..; perl Configure ...; make install | 03:00 | |
[Coke] | timotimo: that's basically what r-brew is doing, aye? I'll just use rbrew. :) | 03:08 | |
(I'd use whateverable if any other OS was having this problem...) | |||
timotimo | i think rbrew makes full fresh clones (or uses git folder reference or whatever) | 03:09 | |
ugexe | rakudobrew triple [rakudo-ver [nqp-ver [moar-ver]]] | 04:34 | |
seems like you'd probably want to use that (which i'm not familiar with) | |||
moritz | how do I code-gen something that runs when the regex engine backtracks over it? | 08:40 | |
(I want to implement <commit>) | |||
are the backtrack modes explained somewhere? | 10:15 | ||
I' see there are modes 'r', 'f' and 'g' at least | |||
what do they do? | |||
ratchet, frugal, greedy? | 10:16 | ||
dogbert17 | currently we have test failures in the following files: t/spec/S03-junctions/autothreading.t, t/spec/S05-modifier/ignoremark.t, t/spec/S05-modifier/samemark.t, t/spec/S32-io/IO-Socket-Async.t, t/spec/S32-io/IO-Socket-INET.t | 12:00 | |
t/spec/S32-io/IO-Socket-Async.t actually SEGV's | 12:03 | ||
MasterDuke | i think i've been seeing all the others, but not that one | 12:04 | |
even when run by itself? | |||
dogbert17 | i just wiped my rakudo install so I should have fresh stuff, hold on a sec and I'll whip up a gist | 12:06 | |
MasterDuke | btw, still using a 32bit vm? | ||
AlexDaniel | .seen samcv | 12:07 | |
yoleaux | I saw samcv 10 Aug 2017 22:33Z in #moarvm: <samcv> wonder if we want to make a script to put them all in order of their numbers? though the compilier may optimize it since it sees goto statements after each | ||
dogbert17 | yup, 32 bit :) gist here: gist.github.com/dogbert17/7e7baa94...a20bc35b0e | ||
dogbert17 pleasu don't say I forgot to turn off --full-cleanup | 12:08 | ||
dogbert17 nah, this is gdb | 12:09 | ||
MasterDuke | if you've got a couple spare minutes, how would you feel about testing my gist mentioned in github.com/MoarVM/MoarVM/pull/631 pre- and post- its patch? | 12:12 | |
dogbert17 | sure | ||
MasterDuke | do you have a time that reports maxresidentk? | 12:13 | |
e.g., /usr/bin/time | |||
dogbert17 | yes | ||
MasterDuke | cool | ||
in case it isn't obvious, at the top it expects a path to a checked out rakudo repo | 12:15 | ||
dogbert17 | dou you want me to replace the ^20 with ^5 ? | 12:18 | |
MasterDuke | no, my later testing found not much difference with ^5, but a lot with ^20 | 12:20 | |
dogbert17 | ok, will try ^20 | 12:21 | |
MasterDuke | thanks. afk for probably a while, but will backlog | ||
dogbert17 | 29.04user 15.99system 0:29.07elapsed 154%CPU (0avgtext+0avgdata 370916maxresident)k (without patch) | 12:22 | |
.seen timotimo | 12:25 | ||
yoleaux | I saw timotimo 12:24Z in #moarvm: <timotimo> and we only spesh call targets if they are being called from an interned callsite | ||
timotimo | yo | ||
dogbert17 | hi timotimo, seen this? gist.github.com/dogbert17/7e7baa94...a20bc35b0e | 12:26 | |
timotimo: if you reload the gist I have added valgrind output at the bottom | 12:30 | ||
timotimo | okay, so the li->socket pointer is null i suppose? | 12:35 | |
dogbert17 | want me to check? | ||
timotimo | yeah a little debug printf could do that, or gdb of course | ||
AlexDaniel | MasterDuke: hmm, what about building rakudo/moar with debug symbols turned on and everything (for whateverable)? Maybe use valgrind for these also | 12:36 | |
timotimo | i just woke up after some really low quality sleep :\ | ||
dogbert17 | (gdb) p li.socket | ||
$1 = (uv_tcp_t *) 0x0 | |||
AlexDaniel | MasterDuke: like, we don't have a space issue anymore, so I guess there's no problem for us and it sounds super useful actually | ||
timotimo | huh, why is there a . instead of a -> ? | 12:37 | |
dogbert17 | because that's what I wrote :) sec | ||
(gdb) p li->socket | |||
$2 = (uv_tcp_t *) 0x0 | |||
timotimo | huh, weird | 12:38 | |
dogbert17 | I'm still on 32 bit if that makes any difference | 12:39 | |
timotimo | it could perhaps, but it shouldn't | 12:40 | |
dogbert17 | MasterDuke: 32.86user 16.47system 0:32.57elapsed 151%CPU (0avgtext+0avgdata 338564maxresident)k (with your patch) | ||
timotimo: at least it fails consistently | 12:41 | ||
timotimo | that's good, i shall look with rr later | ||
dogbert17 | cool | 12:43 | |
timotimo | does it crash reliably on your end? | 12:44 | |
dogbert17 | yes | 12:45 | |
timotimo | not at all on mine :| | ||
dogbert17 | interesting | ||
what happens if you disable the JIT? | 12:46 | ||
timotimo | no problem | ||
dogbert17 | hmm, perhaps some kind of 32 bit problem after all then | 12:47 | |
timotimo | yeah, could be :\ | 12:48 | |
dogbert17 | have you done any changes in syncsocket.c recently? there's a coverity complaint there | 12:52 | |
timotimo | just put in some telemetry stuff | 12:58 | |
dogbert17 | ok | 13:01 | |
timotimo | this is about async though? | 13:03 | |
dogbert17 | very true | 13:05 | |
mspo | hi there seems to be fully qualified paths embedded inside of rakudo/moar object files (precomp/stuff) | 13:19 | |
is there any way to trick that for DESTDIR support? | |||
jnthn | moritz: On <commint>, "Since the start of the entire match" implies the failure needs to cascade all the way up the call stack. I think the original plan was the use negative integers in the position to indicate the required amount of failure, where -1 was just "backtrack locally", -2 was something like "get out of this regex" and -3 was "cascade" or so. See github.com/perl6/nqp/blob/master/s...erMAST.nqp a | 13:22 | |
moritz | jnthn: my plan was actually to throw an exception (or have a FAIL_COMMIT method analogous to FAILGOAL) | 13:29 | |
jnthn | Hmm...it'd want to be a control exception if done that way, I'd think. | 13:30 | |
moritz | jnthn: what I don't know is how to write something that is triggered when the cursor backtacks over it | ||
jnthn | The place I pointed to you is where backtracking is handled. | 13:31 | |
*you to | |||
There's no generic "if this point is backtracked over then X" mechanism though | 13:32 | ||
Backtrack points are managed using an integer stack | |||
(aka "the bstack") | |||
moritz | jnthn: thanks; I'll look hard at the code and see if I can make any sense of it | ||
jnthn: another question; is the highwater stuff generic, or for parsing within rakudo only? | 13:33 | ||
if the former, can we expose it to the user somehow? | |||
as Cursor.highwater or so | |||
jnthn | My gut feeling is it'd be better to try and work within that mechanism, rather than trying to do it via an exception. | ||
It's only for Rakudo at the moment, though I'd be good with exposing it if we can figure out a good API | 13:34 | ||
I think maybe :dba stuff isn't implemented in Rakudo? | |||
So that's perhaps a pre-req | |||
jnthn bbiab | 13:35 | ||
moritz | m: say 'abc' ~~ regex { :db('a regex') a+ } | 13:39 | |
camelia | 5===SORRY!5=== Error while compiling <tmp>?Unrecognized regex modifier :db?at <tmp>:1?------> 3say 'abc' ~~ regex { :7?5db('a regex') a+ }? | ||
moritz | m: say 'abc' ~~ regex { :dba('a regex') a+ } | ||
camelia | Nil? | ||
moritz | m: say 'abc' ~~ regex { a+ } | ||
camelia | ?a?? | ||
moritz | nqp: say('abc' ~~ regex { :dba('a regex') a+ }) | 13:40 | |
camelia | Confused at line 2, near "say('abc' "? at gen/moar/stage2/NQPHLL.nqp:768 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:panic)? from gen/moar/stage2/NQP.nqp:919 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/nqp.moarvm:comp_unit)? from gen/mo… | ||
nine | Oh boy, the train ride to the Swiss Perl Workshop will be ~ 11 hours. At least I've got my hotel room secured. | 17:25 | |
timotimo | uh oh, is that soon? | 17:58 | |
oh | |||
yeah it is | |||
nine | timotimo: any chance of seeing you there? | 18:19 | |
jnthn | nine: Ah, cool...I'll be there :) | 18:23 | |
We're actually traveling home via Linz, but breaking the journey in 2 other places on the way to get a bit of vacation :) | 18:25 | ||
There's a sleeper train from Linz to Zurich btw | |||
timotimo | nine: no :< | 18:26 | |
jnthn | There's usually a Prague to Zurich sleeper, but it's cancelled for two weeks exactly when we were gonna use it. :S So now doing Praha - Wien and taking the sleeper from there to Zurich. | 18:27 | |
timotimo | ;( ;( | 18:28 | |
jnthn | Such timing... | ||
Guess I'd better start writing my slides soon too... | |||
Will see if I can remember how to do a talk at a workshop :) | |||
walk; bbiab | |||
Zoffix | \o/ | 18:32 | |
stmuk | pack your Swiss power adaptors! | 19:56 | |
also useful for Liechtenstein | 19:57 | ||
jnthn | huh, they aren't about the same as in most of the rest of continental Europe? | 19:58 | |
Oh. "A type C plug fits perfectly into a type J socket." | 20:00 | ||
That's probably why I never noticed :) | |||
Or at least, forgot. | |||
b2gills | That's nothing compared to the US for currents above 20 Amps, I think there are something like 4 or 5 different plug styles for 30A for example | 20:03 | |
120 vs 240, grounding vs non-grounding, latching vs non-latching, and finally one just for RV's | 20:04 | ||
stmuk | ah never realised the usual Euro one worked! | 20:12 | |
b2gills: Japan has two power systems I believe | |||
b2gills | Yeah, 50Hz and 60Hz | 20:13 | |
stmuk | ah the extra Swiss ping is just earth (ground) | ||
pin ^ | |||
lizmat | www.evanmiller.org/a-review-of-perl-6.html # interesting read | 20:57 | |
HN comments: news.ycombinator.com/item?id=15004216 | 20:58 | ||
now at No. 6 in HN | 20:59 | ||
Zoffix | wow, that article is huge | 21:09 | |
lizmat | yup | 21:10 | |
ugexe | "Function arguments can be named or positional, but not both. " ? | 21:15 | |
Zoffix | You can't (easily) declare to for a param to be taken as either positional or named. That's what I took from that, at least. | 21:21 | |
haha. HN comment: "I like to imagine the Geth in Mass Effect run on a hybrid Perl6/Erlang platform." | 21:23 | ||
Geth | rakudo/nom: 3ad3346938 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm Fix some issues with R:I.OneValue - make sure sink-all works ok on JVM - add support for skip-one |
||
AlexDaniel | “Perl 6 allows any form of quotation construct recognized by the Unicode standard, so the following are equivalent:” ummm… not entirely equivalent | 21:51 | |
Zoffix | It's fine. The person never claimed to be an expert Rakudo programmer and it's not documentation :) | 21:53 | |
Geth | rakudo/nom: 50f0508f60 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm Add R:I.TwoValues.skip-one |
21:54 | |
Zoffix | *sigh* I should invent new social media platform. | 21:57 | |
AI polices you and removes anything negative. | 21:58 | ||
AlexDaniel | .oO( me? ) |
22:02 | |
:) | |||
it goes without saying that the article is awesome | 22:03 | ||
Zoffix | Nah, not you. Just all the nonsense I've seen on Twitter and Facebook this week. | 22:08 | |
AlexDaniel | hm, a module that can generate a helpful error message from a failed parse would be nice indeed | 22:12 | |
I needed this at least once, and ended up write my own hacky logic for it | 22:13 | ||
writing | |||
Geth | rakudo/nom: c229022cb0 | (Elizabeth Mattijsen)++ | src/core/Pair.pm Make Pair.WHICH be consistent in light of .freeze This should, at least for now, fix RT #131887 . Must admit that .freeze was a bad idea: it is no longer in the core, and I would vote for removal in 6.d or 6.e, and then revert this patch. |
||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131887 | ||
AlexDaniel | oh, and there goes a mention of “your stuff is not closed, here's your EOF line number” kind of messages | 22:14 | |
I think I had a list of things that do it somewhere… | 22:15 | ||
there's this ticket but that's just for quotes: RT #130261 | |||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=130261 | ||
lizmat | which concludes my hacking for today | 22:19 | |
tomorrow: decommute from TPCiA and unpacking / returning of the van | 22:20 | ||
and then the P6W again :-) | |||
timotimo | someone with a hackernews account want to propose this snippet instead of s/y/n/? perl6 -pe '.=subst("y", "n", :g)' | 22:34 | |
that's a whole bunch faster | |||
trans may be faster, too | |||
timotimo properly times a bunch of variants | 22:37 | ||
Zoffix | Also Perl version doesn't even decode Unicode, let alone deal in graphemes. | 22:39 | |
timotimo | well, yeah | ||
if i slurp the whole input and use subst with :g i get it done in 0.7s | |||
not even 2x as long as perl5 | 22:40 | ||
though i believe s/y/n/ will only replace the first y in every line? | |||
so it's not semantically equivalent | |||
going over lines() with a for loop and subst+say-ing every one gives me 12 seconds, doing it with hyper operators gives me 27 seconds | 22:42 | ||
doing -n with .subst(...).say gives me 14 seconds | 22:43 | ||
that's still slow but not nearly as prohibitive as the figure shown in the post | |||
this is what i like to call "performance cliff" | |||
interesting, tr/y/n/ takes 31 seconds inside a -pe | 22:44 | ||
also, the "jit startup delaying" comment is far off the target, but i'm not sure what to answer there | 22:45 | ||
Zoffix decided to just close the page and forget about it. | 22:46 |