Zoffix chuckles at latest email on Toronto Perl Mongers mailing list | 00:33 | ||
It starts with "I've got an old, bad program running under Perl 5.6.1..." | |||
ZofBot: I didn't even know they made Perl that old! | |||
ZofBot | Zoffix, subname; method is-hidden () { | ||
timotimo | Zoffix: that explains why you didn't know about perl that old. | 00:35 | |
because is hidden. | |||
geekosaur | they would like to bury perl 5.6, yes >.> | 00:39 | |
timotimo | i wonder when the first perl6 compiler release to drop 6.c should be | 00:43 | |
Zoffix thinks 6.c+6.d, 6.d+6.e, 6.d+6.e+6.f and so on in 3-version bunches | 00:45 | ||
timotimo | i was thinking more along the lines of "30 years" | 00:47 | |
BenGoldberg | What's the c stand for, anyway? | 00:48 | |
timotimo | "christmas", or "after beta" | 00:49 | |
a was advent, b was birthday | 00:50 | ||
AlexDaniel | c stands for āa bit unready but still good enoughā | ||
m: my @a= <a b c>; @a.pop, @a[3] = āhiā; say @a | 00:53 | ||
camelia | [a b c hi] | ||
AlexDaniel | can anybody explain this? | ||
there's a comma after pop | 00:54 | ||
but pop does not seem to pop? | |||
timotimo | m: my @a = <a b c>; @a.pop; say @a; @a[3] = 'hi'; say @a | 00:56 | |
camelia | [a b] [a b c hi] |
||
timotimo | right, the value should really be discarded | ||
geekosaur | m: my @b = <d e f>; my @a= <a b c>; @a.pop, @b[3] = āhiā; say @a | ||
camelia | [a b] | ||
geekosaur | buuuuuug | ||
Zoffix | AlexDaniel: I'll raise you | ||
m: my @a= <a b c>; @a.pop; @a.pop; @a.pop; @a.pop, @a[5] = 42; say @a | |||
camelia | Cannot pop from an empty Array in block <unit> at <tmp> line 1 Actually thrown at: in block <unit> at <tmp> line 1 |
||
Zoffix | m: my @a= <a b c>; @a.pop; @a.pop; @a.pop, @a[5] = 42; say @a | 00:57 | |
camelia | [a b c (Any) (Any) 42] | ||
Zoffix | :) | ||
m: my @a= <a b c>; @a.pop; @a.pop; @a[5] = 42; say @a | |||
camelia | [a b c (Any) (Any) 42] | ||
Zoffix | mc: my @a= <a b c>; @a.pop; @a.pop; @a[5] = 42; say @a | ||
committable6 | Zoffix, Ā¦2015.12: Ā«[a b c (Any) (Any) 42]Ā» | ||
Zoffix | that long wow | ||
AlexDaniel | yup | ||
well, let's seeā¦ | 00:58 | ||
c: all my @a= <a b c>; @a.pop; @a.pop; @a[5] = 42; say @a | |||
Zoffix | m: my @a = <a b c>; @a.elems; @a.pop; @a.pop; @a[*-1] = 42; say @a | ||
camelia | [42] | ||
committable6 | AlexDaniel, gist.github.com/fd1b58f8608cc9501d...99371f96da | ||
timotimo | internally we push, pop, unshift and shift by moving begin and end pointers around | ||
AlexDaniel | now THAT is long :) | ||
Zoffix | m: my @a = <a b c>; @a.elems; @a.pop; @a.pop; @a.push: 42; @a[5] = 42; say @a | 00:59 | |
camelia | [a 42 c (Any) (Any) 42] | ||
AlexDaniel | fwiw that's #131245 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131245 | ||
AlexDaniel | amazing bug | ||
Zoffix | m: my @a = <a b c>; @a.elems; @a.pop; @a.pop; @a; @a[3] = 42; say @a | 01:01 | |
camelia | WARNINGS for <tmp>: Useless use of @a in sink context (line 1) [a b c 42] |
||
Zoffix | m: my @a = <a b c>; @a.elems; @a.pop; @a.pop; @a; @a = @a; @a[3] = 42; say @a | ||
camelia | WARNINGS for <tmp>: Useless use of @a in sink context (line 1) [a (Any) (Any) 42] |
||
timotimo | huh, i wonder if this is fine for GC ... | ||
AlexDaniel | yea depends on what you do with it | ||
m: my @a=(1,2,3,4,5); @a.pop; @a.pop; @a.pop; @a.pop; @a[8]="hi"; say @a | |||
camelia | [1 (Any) (Any) (Any) (Any) (Any) (Any) (Any) hi] | ||
AlexDaniel | m: my @a=(1,2,3,4,5); @a.pop; @a.pop; @a.pop; @a.pop; @a[7]="hi"; say @a | ||
camelia | [1 2 3 4 5 (Any) (Any) hi] | ||
timotimo | m: my @a = <a b c d e f g h i j k l>; @a.pop for ^10; for ^100_000 { ~(1 + 32) }; @a[11] = "lol"; say @a | ||
camelia | WARNINGS for <tmp>: Useless use of "~" in expression "~(1 + 32)" in sink context (line 1) MoarVM panic: Internal error: invalid thread ID 23687456 in GC work pass |
||
timotimo | it's totally not. | 01:02 | |
Zoffix | thread? | ||
Oh, you're being sarcastic? | |||
m: my @a = <a b c>; @a.elems; @a.pop; @a.pop; @a[3] = 42; say @a | |||
camelia | [a b c 42] | ||
Zoffix | j: my @a = <a b c>; @a.elems; @a.pop; @a.pop; @a[3] = 42; say @a | ||
camelia | [a b c 42] | ||
Zoffix | heh | ||
AlexDaniel | amazing | ||
Zoffix | s: [], 'pop', \() | 01:03 | |
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/701d...ay.pm#L685 | ||
timotimo | you'll want to look at moarvm here | ||
Zoffix | timotimo: why? the bug is present on JVM too | 01:04 | |
timotimo | github.com/MoarVM/MoarVM/blob/mast...ray.c#L372 - try to figure out if/why/how this set_size_internal doesn't reach zero_slots, or if the zero_slots call is wrong and does The Wrong | ||
okay, then fix it on the jvm, too | |||
Zoffix | :/ | 01:05 | |
timotimo | jvm also implements vmarray, its code might look a lot like the moarvm code | 01:06 | |
going to bed, have a good one! | 01:07 | ||
AlexDaniel | m: my @a = (); say @a.rotate(1); say @a | 01:09 | |
camelia | Modulation by zero in block <unit> at <tmp> line 1 |
||
AlexDaniel | :| | ||
Geth | rakudo/nom: c7aef59a5b | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/Repository/Installation.pm Fix premature deletion of bin wrappers |
03:52 | |
nqp: MasterDuke17++ created pull request #357: Zero slot when popping an array |
04:01 | ||
MasterDuke_ | .ask nine are these two `sleep 2`s still needed? github.com/perl6/roast/blob/master...#L292-L294 | 04:07 | |
yoleaux | MasterDuke_: I'll pass your message to nine. | ||
[Tux] | This is Rakudo version 2017.04.3-163-gc7aef59a5 built on MoarVM version 2017.04-44-gf0db8822 | 06:15 | |
csv-ip5xs 3.323 | |||
test 13.013 | |||
test-t 4.340 - 4.395 | |||
csv-parser 12.999 | |||
Geth | rakudo/nom: 91fb3076d2 | (Elizabeth Mattijsen)++ | 3 files Make R:Q.(BAG|MIX)-ROLL return the iterator object This makes it more versatile, so it can e.g. be used for BagHash.grab. |
07:55 | |
lizmat | decommute& | 08:02 | |
stmuk | Zoffix: did you have Strawberry Perl installed on your Windows test system? | 09:57 | |
Zoffix | Yes | ||
stmuk | I think its a dependency still for prove (although zef has made progress on that) as well as a DDL | 09:59 | |
nine | ~ | 10:00 | |
yoleaux | 04:07Z <MasterDuke_> nine: are these two `sleep 2`s still needed? github.com/perl6/roast/blob/master...#L292-L294 | ||
nine | MasterDuke_: oh, actually not! I just forgot to remove them as planned. | ||
stmuk | odd we didn't see the DDL reports before .. I doubt that's changed | ||
err DLL even | 10:01 | ||
Zoffix | uhhh | 10:05 | |
jnthn | Which DLL is it missing? | 10:07 | |
Zoffix | stmuk: well, I'm now at home and on Windows10 instead of 7, and I removed old Star and Strawberry and tried to install new star and it just blocks me: i.imgur.com/cHVCHRb.png | 10:08 | |
Says "it protected me" and there's no option to run it :/ | |||
jnthn: libgcc_s_sjlj-1.dll | |||
Per Tweet, at least: twitter.com/mike_sanderson/status/...8453961728 | |||
jnthn | huh...wow | ||
stmuk | I probably should use mingw rather than the gcc with Strawberry Perl | 10:09 | |
jnthn | Or do MSVC builds | ||
;) | |||
Zoffix | Ah, there's a Run anyway button if you click more info | ||
stmuk | I prefer pretending I'm on UNIX :) | ||
Zoffix | stmuk: yeah, I'm getting the same error as that person | ||
From moar.exe | |||
Zoffix tries install Strawberry again | |||
stmuk | I think the short term fix is to explicity list Strawberry Perl as a dependency under downloads errata | 10:10 | |
I probably need to install another clean Windows VM for testing | 10:11 | ||
people need Strawberry Perl for prove and gcc anyway | 10:12 | ||
Zoffix | Confirming installing strawberry fixed it | ||
stmuk | grr $work meeting | ||
jnthn | stmuk: Fair enough. I suspect both work out fine enough; I'm just more comfortable with the MSVC build 'cus it's the one I'm regularly using/shipping into production :) | 10:15 | |
Not to mention MSVC was the first compiler Moar built under... | |||
timotimo | and then i came along and tried to use an x86 intrinsic and made everything explode | 10:35 | |
Geth | nqp: 7f71ec87e8 | MasterDuke17++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/VMArrayInstance.java Zero slot when popping an array Otherwise ghost elements are left. Fixes rt.perl.org/Ticket/Display.html?id=131245 for the JVM. |
||
nqp: 7c4bd48f59 | (Zoffix Znet)++ (committed using GitHub Web editor) | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/VMArrayInstance.java Merge pull request #357 from MasterDuke17/zero_slot_when_popping_an_array Zero slot when popping an array |
|||
Zoffix | Looks like the new nqp QAST tests are failing on JVM: travis-ci.org/perl6/nqp/jobs/228200034 | 10:36 | |
Geth | roast: c02ad87e7f | (Stefan Seifert)++ | S10-packages/precompilation.t Remove workaround - precompilation no longer checks timestamps Now that we rely solely on checksums to detect outdated precomp files, we no longer need to ensure that time stamps are different. Thanks to MasterDuke++ for the reminder. |
11:10 | |
Zoffix | Here's a controvercial idea: remove .comb and .split from IO::Handle | 11:17 | |
timotimo | because of the "not closing file handles" thing? | 11:18 | |
Zoffix | Nope. /me types why | ||
timotimo | ok | ||
Zoffix | Basically, for them to work correctly, they need to read a chunk, do its thing on it, pull one, *pull another one* reading more chunks to ensure the first one is a complete thing and not just a thing due to not all data being available and basically generate all output that way. Now in addition to that being not very awesome for perf, the chunks it reads means all the other methods will read from some | 11:22 | |
weird place instead of the next thing after .comb/.split were used. So basically we have to reimplement lessthanawesome versions of Str.com/Str.split, ensuring they provide all of the featurea, and then we still end up with nearly guaranteed data loss if user uses more than just .comb or .split for reading from handle | |||
timotimo | ah | 11:23 | |
Zoffix | And .words is currently in the same category, but it can be reworded in terms of .lines, which maybe not that dramatic? | 11:24 | |
timotimo | ah, because whatever splits lines will also split words | ||
Zoffix | yeah | ||
Or maybe s/remove/make them slurp/ | 11:28 | ||
timotimo | there's no syntactic relief for "when i leave this loop, close the handle" | 11:30 | |
Zoffix | so IO::Handle.com/.split/.words would be just self.slurp.comb/.split/.words and if anyone wants laziness they can do Cat.new: gather { while $fh.read(999) -> $_ { .take } } | 11:31 | |
timotimo | hm. we do sink-all on a "regular" for-loop, right? | ||
Zoffix | timotimo: yeah, there is LEAVE $fh.close; or my $fh will leave {.close} = .IO.open; or use Trait::IO; my $fh does auto-close = .IO.open... | 11:32 | |
Unless you mean for $fh.lines {ā¦} .. | 11:33 | ||
yeah | |||
timotimo | i meant for $fh.lines and friends | ||
Zoffix | there's :close arg and :limit but that doesn't account for bailing from the loop before exhausiting it. Though the handle will get closed on GC, so this is really a problem for doing that sort of thing ~1000+ times (aside from some special circumstances) | 11:35 | |
timotimo | yeah, the worst is when we lazily decide to break off | 11:38 | |
and the handle just never knows | |||
Zoffix | .oO( along with Cat make FatCat: a Cat that keeps around the part of the string it already generated :o ) |
12:23 | |
There are no specs for Cat, is there? Other than "it's a lazily generated string". I found none on design.perl6.org | 12:24 | ||
timotimo | that's right :( | 12:28 | |
Zoffix | Just checking. Didn't want to reinvent the wheel | ||
timotimo | a few things will be ... interesting | ||
Zoffix | Like what? | 12:29 | |
timotimo | like, i imagine most things will as a first step nqp::chars a string | ||
jnthn | The regex engine will likely need major and deep alternations to match a Cat would be the one that scares me most :) | ||
timotimo | if the string's a cat, that'd have to fully generate it | ||
Zoffix | Oh | 12:30 | |
I guess I'm not making a real Cat then | |||
timotimo | a plush cat, then? | ||
Zoffix renames it to Kitten :) | |||
timotimo | i'm not sure how deep we'll install cat into the vm itself | 12:32 | |
jnthn | Not very, I'd think | 12:33 | |
timotimo | OK, so no special repr or anything | 12:34 | |
jnthn | Since the fetching of the next bunch of things will be done in HLL code | ||
Zoffix | hehehe, I love this error: "Type 'Cat' is not declared. Did you mean 'Rat'?" | 12:44 | |
ZofBot: Did you mean 'Rat'? Or another small mammal? | |||
ZofBot | Zoffix, i don't like it either, i think i created an RT about it a while ago but it was rejected | ||
Zoffix | Aww | 12:45 | |
timotimo | did you mean squirrel? | ||
nine | Actually since for $fh.lines(:close) {...} is pretty much $fh.lines(:close).map: {} the iterator returned by lines could ensure that the file handle is closed however the loop is exited. | 13:06 | |
jnthn | How? | ||
nine | Overriding method map or maybe sink. | 13:07 | |
jnthn | And then when they do for $fh.lines(:close).grep(/foo/) { ... } ? | ||
timotimo | then you're ... in trouble | 13:09 | |
jnthn | The point here being that losing interest in an iteration is done implicitly, not explicitly. | ||
nine | It'd have to override all Any-iterable-methods | 13:10 | |
jnthn | So trying to "solve" this boils down to fighting a property of the iterator pattern itself, which lacks an explicit "unsubscribe" | ||
(The supply world having one, becasue all the references point in the opposite direction) | |||
nine | Yeah, maybe it's just not a good idea :) | 13:11 | |
jnthn | That's my feeling, yeah | 13:13 | |
I think IO::Path.lines is, sadly, probably a bad API in the first place | |||
Sometimes there's necesary complexity | |||
Zoffix | Jesus christ... is there ANY browser that works | 13:23 | |
Palemoon: "switch to tab" feature annoyed me. Installed firefox. Refuses to go to github.com/rakudo/rakudo/blob/91fb...s.pm#L1852 | 13:24 | ||
MasterDuke_ | workes in FF 52.02 on arch linux for me | 13:25 | |
Zoffix | Not in 53 for me. It's like pressing Enter on the address bar doesn't press it. | 13:26 | |
k, works after restarting it... | 13:27 | ||
Anyway, I'm hitting some sort of a bug, unless I don't get how Seqs work: | 13:28 | ||
m: my $s = (1, 2, 3).Seq; $s.cache; .say for |$s; .say for |$s | |||
camelia | This Seq has already been iterated, and its values consumed (you might solve this by adding .cache on usages of the Seq, or by assigning the Seq into an array) in block <unit> at <tmp> line 1 |
||
Zoffix | Why does it tell me it's been iterated? I .cached it? | 13:29 | |
MasterDuke_ | hm, good thing i just made coffee, i'm on kubuntu zesty on the laptop, not arch | ||
Zoffix | m: my $s = (1, 2, 3).Seq; $s.cache; .say for |$s; | ||
camelia | This Seq has already been iterated, and its values consumed (you might solve this by adding .cache on usages of the Seq, or by assigning the Seq into an array) in block <unit> at <tmp> line 1 |
||
timotimo | .cache is not a mutator, is it? | ||
Zoffix | Oh | ||
timotimo | m: my $s = (1, 2, 3).Seq; $s.=cache; .say for |$s; | 13:30 | |
camelia | 1 2 3 |
||
Zoffix | s: (1, 2, 3).Seq, 'Slip', \() | ||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/91fb...Seq.pm#L83 | ||
Zoffix | timotimo: it is | ||
timotimo | i didn't know that | ||
Zoffix | .cache returns List $!list | ||
which gets set to List from iterator of Seq's tieratyor | 13:31 | ||
Aha. So I see why my error happens | |||
The Seq.iterator don't do any checking for $!list: github.com/rakudo/rakudo/blob/91fb...pm#L52-L59 | 13:32 | ||
m: with '/tmp/foo42'.IO { .spurt: join "\n", <A B C D E>; with .open { my $lines = .lines.cache; my $lines2 = .lines.cache; $lines2.head.say; $lines.head.say; } } | 13:36 | ||
camelia | A B |
||
Zoffix | But this is where I was going with it :) | ||
On the topic of .lines being bad API | |||
But wait! There's more! | 13:37 | ||
m: with '/tmp/foo42'.IO { .spurt: join "\n", <A B C D E>; with .open { .words; my $lines = .lines.cache; my $lines2 = .lines.cache; $lines2.head.say; $lines.head.say; } } | |||
camelia | Nil Nil |
||
Zoffix | hehe :D | ||
m: with '/tmp/foo42'.IO { .spurt: join "\n", <A B C D E>; with .open { .words.head.say; my $lines = .lines.cache; my $lines2 = .lines.cache; $lines2.head.say; $lines.head.say; } } | |||
camelia | A Nil Nil |
||
Zoffix | A more fair example :) | ||
What's Seq.is-ready for? Seems isn't used in the sauce anywere. method is-ready(Seq:D:) { $!iter.DEFINITE } | 13:42 | ||
And it's neither in docs nor in roast | 13:44 | ||
Ah: github.com/rakudo/rakudo/commit/ab...8ba8494ff7 | |||
Zoffix is going to remove it | 13:45 | ||
ZofBot: got a one-liner to recursively remove .precomp dirs I could steal? | |||
ZofBot | Zoffix, However, the labeled forms can use method call syntax: "LABEL | ||
timotimo | rm -rf **/.precomp :) | 13:46 | |
Zoffix | That really works? | 13:47 | |
ZOFFLOP: t/spec/S17-promise/nonblocking-await.t | 13:48 | ||
timotimo | at least in fish it does | ||
Zoffix | Looks like t/spec/S17-promise/nonblocking-await.t just needs larger sleeps maybe | 13:49 | |
ilmari | timotimo: and in bash with extglob enabled | ||
timotimo | i believe i first learned about it in zsh | ||
Zoffix | ilmari: how do I tell if I have extglob enabled? | 13:50 | |
ilmari | Zoffix: 'shopt extglob' | ||
Zoffix | off | ||
timotimo | it's important that you have shopt it | 13:52 | |
Zoffix | Doesn't seem tow ork rm -fr **/.precomp | 13:54 | |
tree -fad | grep -i precomp still gives me a bunch of S22-package-format/local-file-src/.precomp/ finds after running that rm | |||
timotimo | hm | 13:55 | |
ilmari | hm, no, it's globstar | ||
shopt -s globstar | |||
timotimo | we can try "find -type f -name '.precomp' -delete" maybe? | ||
first without -delete probably :D | |||
Zoffix | yey \o/ | 13:56 | |
ilmari++ that worked :) | |||
Zoffix creates alias declutter='rm -fr **/.precomp' | |||
and timotimo++ for ** :) | |||
timotimo | cool | 13:58 | |
Zoffix | ZOFVM: Files=1242, Tests=133857, 116 wallclock secs (22.44 usr 3.01 sys + 2422.33 cusr 139.45 csys = 2587.23 CPU) | 14:04 | |
nine | find . -name .precomp | xargs rm -rf | 14:09 | |
is what I use anyway | |||
Zoffix | holy crap, this Seq bug is rather extensive. I wonder how many of the issues people have been having due to our changing some stuff from List to Seq were all really just to this bug | 14:11 | |
MasterDuke_ | nine: like to live dangerously, eh? | 14:13 | |
nine | MasterDuke_: yeah! | ||
timotimo: -type d is probably more useful | |||
timotimo | oh, f stands for file, not folder | 14:14 | |
m) | |||
nine | MasterDuke_: most of the time I actually do use -print0 | xargs -0 but not when I'm sure there are no spaces in the involved paths. Then I'm just lazy | 14:15 | |
MasterDuke_ | i've tried to get myself in the habit of using -delete | 14:16 | |
nine | probably wise :) | 14:17 | |
Geth | rakudo/nom: 400f4ec883 | (Zoffix Znet)++ | src/core/Seq.pm Fix a whole ton of methods on cached Seqs When Seq is cached, its $!list gets .DEFINITE and we can get cached stuff from it. However, several methods do not check for presence of $!list cache and assume the absence of $!iter means the Seq has been consumed and there is no cache. ... (5 more lines) |
14:23 | |
Zoffix | Fixes infix:<eqv>, .iterator, .Slip, .join, .List, .list, .eager, .Array, .is-lazy, and .sink | 14:24 | |
And any time you AT-POS a Seq, it gets cached, so this might've been affecting a bunch of stuff | 14:25 | ||
And looks like List.sink is bogus too; it ain't doing no sinking | 14:35 | ||
m: Seq.new(class :: Iterator { method pull-one { say "sunk"; IterationEnd } }.new).sink | 14:36 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unable to parse class definition at <tmp>:1 ------> 3Seq.new(class ::7ā5 Iterator { method pull-one { say "sunk" expecting any of: generic role |
||
Zoffix | m: Seq.new(class :: does Iterator { method pull-one { say "sunk"; IterationEnd } }.new).sink | ||
camelia | sunk | ||
Zoffix | m: Seq.new(class :: does Iterator { method pull-one { say "sunk"; IterationEnd } }.new).cache.sink | ||
camelia | ( no output ) | ||
Zoffix | .ask lizmat should List.sink actually do things? I would've figured it'd do self.iterator.sink-all, since a List could be made from a Seq, for example. And we do sink-all in Seqs, but not lists: irclog.perlgeek.de/perl6-dev/2017-...i_14525429 | 14:39 | |
yoleaux | Zoffix: I'll pass your message to lizmat. | ||
jnthn | Zoffix: I think List doesn't do so because it's a positional thing | 14:40 | |
And keeps hold of the things it evaluates | 14:41 | ||
Zoffix | jnthn: does that mean a cached Seq shouldn't do it either? | 14:42 | |
I guess yes either way. I made a booboo there; need to change .sink's $!list.iterator.sink-all to just $!list.sink | |||
jnthn | Caching the Seq takes the iterator and uses it for the cache | 14:43 | |
Zoffix | jnthn: what's the .sink for? I guess that's my question | ||
jnthn | On Seq? | 14:44 | |
Zoffix | At all | ||
jnthn | Oh | ||
It's a method that is called when something is in a void context | |||
Which we call sink context | |||
Zoffix | If I do $fh.lines(:close).List.sink the handle won't get closed. | ||
jnthn: but that isn't always true: | 14:45 | ||
m: my $x = class Foo { method sink { say "sunk" } }; $x | |||
camelia | WARNINGS for <tmp>: Useless use of $x in sink context (line 1) |
||
Zoffix | That didn't call .sink | ||
jnthn | Correct | ||
Zoffix | How come it's not called when it's in a variable? | ||
Feels somewhat like our .DESTROY. You can do some sort of cleanup in it, but it's not guaranteed to be run, so you can't rely on cleanup happening. | 14:46 | ||
jnthn | Because a variable is just accessing something | ||
Consider | |||
my @a = lazy blah(); | |||
Zoffix | But it's in sink context. Even the warning tells me so. | 14:47 | |
Oh, use of $x, not use of Foo; ok | |||
jnthn | If we were to sink that we'd end up trying to evalute the whole thing. | ||
Zoffix | Ah | ||
OK. Thank makes sense. Thanks. | |||
jnthn | So the presumption is that data structures that store thinks, like List, Array, etc. don't go doing evaluation in sink context | 14:48 | |
*store things | |||
Zoffix | Alright. | ||
jnthn | Because by creating them you've created a way to refer to the data in the future | ||
Zoffix | .tell lizmat Never mind. jnthn++ answered | 14:49 | |
yoleaux | Zoffix: I'll pass your message to lizmat. | ||
jnthn | Unlike a Seq, which (caching aside) is one-shot. | ||
Geth | rakudo/nom: 59f6f48505 | (Zoffix Znet)++ | src/core/Seq.pm Remove Seq.is-ready method The method was added for debug reasons in mid-2015. It's not used anywhere in core, roast, or docs. |
14:53 | |
rakudo/nom: c13d89b3e6 | (Zoffix Znet)++ | src/core/Seq.pm Don't sink-all iterator of cached Seq Was added in previous commit, but after discussion[^1] it was decided it wasn't need to be sunk. I'm still leaving $!list.sink in, as a defensive thing in case we make List.sink do thinks any time in the future. [1] irclog.perlgeek.de/perl6-dev/2017-...i_14525466 |
15:00 | ||
roast: 78515bfcb4 | (Zoffix Znet)++ | S32-list/seq.t Test a bunch of methods on cached Seqs Rakudo fixes: github.com/rakudo/rakudo/commit/400f4ec883 github.com/rakudo/rakudo/commit/c13d89b3e6 Bug find: irclog.perlgeek.de/perl6-dev/2017-...i_14524925 |
15:01 | ||
Zoffix | s/do thinks/do things/; | 15:04 | |
ZofBot: what kind of thinks do you do? | 15:05 | ||
ZofBot | Zoffix, =trans( 'A | ||
Zoffix | So... anyone feeling up to breaking more modules? Or rather specifically their tests? :) | 15:22 | |
Hm... | 15:23 | ||
Looks like a whole bunch of failures even in our own roast :( | |||
The Seq eqv List thing. We fixed the `eqv` to False that case, but `is-deeply` was still converting Seqs to Lists | |||
And now I fixed that, but getting a bunch of roast failures | 15:24 | ||
m: use Test; is-deeply (1,).Seq, (1,) | |||
camelia | ok 1 - | ||
Zoffix | So that should be false really | ||
wow a gazillion roast failures :| gist.github.com/zoffixznet/db3f72d...37f3843e3d | 15:25 | ||
Basically, unless I messed something up, all those tests are wrong | |||
Zoffix tries 6.c-errata | 15:26 | ||
Fewer, but still a bunch: gist.github.com/zoffixznet/ea208e2...30e5b5a918 | 15:30 | ||
And looking at this numbers, it's basically guaranteed there'd be a bunch of fall out in ecosystem too | |||
huggable: all modules | 15:31 | ||
huggable | Zoffix, github.com/moritz/perl6-all-modules | ||
Zoffix | 1725 occurances of `is-deeply` in ecosystem | ||
Well, I'm glad of one thing: my ignorance about Seq.cache being a mutator that made a bug in is-deeply let us at least fix List/Seq infix:<eqv>. 'cause if is-deeply were working right, this fallout would've been back when we fixed infix:<eqv> | 15:33 | ||
MasterDuke_ | oh, bunch of todo passing in that last gist | 15:35 | |
Zoffix | .ask TimToady what do we do: due to a sequence of 2 bugs, `is-deeply` currently converts a Seq arg into a List and so falsely makes `is-deeply (1,).Seq, (1,)` pass, which causes 69 roast tests to fail (67 of which are 6.c-errata) and likely many module test suite failures as well. So, do we bite the bullet and fix is-deeply and tests or do we document the flaw and call it by-design? | 15:39 | |
yoleaux | Zoffix: I'll pass your message to TimToady. | ||
Zoffix | MasterDuke_: yeah, it's errata | ||
$ grep 'Non-zero exit status' gistfile1.txt | perl6 -e '$*IN.slurp.comb(/\d+/).sum.say' | |||
69 | |||
I'm ending up using perl6 for 1 liners more and more | |||
Zoffix does version bumps | 15:40 | ||
BTW, t/spec/integration/advent2011-day07.t on 6.c-errata currently crashes: `No such method 'name' for invocant of type 'Mu'` That doesn't sound like being due to my is-deeply fix | |||
Geth | rakudo/fixed-Seq-is-deeply: cf0285a108 | (Zoffix Znet)++ | lib/Test.pm6 Fix is-deeply to keep Seq args as Seqs Currently, the multies incorrectly pass *result* of .cache call to be tested, which is a List. However, all we need to do is call .cache to mutate the Seq into a cached one, but still pass the the Seq down to be tested. Currently has huge roast fallout. Waiting for discussion. Do not merge yet: irclog.perlgeek.de/perl6-dev/2017-...i_14525888 |
15:43 | |
Zoffix | Current 6.c-errata failures: gist.github.com/zoffixznet/6e56a0a...0a8b1876c9 | 16:04 | |
(that's without my is-deeply work) | |||
no stresstest failures on master | 16:06 | ||
ZofBot: ping | 16:07 | ||
ZofBot | Zoffix, It is the default for the ":test" parameter to "/dir()" and "IO::Path"'s " | ||
Zoffix kicks Geth | |||
MasterDuke_ | i believe t/spec/S32-exceptions/misc.rakudo.moar is because of my recent rakudo change (i.e., adding X::Parameter::InvalidConcreteness). i'm looking at it now | ||
Zoffix | wake up and do some work, you lazy bot | ||
Interesting. Web Hook github page tells me it tried to deliver, but got "Internal Server Error!" | 16:09 | ||
Oh | |||
"[ERROR] [14905] [6] No such method 'new' for invocant of type 'IO::Socket::SSL' in method get-connection" | |||
jnthn | Ah, phew, if there was an extra Async:: in that error I'd be on the hook :P | 16:10 | |
Zoffix | :} | ||
Reproed the error when trying to re-deliver the hook. | 16:11 | ||
But the commit was a version bump: github.com/perl6/nqp/commit/c60df1...bb881c865c | 16:12 | ||
And a bump in Rakudo: github.com/rakudo/rakudo/commit/c7...b3fab831df | 16:13 | ||
Looks like something in NQP's message (that I included in Rakudo's commit too) made HTTP::UserAgent unhappy | 16:14 | ||
Oh... User::Agent... It's the version-bump-fetcher that's broken | |||
Geth: ver github.com/rakudo/rakudo/commit/c7...b3fab831df | |||
Geth: ver github.com/rakudo/rakudo/commit/17...d00ef80ccf | 16:15 | ||
Geth: ver github.com/rakudo/rakudo/commit/17...ae76438a04 | |||
Geth: ver github.com/rakudo/rakudo/commit/17...ae76438a04 | 16:22 | ||
Geth | Zoffix, version bump brought in these changes: github.com/perl6/nqp/compare/2017....8-g745c61d | ||
Zoffix | Well, this sucks. | 16:23 | |
The bug disappeared after I simply restarted the bot :/ | |||
Geth | nqp: c60df1eb07 | (Zoffix Znet)++ | tools/build/MOAR_REVISION Bump MoarVM version MoarVM Bump brought these changes: github.com/MoarVM/MoarVM/compare/2...6-g8ad18b8 8ad18b8 Merge pull request #589 from MasterDuke17/zero_slot_when_popping_an_array b53b05f Pull body->start + body->elems out into a variable ... (10 more lines) |
16:27 | |
Ā¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...6-g8ad18b8 | |||
Zoffix | Yup and re-delivery works too now -_- | ||
Well, filed it in case it ever re-appears: github.com/sergot/http-useragent/issues/174 | 16:31 | ||
r: my @a = <a b c>; @a.pop; @a[3] = 42; say @a | 16:32 | ||
camelia | [a b c 42] | ||
[a b (Any) 42] | |||
Zoffix | Cool | ||
(JVM is older commit; but should be fixed on it too) | |||
Geth | roast: MasterDuke17++ created pull request #265: Adapt tests to use new typed exception |
16:35 | |
roast/6.c-errata: be6306c948 | MasterDuke17++ (committed by Zoffix Znet) | S32-exceptions/misc.t Adapt tests to use new typed exception (#265) Aligns the tests with github.com/rakudo/rakudo/pull/1073 |
16:38 | ||
roast: 2973f845c8 | (Zoffix Znet)++ | S32-array/pop.t Test no ghost elements in arrays left over RT#131245: rt.perl.org/Public/Bug/Display.html?id=131245 Fix commits: github.com/perl6/nqp/commit/7f71ec...08953462fd github.com/MoarVM/MoarVM/commit/8ad18b8460 github.com/rakudo/rakudo/commit/c7...ee1c56086d |
17:18 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131245 | ||
timotimo | what's actually keeping us from throwing a strawberry perl dependency out? we do have our own prove-like that we already ship with rakudo, don't we? | 18:00 | |
Zoffix | s/ship with rakudo/have available as a module/; | 18:01 | |
But nothing really. | |||
timotimo | i believe if anything ever wants to compile stuff it'll try to re-use what moarvm was compiled with, could that be? | 18:03 | |
so if you have an msvc-compiled moarvm from a rakudo star or something you won't be able to compile custom modules unless you install msvc | |||
Zoffix | huh? That's really weird | ||
timotimo | well, it's in the backendconfig? | ||
and isn't that what stuff liek LibraryMake uses? | |||
Zoffix | No idea | 18:04 | |
buggable: eco LibraryMake | |||
buggable | Zoffix, LibraryMake 'An attempt to simplify native compilation': github.com/retupmoca/P6-LibraryMake | ||
timotimo | github.com/retupmoca/P6-LibraryMak...e.pm6#L122 | ||
Zoffix | YUeah | 18:05 | |
m: dd $*VM.config<cc> | |||
camelia | "gcc" | ||
Zoffix | Though that feels more like LibraryMake needing an improvement rather than a reason why we can't drop strawberry as a prereq :) | ||
.oO( ship a compiler with Star, just like Strawberry perl does ) |
18:06 | ||
Oh no. That's it. Latest firefox cries about insecure website when you try to use a login form on a website that doesn't use HTTP | 18:14 | ||
-- Lazy web developers world-wide :) | 18:16 | ||
doesn't use HTTPS I mean | |||
Geth | roast: d7de586029 | MasterDuke17++ | S12-attributes/native.t Unfudge a passing test for JVM |
18:52 | |
MasterDuke_ | m: my @a = (); @a.rotate(1) #bug? | 19:02 | |
camelia | Modulation by zero in block <unit> at <tmp> line 1 |
||
geekosaur | LTA certainly | ||
whether actual bug could be argued I guess | 19:03 | ||
MasterDuke_ | yeah, should it just do nothing? | ||
because that's a 1-line fix | |||
Zoffix | Doing nothing sounds sane to me. | 19:05 | |
timotimo | m: my @a = <1 2 3 4 5>; @a.rotate(100) | ||
camelia | ( no output ) | ||
timotimo | m: my @a = <1 2 3 4 5>; @a.rotate(100); say @a | ||
camelia | [1 2 3 4 5] | ||
timotimo | right, that's why it modulates | ||
Zoffix | m: my @a = <1 2 3 4 5>; say @a.rotate(101); | ||
camelia | [2 3 4 5 1] | ||
MasterDuke_ | i just added `return unless $elems` | 19:06 | |
Zoffix | s: [], 'rotate', \(1) | ||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/c776...t.pm#L1056 | ||
MasterDuke_ | makes it do nothing, spectests clean | ||
Zoffix | Do we still have cost on returns? | 19:07 | |
m: sub foo { return 42 }; for ^1000_000 { $ = foo }; say now - INIT now | |||
camelia | 0.7867392 | ||
MasterDuke_ | src/core/Rakudo/Internals.pm:24 | ||
Zoffix | m: sub foo { return 42 }; for ^1000_000 { $ = foo }; say now - INIT now | ||
camelia | 0.7906209 | ||
Zoffix | m: sub foo { 42 }; for ^1000_000 { $ = foo }; say now - INIT now | ||
camelia | 0.77443887 | ||
Zoffix | m: sub foo { 42 }; for ^1000_000 { $ = foo }; say now - INIT now | ||
camelia | 0.5243640 | ||
Zoffix would've gone with nqp::if on github.com/rakudo/rakudo/blob/nom/...als.pm#L24 | 19:08 | ||
MasterDuke_ | `nqp::unless($elems, return),` | 19:09 | |
what i actually added | |||
Zoffix | Does it need to be return () tho? | ||
Or the value isn't used | |||
Yeah, returns to at the end | 19:10 | ||
Which gets returned from .rotate | |||
MasterDuke_ | easy hange | 19:12 | |
*change | |||
Zoffix | And on my local box I consistently get sub { 42 } to be 1.7x faster than sub { return 42 }, so yeah, we still have that cost and we should try to avoid using it when we can | 19:13 | |
m: my $l = lazy gather { for ^3 { take say "taken" } }; $l.is-lazy | 19:17 | ||
camelia | ( no output ) | ||
Zoffix | Doesn't look like .is-lazy reifies anything... | ||
m: my $l = lazy gather { for ^3 { take say "taken" } }; say $l.rotate: 1 | |||
camelia | No such method 'rotate' for invocant of type 'Seq' in block <unit> at <tmp> line 1 |
||
Zoffix | oh | ||
neve rmind | |||
m: my $l = (gather { for ^3 { take say "taken" } }).List; say $l.is-lazy | 19:18 | ||
camelia | taken taken taken False |
||
Zoffix | \o/ | ||
ZofBot: Taken 3: former CIA agent Bryan Mills deals with a personal tragedy of having a unreified Seq | 19:21 | ||
ZofBot | Zoffix, They can only be passed by name, so it doesn't matter what order you pass them in: $formal = formalize($title, case=>'upper'); $formal = formalize($title, justify=>'left'); $formal = formalize($title, :justify<right>, :case<title>); See S02 for the correspondence bet | ||
Zoffix | timotimo: oh, apparently the requirement might be due to telemeh | 19:29 | |
At least that's what my Twitter DM tells me... | |||
timotimo: for the Strawberry DLL on windows for latest Rakudo Star | |||
timotimo | huh? | 19:30 | |
what ;_; | |||
why even ;_; | |||
Zoffix | .tell stmuk FWIW tag is missing for Star: twitter.com/hoelzro/status/859828762908778497 | 19:31 | |
yoleaux | Zoffix: I'll pass your message to stmuk. | ||
timotimo | i'll just go ahead and make telemeh off by default. | ||
so you'll have to enable it at Configure time | |||
anyway, didn't i merge telemeh after the release? | |||
Zoffix | No idea | 19:32 | |
But apparently a user did not need Strawberry for 2017.01 release and now they do and then I got a DM saying the DLL porereq might be due to telemeh | 19:33 | ||
This is part of it yeah? Then yeah, it wasn't even part of the release: github.com/MoarVM/MoarVM/commit/13...15bfa49430 | 19:34 | ||
timotimo | that's just a small part of it | 19:35 | |
the system itself has been introduced a buncha commits earlier | |||
Geth | rakudo: MasterDuke17++ created pull request #1075: Fix rotate on empty list |
19:36 | |
Zoffix | This one still shows "master" as the branch stuff thing, not 2017.04: github.com/MoarVM/MoarVM/commit/7e...cbb53472a9 | ||
timotimo | didn't we have to build a non-release moarvm for rakudo stra? | ||
rakudo straw %) | |||
Zoffix | Ohh. OK. :) | 19:37 | |
Right. | |||
timotimo | anyway, stmuk can build moar with --no-telemeh | ||
and i switched telemeh off by default just now for newer versions of moarvm | |||
Geth | rakudo/nom: b5c14bd108 | (Daniel Green)++ | src/core/Rakudo/Internals.pm Fix rotate on empty list `my @a = (); @a.rotate(1)` used to error with `Modulation by zero` before, but now does nothing. Passes `make m-spectest`. |
19:38 | |
rakudo/nom: f4cbdb64bc | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/Rakudo/Internals.pm Merge pull request #1075 from MasterDuke17/fix_rotate_on_empty_list Fix rotate on empty list |
|||
stmuk | foo | 20:40 | |
yoleaux | 19:31Z <Zoffix> stmuk: FWIW tag is missing for Star: twitter.com/hoelzro/status/859828762908778497 | ||
stmuk | Zoffix: yes I need to tag after I add a simple .bat for windows install (with --no-telemeh!) | 20:41 | |
timotimo | sorry about the telemeh disaster :\ | 20:42 | |
stmuk | no worries .. at least it shows people are using it | 20:44 | |
and I like the idea of Strawberry Star | |||
:D | |||
timotimo | it only shows people are using star %) | 20:45 | |
Zoffix gives timotimo a club membership card | 21:25 | ||
We have lots of members! :) |