| Geth | rakudo: b2gills++ created pull request #1105: Add missing role to ::TranslateNewlineWrapper |
00:58 | |
| [Tux] | This is Rakudo version 2017.06-39-gb45612296 built on MoarVM version 2017.06-7-gee49c831 | 06:17 | |
| csv-ip5xs 2.657 | |||
| test 13.288 | |||
| test-t 4.141 - 4.223 | |||
| csv-parser 12.308 | |||
| Geth | rakudo/nom: 5ab4036e33 | (Brad Gilbert)++ (committed using GitHub Web editor) | src/core/Encoding/Encoder/TranslateNewlineWrapper.pm Add missing role to ::TranslateNewlineWrapper |
06:32 | |
| rakudo/nom: b342370b8d | niner++ (committed using GitHub Web editor) | src/core/Encoding/Encoder/TranslateNewlineWrapper.pm Merge pull request #1105 from b2gills/patch-5 Add missing role to ::TranslateNewlineWrapper |
|||
| travis-ci | Rakudo build passed. niner 'Merge pull request #1105 from b2gills/patch-5 | 07:06 | |
| travis-ci.org/rakudo/rakudo/builds/245237678 github.com/rakudo/rakudo/compare/b...42370b8d40 | |||
| lizmat | Files=1206, Tests=62543, 218 wallclock secs (13.40 usr 4.87 sys + 1323.44 cusr 133.23 csys = 1474.94 CPU) | 09:28 | |
| Geth | rakudo/nom: 30619e8d76 | (Elizabeth Mattijsen)++ | src/core/Mu.pm Re-order BUILDALL a bit more Ops higher than 7 now have 2 fewer conditions to check |
09:56 | |
| dogbert17 | eveo: aren't studying c for two weeks? | 10:20 | |
| *aren't you | |||
| eveo | dogbert17: I am. ATM on page 94 out of 831 of C Programming a Modern Approach, 2nd Edition | 10:26 | |
| But ATM I'm getting ready to work and I backlog and check social media feeds once in a while | 10:27 | ||
| jnthn | Yay, now I've some hacking time :) | 13:02 | |
| Geth | rakudo/nom: f71cbed490 | (Jonathan Worthington)++ | src/core/IO/Handle.pm Add IO::Handle.say candidate for Str. Just as we do for the `say` subroutine. Since the `.gist` call was inlined anyway it's not a big saving, but very easily measurable using callgrind. |
13:05 | |
| rakudo/nom: 0d053ab95c | (Jonathan Worthington)++ | src/core/Encoding/Encoder/Builtin.pm Take a str, not Str:D, in encode-chars. Since many code paths calling it will pass a native string after concatenating a newline to the end of it. This strips out all of the boxing. |
|||
| jnthn | Forgot to push those yesterday, it seems | 13:06 | |
| dogbert17 | is it output optimization time? | 13:28 | |
| jnthn | Yeah, I'm going to put in some output buffering logic but, for now, disabled by default | 13:30 | |
| Then we can flip the switch next week or so | 13:32 | ||
| (Just want some time for the big encodings changes yesterday to work their way through some use) | |||
| dogbert17 | very cool | 13:34 | |
| jnthn | Nice | 14:10 | |
| time ./perl6-m -e 'my $fh = open "longfile", :w, :buffer; for ^1_000_000 { $fh.say("xyz" x 20) }; $fh.close' | 14:11 | ||
| Show a nice big reduction in sys time | |||
| Geth | nqp: 4d2b86669d | (Jonathan Worthington)++ | 2 files Map setbuffersizefh op. |
14:21 | |
| travis-ci | NQP build passed. Jonathan Worthington 'Map setbuffersizefh op.' | 14:34 | |
| travis-ci.org/perl6/nqp/builds/245391123 github.com/perl6/nqp/compare/3ff26...2b86669d45 | |||
| eveo | m: gather await start take 42 | 14:37 | |
| camelia | Tried to get the result of a broken Promise in block <unit> at <tmp> line 1 Original exception: take without gather in code at <tmp> line 1 |
||
| eveo | Is this by design or is there a reasonable way to make it work? | ||
| jnthn | That's never going to work | 14:38 | |
| eveo | Cool. Thanks. | ||
| jnthn | Easiest way is a channel and .list it in the receiving end | 14:40 | |
| And .send in all of the various tasks | 14:41 | ||
| eveo | Yeah. Easy to work around it. Just writing an article on Seqs and came across this :) | 14:42 | |
| jnthn | Seems that yesterday's output improvement have knocked a few seconds off my spectest run. | 14:56 | |
| (usually 116s -> usually 112s) | |||
| Geth | nqp: 0b45398c4d | (Jonathan Worthington)++ | 3 files Stub setbuffersizefh for JVM. Don't actually implement it, but stub it sufficiently to allow the Rakudo build to work without needing `#?if jvm`. |
15:03 | |
| [Coke] | jnthn++ | 15:10 | |
| Geth | rakudo/nom: 86e7b2bd25 | (Jonathan Worthington)++ | 2 files Add a `buffer` argument to IO::Handle. When passed a boolean, it either enables or disables output buffering. Anything else will be coerced to an `Int`. So, `:buffer` means buffer output with a default buffer size, `:!buffer` means do not buffer output, and `:4096buffer` means to use a buffer size of 4096 bytes. For now the default is `:!buffer`; in the future, we'll try changing it to be `:buffer` in the case that the file handle is not a TTY, and beyond that enable it for the standard handles in non-TTY mode also. |
15:14 | |
| jnthn | m: say 1.287 / 2.085 | 15:15 | |
| camelia | 0.617266 | ||
| jnthn | So, the write a million lines one at a time to a file runs in about 60% of the time with :buffer | ||
| m: say 1.287 / 0.929 | 15:16 | ||
| camelia | 1.385361 | ||
| jnthn | Perl 5 still ~1.4x faster, but much of that is 'cus our looping overhead is a bit more | ||
| Oh, and because there's some sink logic that spesh makes a bad job of | 15:17 | ||
| timotimo | it does that often :) | 15:19 | |
| jnthn | Yeah, I'm aware | ||
| I'll soon be making a list of "things that spesh is poor at" in prep for my next round of design work and improvements on it :) | |||
| timotimo | the code i wrote to get rid of redundant "set" instructions isn't very awesome | 15:20 | |
| jnthn | I'm wondering if that's to blame for some oddities in the output where we have wrong versions showing up | 15:21 | |
| timotimo | versions of registers? | ||
| it should be easy to throw out for a check if we have a good example or two | |||
| jnthn | I'm not sure if it's maybe phis getting tossed instead | 15:22 | |
| But I've seen cases where we return, say, r16(5) | |||
| But nowhere in the code is that written | |||
| The write was to r16(4) | |||
| timotimo | right, i saw that a few times | ||
| jnthn | And of course it "works" | ||
| eveo | ZOFVM: Files=1256, Tests=139509, 115 wallclock secs (19.40 usr 3.74 sys + 2225.30 cusr 200.63 csys = 2449.07 CPU) | ||
| jnthn | I guess it's a mis-delete of a PHI | ||
| timotimo | i wanted to have a re-version step | ||
| eveo | Previous run was 111s | ||
| jnthn | But it worries me because if we get the tree into an inconsistent state, any analysis downstream of that can get us in a lot of bother | 15:23 | |
| eveo | And t/spec/S17-procasync/stress.t crashed both times (same ticket I mentioned yesterday) | ||
| timotimo | yeah | 15:24 | |
| jnthn | eveo: ah, the .out/.in thing? | ||
| eveo | Yeah | ||
| Geth | nqp: 04a42074fa | TimToady++ | src/QRegex/Cursor.nqp add refine_slang to automatically do mixins because define_slang is not short enough... |
15:42 | |
| TimToady_ | m: BEGIN $?LANG.refine_slang('MAIN', role { token apostrophe { <[ - ' \\ ]> } }); my $foo\bar = 42; say $foo\bar; | 15:43 | |
| camelia | 5===SORRY!5=== Error while compiling <tmp> An exception occurred while evaluating a BEGIN at <tmp>:1 Exception details: No such method 'refine_slang' for invocant of type 'Perl6::Grammar'. Did you mean 'define_slang'? in code at <tmp… |
||
| TimToady_ | that will work when the refine_slang change propagates through | ||
| that's how close we are to inline slangs | 15:44 | ||
| jnthn | o.O | ||
| TimToady++ | |||
| TimToady_ | m: BEGIN $?LANG.define_slang('MAIN', $?LANG.slang_grammar('MAIN').^mixin(role { token apostrophe { <[ - ' \\ ]> } })); my $foo\bar = 42; say $foo\bar; | 15:45 | |
| camelia | 42 | ||
| TimToady_ | that already does work | ||
| jnthn | What's the sugar form? | 15:46 | |
| augment slang MAIN { token apos... } ? | |||
| TimToady_ | something like that | ||
| need to get it easier to do <.callsame> or some such too | |||
| probably have to do { $/ := callsame } or some such currently | 15:47 | ||
| eveo | :o | 15:48 | |
| m: BEGIN { if 0 {} else { $?LANG.define_slang('MAIN', $?LANG.slang_grammar('MAIN').^mixin(role { token apostrophe { <[ - ' \\ ]> } })) }; $ = 42 } | 15:50 | ||
| camelia | 5===SORRY!5=== Error while compiling <tmp> An exception occurred while evaluating a BEGIN at <tmp>:1 Exception details: No such method 'sink' for invocant of type 'Perl6::Grammar'. Did you mean 'sign'? in block at <tmp> line 1 |
||
| eveo | ^ maybe we should add the sink method | ||
| Real world case where I came across it: github.com/MattOates/BioInfo/blob/...m6#L36-L39 | |||
| TimToady | would have to add it in nqp | 15:55 | |
| m: say "A\c[zwj]B".ords | 19:37 | ||
| camelia | (65 8205 66) | ||
| TimToady | m: say "A\c[zwj]B".chars | 19:38 | |
| camelia | 2 | ||
| TimToady | how can 2 be the right answer? | ||
| jnthn | TimToady: The A and zwj form a grapheme, because per TR29 you don't break before a ZWJ. | 19:42 | |
| TimToady | are emoji special cased then? | ||
| jnthn | Yes. | ||
| TimToady | k | ||
| jnthn | unicode.org/reports/tr29/#GB10 | ||
| samcv++ has looked at the emoji bits more closely than I have, but the answer matches what's in the grapheme boundary spec. | 19:43 | ||
| Or at least, matches my reading of it :-) | 19:44 | ||
| TimToady | well, I just claimed that Perl 6 was the second language to support 9.0, a few days after 5.26 did :) | 19:45 | |
| maybe we'll beat them to 10.0... | 19:46 | ||
| jnthn | Yeah, 8 -> 9 was anything but a "run the script on the new database" change | 19:47 | |
| AlexDaniel | well… | 21:46 | |
| m: say “\c[man health worker: medium skin tone]”.chars | |||
| camelia | 2 | ||
| AlexDaniel | m: say “\c[man health worker]”.chars | ||
| camelia | 2 | ||
| AlexDaniel | RT #127048 | 21:47 | |
| synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=127048 | ||
| AlexDaniel | samcv: ↑ I think you know about these tickets, but still :) | 21:48 | |
| lizmat | m: use nqp; class A { has Int $.a is default(42) }; my $a := nqp::create(A); dd $a.a; dd nqp::getattr($a,A,q/$!a/).VAR.default | 22:46 | |
| camelia | Int 42 |
||
| lizmat | jnthn: ^^^ feels like some deep code gen issue | ||
| why is the value Int, while the default is clearly set in the descriptor? | |||
| the only way I think this can happen, is that the Int is actually put into the Scalar | 22:47 | ||
| fwiw, if this could work, then assigning default state to attributes could become much faster, as they wouldn't need to run through BUILDALL :-) | 22:48 | ||
| has $ | |||
| has Bool $flag = False | |||
| or: has Bool $flag is defauilt(False) | 22:49 | ||
| the former would need a BUILDALL to set the default, the latter wouldnt | |||
| aka, $!flag would be come a 13 as opposed to a 4 | 22:50 | ||
| timotimo | the "is default" one can't have a thunk | 22:52 | |
| maybe that's the important difference? | |||
| lizmat | m: my $a is default(42); dd $a # works fine | 22:53 | |
| camelia | Int $a = 42 | ||
| lizmat | and oddly enough, the container of the attribute *does* have the right descriptor | ||
| it feels like the container of the attribute is vivified with its type, rather than not vivifying it like lexicals | 22:54 | ||
| note that in the above example, not BUILDALL is called, as the object is created with nqp::create :-) | 22:55 | ||
| *no | |||
| timotimo | yeah | 22:57 | |
| lizmat | quite possible it's the problem that nqp doesn't know about HLL features like "is default" ? | 22:58 | |
| anyways, I think we can get 5% off of test-t if we can make "is default" work on attributes | 22:59 | ||
| lizmat is going to contemplate this with her eyes shut :-) | 23:00 | ||
| good night! | |||
| samcv | hi AlexDaniel | 23:19 | |
| this is the same as this ticket? rt.perl.org/Ticket/Display.html?id=127047 i think these are dupes unless i'm missing something | 23:21 | ||
| though i guess one is refering to things attached to emoji_base/emoji_base_gaz characters? compared to ZWJ combiners | 23:23 | ||
| i guess that makes sense | |||
| added to my list. thanks :) | 23:24 | ||
| AlexDaniel | samcv: yeah, at least that was the idea | 23:46 | |
| “it's fucking blue” uhhhh… I should watch my mouth when a bug is being discussed… | 23:49 | ||
.oO( … well, at least… ) |
23:51 |