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 |