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 |