[Tux] | This is Rakudo version 2017.04.3-95-g5e74017d6 built on MoarVM version 2017.04-44-gf0db8822 | 07:10 | |
csv-ip5xs 3.110 | |||
test 13.319 | |||
test-t 5.209 - 5.275 | |||
csv-parser 13.083 | |||
lizmat | Files=1192, Tests=56861, 210 wallclock secs (12.21 usr 4.84 sys + 1222.40 cusr 120.80 csys = 1360.25 CPU) | 08:08 | |
Geth | rakudo/nom: 4 commits pushed by (Elizabeth Mattijsen)++ | 08:15 | |
rakudo/nom: f18d0dc04f | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals.pm Add R:I.MULTIPLY-BAG-TO-BAG worker method To be used for Baggy (.) Baggy in various places. |
08:33 | ||
rakudo/nom: 3f97831d08 | (Elizabeth Mattijsen)++ | src/core/set_operators.pm Make Baggy (.) Baggy about 35x faster - with a 100 element Bag with itself - give Baggy (.) Baggy its own candidate written using nqp ops |
|||
rakudo/nom: 9c9ebd0bb8 | (Elizabeth Mattijsen)++ | src/core/set_operators.pm Make Map (.) Map about 2.5x faster - with a 26 element Hash with itself - give Map (.) Map its own candidate written using nqp ops |
08:52 | ||
pmurias | is MVM_num_neginf(tc) different from -1 * MVM_neg_inf(tc) on some platform? | 10:38 | |
* MVM_neg_posinf | 10:41 | ||
jnthn | m: use Test; is (42 but role { has int $.x = 100 }).x, 100 | 11:55 | |
camelia | Invalid BUILD_LEAST_DERIVED plan in block <unit> at <tmp> line 1 |
||
pmurias | jnthn: is the str type fully specced? it's only mentioned a few times in roast and not documented | 11:59 | |
jnthn | pmurias: Yeah. We have to have *some* name for the thing inside of a Str (which is a P6opaque) | 12:01 | |
So str is that | 12:02 | ||
It's not particularly widely known about/used, which is probably for the best :) | |||
But we need it inside of CORE.setting, and some string-intensive code can - for the moment at least - get some performance wins by avoiding boxing overhead. | 12:03 | ||
(In the future we should get better at optimizing away boxing in many cases.) | |||
(Though even then there will still be cases where it can be a win.) | 12:04 | ||
Funny you mention it 'cus I'm about to push another spectest that mentions it :-) | |||
pmurias | I'm working on the str to num MoarVM level conversion | 12:05 | |
jnthn: is it ok if I put it into src/strings/parse_num.c (it consists of a bunch of static functions and I don't want to clutter the coerce file) | |||
Geth | rakudo/nom: 43ad0db178 | (Jonathan Worthington)++ | src/core/Mu.pm Correct a comment. |
12:06 | |
rakudo/nom: 6179ab344d | (Jonathan Worthington)++ | src/core/Mu.pm Fix role mixins with native attrs with defaults. So that `42 but role { has int $.x = 100 }` works. |
|||
jnthn | pmurias: Seems reasonable | ||
Geth | roast: d8a07bb6f4 | (Jonathan Worthington)++ | S12-attributes/defaults.t Test to cover RT #131181. |
12:07 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131181 | ||
pmurias | jnthn: do we have a codepoint/grapheme number that can't occur in a string? | 12:34 | |
Geth | rakudo/nom: 1a920dcc0d | (Elizabeth Mattijsen)++ | 2 files Make all set operator helpers take nqp hashes So that we can more easily use them internally without needing to upgrade them to proper Bags/Mixes. |
12:36 | |
dogbert17 | m: say (2,(3,5)).Set | 12:38 | |
camelia | set(5, 3, 2) | ||
dogbert17 | is the above correct behaviour? | 12:40 | |
lizmat | dogbert17: fwiw, I have wondered that myself, but spectest breakage occurs if it doesn't flatten | 12:41 | |
m: say (2,$(3,5)).Set | |||
camelia | set((3 5), 2) | ||
dogbert17 | m: say (2,(3,5)).Bag | 12:42 | |
camelia | bag(5, 3, 2) | ||
lizmat | yeah, the behaviour is consistent :-) | ||
but not with arrays: | 12:43 | ||
m: my @a = (2,(3,5)); dd @a | |||
camelia | Array @a = [2, (3, 5)] | ||
dogbert17 | we'll it would seem to be correct then if the flattening bahviour is in roast ... | ||
was looking at RT #130973 | |||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=130973 | ||
lizmat | perhaps we need to discuss :-) | 12:44 | |
to me it was a bit of a WAT as well | |||
dogbert17 | :) | ||
lizmat | specifically because STORE doesn't flatten | 12:45 | |
and setifying could be considered a way of STORE | |||
dogbert17 | I couldn't say which bahaviour is the correct one but at least there should consistency (as you wrote) no? | 12:46 | |
dogbert17 grr it's spelt behaviour | |||
some input from jnthn or TimToady would be nice :) | 12:48 | ||
dogbert17 or would it be preferable to specify what behaviour the user want, e.g. (1,(2,3)).Set(:no-flat) | 12:50 | ||
MasterDuke_ | wouldn't that just be (1,(2,3)).flat.Set? | 12:51 | |
dogbert17 | dunno, suppose you want the result to be 'Set(1, (2,3)) | 12:52 | |
MasterDuke_ | er, i kind of said it backwards | 12:53 | |
i would have expected Set(1, (2,3)) unless i chose to put the .flat | 12:54 | ||
dogbert17 | sounds reasonable | ||
m: say ("Zoffix", <Frameless Broken-Robot>).Mix | 12:57 | ||
camelia | mix(Broken-Robot, Zoffix, Frameless) | ||
dogbert17 continues browsing RT looking for some LHF | 12:59 | ||
Zoffix | m: say mix("Zoffix", <Frameless Broken-Robot>) | 13:04 | |
camelia | mix(Broken-Robot, Zoffix, Frameless) | ||
dogbert17 | Hi Zoffix | 13:05 | |
Zoffix | m: ("Zoffix", <Frameless Broken-Robot>)Ā».item.Mix.say | 13:06 | |
camelia | mix(Zoffix, (Frameless Broken-Robot)) | ||
Zoffix is -1 on `:no-flat` arg; we have methods to do that functionality | 13:07 | ||
dogbert17 shot down in flames /o :) | 13:08 | ||
it means you disagree with RT #130973 | |||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=130973 | ||
Zoffix | And nested lists are a pretty common sight, whereas wanting a set of lists is kind'f rarish | ||
m: say join '|', ("Zoffix", <Frameless Broken-Robot>) | 13:09 | ||
camelia | Zoffix|Frameless|Broken-Robot | ||
Zoffix | m: ("Zoffix", <Frameless Broken-Robot>).join('|').say | ||
camelia | Zoffix|Frameless Broken-Robot | ||
Zoffix | And now I wonder if I have a bug somewhere in my code, because I thought both forms flattened /o\ | 13:10 | |
dogbert17 | uh oh | ||
Zoffix | dogbert17: isn't it roast who disagrees with that ticket? (based on what was said above) | ||
dogbert17 | yeah, according to lizmat changing the flattening should break some tests | 13:11 | |
MasterDuke_ | i thought perl 6 got rid of most auto-flattening | 13:12 | |
Zoffix | m: ("Zoffix", <Frameless Broken-Robot>).Array.Mix.say # even simpler way | ||
camelia | mix(Zoffix, (Frameless Broken-Robot)) | 13:13 | |
dogbert17 | so it's at least simple to get the non flattening behaviour if that's what you want | ||
Zoffix: so what, if anything, will you do with 'join' | 13:17 | ||
Zoffix | Nothing. Will just remember that only sub form flattens :) | ||
dogbert17 | that is at least consistent with the docs :) | 13:19 | |
MasterDuke_ | speaking of consistency... | 13:24 | |
m: class Bar { subset Positive of Int where * >= 0; has Positive $.y; submethod TWEAK(Positive :$x = 0) { $!y = $x } }; Bar.new(x => 3).perl.say; Bar.new(x => -3).perl.say | |||
camelia | Bar.new(y => 3) Constraint type check failed in binding to parameter '$x'; expected Bar::Positive but got Int (-3) in submethod TWEAK at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
MasterDuke_ | m: class Bar { subset Positive of Int where * >= 0; has Positive $.y; submethod BUILD(:$x = 0) { $!y = $x } }; Bar.new(x => -3).perl.say | ||
camelia | Type check failed in assignment to $!y; expected Bar::Positive but got Int (-3) in submethod BUILD at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
MasterDuke_ | i noticed this over in #perl6. see the difference between the two errors? `parameter '$x'` vs `assignment to $!y` | 13:25 | |
i've noticed this other places as well. should we attempt to have consistency in how things like variable names, sub/method names, etc. are quoted or not in errors? | 13:26 | ||
Zoffix | ZOFVM: Files=1242, Tests=133839, 113 wallclock secs (21.57 usr 2.79 sys + 2333.10 cusr 144.71 csys = 2502.17 CPU) | 13:44 | |
Geth | rakudo/nom: 475d9bcf9b | (Zoffix Znet)++ | src/core/IO/Path.pm [io grant] Fix display of backslashes in IO::Path.gist While in Str.gist we render, say, ļ½¢\fo\boļ½£ as just `\fo\bo`, with IO::Path.gist we show the value within double quotes and .IO coercer appended. This makes it a bit confusing, since backslashes do things when they're in double quotes. Fix by using `.perl` of the Strs. |
13:49 | |
roast: fd308be0fd | (Zoffix Znet)++ | S32-io/io-path.t Move path types into file-global constant So all the tests can use them. |
13:50 | ||
roast: 95d68a2e6c | (Zoffix Znet)++ | S32-io/io-path.t [io grant] Test IO::Path.gist does escapes of backslashes Rakudo impl: github.com/rakudo/rakudo/commit/475d9bcf9b |
13:51 | ||
Zoffix | mmmm | ||
Don't like it. | 13:52 | ||
All Windows users will see backslash galore. | |||
MasterDuke_ | does that effect rt.perl.org/Ticket/Display.html?id=130226 at all? | 13:55 | |
Zoffix | ļ½¢foo\barļ½£.IO would be nice, but those chars aren't rendering in default cmd.exe :/ | ||
MasterDuke_: don't think so | |||
timotimo | then you could use Q[...] | ||
and only escape ] | |||
m: say Q[foo\bar\]baz].perl | 13:56 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3say Q[foo\bar\]7ā5baz].perl expecting any of: infix infix stopper postfix statement end statement moā¦ |
||
timotimo | or not | ||
m: say Q[foo\bar\q(])baz].perl | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unexpected closing bracket at <tmp>:1 ------> 3say Q[foo\bar\q(]7ā5)baz].perl |
||
Zoffix | It doesn't need to be executable | ||
Just clear | |||
timotimo | oh, gist! | ||
yes, yes | |||
Zoffix | IO(foo\bar) ? | 13:57 | |
no quotes | |||
eh, leave it as is. | 13:59 | ||
Geth | roast: de89d25536 | (Zoffix Znet)++ | S32-io/io-path.t Revert "[io grant] Test IO::Path.gist does escapes of backslashes" This reverts commit 95d68a2e6cd01a8ef03d4d4a3bec239fc7838ac3. |
||
rakudo/nom: 6ef2abdfc0 | (Zoffix Znet)++ | src/core/IO/Path.pm Revert "[io grant] Fix display of backslashes in IO::Path.gist" This reverts commit 475d9bcf9bf00e858feeefb28a42e2050ee4b51d. |
|||
roast: 9e8b154f43 | (Zoffix Znet)++ | S32-io/io-handle.t [io grant] Test IO::Handle.close can be... ...non-explosively called on an already closed handle. |
14:15 | ||
Zoffix | Is it possible to lose data if you don't .close your handle? | 14:34 | |
Doesn't look like we buffer anything ATM, so it's kinda hard to check :/ | |||
jnthn | In theory, yes | 14:49 | |
Zoffix | hm. OK :) | 14:51 | |
Zoffix amends .close docs | 14:52 | ||
jnthn | Though running out of handles is also reason enough to take care to close things :) | 14:53 | |
Zoffix | Yeah | 14:54 | |
m: class Foo { method close { say "closed" } }; for ^3 { my $fh will leave {.close} = Foo.new } | 16:32 | ||
camelia | closed closed closed |
||
Zoffix | m: class Foo { method close { say "closed" } }; for ^3 { my $fh will leave *.close = Foo.new } | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Missing block at <tmp>:1 ------> 3"closed" } }; for ^3 { my $fh will leave7ā5 *.close = Foo.new } expecting any of: block or pointy block |
||
Zoffix | gottabeablock? | ||
ZofBot: once you go block you never go back | 16:34 | ||
ZofBot | Zoffix, minmax(&by); # default &infix:<cmp> Produces a "Supply" that, for each value emitted, produces "Range"s with the minimum and maximum values seen thus far on the specified "Supply" | ||
Geth | roast: 853f76f719 | (Zoffix Znet)++ | S32-io/pipe.t [io grant] Test IO::Pipe.close returns pipe's Proc |
16:39 | |
Zoffix | ZofBot: rock it with me \o/ www.youtube.com/watch?v=09U69zGLXwE | 18:04 | |
ZofBot | Zoffix, Zoffix: yes | ||
Zoffix | Good bot! | ||
Zoffix just learned to play the start of that song ???????????? | 18:32 | ||
Not as good with one guitar :/ | |||
ZofBot: learn to play an instrument, you bum. | |||
ZofBot | Bool::False | ||
Zoffix | heh | ||
samcv | morning everyone | 18:39 | |
Zoffix | morning | ||
A while back I said `my Mu $foo` was pointless since variables are Mu anyway, but it's not pointless, it changes the `is default` | 18:54 | ||
m: my Mu $x; dd $x | |||
camelia | Mu $x = Mu | ||
Zoffix | m: my $x; dd $x | ||
camelia | Any $x = Any | ||
Zoffix | m: -> +a { dd a.elems }( %(:42a, :72b, :55z) ) | 19:39 | |
camelia | 3 | ||
Zoffix | Is it supposed to behave this way? | ||
Feels like we're mis-using nqp::istype(..., Iterable) somewhere. | |||
or more precisely: | |||
m: -> +a { dd a; dd a.^name; dd a.elems }( %(:42a, :72b, :55z) ) | 19:40 | ||
camelia | (:z(55), :a(42), :b(72)) "List" 3 |
||
Zoffix | It ends up being a list of Pairs instead of a 1-el list with a Hash | ||
pmurias | does any of :ratchet, :sigspace, :ignorecase, :ignoremark or :dba allow a number argument? | 19:55 | |
m: my token foo { :777ignorecase } # example of argument | 19:56 | ||
camelia | ( no output ) | ||
pmurias | if none of them allow it, I'll remove this anti-feature | ||
Zoffix | pmurias: don't know about :dba, but rest of them "yes" but only in a sense that they're Bool and Bool is an Int | 19:57 | |
m: say 'foo' ~~ m:ignorecase/FOO/ | |||
camelia | ļ½¢fooļ½£ | ||
Zoffix | m: say 'foo' ~~ m:ignorecase(0)/FOO/ | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Adverb ignorecase value must be known at compile time at <tmp>:1 ------> 3say 'foo' ~~ m:ignorecase(0)7ā5/FOO/ |
||
Zoffix | ... it is bruh :/ | ||
m: my token foo { :1ignorecase FOO }; say 'foo' ~~ &foo | 19:58 | ||
camelia | ļ½¢fooļ½£ | ||
Zoffix | m: my token foo { :0ignorecase FOO }; say 'foo' ~~ &foo | ||
camelia | Nil | ||
Zoffix | m: my token foo { :0ignorecase foo }; say 'foo' ~~ &foo | ||
camelia | ļ½¢fooļ½£ | ||
Zoffix | There we go | ||
pmurias | Zoffix: I forgot about :1 and :0 :( | 20:00 | |
Zoffix | Maybe I'm wrong though. I was thinking of named args to Str.match. If these need to be known at compile time and it refuses to take :colon(form), then they're not even Bool but maybe just `int`s | ||
AlexDaniel | timotimo++ # trisectable XD | 20:03 | |
Zoffix | Note to self: nqp::until(:nohandler, ā¦) is not the same thing as nqp::until(ā¦, :nohandler) :/ | 20:08 | |
\o/ I cracked the andthen->orelse chaining issue \o/ | 20:17 | ||
m: say (Date.today - Date.new('2016-11-10'))/30 | 20:18 | ||
camelia | 5.666667 | ||
Zoffix | Took almost 6 months, but went from hopelessness to a tidy solution :) | ||
nine | Zoffix++ # perseverance :) | 20:21 | |
Zoffix | And as a cherry on top, `orelse` is also 2.4x faster | 20:25 | |
timotimo | AlexDaniel: i'm the master of names :) | ||
Geth | rakudo/nom: 37316f8220 | (Zoffix Znet)++ | src/core/operators.pm Fix andthen-orelse chaining; make orelse 2.4x faster Fixes RT#130798: rt.perl.org/Ticket/Display.html?id=130798 The OP issue in the ticket is due to `Empty` from andthen messing up positions of args in orelse, making the thunked args shift up and be returned as blocks instead of evaled. ... (6 more lines) |
20:44 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=130798 | ||
roast: 59d56a4cc1 | (Zoffix Znet)++ | S03-operators/orelse.t Test andthen+orelse+orelse chaining RT#130798: rt.perl.org/Ticket/Display.html?id=130798 Rakudo fix: github.com/rakudo/rakudo/commit/37316f8220 |
20:45 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=130798 | ||
Zoffix | ZOFVM: Files=1242, Tests=133841, 106 wallclock secs (18.68 usr 3.36 sys + 2057.14 cusr 216.04 csys = 2295.22 CPU) | 20:50 | |
nine | Working on in-process precompilation again. Seems like the break was actually helpful, as while trying to find out where I left off, I realized that my issue is not objects leaking into the precompilation, but objects leaking out. | 21:08 | |
timotimo | oh, interesting! | ||
nine | This means that when I get an error during precompilation, I just have to try again and it will get further as it can use the already precompiled files. | 21:09 | |
Intriguingly at least one of the issues may be connected with multis. | |||
Test is: echo 'use B;' > A.pm && echo 'unit class Foo; multi method new() {}' > B.pm && rm -Rf .precomp && perl6 -I. -MA -e '' | |||
If i just remove the "multi" it works fine | 21:10 | ||
It also works if I manually create the proto! | 21:12 | ||
Indeed. When I add the missing protos in NativeCall::Types, I can compile and load all of NativeCall in a single process | 21:23 | ||
jnthn | That's...intriuging, though I don't immediately have any guesses | 21:30 | |
Proto auto-generation is implemented in terms of generic instantiation | 21:31 | ||
Though from a pre-comp perspective I'm not immediately seeing why that's not just a comparatively boring bit of meta-programming. | |||
Geth | rakudo/nom: 3c8822e80d | (Zoffix Znet)++ | src/core/operators.pm Fix Empty as arg to andthen; make andthen 2.5x faster Postfix `with` compiles to andthen and fix+speedup applies to it too. Empty as arg disappears in the `+@foo` slurpy, so we use nqp::p6argvarray op and emulate `+@foo` slurpy to avoid Empty dissappearance. Fixes issues mentioned in comments on RT#130798: rt.perl.org/Ticket/Display.html?id=130798 |
21:36 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=130798 | ||
roast: 8993a2434b | (Zoffix Znet)++ | S03-operators/andthen.t Test `Empty` as arg to andthen/postfix with RT#130798: rt.perl.org/Ticket/Display.html?id=130798 Rakudo fix: github.com/rakudo/rakudo/commit/3c8822e80d |
21:37 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=130798 | ||
Zoffix | m: use nqp; sub foo (+a) { my $a = nqp::atpos(nqp::p6argvmarray(), 0); dd $a[0]; dd a[0] }; foo %(:42a, :72b) | 21:47 | |
camelia | Hash % = {:a(42), :b(72)} :a(42) |
||
Zoffix | dammit | ||
m: dd [orelse] %(:42a, :72b) | 21:48 | ||
camelia | :a(42) | ||
Zoffix | m: dd infix:<orelse>( %(:42a, :72b) ) | ||
camelia | Hash % = {:a(42), :b(72)} | ||
Zoffix | star: dd infix:<orelse>( %(:42a, :72b) ) | 21:49 | |
camelia | :a(42) | ||
Zoffix | Well, not really "dammit". It changed from how +@foo was handling it, but I think it's +@foo is wrong :/ | 21:50 | |
.ask jnthn is it normal that +a slurpy breaks up hashes into a list of pairs? e.g. -> +a { dd a; dd a.^name; dd a.elems }( %(:42a, :72b, :55z) ) gives Ā«(:z(55), :a(42), :b(72))ā¤"List"ā¤3ā¤Ā» I would've expected Ā«(%(:z(55), :a(42), :b(72)),)ā¤"Hash"ā¤1ā¤Ā» | 21:51 | ||
yoleaux | Zoffix: I'll pass your message to jnthn. | ||
Zoffix | m: -> *@a { dd @a }( %(:42a, :72b, :55z), 42 ) | 21:53 | |
camelia | [:z(55), :a(42), :b(72), 42] | ||
Zoffix | Same with *@a slurpy... | ||
I guess it's supposed to be this way... | |||
.tell jnthn never mind; I see *@a does it too. I guess it's normal, since Hash is Iterable... just weird. | 21:55 | ||
yoleaux | Zoffix: I'll pass your message to jnthn. | ||
Zoffix | ummm... but Hashes are unordered :o | 21:57 | |
jnthn | Yes, it's being Iterable that matters | 22:02 | |
yoleaux | 21:51Z <Zoffix> jnthn: is it normal that +a slurpy breaks up hashes into a list of pairs? e.g. -> +a { dd a; dd a.^name; dd a.elems }( %(:42a, :72b, :55z) ) gives Ā«(:z(55), :a(42), :b(72))ā¤"List"ā¤3ā¤Ā» I would've expected Ā«(%(:z(55), :a(42), :b(72)),)ā¤"Hash"ā¤1ā¤Ā» | ||
21:55Z <Zoffix> jnthn: never mind; I see *@a does it too. I guess it's normal, since Hash is Iterable... just weird. | |||
jnthn | **@a and |c are the ones that don't do it | ||
Those just collect arguments as they are | 22:03 | ||
Zoffix | noted. Thanks. | ||
nine | Ah, looks like there _is_ still a leaking in issue as well, as I've just got a NativeCall::Types precomp file depending on Inline::Perl5::Interpreter | 22:06 | |
Geth | rakudo/nom: e1994d94d8 | (Zoffix Znet)++ | src/core/operators.pm Fix 1-arg Hash cases for andthen and orelse The fixes in previous commits[^1][^2] did not emulate the +@foo slurpy correctly for the cases where 1-arg non-Positional, non-Seq Iterable (like a Hash) was given. Fix by .List-ifying that case. [1] github.com/rakudo/rakudo/commit/3c...7d1059517e [2] github.com/rakudo/rakudo/commit/37...80774c0998 |
22:10 | |
roast: e036c4e287 | (Zoffix Znet)++ | 2 files Test 1-arg Hash case for andthen and orelse Rakudo fix: github.com/rakudo/rakudo/commit/e1994d94d8 |
|||
BenGoldberg | m: dd Empty; | 22:11 | |
camelia | Empty | ||
BenGoldberg | m: dd { Empty }(); | 22:12 | |
camelia | Empty | ||
BenGoldberg | m: dd $_ for { Empty }(); | 22:13 | |
camelia | ( no output ) | ||
Zoffix | Empty is slip() | 22:17 | |
ZOFFLOP: t/spec/S17-promise/start.t | 22:27 | ||
Geth | rakudo/nom: fdb2b2abad | (Zoffix Znet)++ | src/core/operators.pm Fix Empty given to notandthen; make notandthen 2.5x faster postfix `without` compiles to notandthen, so fix and speedup affects it as well. Empty as arg disappears in the `+@foo` slurpy, so we use nqp::p6argvarray op and emulate `+@foo` slurpy to avoid Empty dissappearance. |
22:31 | |
roast: 50b54916db | (Zoffix Znet)++ | S03-operators/notandthen.t Test Empty given as arg to notandthen Rakudo fix: github.com/rakudo/rakudo/commit/fdb2b2abad |
|||
Zoffix | eh, we have really poor tests for these. Just spotted another bug I introduced into all three ops and none of the tests caught it | 22:33 | |
Well, poor-ish, I guess, it's 1-arg case it's busted up on | |||
Geth | rakudo/nom: 1ed76a9034 | (Zoffix Znet)++ | src/core/operators.pm Fix andthen, notandthen, and orelse for 1-arg Iterable case Be sure we update the $els var after we swap the 1-arg iterable to be our list of args. |
22:48 | |
roast: 200a4e8fb1 | (Zoffix Znet)++ | 3 files Test 1-arg Iterable arg to andthen, notandthen, and orelse Rakudo fix: github.com/rakudo/rakudo/commit/1ed76a9034 |
|||
Zoffix | ZofBot: no andthen! I refuse to play your Chinese food mind games! | 22:49 | |
ZofBot | Zoffix, spurt() sub spurt ($where, $what, Str :$enc = $*ENC, Bool :append = False, Bool :$createonly = False, --> Bool ) is export Writes the indicated contents (2nd positional parameter) to the location indicated by the first p | ||
Zoffix calls it a day | |||
\o | |||
jnthn | o/ Zoffix++ |