japhb | Oh, very nice, unmatched} ! | 00:05 | |
unmatched} | s: &say, \('yes, I think so') | ||
SourceBaby | unmatched}, Sauce is at github.com/rakudo/rakudo/blob/c322...ors.pm#L22 | ||
unmatched} | :D | ||
japhb | Can you make it handle the slight sugar of "Date.new('2016-06-06')" where it handles exactly the syntax "Type.method(args...)"? | 00:06 | |
Or "sub(args...)"? | 00:07 | ||
unmatched} | maybe, I'll think about it. | 00:08 | |
Right now it just puts the given stuff as args to sourcery sub from CoreHackers::Sourcery | |||
s: "/tmp".IO.dir, "uc" | 00:11 | ||
SourceBaby | unmatched}, Sauce is at github.com/rakudo/rakudo/blob/c322...ool.pm#L80 | ||
dalek | kudo/nom: 9bfbab9 | (Zoffix Znet)++ | src/core/Dateish.pm: Improve no-arg .new on Dateish error message Dateish objects can be created via .new, if acceptable arguments are given. The current error for argument-less calls of .new is misleadidng, as it claims .new cannot be called at all. |
00:29 | |
travis-ci | Rakudo build errored. Elizabeth Mattijsen '.squish|.unique|.repeated now pass on is-lazy | 03:41 | |
travis-ci.org/rakudo/rakudo/builds/151333658 github.com/rakudo/rakudo/compare/5...50e279ba98 | |||
buggable | ☢ [travis build above] Build log missing from at least one job. Check results manually. | ||
[Tux] | This is Rakudo version 2016.07.1-155-g9bfbab9 built on MoarVM version 2016.07-18-g2f269d8 | 06:18 | |
test 15.208 | |||
test-t 7.472 | |||
csv-parser 16.391 | |||
I re-enabled Inline::Perl5 timing tests by forcing perl6 to use system perl when dealing with Inline::Perl5 until longdouble support is available | 07:38 | ||
I am happy to see that by now native perl6 is *faster* than Inline::Perl5 with XS | |||
timotimo | NativeCall is too slow in general | 07:39 | |
[Tux] | tux.nl/Talks/CSV6/speed5.html | ||
DrForr | +1 | 07:41 | |
timotimo | how is the runtime measured vs time? there's a noticable difference for the first XS case, but not for the others | ||
[Tux] | sloppy: it runs -e1 and the CSV test with an empty csv file twice. takes the avarage of those three and subtracts that from the full time of the real test | 07:42 | |
timotimo | huh | ||
[Tux] | perl6 -MText::CSV -e1 | 07:43 | |
that should tell me the startup/load time of the process without processing a single line of data | |||
perl6 -MText::CSV test-t.pl </tmp/hello.csv | |||
is the full test | |||
timotimo | OK, so the startup time alone is a gigantic chunk of what the XS test does | 07:44 | |
[Tux] | subtract the time used for the first from the second and you get the processing time | ||
timotimo | but the other XS test has much less overhead | ||
[Tux] | that is why I say sloppy. It is not really reliable | ||
timotimo | OK | 07:45 | |
[Tux] | feel free to suggest improvements on github.com/Tux/CSV/blob/master/time.pl | 07:47 | |
nine | [Tux]: maybe I should have a look at how to speed up Inline::Perl5 then :) | 07:48 | |
[Tux] | if you do, you'll have to tell me, as it won't update automagically as I need to alter $PATH for it to install | ||
nine | And maybe I can find a workaround for the missing longdouble support. Like casting those to double when passing back to rakudo. It's just so darn easy to break non-x86_64 architectures when fiddling around with that. | 08:00 | |
[Tux] | :) | 08:01 | |
[Tux] => $work | |||
ShimmerFairy | I just discovered that you can return a rw slice that DWIMs in terms of assignment, that's pretty awesome :) | 09:12 | |
lizmat | m: my @a; @a[1,3,5] = ^3; dd @a # ShimmerFairy: this what you mean? | 10:44 | |
camelia | rakudo-moar 9bfbab: OUTPUT«Array @a = [Any, 0, Any, 1, Any, 2]» | ||
jnthn | m: sub foo(@a) { @a[1,3,5] }; my @b; foo(@b) = ^3; say @b | 10:51 | |
camelia | rakudo-moar 9bfbab: OUTPUT«[(Any) 0 (Any) 1 (Any) 2]» | ||
jnthn | I think that'd be a better illustration of what was meant :) | ||
One of the things that works because l-values are first class. | |||
(Which is also one of the reasons Perl 6 is so hard to optimize :P) | |||
timotimo | those are some first-class lvalues | 10:56 | |
ShimmerFairy | jnthn: it even works when you .rotor the return array, which is a pleasant surprise :) | 11:06 | |
dalek | p: a2f4026 | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js: [js] Get rid of a no longer needed hack. |
11:17 | |
p: e7a2297 | (Pawel Murias)++ | src/vm/js/Operations.nqp: [js] nqp::isnull shouldn't no longer be passed a js undefined value so it doesn't need to handle it anymore. |
|||
p: a2312e6 | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js: [js] Remove a HACK comment as we now handle STable flattening in a much more correct and sane manner. |
|||
p: aa4a9e9 | (Pawel Murias)++ | src/vm/js/Operations.nqp: [js] Remove comment about portability with JScript, we are targeting EcmaScript6 now. If it's a problem the test suit on a browser we care about the test suit should catch it. |
|||
timotimo | pmurias: did you see one of your commits - regarding $cursor_type or something - caused --profile to no longer work? | 11:18 | |
pmurias | timotimo: no, I'll backlog | 11:31 | |
timotimo | just last night we found out about it | 11:32 | |
pmurias | when do 'SC not yet resolved' exceptions happen? | 11:40 | |
timotimo | didn't dig deeper for that yet | ||
lizmat | pmurias: perl6 --profile -e '' | 11:41 | |
timotimo | oh, i thought he was asking about the internal mechanism that gives that message | ||
lizmat | ah, dunno :-) | 11:42 | |
pmurias | ./nqp-m --profile-compile -e 1 reproduces the error without involving Rakudo | 11:43 | |
timotimo | yup | ||
ShimmerFairy | I do wish "Partially dimensioned views of arrays" were implemented. I'm wondering if I could implement it, but I suspect there's a reason the shaped array authors didn't get to it the first time :P | ||
timotimo | the author was jnthn, and time was short | 11:44 | |
that's mostly why it didn't make it in yet :) | |||
ShimmerFairy | Would it have to be a 6.d thing, or is it something that would be allowed to sneak into 6.c? (I personally would lean towards 6.d myself) | 11:45 | |
timotimo | there's probably already tests in 6.c for it? perhaps? | 11:47 | |
pmurias | I'll try to figure out why the --profile thing fails, but it seems very weird | ||
timotimo | did you see the commit i golfed it to? | 11:48 | |
ShimmerFairy | timotimo: I suppose if there are fudged tests, then it'd obviously be fine :) . But otherwise I'd rather not confuse what 6.c actually is. | 11:49 | |
timotimo | *shrug*, it could go into 6.c.1 :) | ||
pmurias | timotimo: golfed you mean the one setting cursor_type? | ||
timotimo | yup | 11:50 | |
ShimmerFairy | Of course, my only concern is not having the specific version number "6.c" be overloaded to slightly different feature sets. | ||
timotimo | people further up the food chain than me will make those decisions :) :) | 11:53 | |
dalek | kudo/nom: d30806b | lizmat++ | src/core/Any-iterable-methods.pm: Introduce Any.quickmap(&block) This is a 30%+ faster alternative to Any.map. But it can only be used - if the block takes 1 parameter - if the block *always* returns 1 value that isn't a Slip - if the block does not contain "last", "next", "redo" - if the block does not contain any phasers Examples: self.match(:g, :$x, $pat).quickmap: *.Str # converting matches to strings self.quickmap(*.perl).join(', ') # creating a .perl presentation I'm not too happy with the name. Considered "rawmap" and "translate" eea786e | lizmat++ | src/core/ (31 files): Use Any.quickmap in the setting where appropriate |
11:56 | |
lizmat | Review: github.com/rakudo/rakudo/commit/d30806b | 11:57 | |
pmurias | timotimo: it seems that the serialization context containing NQPCursor is not yet loaded while executing run_profiled | ||
brrt | how would last, next, redo work with *.map anyway | 11:58 | |
that would be weird | |||
lizmat | eh, parts of the core depend on it | ||
map is basically a for and vice versa | |||
brrt | hmmm | ||
oh yes, control exceptions | 11:59 | ||
lizmat | for @a { } is basically @a.map: { } | ||
unmatched} | .amap() ... almost .map() :) | 12:05 | |
lizmat | I put this in the commit message: I was also thinking about "xlate" | ||
unmatched} | I like it | 12:06 | |
lizmat | anyways, now we only need to build some logic in the optimizer to make it an automatic "quickmap" | ||
or "xlate" | |||
jnthn | argh no quickmap *sigh* | 12:11 | |
unmatched} | :) | ||
jnthn | Was that even discussed? :S | 12:12 | |
pmurias | jnthn: it seems in src/vm/moar/HLL/Backend.nqp we are using regexes while compiling it with --no-regex-lib | 12:13 | |
jnthn | We can already fast-path map for blocks without phasers and with one parameter, so that isn't making much need for it. Having the last/next/redo handlers is pretty much free if they're not invoked 'cus there is no runtime setup work for them. And we could (but I think do not yet) look at the declared return type of the map block, and nqp::istype(that-type, Slip) to know it can never return a slip. | 12:15 | |
ShimmerFairy | Are the speed improvements in quickmap at least partially due to not having to check for those simplifications, whereas map presumably does? | 12:16 | |
dalek | kudo/nom: 76be77c | lizmat++ | src/core/ (32 files): Exit Any.quickmap |
12:17 | |
jnthn | Oh, and you can't really static-analyze for whether last/next/redo are there or not since they can work with dynamic scoping, so it's not so easy to take advantage of that bit either. | 12:18 | |
I'm all for looking at ways to make things faster, but I don't think this one will fly from a lang design perspective, and the main benefit (not checking for Slip) we can have in a safer way that will actually tell the user if they did accidentally return a Slip (and we'd be able to optimize that type check out in spesh in a bunch of cases if it's in the map block) | 12:19 | ||
lizmat | jnthn: the 30% speed increase was already against the optimised 1 arg no phasers version | 12:37 | |
the most expensive part is all of the "redo" handling | |||
anyways, I started thinking about this out loud yesterday late: | 12:41 | ||
jnthn | 30% on a small volume of data or a large volume? | ||
If redo is to blame then I'd say let's look if we can't speed up how that is handled to make it cheaper | 12:42 | ||
lizmat | 1my @a = ^1000; for ^100000 { @a.quickmap: *.chr } | ||
*1 | |||
jnthn | OK, so quite a bit | ||
(Was wondering if the lack of checking a couple of things at iteration start was where some of the win came, but on 1000 items then "no") | 12:43 | ||
dalek | p: 9958b2f | (Pawel Murias)++ | src/vm/moar/HLL/Backend.nqp: Avoid using regexes when the regex library is not yet loaded. This unbreaks --profile. |
12:55 | |
unmatched} | \o/ pmurias++ | ||
lizmat | weee.... | 12:57 | |
confirm we can do profiles again | 13:02 | ||
will bump NQP_REVISION after running a final spectest | |||
[Coke] | pmurias++ nice | 13:04 | |
lizmat++ danke | |||
lizmat | apart from a flapper on t/spec/S17-promise/start.t that I haven't had in a *long* time now, it seems ok | 13:08 | |
jnthn | ...oh admmit :( | 13:09 | |
dalek | kudo/nom: 3878066 | lizmat++ | tools/build/NQP_REVISION: Bump NQP to fix RT #128892, pmurias++ |
||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128892 | ||
jnthn | That's going to be a darn nightmare to find if it still flaps because it didn't fail in 100 runs yesterday. | ||
lizmat runs it again | |||
jnthn: You planned 47 tests but ran 17 so it actually crashed | 13:11 | ||
Cannot invoke this object (REPR: Null; VMNull) | 13:12 | ||
in block <unit> at t/spec/S17-promise/start.t line 70 | |||
gist.github.com/lizmat/6ae3ea26c4a...968fcaf3dd # full stack trace | 13:14 | ||
jnthn: ^^^ | |||
jnthn | hmm... Thanks. | 13:16 | |
lizmat | m: say await start $/ # perhaps related ? | 13:18 | |
camelia | rakudo-moar 76be77: OUTPUT«WARNINGS for <tmp>:Useless use of $/ in sink context (line 1)Nil» | ||
jnthn | TimToady: ^^ ;) | 13:19 | |
lizmat | jnthn: looks like "my @got = await do for 1..5 { start { buf8.new } }" is where it goes wrong, if it goes wrong | 13:21 | |
[Coke] | lizmat++ # thursday. | 13:23 | |
lizmat | ?? :-) | ||
jnthn: datapoint: removing the warnings still makes it crash occasionally ( I would say 1/30 with a fully loaded machine) | 13:25 | ||
jnthn | lizmat: And the above in a loop does it? :) | 13:27 | |
lizmat | jnthn: another datapoint: if the start uses a thunk, instead of a block, it also crashes 1/30 | ||
jnthn: I was running the test-file in a loop | |||
I'll try running that piece of code in a loop now | |||
jnthn | ah, OK. Guess I got lucky 100 times :S | ||
lizmat | or OSX is more picky or something | 13:28 | |
jnthn | OSX is good at shaking these things out, yes | 13:29 | |
lizmat | for ^100000 { my @got = await do for 1..5 { start { buf8.new } } } # doesn't crash, runs for 33 secs | ||
so it feels like some test before it is messing things up | |||
jnthn: not so nice datapoint: removing all the tests before the one that crashees every now and then | 13:36 | ||
makes it *still* crash, but it feels like the chance of it is a lot smaller | |||
more like 1/60 or so | 13:37 | ||
jnthn: can no longer make it crash when changing the "buf8.new" to "42" | 13:41 | ||
jnthn: so it feels like some buf8.new / start interaction | |||
ShimmerFairy | lizmat: just thought of this: what about Buf instead of buf8? | 13:44 | |
lizmat | ShimmerFairy: actually,it seems related to the auto-punning of the buf8 role | 13:45 | |
jdv79 | if suspected that a variable was being shared between threads when it shouldn't where would be a good place to look? | ||
ShimmerFairy | ah | ||
lizmat | jnthn: if I put back the "buf8.new", and add another "my $b = buf8.new" before it, I can't get it to crash | ||
jnthn: so it feels like punning a role into a class from a different thread, is not quite ok | 13:46 | ||
jnthn | lizmat: I thought that'd been fixed, but yeah, it's quite an involved process so worth a look | 13:48 | |
jdv79: You can try setting MVM_CROSS_THREAD_WRITE_LOG=1 in the environment, and see if there are any surprises | |||
jdv79: Though some things it turns up are benighn | |||
uh, sp :) | |||
jdv79 | ok | 13:49 | |
lizmat | .oO( benightgown ) |
||
jnthn: should I rakudobug this conversation ? | 13:51 | ||
jnthn | lizmat: Please. I suspect I'll be writing a mildly boring document the rest of today, and I'm meant to take tomorrow off-ish to relax :) | 13:53 | |
lizmat | jnthn: okidoki, long weekends are good :-) | 13:54 | |
jnthn: RT #128896 | 14:00 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128896 | ||
jnthn | Thanks | ||
lizmat | you're welcome: I hope this helped | ||
jnthn | Well, having ideas of what tickles/doesn't tickle the bug can help, though at the end of the day the solutions tend to come from hours sat in debuggers, looking at output logs, doing experiments, reading generated code, etc. | 14:02 | |
Fixing concurrency bugs is mostly an exercise in patience, it seems. :) | 14:03 | ||
jdv79 | why is there no path in "from site#sources/9C152F2320E9F47891023366BF40420AE8E7F235 (XML::Element):469"? | ||
nine | jdv79: where's that from? | 14:04 | |
jdv79 | everything else seem to have a path even if its rel | ||
the log from MVM_CROSS_THREAD_WRITE_LOG=1 | |||
where is this "site#" then? | 14:05 | ||
nine | Ah. It's the site repo. install/share/perl6/site | ||
lizmat | what nine said :-) | ||
jdv79 | thanks | 14:06 | |
nine | This relative reference is decoded by BackTrace::AT-POS but of course MoarVM doesn't know about that. | ||
jdv79 | ok | 14:09 | |
lizmat | jnthn: would you have something against breaking out Seqs in sequential map into separate source files ? | ||
jnthn | Seqs in sequential map? | 14:10 | |
lizmat | it's now a 600+ line sub | ||
jnthn looks confused | |||
Oh, the iterator classes? | |||
lizmat | yup | ||
jnthn | Yeah, though if the sub is just too long then moving them above/below it would also maybe do? | 14:11 | |
When to go in separate files it's harder to not leak them...well, of course they can go under Rakudo::Internals too I guess :) | |||
lizmat | ok, I'll start with moving up the iterators | 14:12 | |
will make it easier if we do want to split it out later | |||
stmuk_ | wow perl6-j works a lot better than last time I looked (admittedly a while back) | 14:13 | |
dalek | kudo/nom: ef04e1e | lizmat++ | src/core/Any-iterable-methods.pm: Move sequential-map Iterator classes up This is for better readability and maintainability of these rather involved Iterator classes. No functional change is involved here. |
14:44 | |
unmatched} finished Day 1 of Internals Course. | 15:28 | ||
Took me a month, but I stuck with it :P | 15:29 | ||
jnthn | Congrats :) | ||
Hope it was useful :) | |||
unmatched} | Yeah, I learned a lot. | ||
jnthn++ | |||
perlpilot | Isn't that a 2 day course? you're half way done! | 15:31 | |
jnthn | Thanks also go to those who funded the course development. There's no way I coulda found time to do it without that. :-) | 15:32 | |
jdv79 | the edument nqp course thing? | 15:48 | |
unmatched} | yeah | ||
[Coke] | jnthn++ | ||
jdv79 | yeah, it was neat. i don't remember it being 2 days. | ||
timotimo | i do remember sleeping in between sessions | 15:49 | |
jdv79 | is that the one that jnthn did at spw? | ||
[Coke] | I remember stroopwafel | ||
jdv79 | i just did it online since that room was jammed by the time i got there | ||
timotimo | stroopwafel! yes! | ||
[Coke] | jdv79: nope. a year prior | ||
jdv79 | oh. i guess i'm misremembering again. | 15:50 | |
what was last year then? was that a p6 intro? | |||
[Coke] | big thanks again to everyone who sponsored SPW last year! | 15:51 | |
(And the internals course!) | |||
jnthn | Yeah, at spw I did a Perl 6 intro day :) | 16:01 | |
[Coke] | RT: 1332; @LARRY: 14; CONC: 25; GLR: 6; JVM: 66; LTA: 114; NEW: 859; NYI: 82; OSX: 5; PERF: 22; POD: 17; PRECOMP: 10; RFC: 31; SEGV: 32; STAR: 5; TESTNEEDED: 15; TODO: 10; UNI: 28; UNTAGGED: 496; WEIRD: 3 | 16:15 | |
buggable: rt GLR | 16:16 | ||
buggable | [Coke], Found 4 tickets tagged with GLR. Details: bug.perl6.party/1470932219.html | 16:17 | |
[Coke] | .tell TimToady #123072 has a sink in it. | 16:21 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123072 | ||
yoleaux2 | [Coke]: I'll pass your message to TimToady. | ||
unmatched} | buggable: rt | 16:23 | |
buggable | unmatched}, TOTAL: 1361, UNTAGGED: 556, BUG: 421, LTA: 107, JVM: 62, NYI: 35, RFC: 31, SEGV: 31, UNI: 27, CONC: 25, PERF: 22, POD: 14, @LARRY: 14, PRECOMP: 10, TODO: 10, BUILD: 7, GLR: 6, STAR: 5, NATIVECALL: 4, WEIRD: 3, BOOTSTRAP: 3, MOARVM: 2, OSX: 2, WEB: 1, SPESH: 1, DOCS: 1, MATH: 1 Details: bug.perl6.party/1470932633.html | ||
[Coke] | buggable: rt GLR | 16:24 | |
buggable | [Coke], Found 4 tickets tagged with GLR. Details: bug.perl6.party/1470932707.html | 16:25 | |
unmatched} | I recall there was a bug for for { .map ... } not being sunk. Looks like related to #123072 . Don't see it in the list now; not sure if it was fixed | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123072 | ||
unmatched} | m: for ^5 { ^5 .map: *.say } | 16:26 | |
camelia | rakudo-moar ef04e1: OUTPUT«0123401234012340123401234» | ||
unmatched} | Oh, tis fixed | ||
b2gills | .oO( Rakudo::Internals::&DUMB_MAP ) |
16:29 | |
[Coke] | is tagging tickets that SIGABORT with [SEGV] ok? | 16:30 | |
hoelzro | hmm...they're similar | 16:31 | |
from what I've seen, SIGABRT is usually a libuv problem | |||
[Coke] | yup, here as well. :) | 16:32 | |
well I did it, someone can come up with a better tag if needed. :) | |||
hoelzro | I mean, both of them require looking at core dumps, both of them are in MoarVM... | ||
so the skillset for fixing them is roughly the same | |||
hoelzro doesn't see a problem with [SEGV] | 16:33 | ||
[Coke] | buggable: rt untagged | ||
buggable | [Coke], Found 556 untagged tickets. Details: bug.perl6.party/1470933204.html | ||
hoelzro | unless we want an umbrella term like [SIGNAL] or [TERMINATED] | ||
[Coke] | right, same with [CONC] that's really [ASYNC]; was just going for the 4-char tag. :) | ||
hoelzro | ahh, I see | 16:34 | |
I agree with "[SEGV] until something better presents itself" =) | |||
TimToady | Imma kinda surprised it didn't fix #123072 too | 16:35 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123072 | ||
yoleaux2 | 16:21Z <[Coke]> TimToady: #123072 has a sink in it. | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123072 | ||
TimToady | will look at it later twoday | 16:36 | |
lizmat | ,oO( TimTwoday :-) | 16:38 | |
[Coke] | TimToady++ | ||
TimToady: didn't you just rule on something very similar to RT #125398 ? | 16:42 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=125398 | ||
lizmat | So I'm looking at creating a version of sequential-map that will be faster if the Block indicates it returns something that cannot be a Slip | 16:51 | |
so that changing [email@hidden.address] { .Str }" to [email@hidden.address] --> Str { .Str }" would give you the optimization | 16:52 | ||
however, that's illegal syntax: | |||
m: my $b = --> Str { .Str } | |||
camelia | rakudo-moar ef04e1: OUTPUT«===SORRY!=== Error while compiling <tmp>Prefix -- requires an argument, but no valid term foundat <tmp>:1------> my $b = --⏏> Str { .Str } expecting any of: prefix» | ||
lizmat | m: my $b = -> $_ --> Str { .Str } # this works | ||
camelia | ( no output ) | ||
jnthn | m: my $b = -> --> Str { .Str } | ||
camelia | ( no output ) | ||
lizmat | aha... ok | ||
jnthn | Well, or that | ||
m: my $b = { also returns Str; .Str } | 16:53 | ||
camelia | rakudo-moar ef04e1: OUTPUT«===SORRY!=== Error while compiling <tmp>Cannot resolve caller trait_mod:<returns>(Block, Str); none of these signatures match: (Routine:D $target, Mu:U $type)at <tmp>:1» | ||
jnthn | Aww | ||
Arguably that should work too :) | |||
lizmat | also: -> --> indicates *no* parameters | ||
jnthn | Yeah | ||
lizmat | -> $_ --> Str | ||
that works, but allocates an extra Scalar for every iteration :-( | 16:54 | ||
jnthn | It does? Hmm | ||
What about -> Int $_ --> Str { } out of curiosity? | |||
(or other appropraite type for your example) | 16:55 | ||
lizmat | yeah, that works, jnthn++ | ||
TimToady | [Coke]: yes, but that seems like a separate bug, prolly | ||
unmatched} | m: for ^3 { .map: *.say }; | 16:56 | |
camelia | ( no output ) | ||
unmatched} | TimToady: ^ seems closely related | ||
TimToady | to the prior bug, yes | ||
lizmat | jnthn: this gives about a 10% improvement, rather than the 30% of quickmap | 16:58 | |
jnthn | lizmat: Right, but we didn't figure out anything about the redo thing, which you mentioned was a big part of the issue? | ||
lizmat | well, basically the difference between the approach in quickmap and the approach I'm taking in this new "IterateOneNotSlippingWithoutPhasers" class | 17:00 | |
dalek | rakudo/nom: c587b9d | lizmat++ | src/core/Any-iterable-methods.pm: | 17:07 | |
rakudo/nom: Add IterateOneNotSlippingWithoutPhasers class | |||
rakudo/nom: | |||
rakudo/nom: This Iterator class will be used whenever you're mapping /foring | |||
rakudo/nom: any block that has a return signature that excludes Slips. | |||
rakudo/nom: | |||
rakudo/nom: Benchmarking indicates about a 10% improvement. Please note that | |||
rakudo/nom: you will still have to jump through some hoops to get the right | |||
rakudo/nom: signature, and a signature that will actually help: | |||
rakudo/nom: | |||
rakudo/nom: my @a = ^1000; @a.map: -> $_ --> Str { .Str } # wrong, extra Scalar/iter | |||
rakudo/nom: my @a = ^1000; @a.map: -> Int $_ --> Str { .Str } # correct, 10% faster | |||
rakudo/nom: | |||
rakudo/nom: It would be nice if the signature gotcha would be less easy to fall into. | |||
lizmat | review: github.com/rakudo/rakudo/commit/c587b9d | 17:08 | |
TimToady | Anything with that many negatives in its name has got to be wrong somehow... :) | 17:12 | |
lizmat | and I don;t disagree, "quickmap" or "xlate" would be much better :-) | 17:15 | |
unmatched} | m: my @a = ^1000; say @a.map: sub { also returns Str; $^a.Str } | ||
camelia | rakudo-moar c587b9: OUTPUT«===SORRY!=== Error while compiling <tmp>Method 'has_returns' not found for invocant of class 'Mu'at <tmp>:1» | ||
unmatched} | [Coke]: I wonder what value there is in keeping those tickets open in the first place. | 17:23 | |
*stalled tickets | |||
They seem to be all about macros that are entirely broken and entirely experimental. | 17:24 | ||
[Coke] | If we remove the feature, we can remove the bug reports. | 17:37 | |
otherwise, we'll end up having to re-discover all that stuff anyway. | |||
unmatched} | fair enough | ||
gfldex | has it been considered to have the unicode variants ¬ ∧ ∨ ⊻ for binary ops? | 19:48 | |
travis-ci | Rakudo build errored. Elizabeth Mattijsen 'Bump NQP to fix RT #128892, pmurias++' | 20:41 | |
travis-ci.org/rakudo/rakudo/builds/151503212 github.com/rakudo/rakudo/compare/7...78066a9531 | |||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128892 | ||
buggable | ☢ [travis build above] Build log missing from at least one job. Check results manually. | ||
jnthn | m: my @a; @a.grep({ .value andthen $_ eq 'foo' }) | 22:43 | |
camelia | rakudo-moar c587b9: OUTPUT«WARNINGS for <tmp>:Useless use of "eq" in expression "$_ eq 'foo'" in sink context (line 1)» | ||
jnthn | TimToady: le bogus sink warning && | ||
oops ^^ | |||
:) | |||
.u ☢ | 22:52 | ||
yoleaux2 | U+2622 RADIOACTIVE SIGN [So] (☢) | ||
jnthn | heh, in my crappy font it looks like it could be a chess piece :P | ||
TimToady is currently fighting with sinking methods that are hiding inside hllize and don't have an available sink | 22:53 | ||
jnthn | urgh | ||
Though...nearly all method calls are hidden inside one of those, aren't they? | 22:54 | ||
TimToady | certainly true of the map inside: for ^3 { .map: *.say }; | ||
but I can't just transit inside and slap a .sink on things, so maybe just peek inside to see if the top thing inside is a method, and sink outside the hllize, is my current thought | 22:55 | ||
tried adding a sink method in NQPMu, but that doesn't fly... | 22:56 | ||
jnthn | If you sink outside the hllize you'll likely be safer | ||
Arguably we shouldn't be letting NQPMu escape into Perl 6 code | |||
TimToady | not sure it's NQPMu itself | ||
not very informative on that score: Cannot find method 'sink': no method cache and no .^find_method | 22:57 | ||
gfldex | m: say Bool.package | 23:00 | |
camelia | rakudo-moar c587b9: OUTPUT«Method 'package' not found for invocant of class 'Bool' in block <unit> at <tmp> line 1» | ||
gfldex | how do I introspect if something is an enum (beside cheating by looking for method called "enums")? | 23:03 | |
TimToady | m: say Bool.?enums | 23:04 | |
camelia | rakudo-moar c587b9: OUTPUT«{False => 0, True => 1}» | ||
jnthn | m: say Bool.HOW | ||
camelia | rakudo-moar c587b9: OUTPUT«Perl6::Metamodel::EnumHOW.new» | ||
jnthn | m: say Bool.HOW ~~ Perl6::Metamodel::EnumHOW | ||
camelia | rakudo-moar c587b9: OUTPUT«Could not find symbol '&EnumHOW' in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
jnthn | m: say Bool.HOW ~~ Metamodel::EnumHOW | ||
camelia | rakudo-moar c587b9: OUTPUT«True» | ||
jnthn | Like that | ||
gfldex | thanks | 23:05 | |
jnthn wonders what gfldex is hacking on :) | |||
jnthn also wonders whether to grab another beer, write a huffman encoder to finish his module and sleep...or to skip straight to sleep. :) | |||
gfldex | jnthn: i'm trying to match methods we already have in the docs with the methods available in .^methods. The lack of .package in some of the gutty things is slowing me down quite a bit. | 23:07 | |
jnthn | ah | ||
gfldex | I can just CATCH things but I would like to produce a warning for the methods that are hard to introspect. | ||
And on the stuff where the introspection is quite hard, it's quite hard to introspect the method name. :) | 23:09 | ||
a strategicly placed CATCH did solve my problems and I'm still able to warn properly. | 23:20 | ||
already found a missing method :D | 23:21 | ||
jnthn | Already finished my Huffman coder. | 23:22 | |
I was told I should sleep soon, so I did whisky instead of beer and hacked quicker. :) | |||
Docs and a META6.json tomorrow and I'll have my first module for the ecosystem in a while. :) | 23:26 | ||
TimToady | that would be a Balmer matterhorn | ||
jnthn | ;) | ||
github.com/jnthn/p6-http-hpack | |||
github.com/jnthn/p6-http-hpack/blo...K.pm6#L259 is where I tripped over the sink error, fwiw | |||
Will be fun to see what the JIT spits out for that module, also... It's full of natives. | 23:28 | ||
Sleep time; 'night | 23:33 | ||
timotimo | gnite jnthn | 23:37 |