Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-08-11

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

All times shown according to UTC.

Time Nick Message
00:05 japhb Oh, very nice, unmatched} !
00:05 unmatched} s: &say, \('yes, I think so')
00:05 SourceBaby unmatched}, Sauce is at https://github.com/rakudo/rakudo/blob/c322e1e/src/core/io_operators.pm#L22
00:05 unmatched} :D
00:06 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:07 japhb Or "sub(args...)"?
00:08 unmatched} maybe, I'll think about it.
00:08 unmatched} Right now it just puts the given stuff as args to sourcery sub from CoreHackers::Sourcery
00:11 unmatched} s: "/tmp".IO.dir, "uc"
00:11 SourceBaby unmatched}, Sauce is at https://github.com/rakudo/rakudo/blob/c322e1e/src/core/Cool.pm#L80
00:29 dalek rakudo/nom: 9bfbab9 | (Zoffix Znet)++ | src/core/Dateish.pm:
00:29 dalek rakudo/nom: Improve no-arg .new on Dateish error message
00:29 dalek rakudo/nom:
00:29 dalek rakudo/nom: Dateish objects can be created via .new, if acceptable arguments are given.
00:29 dalek rakudo/nom: The current error for argument-less calls of .new is misleadidng, as it
00:29 dalek rakudo/nom: claims .new cannot be called at all.
00:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9bfbab9186
01:48 ilbot3 joined #perl6-dev
01:48 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
03:41 travis-ci joined #perl6-dev
03:41 travis-ci Rakudo build errored. Elizabeth Mattijsen '.squish|.unique|.repeated now pass on is-lazy
03:41 travis-ci https://travis-ci.org/rakudo/rakudo/builds/151333658 https://github.com/rakudo/rakudo/compare/571982677bf2...5b50e279ba98
03:41 travis-ci left #perl6-dev
03:41 buggable ☢ [travis build above] Build log missing from at least one job. Check results manually.
03:50 hoelzro joined #perl6-dev
03:51 japhb joined #perl6-dev
05:43 zostay_ joined #perl6-dev
05:48 [Tux] joined #perl6-dev
05:49 JimmyZ joined #perl6-dev
06:18 [Tux] This is Rakudo version 2016.07.1-155-g9bfbab9 built on MoarVM version 2016.07-18-g2f269d8
06:18 [Tux] test            15.208
06:18 [Tux] test-t           7.472
06:18 [Tux] csv-parser      16.391
06:24 pduh joined #perl6-dev
06:24 pduh left #perl6-dev
07:30 brrt joined #perl6-dev
07:38 [Tux] 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 [Tux] I am happy to see that by now native perl6 is *faster* than Inline::Perl5 with XS
07:39 timotimo NativeCall is too slow in general
07:39 [Tux] http://tux.nl/Talks/CSV6/speed5.html
07:41 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
07:42 [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
07:43 [Tux] perl6 -MText::CSV -e1
07:43 [Tux] that should tell me the startup/load time of the process without processing a single line of data
07:43 [Tux] perl6 -MText::CSV test-t.pl </tmp/hello.csv
07:43 [Tux] is the full test
07:44 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
07:44 timotimo but the other XS test has much less overhead
07:44 [Tux] that is why I say sloppy. It is not really reliable
07:45 timotimo OK
07:47 [Tux] feel free to suggest improvements on https://github.com/Tux/CSV/blob/master/time.pl
07:48 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
07:57 RabidGravy joined #perl6-dev
08:00 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:01 [Tux] :)
08:01 * [Tux] => $work
08:31 sno joined #perl6-dev
09:12 ShimmerFairy I just discovered that you can return a rw slice that DWIMs in terms of assignment, that's pretty awesome :)
10:34 AlexDaniel joined #perl6-dev
10:44 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]␤»
10:51 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]␤»
10:51 jnthn I think that'd be a better illustration of what was meant :)
10:51 jnthn One of the things that works because l-values are first class.
10:51 jnthn (Which is also one of the reasons Perl 6 is so hard to optimize :P)
10:56 timotimo those are some first-class lvalues
10:58 brrt joined #perl6-dev
11:06 ShimmerFairy jnthn: it even works when you .rotor the return array, which is a pleasant surprise :)
11:17 pmurias joined #perl6-dev
11:17 dalek nqp: a2f4026 | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js:
11:17 dalek nqp: [js] Get rid of a no longer needed hack.
11:17 dalek nqp: review: https://github.com/perl6/nqp/commit/a2f4026a6c
11:17 dalek nqp: e7a2297 | (Pawel Murias)++ | src/vm/js/Operations.nqp:
11:17 dalek nqp: [js] nqp::isnull shouldn't no longer be passed a js undefined value so it doesn't need to handle it anymore.
11:17 dalek nqp: review: https://github.com/perl6/nqp/commit/e7a22974b9
11:17 dalek nqp: a2312e6 | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js:
11:17 dalek nqp: [js] Remove a HACK comment as we now handle STable flattening in a much more correct and sane manner.
11:17 dalek nqp: review: https://github.com/perl6/nqp/commit/a2312e601c
11:17 dalek nqp: aa4a9e9 | (Pawel Murias)++ | src/vm/js/Operations.nqp:
11:17 dalek nqp: [js] Remove comment about portability with JScript, we are targeting EcmaScript6 now.
11:17 dalek nqp:
11:17 dalek nqp: If it's a problem the test suit on a browser we care about the test suit should catch it.
11:17 dalek nqp: review: https://github.com/perl6/nqp/commit/aa4a9e9363
11:18 timotimo pmurias: did you see one of your commits - regarding $cursor_type or something - caused --profile to no longer work?
11:23 brrt joined #perl6-dev
11:31 pmurias timotimo: no, I'll backlog
11:32 timotimo just last night we found out about it
11:40 pmurias when do 'SC not yet resolved' exceptions happen?
11:40 timotimo didn't dig deeper for that yet
11:41 lizmat pmurias:   perl6 --profile -e ''
11:41 timotimo oh, i thought he was asking about the internal mechanism that gives that message
11:42 lizmat ah, dunno  :-)
11:43 pmurias ./nqp-m --profile-compile -e 1 reproduces the error without involving Rakudo
11:43 timotimo yup
11:43 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
11:44 timotimo the author was jnthn, and time was short
11:44 timotimo that's mostly why it didn't make it in yet :)
11:45 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:47 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
11:48 timotimo did you see the commit i golfed it to?
11:49 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 :)
11:49 pmurias timotimo: golfed you mean the one setting cursor_type?
11:50 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.
11:53 timotimo people further up the food chain than me will make those decisions :) :)
11:56 dalek rakudo/nom: d30806b | lizmat++ | src/core/Any-iterable-methods.pm:
11:56 dalek rakudo/nom: Introduce Any.quickmap(&block)
11:56 dalek rakudo/nom:
11:56 dalek rakudo/nom: This is a 30%+ faster alternative to Any.map.  But it can only be used
11:56 dalek rakudo/nom: - if the block takes 1 parameter
11:56 dalek rakudo/nom: - if the block *always* returns 1 value that isn't a Slip
11:56 dalek rakudo/nom: - if the block does not contain "last", "next", "redo"
11:56 dalek rakudo/nom: - if the block does not contain any phasers
11:56 dalek rakudo/nom:
11:56 dalek rakudo/nom: Examples:
11:56 dalek rakudo/nom:   self.match(:g, :$x, $pat).quickmap: *.Str  # converting matches to strings
11:56 dalek rakudo/nom:   self.quickmap(*.perl).join(', ')           # creating a .perl presentation
11:56 dalek rakudo/nom:
11:56 dalek rakudo/nom: I'm not too happy with the name.  Considered "rawmap" and "translate"
11:57 lizmat Review: https://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
11:57 dalek rakudo/nom: eea786e | lizmat++ | src/core/ (31 files):
11:57 dalek rakudo/nom: Use Any.quickmap in the setting where appropriate
11:57 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/eea786e2a2
11:58 brrt how would last, next, redo work with *.map anyway
11:58 brrt that would be weird
11:58 lizmat eh, parts of the core depend on it
11:58 lizmat map is basically a for and vice versa
11:58 brrt hmmm
11:59 brrt oh yes, control exceptions
11:59 lizmat for @a { }  is basically @a.map: { }
12:05 unmatched} .amap() ... almost .map() :)
12:05 lizmat I put this in the commit message: I was also thinking about "xlate"
12:06 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"
12:06 lizmat or "xlate"
12:11 jnthn argh no quickmap *sigh*
12:11 unmatched} :)
12:12 jnthn Was that even discussed? :S
12:13 pmurias jnthn: it seems in src/vm/moar/HLL/Backend.nqp we are using regexes while compiling it with --no-regex-lib
12:15 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 buggable joined #perl6-dev
12:16 ShimmerFairy Are the speed improvements in quickmap at least partially due to not having to check for those simplifications, whereas map presumably does?
12:17 [Coke] joined #perl6-dev
12:17 dalek rakudo/nom: 76be77c | lizmat++ | src/core/ (32 files):
12:17 dalek rakudo/nom: Exit Any.quickmap
12:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/76be77c9d6
12:18 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:19 jnthn 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:33 perlpilot joined #perl6-dev
12:37 lizmat jnthn: the 30% speed increase was already against the optimised 1 arg no phasers version
12:37 lizmat the most expensive part is all of the "redo" handling
12:41 lizmat anyways, I started thinking about this out loud yesterday late:
12:41 jnthn 30% on a small volume of data or a large volume?
12:42 jnthn 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 }
12:42 lizmat *1
12:42 jnthn OK, so quite a bit
12:43 jnthn (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:55 dalek nqp: 9958b2f | (Pawel Murias)++ | src/vm/moar/HLL/Backend.nqp:
12:55 dalek nqp: Avoid using regexes when the regex library is not yet loaded. This unbreaks --profile.
12:55 dalek nqp: review: https://github.com/perl6/nqp/commit/9958b2f72e
12:55 unmatched} \o/ pmurias++
12:57 lizmat weee....
13:02 lizmat confirm we can do profiles again
13:02 lizmat will bump NQP_REVISION after running a final spectest
13:04 [Coke] pmurias++ nice
13:04 [Coke] lizmat++ danke
13:08 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:09 jnthn ...oh admmit :(
13:09 dalek rakudo/nom: 3878066 | lizmat++ | tools/build/NQP_REVISION:
13:09 dalek rakudo/nom: Bump NQP to fix RT #128892, pmurias++
13:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3878066a95
13:09 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128892
13:09 skids joined #perl6-dev
13:09 jnthn That's going to be a darn nightmare to find if it still flaps because it didn't fail in 100 runs yesterday.
13:09 * lizmat runs it again
13:11 lizmat jnthn:  You planned 47 tests but ran 17   so it actually crashed
13:12 lizmat Cannot invoke this object (REPR: Null; VMNull)
13:12 lizmat in block <unit> at t/spec/S17-promise/start.t line 70
13:14 lizmat https://gist.github.com/lizmat/6ae3ea26c4addff0623e8b968fcaf3dd   # full stack trace
13:14 lizmat jnthn: ^^^
13:16 jnthn hmm... Thanks.
13:18 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␤»
13:19 jnthn TimToady: ^^ ;)
13:21 lizmat jnthn: looks like "my @got = await do for 1..5 { start { buf8.new } }" is where it goes wrong, if it goes wrong
13:23 [Coke] lizmat++ # thursday.
13:23 lizmat ??    :-)
13:25 lizmat jnthn: datapoint: removing the warnings still makes it crash occasionally ( I would say 1/30 with a fully loaded machine)
13:27 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
13:27 lizmat jnthn: I was running the test-file in a loop
13:27 lizmat I'll try running that piece of code in a loop now
13:27 jnthn ah, OK. Guess I got lucky 100 times :S
13:28 lizmat or OSX is more picky or something
13:29 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
13:29 lizmat so it feels like some test before it is messing things up
13:36 lizmat jnthn: not so nice datapoint:  removing all the tests before the one that crashees every now and then
13:36 lizmat makes it *still* crash, but it feels like the chance of it is a lot smaller
13:37 lizmat more like 1/60 or so
13:41 lizmat jnthn: can no longer make it crash when changing the "buf8.new" to "42"
13:41 lizmat jnthn: so it feels like some buf8.new / start interaction
13:44 ShimmerFairy lizmat: just thought of this: what about Buf instead of buf8?
13:45 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?
13:45 ShimmerFairy ah
13:45 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
13:46 lizmat jnthn: so it feels like punning a role into a class from a different thread, is not quite ok
13:48 jnthn lizmat: I thought that'd been fixed, but yeah, it's quite an involved process so worth a look
13:48 jnthn jdv79: You can try setting MVM_CROSS_THREAD_WRITE_LOG=1 in the environment, and see if there are any surprises
13:48 jnthn jdv79: Though some things it turns up are benighn
13:48 jnthn uh, sp :)
13:49 jdv79 ok
13:49 lizmat .oO( benightgown )
13:51 lizmat jnthn: should I rakudobug this conversation ?
13:53 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:54 lizmat jnthn: okidoki, long weekends are good  :-)
14:00 lizmat jnthn: RT #128896
14:00 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128896
14:00 jnthn Thanks
14:00 lizmat you're welcome: I hope this helped
14:02 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:03 jnthn 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"?
14:04 nine jdv79: where's that from?
14:04 jdv79 everything else seem to have a path even if its rel
14:04 jdv79 the log from MVM_CROSS_THREAD_WRITE_LOG=1
14:05 jdv79 where is this "site#" then?
14:05 nine Ah. It's the site repo. install/share/perl6/site
14:05 lizmat what nine said :-)
14:06 jdv79 thanks
14:06 nine This relative reference is decoded by BackTrace::AT-POS but of course MoarVM doesn't know about that.
14:09 jdv79 ok
14:09 lizmat jnthn: would you have something against breaking out Seqs in sequential map into separate source files ?
14:10 jnthn Seqs in sequential map?
14:10 lizmat it's now a 600+ line sub
14:10 * jnthn looks confused
14:10 jnthn Oh, the iterator classes?
14:10 lizmat yup
14:11 jnthn Yeah, though if the sub is just too long then moving them above/below it would also maybe do?
14:11 jnthn 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 :)
14:12 lizmat ok, I'll start with moving up the iterators
14:12 lizmat will make it easier if we do want to split it out later
14:13 stmuk_ wow perl6-j works a lot better than last time I looked (admittedly a while back)
14:44 dalek rakudo/nom: ef04e1e | lizmat++ | src/core/Any-iterable-methods.pm:
14:44 dalek rakudo/nom: Move sequential-map Iterator classes up
14:44 dalek rakudo/nom:
14:44 dalek rakudo/nom: This is for better readability and maintainability of these rather
14:44 dalek rakudo/nom: involved Iterator classes.  No functional change is involved here.
14:44 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ef04e1e07f
15:05 perlpilot joined #perl6-dev
15:08 perlpilot joined #perl6-dev
15:28 * unmatched} finished Day 1 of Internals Course.
15:29 unmatched} Took me a month, but I stuck with it :P
15:29 jnthn Congrats :)
15:29 jnthn Hope it was useful :)
15:29 unmatched} Yeah, I learned a lot.
15:29 unmatched} jnthn++
15:29 |Tux| joined #perl6-dev
15:31 perlpilot Isn't that a 2 day course?   you're half way done!
15:32 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:48 jdv79 the edument nqp course thing?
15:48 unmatched} yeah
15:48 [Coke] jnthn++
15:48 jdv79 yeah, it was neat.  i don't remember it being 2 days.
15:49 timotimo i do remember sleeping in between sessions
15:49 jdv79 is that the one that jnthn did at spw?
15:49 [Coke] I remember stroopwafel
15:49 jdv79 i just did it online since that room was jammed by the time i got there
15:49 timotimo stroopwafel! yes!
15:49 [Coke] jdv79: nope. a year prior
15:50 jdv79 oh.  i guess i'm misremembering again.
15:50 jdv79 what was last year then?  was that a p6 intro?
15:51 [Coke] big thanks again to everyone who sponsored SPW last year!
15:51 [Coke] (And the internals course!)
16:01 jnthn Yeah, at spw I did a Perl 6 intro day :)
16:15 [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:16 [Coke] buggable: rt GLR
16:17 buggable [Coke], Found 4 tickets tagged with GLR. Details: http://bug.perl6.party/1470932219.html
16:21 [Coke] .tell TimToady #123072 has a sink in it.
16:21 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=123072
16:21 yoleaux2 [Coke]: I'll pass your message to TimToady.
16:23 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: http://bug.perl6.party/1470932633.html
16:24 [Coke] buggable: rt GLR
16:25 buggable [Coke], Found 4 tickets tagged with GLR. Details: http://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
16:25 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=123072
16:26 unmatched} m: for ^5 { ^5 .map: *.say }
16:26 camelia rakudo-moar ef04e1: OUTPUT«0␤1␤2␤3␤4␤0␤1␤2␤3␤4␤0␤1␤2␤3␤4␤0␤1␤2␤3␤4␤0␤1␤2␤3␤4␤»
16:26 unmatched} Oh, tis fixed
16:29 b2gills .oO( Rakudo::Internals::&DUMB_MAP )
16:30 [Coke] is tagging tickets that SIGABORT with [SEGV] ok?
16:31 hoelzro hmm...they're similar
16:31 hoelzro from what I've seen, SIGABRT is usually a libuv problem
16:32 [Coke] yup, here as well. :)
16:32 [Coke] well I did it, someone can come up with a better tag if needed. :)
16:32 hoelzro I mean, both of them require looking at core dumps, both of them are in MoarVM...
16:32 hoelzro so the skillset for fixing them is roughly the same
16:33 * hoelzro doesn't see a problem with [SEGV]
16:33 [Coke] buggable: rt untagged
16:33 buggable [Coke], Found 556 untagged tickets. Details: http://bug.perl6.party/1470933204.html
16:33 hoelzro unless we want an umbrella term like [SIGNAL] or [TERMINATED]
16:33 [Coke] right, same with [CONC] that's really [ASYNC]; was just going for the 4-char tag. :)
16:33 TimToady joined #perl6-dev
16:34 hoelzro ahh, I see
16:34 hoelzro I agree with "[SEGV] until something better presents itself" =)
16:35 TimToady Imma kinda surprised it didn't fix #123072 too
16:35 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=123072
16:35 yoleaux2 16:21Z <[Coke]> TimToady: #123072 has a sink in it.
16:35 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=123072
16:36 TimToady will look at it later twoday
16:38 lizmat ,oO( TimTwoday :-)
16:38 [Coke] TimToady++
16:42 [Coke] TimToady: didn't you just rule on something very similar to RT #125398 ?
16:42 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=125398
16:51 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:52 lizmat so that changing "@a.map: { .Str }" to "@a.map: --> Str { .Str }" would give you the optimization
16:52 lizmat however, that's illegal syntax:
16:52 lizmat m: my $b = --> Str { .Str }
16:52 camelia rakudo-moar ef04e1: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Prefix -- requires an argument, but no valid term found␤at <tmp>:1␤------> my $b = --⏏> Str { .Str }␤    expecting any of:␤        prefix␤»
16:52 lizmat m: my $b = -> $_ --> Str { .Str }  # this works
16:52 camelia rakudo-moar ef04e1: ( no output )
16:52 jnthn m: my $b = -> --> Str { .Str }
16:52 camelia rakudo-moar ef04e1: ( no output )
16:52 lizmat aha... ok
16:52 jnthn Well, or that
16:53 jnthn 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␤»
16:53 jnthn Aww
16:53 jnthn Arguably that should work too :)
16:53 lizmat also: -> --> indicates *no* parameters
16:53 jnthn Yeah
16:53 lizmat -> $_ --> Str
16:54 lizmat that works, but allocates an extra Scalar for every iteration  :-(
16:54 jnthn It does? Hmm
16:54 jnthn What about -> Int $_ --> Str { } out of curiosity?
16:55 jnthn (or other appropraite type for your example)
16:55 lizmat yeah, that works, jnthn++
16:55 TimToady [Coke]: yes, but that seems like a separate bug, prolly
16:56 unmatched} m: for ^3 { .map: *.say };
16:56 camelia rakudo-moar ef04e1: ( no output )
16:56 unmatched} TimToady: ^ seems closely related
16:56 TimToady to the prior bug, yes
16:58 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?
17:00 lizmat well, basically the difference between the approach in quickmap and the approach I'm taking in this new "IterateOneNotSlippingWithoutPhasers" class
17:07 dalek rakudo/nom: c587b9d | lizmat++ | src/core/Any-iterable-methods.pm:
17:07 dalek rakudo/nom: Add IterateOneNotSlippingWithoutPhasers class
17:07 dalek rakudo/nom:
17:07 dalek rakudo/nom: This Iterator class will be used whenever you're mapping /foring
17:07 dalek rakudo/nom: any block that has a return signature that excludes Slips.
17:07 dalek rakudo/nom:
17:07 dalek rakudo/nom: Benchmarking indicates about a 10% improvement.  Please note that
17:07 dalek rakudo/nom: you will still have to jump through some hoops to get the right
17:07 dalek rakudo/nom: signature, and a signature that will actually help:
17:07 dalek rakudo/nom:
17:07 dalek rakudo/nom:   my @a = ^1000; @a.map: -> $_ --> Str { .Str }    # wrong, extra Scalar/iter
17:07 dalek rakudo/nom:   my @a = ^1000; @a.map: -> Int $_ --> Str { .Str }    # correct, 10% faster
17:07 dalek rakudo/nom:
17:07 dalek rakudo/nom: It would be nice if the signature gotcha would be less easy to fall into.
17:08 lizmat review: https://github.com/rakudo/rakudo/commit/c587b9d
17:12 brrt joined #perl6-dev
17:12 TimToady Anything with that many negatives in its name has got to be wrong somehow... :)
17:15 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 }
17:15 camelia rakudo-moar c587b9: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Method 'has_returns' not found for invocant of class 'Mu'␤at <tmp>:1␤»
17:23 unmatched} [Coke]: I wonder what value there is in keeping those tickets open in the first place.
17:23 unmatched} *stalled tickets
17:24 unmatched} They seem to be all about macros that are entirely broken and entirely experimental.
17:37 [Coke] If we remove the feature, we can remove the bug reports.
17:37 [Coke] otherwise, we'll end up having to re-discover all that stuff anyway.
17:37 unmatched} fair enough
19:48 gfldex has it been considered to have the unicode variants ¬ ∧ ∨ ⊻ for binary ops?
20:12 sno joined #perl6-dev
20:41 travis-ci joined #perl6-dev
20:41 travis-ci Rakudo build errored. Elizabeth Mattijsen 'Bump NQP to fix RT #128892, pmurias++'
20:41 travis-ci https://travis-ci.org/rakudo/rakudo/builds/151503212 https://github.com/rakudo/rakudo/compare/76be77c9d6e6...3878066a9531
20:41 travis-ci left #perl6-dev
20:41 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128892
20:41 buggable ☢ [travis build above] Build log missing from at least one job. Check results manually.
21:43 cognominal joined #perl6-dev
22:19 skids joined #perl6-dev
22:31 AlexDaniel joined #perl6-dev
22:43 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)␤»
22:43 jnthn TimToady: le bogus sink warning &&
22:43 jnthn oops ^^
22:43 jnthn :)
22:52 jnthn .u ☢
22:52 yoleaux2 U+2622 RADIOACTIVE SIGN [So] (☢)
22:52 jnthn heh, in my crappy font it looks like it could be a chess piece :P
22:53 * TimToady is currently fighting with sinking methods that are hiding inside hllize and don't have an available sink
22:53 jnthn urgh
22:54 jnthn 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 };
22:55 TimToady 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:56 TimToady 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
22:56 jnthn Arguably we shouldn't be letting NQPMu escape into Perl 6 code
22:56 TimToady not sure it's NQPMu itself
22:57 TimToady not very informative on that score: Cannot find method 'sink': no method cache and no .^find_method
23:00 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␤␤»
23:03 gfldex how do I introspect if something is an enum (beside cheating by looking for method called "enums")?
23:04 TimToady m: say Bool.?enums
23:04 camelia rakudo-moar c587b9: OUTPUT«{False => 0, True => 1}␤»
23:04 jnthn m: say Bool.HOW
23:04 camelia rakudo-moar c587b9: OUTPUT«Perl6::Metamodel::EnumHOW.new␤»
23:04 jnthn m: say Bool.HOW ~~ Perl6::Metamodel::EnumHOW
23:04 camelia rakudo-moar c587b9: OUTPUT«Could not find symbol '&EnumHOW'␤  in block <unit> at <tmp> line 1␤␤Actually thrown at:␤  in block <unit> at <tmp> line 1␤␤»
23:04 jnthn m: say Bool.HOW ~~ Metamodel::EnumHOW
23:04 camelia rakudo-moar c587b9: OUTPUT«True␤»
23:04 jnthn Like that
23:05 gfldex thanks
23:05 * jnthn wonders what gfldex is hacking on :)
23:05 * jnthn also wonders whether to grab another beer, write a huffman encoder to finish his module and sleep...or to skip straight to sleep. :)
23:07 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
23:07 gfldex I can just CATCH things but I would like to produce a warning for the methods that are hard to introspect.
23:09 gfldex And on the stuff where the introspection is quite hard, it's quite hard to introspect the method name. :)
23:20 gfldex a strategicly placed CATCH did solve my problems and I'm still able to warn properly.
23:21 gfldex already found a missing method :D
23:22 jnthn Already finished my Huffman coder.
23:22 jnthn I was told I should sleep soon, so I did whisky instead of beer and hacked quicker. :)
23:26 jnthn 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
23:26 jnthn ;)
23:26 jnthn https://github.com/jnthn/p6-http-hpack
23:26 jnthn https://github.com/jnthn/p6-http-hpack/blob/master/lib/HTTP/HPACK.pm6#L259 is where I tripped over the sink error, fwiw
23:28 jnthn Will be fun to see what the JIT spits out for that module, also... It's full of natives.
23:33 jnthn Sleep time; 'night
23:37 timotimo gnite jnthn

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