travis-ci Rakudo build passed. Elizabeth Mattijsen 'Make Baggy coercion to Set|SetHash 10x faster 00:10
travis-ci.org/rakudo/rakudo/builds/217641653 github.com/rakudo/rakudo/compare/6...47a197179f
Zoffix t/spec/S17-promise/nonblocking-await.t flopped 04:25
Geth rakudo/nom: a62b221a80 | (Zoffix Znet)++ | 4 files
Fix $/ failing to be set when matching in loops

Bug affects &infix:<~~>, Cool/Str.subst-mutate, Cool/Str.subst, Grammar.parse, Grammar.parse-file, Grammar.subparse
We lookup $/ with nqp::getlexdyn(), but for/map loops don't have their own $/, so we need to look further up the food chain. ... (6 more lines)
04:37
roast: 2ec8a3ab31 | (Zoffix Znet)++ | S05-capture/match-object.t
Test $/ is being set when matching in a loop

Rakudo fix: github.com/rakudo/rakudo/commit/a62b221a80 Bug find: irclog.perlgeek.de/perl6/2017-04-02#i_14362509
04:44
Zoffix A'ight. April 2nd. Time to... 05:22
IOninja Ninja it \o/
Geth rakudo/nom: 9d8d7b26dc | (Zoffix Znet)++ | docs/2017-IO-Grant--Action-Plan.md
[io grant] Log all changes to plan made during review period
05:42
roast: 07b5260611 | (Zoffix Znet)++ | S06-multi/type-based.t
Remove trailing whitespace
06:01
roast: 14b6844d29 | (Zoffix Znet)++ | S06-multi/type-based.t
[io grant] Use Numeric instead of IO role in dispatch test

The test uses IO role to test dispatch based on a role, but IO role is being removed. Since this test is about testing dispatch and not the IO role itself, it's OK to change it to test dispatch using Numeric role instead.
06:03
roast/6.c-errata: fa5d0bc5c1 | (Zoffix Znet)++ | S06-multi/type-based.t
[io grant] Use Numeric instead of IO role in dispatch test

The test uses IO role to test dispatch based on a role, but IO role is being removed. Since this test is about testing dispatch and not the IO role itself, it's OK to change it to test dispatch using Numeric role instead.
06:07
rakudo/nom: 87987c2dcb | (Zoffix Znet)++ | 5 files
[io grant] Remove `role IO` and its .umask method

Moved the IO enums to the next file listed in the _core_sources
06:08
rakudo/nom: 36ad92a8b4 | (Zoffix Znet)++ | src/core/IO/Handle.pm
[io grant] Remove 15 methods from IO::Handle

Removes .chmod, .IO, .e, .d, .f, .s, .l, .r, .w, .x,
  .modifies, .accessed, .changed, .mode, .watch
06:43
IOninja Good riddance. Not a single stresstest failure with that change :/ 06:44
Geth rakudo/nom: 16a201cc95 | (Zoffix Znet)++ | t/spectest.data
Mark S10-packages/precompilation.t as slow test

Takes 21s on my box
06:45
rakudo/nom: 7dc40a43de | (Zoffix Znet)++ | docs/2017-IO-Grant--Action-Plan.md
List IO::Handle.Supply(:bin) change as a 6.c change, not 6.d change

It was miscategorized.
07:02
IOninja ugh 07:04
A portion of the plan was written with my assumption that we can do whatever we want in 6.d, not that it was additive :/ 07:05
So changes like "Make IO::Path.abspath a private method in 6.d" are kinda weird :/
m: use MONKEY; augment class IO::Path { method !abspath { 'meow' }; method abspath { die 'No such method in 6.d' }; method x { self!abspath }; method new(|) {self.bless}; }; with IO::Path.new("x") { dd .x; dd .abspath} 07:08
camelia "meow"
No such method in 6.d
in method abspath at <tmp> line 1
in block <unit> at <tmp> line 1
IOninja Is the idea to do stuff like that like that ^? 07:09
I guess there's a way to remove the methods in augmentations... I just don't know it 07:10
Geth rakudo/nom: e3d487c345 | (Zoffix Znet)++ | docs/2017-IO-Grant--Action-Plan.md
Move IO::Handle.lock and IO::Path.new-from-absolute-path changes to 6.c

  - Neither is documented, tested, or used in ecosystem (just one use in zef)
   so it's safe to change in 6.c
  - In addition, IO::Path.new-from-absolute-path has a security issue in it
07:25
samcv .cc6539bcfba9 07:27
<samcv> idk is there a remove method magic thig
<samcv> like how you can add them
<samcv> docs.perl6.org/language/mop
<samcv> probably one that will let you remove one
IOninja, maybe that is helpful? idk
IOninja Well yeah, there's an .^add_method but no .^remove_method IIRC 07:29
But I'd guess there might be a way to poke into symbol table or something
samcv :/
IOninja t/pod-htmlify.t ...... 1/4 No such method 'IO' for invocant of type 'IO::Handle+{File::Temp::File::Temp::AutoUnlink}' 07:30
And the IO Grant claims its first victim :( that didn't take long
samcv heh
Zoffix ❗❗❗🌟🌟🌟❇️❇️❇️🌠🌠🌠🎉🎉🎉⚠️⚠️⚠️🚧🚧🚧🌈🌈🌈 08:34
Upgrade Information for Changes Due to IO Grant Work: rakudo.org/2017/04/02/upgrade-infor...rant-work/
❗❗❗🌟🌟🌟❇️❇️❇️🌠🌠🌠🎉🎉🎉⚠️⚠️⚠️🚧🚧🚧🌈🌈🌈
Geth rakudo/nom: 6e24854971 | (Zoffix Znet)++ | docs/2017-IO-Grant--Action-Plan.md
Mark IO Action Plan as archived doc
08:57
rakudo/nom: a5800a1f1e | (Zoffix Znet)++ | 2 files
[io grant] Implement IO::Handle.spurt

  - Move IO::Path.spurt into IO::Handle
  - Mirror old arguments for IO::Path.spurt; will improve them a bit
   later, when the self.open(|c) stuff in IO::Path is sorted out.
08:58
rakudo/nom: aa62cd5b8c | (Zoffix Znet)++ | src/core/io_operators.pm
[io grant] Remove &tmpdir and &homedir
09:24
roast: 5a7a365d27 | (Zoffix Znet)++ | S16-io/tmpdir.t
[io grant] Expand IO::Spec::*.tmpdir tests
10:00
rakudo/nom: 45530cbea1 | (Zoffix Znet)++ | docs/2017-IO-Grant--Action-Plan.md
Fix typo
10:02
rakudo/nom: 7b3b62ef98 | (Zoffix Znet)++ | docs/2017-IO-Grant--Action-Plan.md
Log making all IO routines consistently fail()

This was part of the original IO grant proposal, but apparently was missed in the Plan.
Currently many IO methods fail() but many IO subroutines catch those failures and throw them. The change will remove that catching and propagate ... (5 more lines)
10:10
rakudo/nom: fb5d7260d9 | (Elizabeth Mattijsen)++ | src/core/Hash.pm
Make Object Hash.Set(Hash) coercion 12x faster

  - for a 10 element object hash, larger hashes will probably be faster still
  - basically first clone the internal hash, then replace values
  - doesn't need any possibly expensive .WHICH re-calculations
  - should also affect many set operators that do a lot of coercions
10:15
[Tux] This is Rakudo version 2017.03-104-g7b3b62ef9 built on MoarVM version 2017.03-88-g21fc7a22 10:40
csv-ip5xs 3.021
test 12.366
test-t 4.891 - 4.898
csv-parser 12.666
Geth rakudo/nom: 94cb73b9ba | (Elizabeth Mattijsen)++ | src/core/Any.pm
Baggy/Setty coercers need listification by default
10:46
Zoffix m: $ = $*CWD; $*CWD = 42 11:09
camelia ( no output )
Zoffix m: $*CWD = 42
camelia Cannot modify an immutable IO::Path
in block <unit> at <tmp> line 1
Zoffix What makes it die on the second version? :/
lizmat m: $*CWD; $*CWD = 42 11:10
camelia ( no output )
lizmat perhaps the $*CWD initializer doesn't return a container
before you call $*CWD the first time, it doesn't really exist
Zoffix hmm 11:11
m: $*INITTIME = 42
camelia Cannot modify an immutable Instant
in block <unit> at <tmp> line 1
Zoffix m: m: $*INITTIME; $*INITTIME = 42
camelia Cannot modify an immutable Instant
in block <unit> at <tmp> line 1
Zoffix m: $ = $*INITTIME; $*INITTIME = 42
camelia Cannot modify an immutable Instant
in block <unit> at <tmp> line 1
lizmat I was talking about the specific $*CWD initializer 11:12
which lives in src/core/Env
Zoffix m: $*HOME; $*HOME = 42 11:13
camelia ( no output )
Zoffix m: $*HOME = 42
camelia Cannot modify an immutable IO::Path
in block <unit> at <tmp> line 1
Zoffix This one's affected too :/
lizmat is testing a fix
Zoffix Is there a way to avoid this?
OK
lizmat hmm.... that doesn't work 11:16
Zoffix What?
lizmat my fix :-) 11:17
Zoffix Yeah, I mean what did you try?
lizmat PROCESS::<$CWD> = IO::Path.new($CWD, :$CWD); # need :CWD to prevent looping 11:18
+ PROCESS::<$CWD>;
Zoffix Ah
lizmat ah, I know what it is 11:19
Zoffix INITIALIZE-DYNAMIC
lizmat I think :-)
missing an "is raw" maybe ?
lizmat tries that
Zoffix s: &DYNAMIC 11:20
SourceBaby Zoffix, Something's wrong: ␤ERR: Unhandled exception: Missing or wrong version of dependency 'src/Perl6/Grammar.nqp' (from 'gen/moar/main.nqp')␤ at <unknown>:1 (/home/zoffix/services/sourceable/building-perl6/perl6.moarvm:<dependencies+deserialize>)␤
lizmat yup, that's it, spectesting now 11:21
Zoffix sweet
huggable: atom ide 11:26
huggable Zoffix, github.com/perl6/Atom-as-a-Perl6-IDE
Geth rakudo/nom: 1b9d53ce5e | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals.pm
Allow assigning system dynamics on initialization

Spotted by Zoffix++
11:27
Zoffix lizmat++ thanks 11:30
m: -> *@_, *%_ { dd [@_, %_] }("/", :r:w:d:x) 11:36
camelia [["/"], {:r}]
Zoffix m: -> *@_, *%_ { dd [@_, %_] }(:r:w:d:x, "/")
camelia [["/"], {:d, :r, :w, :x}]
Zoffix wonders if that's a bug :/
lizmat looks like a bug to me
parser bug even :( 11:37
Zoffix m: dd [:r:w:d:x] 11:38
camelia [:r]
Zoffix Filed as rt.perl.org/Ticket/Display.html?id=131089 11:50
timotimo Zoffix: seems like you missed the part where jnthn explained why changing methods between 6.c and 6.d is a Very Bad Idea™ 12:11
i'll see if i can find the gist again that has all the explains
oh that was quick
gist.github.com/jnthn/c10742f9d51da80226fa
Removal of existing methods, classes, roles, and grammars must go through the deprecation process. 12:12
that'd be fair
The key difference compared to lexical changes is that no attempt is made by the Perl 6 language to prevent changes being visible to a caller using an earlier version of the language. This requires an addition-only backward compatibility policy (which is largely like the Liskov Substitution Principle: the class, after changes, should be usable in place of an earlier version of itself). 12:13
this is an important part of what i mean
Zoffix "<timotimo> Zoffix: seems like you missed the part" what made you say that? 12:17
timotimo you were talking about removing methods 12:18
Zoffix Ah 12:19
timotimo and augmenting classes when some part of the whole program uses 6.d is plenty terrible
imagine one module you were using suddenly requires 6.d, and out of nowhere your code no longer works because it used pre-6.d IO api
Zoffix huggable: versioning :is: gist.github.com/jnthn/c10742f9d51da80226fa 12:21
huggable Zoffix, Added versioning as gist.github.com/jnthn/c10742f9d51da80226fa
Zoffix "Any desired changed of behavior that cannot be made while meeting the above rules should be handled by instead providing a new method, or a new type, that provides the desired new behavior." 12:23
.oO( .6c-chdir, .6d-chdir, .6e-chdir )
12:24
timotimo: yeah, it's the first time I see that gist.
timotimo dang, that means we messed up! 12:25
Zoffix But based on those rules a lot of what I planned to go to 6.d can be done in 6.c, then
Actually.. *has to* be done in 6.c
Well, I need to re-read the Action Plan. 12:26
IO::Path.child -> proposed 6.d change is to make it croak on non-child paths; but adding that in 6.c breaks no test
Gonna re-read after a sleep period. 12:27
lizmat hopes Zoffix won't get IO based nightmares
timotimo sorry :S 12:30
Zoffix heh 12:33
timotimo: no, it's good. Would be bad if this was mentioned AFTER I added all the stuff to 6.d :) 12:34
I'd just need to publish an addition to the upgrade notice I wrote today.
"Oh BTW, we're also changing all of this stuff, 'cause adding it to 6.d is a PITA" :)
timotimo %) 12:36
Geth rakudo/nom: 6636dd7b1f | (Zoffix Znet)++ | src/core/Deprecations.pm
Reword a conditional
13:09
rakudo/nom: 32368235cb | (Zoffix Znet)++ | src/core/Deprecations.pm
Allow Whatever :$up in sub DEPRECATED

  - Using Whatever for $up, makes the sub exclude setting from
   backtrace
  - Seems this would be desired as a default, but unsure what else
   depends on it reporting stuff for the setting, so adding this
   as an addon feature
13:11
rakudo/nom: a0ef2ed6ff | (Zoffix Znet)++ | 2 files
[io grant] Improve &chdir, &indir, and IO::Path.chdir

  - Deprecate `:$test` param
  - Use :r, :w, :d, :x named args for tests
  - Use :d test as default instead of :d + :r
  - Make &chdir and &indir propagate Failure, instead of throwing
  - Fix incorrect dir used in &indir if a relative IO::Path is given
... (8 more lines)
13:20
Zoffix TIL sub { END do-stuff }; runs do-stuff even when sub was never run :) 14:21
don't know what I was thinking heh
Geth roast: d03e936d29 | (Zoffix Znet)++ | packages/Test/Util.pm
Implement Test::Util:: make-test-file and make-test-dir

  - Creates file, optionally spurting content and setting chmod
  - Creates directory, optionally setting chmod
  - Removes them on END
14:36
roast: 76a6dad5e5 | (Zoffix Znet)++ | packages/Test/Util.pm
Tweak randomized temp path name a bit
14:50
roast: be8a972499 | (Zoffix Znet)++ | packages/Test/Util.pm
Make make-temp-dir take chmod as positional

To save on typing.
15:57
Zoffix I only now got what "unandled Failure in destroy" actually means... :| 16:08
tbrowder Zoffix: ref docs, I just made a change I hope is ok given yr current work; github.com/perl6/doc/commit/14ab6b5156 16:27
Zoffix tbrowder: that code example is wrong. You're calling all those methods on Str
tbrowder arg, i forgo the .IO., thanks; any other problem you see? 16:29
Zoffix Nope. 16:30
tbrowder the reference in the L<> block may need tweaking i know, i just added the IOs 16:31
Zoffix isa-ok would benefit from handling Failures. But adding that feature makes a couple of tests fail because they assume the failure is still explosive after isa-ok :/ 16:50
I'm getting spammed with "unandled Failure in destroy" in my test run :\
fails-like {…}, Some::Exception would be handy :/ 16:54
timotimo i think we have that 17:11
oh
"fails", you are already aware of "dies-like"
you can cook your own typecheck that won't disarm a failure by going through the object's .WHAT
Zoffix I *do* want to disarm it. 17:13
timotimo oh! 17:14
Zoffix Well, not anymore because I changed my code to do it manually, but I'd hope `isa-ok` would do it for me
Geth roast: f48198fd10 | (Zoffix Znet)++ | S32-io/indir.t
[io grant] Test &indir

Rakudo impl: github.com/rakudo/rakudo/commit/a0ef2ed6ff
17:26
roast: b2d17da92d | (Zoffix Znet)++ | S32-io/indir.t
Use proper plan and add vim markings
17:27
rakudo/nom: ca1acb727b | (Zoffix Znet)++ | src/core/io_operators.pm
[io grant] Fix race in &indir(IO::Path …)

Do not use IO::Path.chdir… at least for now… as it is racy. Instead, copy over the file tests into &indir impl.
Fixes race for IO::Path argument, but not for Str, which probably can't be fixed, since the race is inside teh coercer when Str gets coerced into an IO::Path.
18:08
roast: bd468366eb | (Zoffix Znet)++ | S32-io/indir.t
[io grant] Amend &indir race tests

  - Make the race conditions much more racy
  - Remove tests for &indir(Str), as that race probably can't be fixed
18:10
Zoffix 2:20PM... looks like I'm way past my bed time :} 18:19
Zoffix goes for a power nap
ugexe # NOTE: we need this extra block <- wonder if that block is still needed since it was referring to $*CWD being empty (which was fixed recently?) 18:20
Zoffix Nope, not fixed. The code's basically ends up as my $*CWD; $path = "foo".IO; $*CWD = $path; but the extra block moves that `my` after the coercer coerces the parameter 18:24
ugexe ah 18:25
Zoffix m: -> IO() $ { my $*CWD }(class Foo { method IO { dd $*CWD } })
camelia Any $*CWD = Any
Zoffix m: -> IO() $ { }(class Foo { method IO { dd $*CWD } })
camelia IO::Path <element> = "/home/camelia".IO(:SPEC(IO::Spec::Unix),:CWD("/home/camelia"))
Zoffix m: -> IO() $ { { my $*CWD } }(class Foo { method IO { dd $*CWD } })
camelia IO::Path <element> = "/home/camelia".IO(:SPEC(IO::Spec::Unix),:CWD("/home/camelia"))
Geth rakudo/nom: dcebce4d60 | (Elizabeth Mattijsen)++ | 3 files
Streamline tai/epoch conversion / leap-second check

  - make internal tables native, adapt update script accordingly
  - use native ints in calculation
   This assumes we will no longer have 32bit machines by 2038.
  - rewrite in nqp ops
  - e.g. makes now 20% faster
22:26
lizmat and this concludes my hacking for today 22:28
good night, #perl6-dev!
Zoffix Night! 22:37
You're gonna miss the party tho :) 22:38
Zoffix cracks open a bottle of carbonated water and bakes a pizza