[Tux] This is Rakudo version 2017.04.2-13-gce37b31a3 built on MoarVM version 2017.04 06:06
csv-ip5xs 3.053
test 13.086
test-t 5.181 - 5.351
csv-parser 13.294
lizmat Files=1191, Tests=56772, 215 wallclock secs (12.43 usr 4.61 sys + 1254.92 cusr 126.41 csys = 1398.37 CPU) 08:55
jnthn lizmat: Hm, that was 198s yesterday, no? :) 09:20
I remember 'cus I was like "huh, sub-200s, nice" :)
lizmat yeah, could be an artefact of something else going on on my computer at the same time 09:23
still, test-t was rather high as well
I run this always like 5am in the morning when my MBP has been dormant for a few hours 09:24
to give it the benefit of not getting throttled because the CPU is running hot
Geth rakudo/nom: 3b0dec3255 | (Elizabeth Mattijsen)++ | src/core/Exception.pm
Use pointy blocks for exceptions

And initialize at compile time. Should shave a little off of startup.
09:56
Zoffix . 09:59
yoleaux 08:31Z <samcv> Zoffix: is there anyway we could have `dir :d` or `dir :f` to get all directories or all files etc?
jnthn Isn't there a test parameter for that? 10:00
Zoffix jnthn: lizmat we added more tests. The new locking test file take 20s to run, for example
jnthn Locking test file? 10:01
.say for dir(:test(*.IO.d))
Zoffix samcv: no, I don't want to add an overengineered routine to core, which is exactly what it'll end up being after we implement everything it's meant to do for recursive file search.
jnthn Works :)
samcv ok. you know better than i do
Zoffix jnthn: IO::Handle.lock tests
jnthn Oh, that kind of lock :)
samcv i will defer to your judgment
jnthn It's a little unfortunate the test parameter is passed a string in dir though 10:02
I'd hoped I could just write dir(:test(*.d))
*.IO.d means you need to be really careful if you're not doing the CWD 10:03
(And so maybe have to prepend something to it before .IO-ing)
At which point it'd have been easier to just "next unless .d" :) 10:04
Or .grep(!*.d) I guess :)
uh, just *.d :)
Zoffix ... why does it have :Str param -_- 10:05
jnthn But yeah, I agree with Zoffix++; it's only a few more chars to grep it out
Zoffix: I don't know. Maybe from when IO::Path was costly to construct so you could filter cheaper just on Str?
But...that's not really a good reason :)
lizmat Zoffix: is that test file marked as "slow" ? 10:14
Zoffix samcv: There's depth-first or breadth-first; follow symlinks or not follow them, if you follow them, detect loops or not detect; stop when you find something or keep recursing; stop when you've recursed $n levels deep or keep going forever; stop when you found $X files or keep going, etc. 10:15
samcv: after gdflex submitted his PR I proposed a module be made first. Don't recall anyone ever making one (other than File::Find) 10:16
lizmat: yup
lizmat :-) 10:17
samcv well then. 10:18
a module must surely be made!
by someone! eventually
Geth rakudo/nom: 736be4d40f | (Elizabeth Mattijsen)++ | src/core/List.pm
Make List.AT-POS about 5% faster for common path

Not a lot, but could very well noticeable in some situations.
10:31
Zoffix Maybe I'm gonna start one. Just make a basic implementation that people are proposing and then open a bunch of Issues every time I think of a usecase it doesn't handle :P 10:41
samcv :) 10:51
Zoffix samcv: it took me until now to realize your weren't asking for recursive dir..... 11:18
samcv nope
not recursive
but that could be cool too i guess. but. i think getting all the files in a folder should be very simple to do 11:20
or all the directories as determined by .d or .f
i'm not expecting anything except the exact same evaluation the .d or .f things already check for 11:21
night o/ Zoffix keep up the good fight 11:28
Zoffix The dir '/foo/bar', :test(none '.', '..', *.IO.d) would be it, but there's a bit of a tweak needed. Even if you give :CWD to dir, it only uses it for making paths and test doesn't use it
Even strangely... the test doesn't use $*CWD set by &indir either :S 11:29
night
dir('/foo/bar').grep(*.d) should work too 11:30
actually cheaper too, since you don't need to make Io::Paths twice 11:31
m: indir '/tmp', { say $*CWD; dir :test{ say $*CWD; exit}} 11:42
camelia "/tmp".IO
"/home/camelia".IO
Zoffix doesn't get how that happens
m: sub dir2 ($test) { gather { $test.ACCEPTS: "foo" } }; indir '/tmp', { say $*CWD; dir2 { say $*CWD; exit} } 12:01
camelia "/tmp".IO
"/home/camelia".IO
Zoffix m: sub dir2 ($test) { gather { $test.ACCEPTS: "foo" } }; indir '/tmp', { say $*CWD; @ = dir2 { say $*CWD; exit} }
camelia "/tmp".IO
"/tmp".IO
Zoffix That's some caveat :S
m: sub dir2 ($test) { gather { temp $*CWD = "/tmp"; $test.ACCEPTS: "foo" } }; indir '/tmp', { say $*CWD; dir2 { say $*CWD; exit} } 12:02
camelia "/tmp".IO
/tmp
Zoffix Luckily fixable..
nine likes composable APIs 12:35
jnthn TimToady: I think rt.perl.org/Ticket/Display.html?id=131187 may be uncurse fallout, if you get chance to take a look 12:46
Geth nqp/master: 6 commits pushed by (Pawel Murias)++ 12:48
nqp: 8700dcc6aa | (Pawel Murias)++ | src/vm/js/nqp-runtime/deserialization.js
[js] Update comment
12:49
AlexDaniel yes, if I recall correctly these 20 unbuildable commits are due to uncurse merge 13:19
nine m: Lock.new.protect: 1 13:25
camelia Attempt to unlock mutex by thread not holding it
in block <unit> at <tmp> line 1
nine Now that's an odd error, considering that protect has a signature of rotect(Lock:D: &code) 13:26
Zoffix m: Lock.new.^lookup('protect').candidates».signature.say 13:28
camelia ((Lock:D $: &code, *%_))
Zoffix m: with Lock.new { .protect: 42 }
camelia Attempt to unlock mutex by thread not holding it
in block <unit> at <tmp> line 1
jnthn m: class C { method m(&foo) { LEAVE say 'lol' } }; C.m(1) 13:29
camelia lol
Type check failed in binding to parameter '&foo'; expected Callable but got Int (1)
in method m at <tmp> line 1
in block <unit> at <tmp> line 1
jnthn That's why :)
nine In case anyone wonders: discovered this by commenting out the code in the block when debugging. Turning the block into an empty hash. 13:30
Zoffix oh wow 13:32
jnthn: is that considered a bug? 13:33
ZOFVM: Files=1241, Tests=133747, 110 wallclock secs (21.48 usr 3.07 sys + 2283.75 cusr 133.53 csys = 2441.83 CPU)
jnthn I don't think so
I mean
sub foo($handle = open('foo', :r)) { LEAVE $handle.?close; blah } 13:34
Zoffix Ah right :)
jnthn Wouldn't work and could be also reported as a bug if we did things the other way :)
nine m: class C { multi method m(&foo) { LEAVE say 'lol' } }; C.m(1) 13:36
camelia Cannot resolve caller m(C: Int); none of these signatures match:
(C $: &foo, *%_)
in block <unit> at <tmp> line 1
nine An easy workaround ;)
Zoffix heh
jnthn heh, yes :) 13:37
I think the LEAVE behavior is OK, but Lock.protect wants hardening 13:38
nine Would be a lovely example for some advanced Perl 6 class, I guess.
jnthn It'd at present also try to release it if we somehow got an exception when trying to acquire it
AlexDaniel c: 2016.10,2016.11 Lock.new.protect: 1
committable6 AlexDaniel, gist.github.com/a799a3f15ddb370497...36987c7cae
AlexDaniel fwiw github.com/rakudo/rakudo/commit/48...8fe593eaca 13:40
nine Ah, used to be a CATCH block but now uses LEAVE
jnthn Yes
That fixed a nasty bug :)
Where a control exception causing an unwind wouldn't unlock things 13:41
nine m: class C { method m(&foo) { { LEAVE say "lol" } } }; C.m(1)
camelia Type check failed in binding to parameter '&foo'; expected Callable but got Int (1)
in method m at <tmp> line 1
in block <unit> at <tmp> line 1
nine Another very simple workaround
Also easy to find, once you accept that argument checking is really just part of the method body.
jnthn: anything against committing that block workaround? 13:42
jnthn It doesn't solve the second thing I mentioned :)
I was going to have a my int $acquired; npq::lock(...); $acquired = 1; LEAVE $acquired && nqp::unlock(...)
nine Ah, just now read that
I guess that's also far more self documenting :) 13:43
nine is back to fixing that precomp unit cache invalidation issue
jnthn has been hunting down why SSH::LibSSH just effectively hangs on connection errors 13:44
Zoffix oh boy 13:59
IO::Path.dir has an annoying bug it
in it
$ perl6 -e 'my @a = (item (dir "/tmp")) xx 2000; put @a».[2]'
Failed to get the directory contents of '/tmp': Failed to open dir: 24
If you don't exhaust the iterator, it never closes the open dir. And looks like you can open at most 1024 dirs or something 14:00
dogbert17_ you're using up your process file handles
Zoffix No, Perl 6 does. I'm not dealing with any handles 14:01
Zoffix contemplates :$limit argument 14:04
dogbert17_ how will Zoffix get a handle on this problem :) 14:11
Zoffix And the recursive &dir PR also has this issue. Would crash on trees with lots of dirs: github.com/rakudo/rakudo/pull/1045 14:13
Zoffix doesn't feel bad about rejecting it
dogbert17_ incidentally, spectest with harness6 and the default TEST_JOBS=1 also suffers from this, one handle per test file is used up so if your limit is 1024 you're out of luck
Zoffix uhh
dogbert17_: I don't get why TEST_JOBS would affect it 14:14
Or why that problem is there. Sounds like someone's forgetting to close the handles
dogbert17_ test
TEST_JOBS=1 and TEST_JOBS=1+ have different code paths
to be more specific, the problem is in TAP.pm6 14:16
Zoffix yeah 14:17
Zoffix gives up trying to find where it opens files
Wonder if it's just me. TAP.pm is a bowl of spaghetti
dogbert17_ agrees with Zoffix 14:18
Geth rakudo/nom: b2a64a1383 | (Zoffix Znet)++ | src/core/IO/Path.pm
[io grant] Fix $*CWD inside IO::Path.dir's :test Callable

Fixes two issues: 1) When user passes :CWD arg, the expectation would be that
   :CWD is available as $*CWD inside :test
2) Because we use `gather` by the time we get to run the :test
   Callable, we might already be outside even a user-set $*CWD,
... (7 more lines)
14:19
roast: 41b7f9f6aa | (Zoffix Znet)++ | S32-io/dir.t
[io grant] Test $*CWD in IO::Path.dir(:test) Callable

Rakudo fix: github.com/rakudo/rakudo/commit/b2a64a1383
14:21
Zoffix dogbert17_: does it crash right away or do I need to wait for it to do 1000+ test files? 14:22
which is basically the whole test suite... and is about 40m run, I'm guessing
dogbert17_ Zoffix: you'll have to wait :(
Zoffix OK. Plan B: make 2000 small test files and use them 14:23
dogbert17_ a nifty trick
even if you do it the slow way, the problem is easy to observe by means of peeking into /proc/<main perl6 pid>/fd 14:24
Zoffix hmm, it isn't much faster with small files :o 14:26
only 10 files per second or so
dogbert17_ so two minutes then :) 14:28
Zoffix cheats with ulimit -n 50 14:29
dogbert17_ :)
Zoffix Well, just says "Aborted" I was hoping --ll-exception would give me the line with open call 14:30
dogbert17_ perhaps it's libuv which does the aborting 14:31
nine break on abort() in gdb and then do call MVM_dump_backtrace(tc) 14:32
Zoffix doesn't seem to be working with perl6-gdb-m just stops right away with "[Inferior 1 (process 18237) exited normally]" 14:34
nine set follow-fork-mode child 14:35
Zoffix no effect
MasterDuke_ anyone know the history behind "Inferior 1"? does gdb just have a really high opinion of itself? what does it say if you try to run gdb inside gdb? 14:37
Zoffix dogbert17_: has this problem existed 2 months ago? 14:40
dogbert17_ Zoffix: what happens if you type 'q' followed by enter after you receive the Inferior message
Zoffix: yes 14:41
dogbert17_ I think
lizmat Zoffix: TAP.pm was someone's first attempt at writing idiomatic Perl 6 code, afaik 14:42
and I, for one, am glad he did that
Zoffix dogbert17_: seems to be running, but glacial pace 14:43
lizmat: I'd be gladder if it at least came with docs :|
lizmat: I'm just thinking.. is all of this stuff necessary? We're just running a bunch of tests. leont made p5's harness didn't he? So I guess he knows better, but this code is really hard to follow 14:44
dogbert17_: well, it ran one file and isn't doing anything else it seems 14:45
Just stuck
MasterDuke_ lizmat: did you see my comment on your Exceptions.pm commit? 14:46
nine: you said you were interested in seeing which routines called a specific other routine in a profile? i think i have it, but do you a use case or something i could test with? 14:47
Zoffix I only see 2 slurps and no opens() in TAP... Wonder
dogbert17_ multi get_runner(Source::File $file; TAP::Entry::Handler @handlers) ... 14:48
nine MasterDuke_: Inline::Perl5 spends most of its time in NativeCall code, so CALL is usually on the top of the list. But there's plenty of places which call into NativeCall. 14:49
Zoffix dogbert17_: is that were it crashes at? 14:50
MasterDuke_ nine: so i could just do some random stuff with Inline::Perl5, profile it, and see if i can tell where CALL is called? 14:51
nine yep 14:52
lizmat Zoffix: re doc, most of internals suffers from not enough doc :-(
Zoffix: re leont, last time I spoke to him, he said he wanted to spend more time on it again, perhaps doccing could be an attention point :-) 14:53
Zoffix \o/
lizmat the last time I looked at TAP.pm, it wasn't easy to get into 14:54
Zoffix dogbert17_: hm, when I set TEST_JOBS=2, and strace it, it crashes with write(12, "Could not create a new Thread: t"..., 50Could not create a new Thread: too many open files) = 50
lizmat but then, HARNESS_TYPE=6 didn't work very well either because of many race issues
so I didn't pursue at the time
Zoffix This crashes with too many open files: my @procs = ^2000 .map: {Proc::Async.new("cal").start}; sleep 10 14:56
dogbert17_: so maybe the crash in TEST_JOBS=1 is due to that and when you use more JOBS you don't hit the limit, because they finish off faster. 14:57
dogbert17_: but I do get the crassh with TEST_JOBS=1+ when I ulimit -n 50
lizmat Zoffix: is lib/TAP.pm6 still tracked in the rakudo repo ? 15:04
MasterDuke_ nine: do i need to install Inline::Perl5? or should just `-I <path/to/>/Inline-Perl5/lib/ -e 'use Inline::Perl5; use List::Util:from<Perl5>' work? 15:05
nine Both should be fine 15:06
Even perl6 -I <path/to/>/Inline-Perl5/lib/ -e 'use List::Util:from<Perl5>'
MasterDuke_ ooh, do i need perl5-dev (i'm on ubuntu) or something like that installed? 15:07
nine yes
If the README is missing some part about installation, please tell me :)
Geth rakudo/nom: ca0a74398b | (Stefan Seifert)++ | 3 files
Replace error-prone file timestamp check by checksum when loading deps

File modification timestamps are unreliable as file systems may have a granularity of 2 seconds. In addition, packagers may limit time stamps to certain ranges for making build results reproducible.
We've already used checksums instead of timestamps for precompilation units themselves. Now we also use checksums for checking a precompilation unit's source file.
ilmari MasterDuke_: libperl-dev
rakudo/nom: 89f2ae4f14 | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm
Simplify code for loading a precomp unit's dependencies

We're not supposed to know that the precompilation store deals with files and anyway, load-unit will just return Nil if the store doesn't contain the unit. So instead of looking for a store that has an existing file for the dependency and then loading the unit from that store, just take the first unit any of our stores gives us.
MasterDuke_ ilmari: thanks
Zoffix dogbert17_: without messign with you limit, I ran TEST_JOBS=1 with 2000 `ok 1` test files without trouble 15:09
MasterDuke_ nine: i just checked and i do have libperl-dev installed, but i'm getting an error trying to use I::P5 15:10
nine what error?
MasterDuke_ gist.github.com/MasterDuke17/ab04d...3f63fb3637
nine MasterDuke_: you don't have to install it, but at least build it: perl6 configure.pl6 && make 15:11
MasterDuke_ ah, good to go now, thanks 15:12
and that is in the Building section of the readme, i didn't read far enough 15:13
nine Maybe I really should move that section up. But OTOH I've always hated READMEs that tell me how to install first, because usually I have the software installed already (from a distro package or CPAN) 15:14
MasterDuke_ maybe just a link at the top down to that section? 15:15
"if installing manually, instructions <here>" 15:16
and yeah, last time i used Inline::Perl5 it had been installed from a distro package, so i had never seen that error before
star: use Inline::Perl5; use List::Util:from<Perl5> <shuffle>; my @a = shuffle ^10; dd @a 15:21
camelia ===SORRY!===
Could not find Inline::Perl5 at line 1 in:
/home/camelia/.perl6
/home/camelia/star-2016.10/share/perl6/site
/home/camelia/star-2016.10/share/perl6/vendor
/home/camelia/star-2016.10/share/perl6
CompUnit::Repository
MasterDuke_ nine: should ^^^ shuffle the array? it doesn't locally 15:22
oh, i have to slip it 15:24
nine: CALL-ME? 15:37
nine ah, yes 15:39
Zoffix ZofBot: but here's my object, so CALL-ME maybe 15:40
ZofBot Zoffix, ) It's also possible to explicitly specify a normal autoextending array: my @vices[*]; # Length is: "whatever" # Valid indices are 0
nine It's been a while since I have looked at performance :) Looks like I've still a comfortabl 2 second lead ;)
Scary: we're actually rather close to being able to ship binary packages for modules... 15:55
Zoffix lizmat: I missed the question. Currently yes, but I'm hoping to remove it this weekend and make `make` pull the version from github.com/perl6/tap-harness6 15:56
lizmat Zoffix: ok, just wanted to make sure I hadn't missed anything in that respect
no hurry from my side :-)
nine Zoffix: please don't! 15:57
Zoffix: building rakudo should not do any network access. That won't fly with distro build services
lizmat nine: but roast is also fetched over the network 15:59
so ?
nine lizmat: not as part of a plain build.
lizmat TAP.pm6 is only needed for testing
not as part of the build, afaik
nine For make test?
lizmat but for make test we don't need TAP.pm6 do qwe ? 16:00
nine If only make spectest pulls tap-harness6, I'm of course completely fine with it :) 16:02
Zoffix Yeah, only spectest 16:03
I'm guessing we could even shove the pulling it into t/harness6 itself
rather than make
nine But....TAP is currently part of the CORE dist
Zoffix Yeah, it'll be removed
lizmat dinner&
Zoffix Unless we plan for Rakudo's `make test` to use Perl 6 harness too? 16:09
MasterDuke_ nine: i profiled this `use Inline::Perl5; use List::Util:from<Perl5> <shuffle>; use List::MoreUtils:from<Perl5> <minmax>; my @a = shuffle |(^10); my @b = minmax |@a; dd @b;`, and found CALL-ME was only called here github.com/rakudo/rakudo/blob/nom/....nqp#L2992 16:16
does that seem right? 16:17
nine This CALL-ME? github.com/rakudo/rakudo/blob/nom/...l.pm6#L327 16:25
MasterDuke_ yep 16:40
TimToady jnthn: yes, that's almost certainly uncurse related; unifying $!to with $!pos was a slight overreach 17:24
I've been thinking about disunifying those anyway to save allocation of a bunch of position-only cursors for trailing ws 17:25
and <( )> can probably use the same distinction between $!to and $!pos
it's one more attribute but a bunch fewer cursors 17:26
which is probably a win
but I'll probably just add in the $!to first on the first-make-it-work-right principle 17:27
Geth roast: a8f1b96dd5 | (Stefan Seifert)++ | S10-packages/precompilation.t
We no longer depend on time stamps when checking dependencies
17:29
nine MasterDuke_: do you get different callers for that BOOTSTRAP code? I've never looked closely at what's between Inline::Perl5 and that CALL-ME. 17:30
MasterDuke_ call-args on line 757, p6_to_p5 on line 279, Array on line 545, p5_to_p6 on line 621, and some anonymous block on line 626 (all from Inline-Perl5/lib/Inline/Perl5.pm6) 17:43
jnthn TimToady: Ah, that would explain it, yes. 18:05
MasterDuke_ timotimo: if you see my conversation with nine earlier, i think i can now find the routines that call a specific routine in a profile. can you give me a use case to test with? 18:50
Geth nqp: a5337ff305 | TimToady++ | 3 files
separate the $!to concept back out from $!pos

This will allow )> to work correctly again. It may also give us the opportunity to optimize away <.ws> cursor creation by just tacking it onto the previous capture cursor as a $!pos update that doesn't affect $!to. This in turn will cut down on $!cstack usage and scanning overhead. In some cases it may allow us to steal the cstack directly for a match list, without having to grep out the non-capture cursors.
Also did some Num suppression on subtractions that might not know their operand types and default to Num.
19:25
rakudo/nom: 5d68f1ff1a | TimToady++ | 2 files
fix )> to work again whenever .MATCH is called

The unification of $!to and $!pos in the uncurse branch caused the )> construct to malfunction if .MATCH was not called at the right time. This version uses the newly patched nqp that distinguishes $!to from $!pos again.
  (Note that all internal access to $!to should be through the .to method,
since it might or might not defer to $!pos.)
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....2-ga5337ff
3cff74cf5a | TimToady++ | tools/build/NQP_REVISION

fixes #131187
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131187
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....2-ga5337ff
9962d2b652 | (Elizabeth Mattijsen)++ | src/core/Setty.pm
TimToady dunno if that merits a point release or not...
certainly worth getting into Star though 19:27
lizmat which would imply a point release
feels to me anyway
TimToady nod
TimToady wonders which modules that fixes... 19:30
MasterDuke_ lizmat: did you see my earlier question about your Exception.pm commit?
lizmat MasterDuke_: no, I haven't 19:31
MasterDuke_ ok, was wondering if there was a reason you didn't make the same change to the exception i added? 19:32
TimToady fixes File::Ignore anyway...
lizmat MasterDuke_: no reason, I just git stash popped something that was from before you added that one
and I didn't notice 19:33
will do so now
MasterDuke_ ah ha, i suspected that exact cause
TimToady
.oO(SETI has found infinite Setties on Alpha Settari!)
19:37
Geth rakudo/nom: 9ed89d9472 | (Elizabeth Mattijsen)++ | src/core/Exception.pm
Oops, forgot X::Trait::Invalid

  MasterDuke++ for pointing out
19:42
[Coke] is super concerned about the fact that we had not one but multiple point releases and are continually talking bout more. 19:45
might be time to think about moving to a more structure branch and release strategy.
Zoffix [Coke]: sounds good. How about adding a 1-month delay for released stuff? So, if we start now, make a release branch and nothing gets into it for a month. Beta testers are encouraged to use the release branch (would be nice to make rakudobrew to default to it). Then, on next release, we release from release branch the stuff that marinated and seen some use for a month to weed out all issues. In addition, 20:15
we add a bot that stresstest and tries rakudo HEAD on a bunch of trusted modules daily. This way we'll find any ecosystem fallout. The release requirement will also be to test modules installation as well as multi-OS testing (this can ne automated by making NeuralAnomaly spin up a bunch of VMs with different OSes on release)
And we only fix breaking stuff in release branch. All other features and bug fixes go to HEAD 20:16
and by HEAD I mean HEAD of nom branch
lizmat FWIW, I think the current release's breakage would have been covered had we had a cpan-testers like thing for the ecosystem 20:19
timotimo oof, #perl6-dev is the slower of the two and it's still too much for me to backlog over comfortably >_< 20:20
nine I'm with lizmat. Noone tests release branches. 20:21
Linux distributions are learning that lesson, too. openSUSE is moving towards their rolling release distro which helped greatly by their openQA automated integration testing. 20:22
timotimo MasterDuke_: you see, while "repairing" rc-forest-fire off of rosettacode's Forest Fire page, i stumbled upon "bind" being called a crapton. let me see what it was before i changed stuff around
nine So we should at least include emmentaler in the release process but much better would be fully automated testing of every single commit. 20:23
timotimo "for @!coords -> ($i, $j) {"
this one asploded it
nine That could be a good topic for the Perl Toolchain Summit
timotimo so i changed @!coords to have a "flat" in front when it was generated, and then removed the ( ) around $i, $j 20:24
and that made it a crapton better
lizmat nine: agree
Zoffix lizmat, the Repl bug would't as neither we nor linenoise had tests covering it. The left over debug print... hard to test, again this would rely on test coverage; do any tests test for extraneous output during program run; especially in a somewhat uncommon usecase 20:26
And I don't know if latest uncurse bug was found by tests 20:27
japhb timotimo: Is your rc-forest-fire change a correctness problem or a performance bug?
*to fix a
Zoffix nine, even with zero user testing of release branch we wouldn't have had any point releases this month as all the bugs would be found by users testing nom 20:28
as well as devs have a chance to realise there's a bug or LTAness in their recent commit and fix it 20:29
And I know some devs stop committing a few days before release; with a release branch they wouldn't need to 20:30
timotimo japhb: errrr, i'm not sure any more. but i did get it blazing fast by the end 20:31
Zoffix hell, it don't have to be a month wait. freeze release branch 1-2 weeks before release.
timotimo japhb: it turned out at some point Enum ~~ Enum got mangled so it went via Num ~~ Num, which had not only two blocks inside it, but also had to isinfornan self before going on 20:32
the Enum ~~ Enum candidate i created for this reason is in the recent releases iirc, and the improved Num ~~ Num candidate, too
japhb wonders what "blazing fast" actually means in this case .... 20:33
timotimo hm
japhb I have high standards on that one. ;-)
timotimo 21.62user 0.19system 0:21.91elapsed 99%CPU (0avgtext+0avgdata 111900maxresident)k - this is a 40x40 field at 1_000 iterations 20:34
not shabby.
japhb So about 50 fps at 40x40? Yeah, that's a decent start. 20:36
timotimo now that our profiler output is fixed ... 20:37
it's a good sign when the first four routines are all green :) 20:38
japhb :-)
timotimo i should be fixing the random seed 20:42
wow, we have a frame <anon> in file <unknown> at line <unknown> that's creating a crapton of Int objects 20:43
oh my. the ratios for whether a tree should be made or a tree should catch fire are Rat objects, we're comparing a whole lot of Num objects generated by rand against them 20:44
turning these into Num cut off like half a second only, though 20:45
not such a huge impact either way. 20:46
the step function takes 70% of time, show 30% 20:48
hello, 16.7s 20:52
@foo[$i;$j] is a bit more expensive than @foo.AT-POS($i).AT-POS($j)
Zoffix Another problem with releases we have: think of all the features we added since Dec 2015. None of them are "official" Perl 6. Policy-wise, we could nix parse-base and parse-names and anything else we added. Yet all this stuff is both documented and in use. In 6.d we should try to do more point releases of language or something. Non-breaking changes that declare that feature XYZ can officially be used
[Coke] Agreed, that can be part of the 6.d plan (and release announcement about how we're tightening the policy a bit) 20:53
timotimo the innermost block, which is four "when" inside a "given", spends 27.67% of its time in "succeed"
ugh, all succeed does is call THROW, but only 73% of its time is spent inside THROW 20:55
Zoffix [Coke]: xtest... yeah. I'll be doing more grant work this weekend and will ensure to run xtest by end of Monday 20:59
And will run one today, when I get home
timotimo oh hello 14 seconds (turned the whens into an if/elsif
[Coke] danke. just getting p6doc building on my new mactop.
timotimo aha, it doesn't matter to put a --> Nil on the block we're for-ing if it has two arguments because we only specialcase for one argument when "not slippy" 21:14
though actually the problem isn't that. i's going through sink-all already 21:15
i guess i was hoping the return value of Nil would cause it to sink without calling .sink on anything
succeed tries to sink the return value of THROW-NIL, which is defined to be Nil :( 21:18
actually, the throw isn't supposed to return at all 21:19
so where does the overhead come from ...
oh, i didn't realize it was calling succeed($x) all this time 21:20
jnthn TimToady: Thanks for the fix; did I miss a test going in, or shall I add my golfed example to roast? 21:43
TimToady I did not add a test
jnthn k, will do, so we've got it covered in roast as well as a module :) 21:44
timotimo Zoffix: i think the multiple dispatch explodes when it's trying to invoke the here clause
maybe we have to put Any:D in front so it'll refuse to try to run the where clause
i'll ask robertle to try that locally
Zoffix: thanks for giving that tool the much-needed cleanup! 21:45
i'm not sure if i Zoffix++ when you did
Zoffix Ah, right. 21:49
m: sub (Str $x where try .IO.e) {}(Str)
camelia Constraint type check failed in binding to parameter '$x'; expected anonymous constraint to be met but got Str (Str)
in sub at <tmp> line 1
in block <unit> at <tmp> line 1
Zoffix m: multi foo (Str $x where try .IO.e) { say "here"}; multi foo ($) { say "there" }; foo Str 21:50
camelia there
Zoffix m: multi foo (Str $x where try .IO.e) { say "here"}; multi foo ($) { say "there" }; foo "/tmp"
camelia there
timotimo anyway, i committed a little patch for it 21:51
oh, you PR'd it, too
sorry
Zoffix I liked your fix better 21:52
timotimo oh
it ended up with a combination of both, it seems like? 21:53
i.e. the :D and the try
Zoffix timotimo: 'cause I used online editor and didn't realize you commited a fix
Geth roast: 09d099bae3 | (Jonathan Worthington)++ | S05-metasyntax/angle-brackets.t
Test to cover RT #131187.
21:54
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131187
ugexe $ perl6 -e '\
say 1;\
'
why doesn't that work? (same with perl 5)
Zoffix Some shell escaping stuff? Works fine without those slashes 21:55
ugexe its the same in the repl 21:57
Zoffix How do you make it in the repl?
ugexe just say 1;\ return
Zoffix I get {}
ugexe yeah
Zoffix Dunno 21:58
$ perl6 --target=parse 21:59
===SORRY!===
Too many positionals passed; expected 1 argument but got 3
There's this ticket that feels to be somewhat in similar vein: rt.perl.org/Ticket/Display.html?id...et-history 22:00
timotimo Zoffix: i put the greps for SETTING:: (well, what it was before the names changed) in there mostly because i didn't want to see coverage of the .t files from the test suite. maybe the greps are unnecessary in total because you can just preprocess the coverage reports? 22:01
Zoffix dunno 22:02
timotimo you think a --usermode switch would be a good idea?
Zoffix ¯\_(ツ)_/¯ 22:04
Maybe --coremode?
and usermode be default
Zoffix & 22:05
timotimo that's sensible, as we core haxors know What We Are Doing (and we know What We Are Doing Is Kinda Bad) 22:07