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