Geth nqp/appveyor: 2e7cd40291 | (Samantha McVey)++ | .appveyor.yml
Try debugging Appveyor
03:14
samcv nqp is building in the appveyor branch, but for some reason not running the tests, not sure why 03:22
Geth nqp/appveyor: 16802a7cb6 | (Samantha McVey)++ | .appveyor.yml
Run nmake and nmake install in different steps (appveyor)
03:24
rakudo: Gnouc++ created pull request #1164:
Make :delete works with lazy Arrays
04:15
roast: Gnouc++ created pull request #326:
:delete on lazy Arrays
travis-ci Rakudo build errored. Elizabeth Mattijsen 'Map/Hash have their own optimized .sort 04:53
travis-ci.org/rakudo/rakudo/builds/276935301 github.com/rakudo/rakudo/compare/4...6741e77d76
buggable [travis build above] ✓ All failures are due to: missing build log (1 failure).
Geth nqp/appveyor: 3748aa53cc | (Samantha McVey)++ | .appveyor.yml
Turn build section of Appveyor build off

Hopefully avoid "Specify which project or solution file to use
  because the folder contains more than one project or solution file."
error.
05:04
[Tux] This is Rakudo version 2017.09-27-gda5c36c13 built on MoarVM version 2017.09.1-13-g3dea7dff 06:03
csv-ip5xs 1.339 - 1.341
test 10.012 - 10.168
test-t 3.452 - 3.482
csv-parser 12.642 - 13.312
lizmat Files=1227, Tests=75113, 294 wallclock secs (14.49 usr 5.24 sys + 1992.84 cusr 205.69 csys = 2218.26 CPU) 07:36
Geth rakudo/nom: 0385b2aa45 | (Cuong Manh Le)++ | src/core/Array.pm
Make :delete works with lazy Arrays

Fixes RT#131790
07:38
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131790
Geth rakudo/nom: 3e35819914 | lizmat++ (committed using GitHub Web editor) | src/core/Array.pm
Merge pull request #1164 from Gnouc/nom

Make :delete works with lazy Arrays
roast: 9cc47b28a9 | (Cuong Manh Le)++ | S32-array/delete-adverb.t
:delete on lazy Arrays

RT #131790
07:39
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131790
Geth roast: bf4b2048d5 | lizmat++ (committed using GitHub Web editor) | S32-array/delete-adverb.t
Merge pull request #326 from Gnouc/master

  :delete on lazy Arrays
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Bump nqp: new libuv and fix for thread ID race' 08:13
travis-ci.org/rakudo/rakudo/builds/276986184 github.com/rakudo/rakudo/compare/4...8b84971dff
Rakudo build failed. Elizabeth Mattijsen 'Iterable eqv Iterable should check types first 10:11
travis-ci.org/rakudo/rakudo/builds/277009878 github.com/rakudo/rakudo/compare/1...eeef9baa42
buggable [travis build above] ✓ All failures are due to: GitHub connectivity (1 failure).
lizmat afk for most of the day& 10:18
Geth rakudo/supply-locking-refactor: 93a66d75b9 | (Jonathan Worthington)++ | src/core/Supply.pm
An on-demand Supply isn't magically serial/sanitry

We had a case right here in CORE.setting that violated it, so user's own code sure as heck might do so also.
12:36
rakudo/supply-locking-refactor: 9e179355cf | (Jonathan Worthington)++ | src/core/Supply.pm
Filter out duplicate done/quit messages
Zoffix ZOFVM: Files=1277, Tests=152091, 161 wallclock secs (20.70 usr 3.29 sys + 3016.86 cusr 269.89 csys = 3310.74 CPU) 12:37
I sure how that's just we added more tests :/
m: say 161/137
camelia 1.175182
Zoffix 17% slower :/
buggable: speed :50 12:39
buggable Zoffix, Refusing to draw more than 4 rows
Zoffix buggable: speed 50 :4
buggable Zoffix, ▅ ▆ ▇ ↑ ↑█ dates: 2017-09-02–2017-09-19
Zoffix, ▂ █▄ █ █▃█ ▃ ██ range: 3.376s–4.237s
Zoffix, ▆█▂ ██ █▃ ▄███▆ ▃▁ █ ▂ ▃█▆▄██▂▃ ▁ speed: 3% faster
Zoffix, ███▇▄▃██▅▇▅█▆▅▇▁▄▅██▇▇█████▆██▇█▆█▂▂████████▇█▄▃▅▇
jnthn Pretty :) 12:40
Geth rakudo/supply-locking-refactor: c46be84ca3 | (Jonathan Worthington)++ | src/core.d/await.pm
Move classes outside of `REACT` sub

That pattern caused some pain with `SUPPLY` before now.
12:45
rakudo/supply-locking-refactor: 633a15b82b | (Jonathan Worthington)++ | src/core/Supply.pm
Sanitize per tapping, not per Supply

I've put this off before now as it causes a couple of regressions in S17-supply/basic.t, but it's the right thing to do, and not doing it causes other issues. Regressions will be investigated and dealt with before this branch is merged.
rakudo/supply-locking-refactor: ef4d16fe19 | (Jonathan Worthington)++ | src/core/Supply.pm
Serialize lock should be per tap, not per Supply

This may allow for finer-grained concurrency in the case of supplies being used for publish/subscribe.
rakudo/supply-locking-refactor: 5a9bb4a58e | (Jonathan Worthington)++ | src/core/Supply.pm
Remove unused attribute
Zoffix ZOFVM: Files=1277, Tests=152091, 143 wallclock secs (20.57 usr 3.13 sys + 2952.57 cusr 231.80 csys = 3208.07 CPU) 12:49
Geth rakudo/nom: bb45791c5d | (Zoffix Znet)++ | 2 files
Make `eqv` throw typed exceptions on lazy comparisons

Closes RT#132117: rt.perl.org/Ticket/Display.html?id=132117
P.S.: the exception's wording says "lazy lists". It's lowercased "list", which I suppose is enough wiggle room to be OK when throwing for lazy Seqs
12:51
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132117
roast: 66c13e9402 | (Zoffix Znet)++ | S03-operators/eqv.t
Spec `eqv` behaviour with lazy arguments

RT#132117: rt.perl.org/Ticket/Display.html?id=132117 Rakudo fixes: github.com/rakudo/rakudo/commit/66c2d05f29
   github.com/rakudo/rakudo/commit/48a84d6aff
   github.com/rakudo/rakudo/commit/bb45791c5d
12:53
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132117
roast: 7e5caccdee | (Zoffix Znet)++ | S03-operators/eqv.t
Add couple more eqv on lazy tests

To cover potential separate candidates for Lists/Arays (rakudo has separate ones for Seqs)
12:58
roast: 7ece4e5787 | (Jonathan Worthington)++ | S17-supply/basic.t
Remove tests with some odd exepctations

They claimed to cover RT #123477, and there are indeed tests in this file that cover that issue. However, these tests went further: they expected not only that the protocol would be enforced from the point of view of an individual tap (which is what the RT ticket was using), but also that this would carry over to future taps of the same Supply. ... (10 more lines)
13:05
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=123477
rakudo/supply-block-refactor: f53d396374 | (Jonathan Worthington)++ | src/core/Supply.pm
Closure clone per supply/react, not per whenever

Saves some work for supply/react blocks that have multiple whenever blocks inside of them. Also sprinkle some comments explaining what's going on.
14:32
jnthn m: react { await Promise.in(0.1) }; say 'ok' 14:58
camelia ok
jnthn m: use v6.d.PREVIEW; react { await Promise.in(0.1) }; say 'ok'
camelia ok
jnthn m: await start react { await Promise.in(0.1) }; say 'ok'
camelia ok
jnthn m: use v6.d.PREVIEW; await start react { await Promise.in(0.1) }; say 'ok'
camelia A react block:
in code at <tmp> line 1

Died because of the exception:
An operation first awaited:
in block at <tmp> line 1

Died with the exception:
No matching continuation reset found
in block at …
jnthn Darn. 14:59
Figured it wasn't going to be due to any of the patches in my branch.
Geth rakudo/supply-block-refactor: 29863a0bdc | (Jonathan Worthington)++ | src/core/ThreadPoolScheduler.pm
Fix non-blocking react { await blah() }

The `react` (and also `await $some-supply`) constructs will tap the
  `Supply` upon the call to `subscribe-awaiter`. This causes some
amount of synchronous execution to take place, and that code may then itself `await`. This broke because the continuation tag was removed by the react/await prior to this. Protect the continuation tag, so it survives.
15:19
jnthn .tell pmurias A while back you asked if the continuation protect flag should stay or go away. Turns out, stay: github.com/rakudo/rakudo/commit/29863a0bdc
yoleaux jnthn: I'll pass your message to pmurias.
jnthn m: use v6.d.PREVIEW; use Test; lives-ok { await start react { await Promise.in(0.1) } } 15:20
camelia not ok 1 -
# Failed test at <tmp> line 1
# No matching continuation reset found
jnthn Got a test for the above locally, will push it once I merge stuff 16:35
Geth nqp: 4bc6050d6e | (Zoffix Znet)++ | tools/build/MOAR_REVISION
Bump MoarVM
17:22
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...6-g3b4b032
rakudo/nom: dff7d9b28a | (Zoffix Znet)++ | tools/build/NQP_REVISION
Bump NQP
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....3-g4bc6050
0d2ca0d7e1 | (Zoffix Znet)++ | t/02-rakudo/10-nqp-ops.t

  …does not SEGV.
RT#132128: rt.perl.org/Ticket/Display.html?id=132128 Rakudo fix: github.com/rakudo/rakudo/commit/dff7d9b28a NQP fix: github.com/perl6/nqp/commit/4bc6050d6e MoarVM fix: github.com/MoarVM/MoarVM/commit/3b4b032984
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132128
Zoffix oops, slightly wrong ticket in commit message.
Geth rakudo/nom: de56c05649 | (Zoffix Znet)++ | t/02-rakudo/10-nqp-ops.t
Add reference to ticket to the test
17:26
rakudo/nom: 0834036dd4 | (Zoffix Znet)++ | src/core/Int.pm
Fix issues with Int.new

  - Fix wrong error (default constructor blah blah) with wrong args
  - Fix subclassed Ints returning an Int instead of subclass
Fixes RT#132128: rt.perl.org/Ticket/Display.html?id=132128
18:10
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132128
roast: ba7d5c1dd1 | (Zoffix Znet)++ | S32-num/int.t
Test subclassing of Int.new

RT#132128: rt.perl.org/Ticket/Display.html?id=132128 Rakudo fix: github.com/rakudo/rakudo/commit/0834036dd4
18:11
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132128
nqp/jit_nativecall: e7f0c9b3d8 | (Stefan Seifert)++ | 12 files
Map the new nativecallinvokejit OP

nativecallbuild now has a return value indicating whether we were able to JIT compile code for the call site
18:55
rakudo/jit_nativecall: 8 commits pushed by (Stefan Seifert)++
smls Anyone up for reviewing my NPQ PR (QRegex fixes) from 4 weeks ago, before it bitrots? github.com/perl6/nqp/pull/368 19:05
Pinging TimToday (Still the highest authority on intended P6 regex behavior, right? Although this case looks like an obvious fix...) 19:06
Pinging jnthn (git blame of most of the surrounding code).
Zoffix
.oO( that stuff's over my head )
19:19
Geth rakudo: dwarring++ created pull request #1165:
fix subset isa method on a subset.
19:20
nqp/jit_nativecall: 4bc6bcc51b | (Stefan Seifert)++ | 12 files
Map the new nativeinvoke OP

nativecallbuild now has a return value indicating whether we were able to JIT compile code for the call site
19:44
nqp/jit_nativecall: e2029c8fd5 | (Stefan Seifert)++ | 12 files
Map the new nativeinvoke OP

nativecallbuild now has a return value indicating whether we were able to JIT compile code for the call site
rakudo/jit_nativecall: 6 commits pushed by (Stefan Seifert)++ 19:52
nine Ok, everything ready for review :)
samcv do we want to enable perl6 -n0 to have null separated lines 19:56
or maybe -0n idk. seems perl5 accepts both but that seems odd 19:57
ilmari because -0 and -n are separate flags 19:58
and perl5 allows bundling flags
samcv ah 20:00
makes sense now :)
lizmat comes back from a day afk to find all sorts of new goodies :-) 20:09
m: dd 2.WHERE, Int.new(2).WHERE 20:49
camelia 139898000064752
139898001015248
lizmat Zoffix: why should they be different ? You can't assign into an Int, can you ? 20:50
Zoffix lizmat: that's an old test. Perhaps it should be improved. What it's testing is: 20:53
m: dd (2 does role Meows {}).^name; (Int.new: 2).^name.say
camelia "Int+\{Meows}"
Int
Zoffix c: HEAD~200 m: dd (2 does role Meows {}).^name; (Int.new: 2).^name.say
committable6 Zoffix, ¦HEAD~200: «"Int+\{Meows}"␤Int+{Meows}»
Zoffix I think that was fixed today, so that test didn't test the failure
I mean, it's an old test I wrote, so that's what I intended :) 20:54
lizmat ok, because I'v just made Int.new 7x faster, but it fails that test
Geth rakudo/nom: cee1be22cf | (David Warring)++ | src/Perl6/Metamodel/SubsetHOW.nqp
fix subset isa method on a subset.

perl6 -e'subset S of Int; subset S2 of S; say S2.isa(S)'
now returns True. fully resolves RT #132073
20:55
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132073
Geth rakudo/nom: b66f5e1cc8 | (Zoffix Znet)++ (committed using GitHub Web editor) | src/Perl6/Metamodel/SubsetHOW.nqp
Merge pull request #1165 from dwarring/subset-isa2

fix subset isa method on a subset.
lizmat (while preserving subclassability / mixability)
Zoffix wow cool :)
OK, remove the test :) It's not part of 6.c-errata 20:56
lizmat will do
Zoffix m: dd (2 does role Meows {}).^name; (Int.new: 2).^name.say
camelia "Int+\{Meows}"
Int
Zoffix m: dd (2e0 does role Meows {}).^name; (Num.new: 2e0).^name.say 20:57
camelia "Num+\{Meows}"
Num
lizmat m: class Y is Int {}; dd Y.new(42).WHAT, Int.new(42).WHAT
camelia Y
Int
Zoffix (Int.new: 2).^name.say returning `Int+\{Meows}` above is basically about cached constants I think. And whatever Int.new is doing now reboxes the native int into a fresh thing 20:59
lizmat hmm... seems the int version is still borked: 21:05
m: dd (2 does role Meows {}).^name; (Int.new: my int $ = 2).^name.say
camelia "Int+\{Meows}"
Int+{Meows}
lizmat and that's what I was using as a model for optimization :-(
timotimo huh, is the boxed int cache in moarvm faulty? 21:06
lizmat well, perhaps ?
Zoffix :(
m: dd (2e0 does role Meows {}).^name; (Num.new: my num $ = 2e0).^name.say 21:07
camelia "Num+\{Meows}"
Num
Zoffix s: Num, 'new', \(my num $ = 2e0)
SourceBaby Zoffix, Sauce is at github.com/rakudo/rakudo/blob/0834...Num.pm#L32
Zoffix seems same as Int's version for natives. 21:08
m: use MONKEY; augment class Int { method znew ($v) { nqp::box_i($v.Int, self) } }; dd (2 does role Meows {}).^name; (Int.znew: my int $ = 2).^name.say 21:09
camelia "Int+\{Meows}"
Int+{Meows}
Zoffix m: use MONKEY; augment class Num { method znew ($v) { nqp::box_n($v.Num, self) } }; dd (2e0 does role Meows {}).^name; (Num.znew: my num $ = 2e0).^name.say 21:10
camelia "Num+\{Meows}"
Num
Zoffix
.oO( Nums aren't cached? )
lizmat what would be the key? :-) 21:11
Zoffix key?
FWIW, as I remember it, solving this issue for Int is something I just thought up while fixing the issue of >64bit ints failing. So I don't think there was a usecase it was fixing and there weren't test for it in 6.c-errata. We could say it's cached; deal with it. If there's no way around it 21:13
Well, I didn't even fix it and wrote a faulty test, so... :)
Zoffix & 21:16
lizmat m: dd 2 does role Meows {}; dd 2.WHAT # this feels like a very bad case of action at a distance 21:47
camelia 2
Int+{Meows}
lizmat perhaps 2 does ... should not be allowed ?
timotimo probably :)
you know how much fun you can have when you alter java's boxed int cache? :D
ilmari boxed_int[4] = new Integer(7); ? 21:58
timotimo yeah, like that
geekosaur suddenly I am reminded of fortran fun
gfldex stares at „java“ and „fun“ in the same sentence 21:59
geekosaur (i.e. java didn't invent that)
ilmari gfldex: but "fortran" and "fun" is fine? 22:00
geekosaur fortran is call by reference, so if you call a function with a numeric literal then that literal has to be compiled into a memory location. these are in common storage so there will be only one of each distinct literal in each program
timotimo cool, you can also modify strings
geekosaur since it's call by reference, it's cool with updating the value (perl 6's "is rw" automatically)
hijinks ensue
I should probably specify fortran IV, I think newer takes (don't recall about fortran 95) allow by-value 22:01
this was possible --- and being used in the wild --- for several decades before compiler writers realized it (by trying to add by-value optimizations and having the odd program suddenly break) 22:03
travis-ci Rakudo build failed. Zoffix Znet 'Merge pull request #1163 from skids/rt132119 22:12
travis-ci.org/rakudo/rakudo/builds/277036247 github.com/rakudo/rakudo/compare/0...5c36c134db
buggable [travis build above] ✓ All failures are due to: GitHub connectivity (1 failure).
samcv discussed this with jnthn in #moarvm. i think it makes sense for .codes to count each utf8-c8 grapheme as 1 code 22:31
since it shouldn't be decomposed ever
plan to change that, as well as fixing a problem where string operations on strings containing utf8-c8 synthetics would cause them to turn into normal text. 22:32
m: my @ints = 103, 248, 111, 217, 210, 97; my $b = Buf.new(@ints); my Str $u=$b.decode("utf8-c8"); say $u.chars; $u.=subst("a","a"); say $u.chars
camelia 6
9
samcv replace a with a, and it turns the utf8c8 graphemes into standard text which it should not. will be fixing that too 22:33
any objections to the .codes returning 1 for each utf8c8 grapheme?
though i guess .ords decomposes the utf8c8 into non utf8c8. not sure what it should do in that case anyway 22:34
m: my @ints = 103, 248, 111, 217, 210, 97; my $b = Buf.new(@ints); my Str $u=$b.decode("utf8-c8"); say $u.ords. say $u
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3u=$b.decode("utf8-c8"); say $u.ords. say7⏏5 $u
expecting any of:
infix
infix stopper
postfix
statement end
samcv m: my @ints = 103, 248, 111, 217, 210, 97; my $b = Buf.new(@ints); my Str $u=$b.decode("utf8-c8"); say $u.ords; say $u 22:35
camelia (103 1114109 120 70 56 111 1114109 120 68 57 1114109 120 68 50 97)
g?xF8o?xD9?xD2a
timotimo my terminal doesn't understand this at all %) 22:54
samcv well. it's utf8c8 :P 23:03
it's a private area character
timotimo, any thoughts on having .codes return 1 for each utf8c8 synth? 23:04
i mean .ords converts it into like what you see on your screen as the output. but that's because it's not printing out as utf8c8 and converting to utf8 23:05
m: my @ints = 103, 248, 111, 217, 210, 97; my $b = Buf.new(@ints); my Str $u=$b.decode("utf8-c8"); $*OUT.say: :enc<utf8c8>,$u.ords; say $u
camelia (103 1114109 120 70 56 111 1114109 120 68 57 1114109 120 68 50 97)
g?xF8o?xD9?xD2a
samcv m: my @ints = 103, 248, 111, 217, 210, 97; my $b = Buf.new(@ints); my Str $u=$b.decode("utf8-c8"); $*OUT.say: :enc<utf8c8>,$u.ords; 23:06
camelia (103 1114109 120 70 56 111 1114109 120 68 57 1114109 120 68 50 97)
samcv m: my @ints = 103, 248, 111, 217, 210, 97; my $b = Buf.new(@ints); my Str $u=$b.decode("utf8-c8"); $*OUT.say: :enc<utf8c8>, $u
camelia g?xF8o?xD9?xD2a
samcv m: my @ints = 103, 248, 111, 217, 210, 97; my $b = Buf.new(@ints); my Str $u=$b.decode("utf8-c8"); $*OUT.say: :enc<utf8-c8>, $u
camelia g?xF8o?xD9?xD2a
samcv m: my @ints = 103, 248, 111, 217, 210, 97; my $b = Buf.new(@ints); my Str $u=$b.decode("utf8-c8"); $*OUT.write: :enc<utf8-c8>, $u
camelia Type check failed in binding to parameter '$buf'; expected Blob but got Str ("g?xF8o?xD9?xD2a")
in block <unit> at <tmp> line 1
samcv forget what i'm supposed to use :P 23:07
jnthn $*OUT.write: $u.encode('utf8-c8') 23:08
Or $*OUT.encoding('utf8-c8'); say $u
samcv for now i'm not going to change .codes. will think about it a little more 23:12
also .ords returns flattened synthetics. which is weird. not sure what that shuold do either. any idea jnthn 23:13
oh looks like you're going to bed. night o/
i sort of feel .ords should return the name number as .codes does. so i'm kind of unsure what to do
and would probalby want to change both at the same time so it's consistent 23:14
timotimo samcv: i don't know what use cases there are for .codes on an utf8-c8 string and what's more convenient 23:17
samcv oh. make distclean solved my issue with compiling moarvm not updating its version number. even after running ./Configure.pl again 23:19
hmm
timotimo really, the biggest problem with utf8-c8 i see at the moment is that if you pipe random binary data in you can accidentally hit "valid" utf8 that will still throw an exception 23:22
samcv ah so that's what causes it 23:26
timotimo hm, i can't provoke it right now for some reason 23:30
so maybe it actually got fixed and i just didn't notice?
yeah, i've been running a loop that runs Buf.new(^256 .roll(64)).decode("utf8-c8") until it throws an exception 23:32
that's cool. 23:33
samcv m: my $b = Buf.new([245, 187, 185, 167]).decode("utf8-c8").say 23:44
camelia Error encoding UTF-8 string: could not encode codepoint 1556071 (0x17BE67), codepoint out of bounds. Cannot encode higher than 1114111 (0x10FFFF)
in block <unit> at <tmp> line 1
samcv m: my $b = Buf.new([245, 187, 185, 167]).decode("utf8-c8").ords.say 23:45
camelia (1556071)
samcv well i fixed one of them at least timotimo 23:49
maybe 23:50
timotimo i wonder if i just did my code wrong that i never stumbled upon any case where it threw an exception 23:52
weird.
samcv well i found the issue 23:54
it doesn't check if the codepoint is too large
i fuond the rigth spot and put a check in and it didn't die