Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-10-04

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:13 japhb .ask Zoffix I've got a test failure in Inline::Perl5 on one of my machines here (fresh Rakudo stack as of 2 PM PDT + panda modules install, on a fully patched Linux Mint 17 + perl 5.18.2 system) in t/p6_object_destructor.t: "chars requires a concrete string, but got null" ... known?
01:13 yoleaux2 japhb: I'll pass your message to Zoffix.
03:45 cognominal joined #perl6-dev
06:12 [Tux] This is Rakudo version 2016.09-113-g01321ca built on MoarVM version 2016.09-15-gc8b4228
06:12 [Tux] csv-ip5xs        3.109
06:12 [Tux] test            16.334
06:12 [Tux] test-t           7.244
06:12 [Tux] csv-parser      17.854
06:20 sortiz joined #perl6-dev
06:29 nine japhb: I've seen it a couple of times in the past week. It's a real heisenbug again. Vanishing with totally unrelated code changes. Makes debugging quite hard.
06:35 sortiz \o #perl6-dev
06:56 nine Seems like CUnions can not be used as value types :/ Reading the tests in 13-union.t, rakudo seems to always expect passing and getting pointers.
06:57 nine This sucks. What do we have Pointer[MyUnion] for then? And can we still change that?
07:21 RabidGravy joined #perl6-dev
08:34 arnsholt I don't think any of the NativeCall types can be used as value types yet
08:34 arnsholt It's been discussed, but noone's figured out quite the correct API yet
08:34 arnsholt I think a large-scale overhaul of the whole NC API might be in order, honestly
08:35 arnsholt Unfortunately, that'll break a non-trivial amount of modules
09:03 |Tux| joined #perl6-dev
09:26 brrt joined #perl6-dev
09:46 |Tux| joined #perl6-dev
10:04 Zoffix
10:04 yoleaux2 01:13Z <japhb> Zoffix: I've got a test failure in Inline::Perl5 on one of my machines here (fresh Rakudo stack as of 2 PM PDT + panda modules install, on a fully patched Linux Mint 17 + perl 5.18.2 system) in t/p6_object_destructor.t: "chars requires a concrete string, but got null" ... known?
10:07 nine arnsholt: the good news is that NativeCall is not in CORE. So we could use NativeCall:api<2> for example
10:09 nine Though it's sad that you'd have to type those extra characters (and know that you should do that) just to get the sane API
10:25 RabidGravy arnsholt, it will break about *half* of my modules (26)
10:26 arnsholt Yeah, lots of stuff
10:27 tadzik fortunately, we have module versioning and we shouldn't be depending on version * in our modules :)
10:27 arnsholt =)
10:29 nine I really should finish my lexical_module_load branch. Without that the whole versioning is only half as useful.
10:37 timotimo will we have something that'll allow us to put multiple versions of the same compunit into one distribution?
10:46 nine That would be very useful as well. Shouldn't be difficult to add that to CURI. It's just a matter of deciding on a META6.json format.
10:47 timotimo right
10:47 Zoffix Good god. They made a remote arbitrary code execution via a JPEG: http://thehackernews.com/2016/10/openjpeg-exploit-hack.html
10:47 timotimo i don't think there'd be a problem for entries into the provides list to become individual objects
10:47 Zoffix Makes me wonder how many sploits we got in Perl 6 :)
10:48 timotimo Zoffix: use NativeCall, write to arbitrary memory locations, success
10:49 Zoffix That's cheating :)
10:50 timotimo well, all arrays that you can use from perl6 are auto-growing. access outside of their bounds will just cause an array to expand
10:51 Zoffix m: [][^1e100]
10:51 timotimo rakudo startup and compilation is incredibly slow, so we can't just fuzz our way towards exploitable bugs
10:51 camelia rakudo-moar 01321c: OUTPUT«(timeout)»
10:51 Zoffix m: [][^1e10]
10:52 camelia rakudo-moar 01321c: OUTPUT«(timeout)»
10:59 Zoffix m: [][1e10]
10:59 camelia rakudo-moar 01321c: ( no output )
10:59 Zoffix m: [][1e100]
10:59 camelia rakudo-moar 01321c: OUTPUT«Cannot unbox 333 bit wide bigint into native integer␤  in block <unit> at <tmp> line 1␤␤»
11:00 Zoffix m: [][1e9999]
11:00 camelia rakudo-moar 01321c: OUTPUT«Cannot coerce Inf to an Int␤  in block <unit> at <tmp> line 1␤␤Actually thrown at:␤  in block <unit> at <tmp> line 1␤␤»
11:14 lizmat https://www.reddit.com/r/perl6/comments/55sjnf/best_practices_for_distributions_using_nativecall/?st=itvdzos6&amp;sh=85e69823   # might need some attention?
11:17 nine I guess Inline::Perl5 would be a nice example of a NativeCall user that compiles its own library
11:17 lizmat nine: yup
11:17 brrt that is a pretty good question actually
11:37 brrt joined #perl6-dev
12:00 lizmat nine: is now a good time to look at CompUnit/Repository/FileSystem, or should I wait until you have merged the lexical_module_load branch
12:03 nine The branch doesn't touch the repository implementations at all
12:08 lizmat nine: how about te following idea
12:08 lizmat I think part of the delay we have in dirs with many files,
12:09 lizmat is that we create a SHA of all files, even if we could already know it's not going to match as soon as one file has changed
12:09 timotimo hm, but most of the time we're going to start up with everything the same, are we not?
12:09 lizmat nine: is that train of thought correct ?
12:10 lizmat timotimo: yes
12:10 timotimo hm. actually. if you use -I, maybe you are doing so because you're developing that stuff, so we should expect at least one file to change every single time we start up?
12:10 lizmat yup, that also  :-)
12:11 hackedNODE What's using the .DUMP method, or is it meant to be called directly?
12:11 hackedNODE m: say %(:42a, :43b).DUMP
12:11 camelia rakudo-moar 01321c: OUTPUT«Hash<1>(␤    :$!descriptor(Perl6::Metamodel::ContainerDescriptor<2>(...)),␤    :$!storage(BOOTHash<3>(...))␤)␤»
12:13 hackedNODE m: 42.DUMP.say
12:13 camelia rakudo-moar 01321c: OUTPUT«42␤»
12:13 timotimo it's for developers and such
12:13 hackedNODE OK
12:14 [Coke] http://cfp.perladvent.org/ - I think this might be a good idea for us to do over at sixadvent this year, too.
12:15 lizmat [Coke]: yup, and I can put it in next P6W  :-)
12:21 llfourn joined #perl6-dev
12:25 dalek roast: bbb5190 | (Zoffix Znet)++ | S32-hash/delete.t:
12:25 dalek roast: [coverage] :delete on Hash:U returns Nil
12:25 dalek roast: review: https://github.com/perl6/roast/commit/bbb5190be7
12:26 hackedNODE m: [1,2].DUMP
12:26 camelia rakudo-moar 01321c: OUTPUT«MVMArray: Can't shift from an empty array␤  in block <unit> at <tmp> line 1␤␤»
12:33 lizmat fwiw, I've never used .DUMP and I wonder whether it's still useful
12:33 lizmat feels to me it's something from the parrot days
12:36 hackedNODE m: use Test; my class Foo {}; my $o = Foo.new; my %h{Any} = :42a, :72b, Foo => $o; is-deeply %h.antipairs, (42 => "a", 72 => "b", $o => Foo);
12:36 camelia rakudo-moar 01321c: OUTPUT«not ok 1 - ␤␤# Failed test at <tmp> line 1␤# expected: $(42 => "a", 72 => "b", (Foo.new) => Foo)␤#      got: Seq.new-consumed()␤»
12:36 hackedNODE m: use Test; my class Foo {}; my $o = Foo.new; my %h{Any} = :42a, :72b; is-deeply %h.antipairs, (42 => "a", 72 => "b");
12:36 camelia rakudo-moar 01321c: OUTPUT«ok 1 - ␤»
12:37 nine timotimo: I rarely change my source files during a run of my 34 test files.
12:37 hackedNODE Any idea why using the object makes it return that stuff? The code is this: http://perl6.wtf/src_core_Hash.pm.coverage.html#L690
12:38 nine lizmat: the question we need to answer is: "is the repo the same as when we precompiled this file?". My solution for that is to store the repo's id with the precomp file, and then compare this against a freshly calculated id.
12:38 lizmat nine: yes, got that
12:38 nine lizmat: I cannot answer "has the repo changed?" when looking only at a part of the repo.
12:40 lizmat I just found out that apparently we're also recursing into .git and other dot directories
12:40 lizmat that's not needed as we cannot have a dot as part of a module name
12:41 nine Oh, that's certainly a worthy optimization.
12:42 lizmat anyways, now testing a patch that will bring down load time of a Foo.pm in my . dir down from 5 seconds to 3.8
12:42 nine niiice
12:42 gfldex none('.')++
12:43 lizmat before: $ 6 'use lib "."; use Foo'  real0m5.068s
12:43 gfldex i was temped to have .git as a default exclude in File::Find :)
12:43 lizmat after: $ 6 'use lib "."; use Foo'  real0m3.838s
12:44 lizmat bbi15
13:13 hackedNODE m: use Test; is-deeply % .antipairs, [42]
13:13 camelia rakudo-moar 01321c: OUTPUT«not ok 1 - ␤␤# Failed test at <tmp> line 1␤# expected: $[42]␤#      got: Seq.new-consumed()␤»
13:15 hackedNODE m: my $s = % .antipairs; $ = $s eqv [42]; say $s.perl
13:15 camelia rakudo-moar 01321c: OUTPUT«Seq.new-consumed()␤»
13:15 hackedNODE I see. It's just an artefact of the test used, rather than an issue in the code.
13:26 lucasb_ joined #perl6-dev
13:32 hackedNODE This is amusing. S24-testing/1-basic.t has comment saying "This file /exhaustively/ tests the Test module [...] because we are using this module to test Perl 6 itself, so I want to be sure that the error is not coming from within this module."
13:33 hackedNODE But the plot twists is that file apparently doesn't get run as part of the test suite, because it has a ton of code that fails :)
13:33 hackedNODE m: use Test; is(2 + 2, 5, :todo<feature>, :desc('2 and 2 doesnt make 5'));
13:33 camelia rakudo-moar 01321c: OUTPUT«Unexpected named argument 'todo' passed␤  in sub is at /home/camelia/rakudo-m-inst-2/share/perl6/sources/C712FE6969F786C9380D643DF17E85D06868219E (Test) line 128␤  in block <unit> at <tmp> line 1␤␤»
13:33 hackedNODE heh
13:50 dalek rakudo/nom: a5073f9 | (Zoffix Znet)++ | / (2 files):
13:50 dalek rakudo/nom: Add Seq candidates to is-deeply to .cache them
13:50 dalek rakudo/nom:
13:50 dalek rakudo/nom: This avoids the failing tests claiming that `Seq.new-consumed()` was
13:50 dalek rakudo/nom: either `expected` or `got`. The issue was due to consuming the Seq during
13:50 dalek rakudo/nom: `eqv` and then attempting to consume it again, when printing it with `.perl`
13:50 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a5073f9615
13:51 dalek roast: 0ad2799 | (Zoffix Znet)++ | S24-testing/9-is_deeply.t:
13:51 dalek roast: is-deeply with Seqs does not claim `Seq.new-consumed` expected/got
13:51 dalek roast: review: https://github.com/perl6/roast/commit/0ad2799b51
13:54 dalek rakudo/nom: b12297e | (Zoffix Znet)++ | t/spectest.data:
13:54 dalek rakudo/nom: Add S24-testing/9-is_deeply.t to list of test files to run
13:54 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b12297e510
14:03 hackedNODE m: class Foo {}; my $o = Foo; my %h{Any} = :42a, :72b, Foo => Foo; dd %h.antipairs
14:03 camelia rakudo-moar 01321c: OUTPUT«(42 => "a", (Foo) => "Foo", 72 => "b").Seq␤»
14:04 hackedNODE hm
14:04 hackedNODE nm, the stringification was due to the pair
14:06 lizmat commute&
14:06 dalek roast: b667c92 | (Zoffix Znet)++ | S09-typed-arrays/hashes.t:
14:06 dalek roast: [coverage] Cover .antipairs, .invert on typed hashes
14:06 dalek roast: review: https://github.com/perl6/roast/commit/b667c9275b
14:12 hackedNODE t/04-nativecall/06-struct.t consistently dies on my linode box
14:12 hackedNODE s/dies/fails/
14:13 hackedNODE https://gist.github.com/zoffixznet/601dec2498fc5524a4bbda69a41eaab9
14:16 ggoebel hacktoberfest inspired me... looking at https://github.com/perl6/doc/issues/926
14:17 hackedNODE sweet
14:17 ggoebel produce was introduced by timtowdi with commit: 7b54492b9ab887d6bc7d7e4e5792814ef77fdd21
14:17 hackedNODE s: [], 'produce'
14:17 SourceBaby hackedNODE, Sauce is at https://github.com/rakudo/rakudo/blob/01321ca/src/core/Any-iterable-methods.pm#L1520
14:18 ggoebel it was first discussed in irc http://irclog.perlgeek.de/perl6/2015-10-09#i_11348271
14:18 hackedNODE s: &find-reducer-for-op
14:18 SourceBaby hackedNODE, Sauce is at https://github.com/rakudo/rakudo/blob/01321ca/src/core/List.pm#L136
14:19 ggoebel and relates to a commit by pmichaud back in 6/30/2011 df9d49b9525930bab7797b6c5c5b1f8ffe9e5f2e
14:19 ggoebel where he refers to "Add reduction metaops for triangle and right associative operators."
14:20 ggoebel where does the reference to "triangle" come from? I.e. help me cure my ignorance... what does it mean in this context?
14:22 ggoebel regarding produce... instead of reducing a list of values using an operator... it provides the "running" list of results
14:23 hackedNODE m: say [+] ^10
14:23 camelia rakudo-moar b12297: OUTPUT«45␤»
14:23 hackedNODE m: say [\+] ^10
14:23 camelia rakudo-moar b12297: OUTPUT«(0 1 3 6 10 15 21 28 36 45)␤»
14:24 ggoebel perl6: say reduce &[+], (1,2,3,4,5);
14:24 hackedNODE I think the second one is a triangle
14:24 camelia rakudo-jvm 2a1605, rakudo-moar b12297: OUTPUT«15␤»
14:24 ggoebel m: say reduce &[+], (1,2,3,4,5);
14:24 camelia rakudo-moar b12297: OUTPUT«15␤»
14:24 ggoebel m: say produce &[+], (1,2,3,4,5);
14:24 camelia rakudo-moar b12297: OUTPUT«(1 3 6 10 15)␤»
14:24 hackedNODE m: say [+] (1,2,3,4,5)
14:24 camelia rakudo-moar b12297: OUTPUT«15␤»
14:24 hackedNODE m: say [\+] (1,2,3,4,5)
14:24 camelia rakudo-moar b12297: OUTPUT«(1 3 6 10 15)␤»
14:25 ggoebel hackedNODE: i didn't realize you could do [\+]
14:25 hackedNODE So produce seems to be a reduce that produces values for each operation
14:25 ggoebel off to update the docs... If anyone knows where the term 'triangle' originates in this context please enlighten me :-)
14:26 ggoebel see the link to the irc url for the beginning of a bike shedding conversation of why it was called produce
14:27 timotimo i think the triangle comes from what the operations look like, as well as the [\
14:27 timotimo i.e. for addition you get something like
14:27 timotimo 1
14:27 timotimo 1 + 2
14:27 timotimo 1 + 2 + 3
14:27 timotimo 1 + 2 + 3 + 4
14:28 ggoebel so just a visual clue... no underlying reference to functional programming, etc.?
14:28 timotimo i don't do enough functional programming to know :\
14:32 [Coke] https://design.perl6.org/S03.html
14:33 [Coke] reinforces the visual nature both of the operator and timotimo++'s math drawing.
14:33 ggoebel Coke: thx!
14:33 dalek rakudo/nom: 2a2f26c | lizmat++ | src/core/CompUnit/Repository/FileSystem.pm:
14:33 dalek rakudo/nom: Make CURF.id about 2.5x faster
14:33 dalek rakudo/nom:
14:33 dalek rakudo/nom: - don't recurse into any directory that starts with '.'
14:33 dalek rakudo/nom:   Instead of just ".", ".." and ".precomp".  Technically, this should
14:33 dalek rakudo/nom:   probably be replaced with a check for a valid identifier (at least
14:33 dalek rakudo/nom:   when recursing).  This change makes sure we skip any .git dir.
14:33 dalek rakudo/nom: - check extension with native hash instead of with a Junction
14:33 dalek rakudo/nom: - check extension *before* checking existence on OS
14:33 dalek rakudo/nom:   Checking the OS is much more expensive, so only check for files
14:33 dalek rakudo/nom:   that we think we need.
14:33 dalek rakudo/nom: - rewrite looping logic using a direct iterator and nqp ops
14:33 dalek rakudo/nom:   Instead of [~] map grep combo
14:33 dalek rakudo/nom:
14:35 hackedNODE \o/
14:38 lizmat joined #perl6-dev
14:41 lucasb_ nice explanataion/mnemonic of "triangle" :)
14:42 lucasb_ I see produce as a sister of reduce. never saw this 'produce' operation in any other language. if anybody knows other occurences of this, I would be very interest to hear
14:49 nine lizmat: we're now down to 46s from 58s for a test in a checkout of perl6/mu
14:50 lizmat ok, that's something  :-)
14:52 nine I wonder how on earth we can get down to the 0.32 seconds of a find . -type f | xargs sha1sum | sha1sum
14:52 lizmat now, my next idea is to not sha1 the contents of files, but the name ~ last modified
14:53 nine Err...should of course be find . -type f | xargs cat | time sha1sum
14:53 lizmat *if* the last modified is within the same second of now() , then use now() instead of last modified
14:53 nine Or actually not
14:53 lizmat now() being millisecond resolution
14:54 lizmat so, if a file was changed in the current second (well, mod 2), then it will generate a sha that's always different
14:54 nine Soo....that's like rounding to worst case? A very interesting idea :)
14:54 lizmat so, going for that now
14:56 travis-ci joined #perl6-dev
14:56 travis-ci Rakudo build failed. Zoffix Znet 'Add Seq candidates to is-deeply to .cache them
14:56 travis-ci https://travis-ci.org/rakudo/rakudo/builds/164949669 https://github.com/rakudo/rakudo/compare/01321ca310e9...a5073f9615c1
14:56 travis-ci left #perl6-dev
14:56 buggable [travis build above] ☠ Did not recognize some failures. Check results manually
14:58 hackedNODE t/04-nativecall/05-arrays.t though doesn't fail on my local box
15:06 b2gills joined #perl6-dev
15:07 nine lizmat: the profile for id()ing the mu repo looks...disturbing. 2 million (!!) blocks cloned. Half a million iterations of the loop in dir(). A quarter of a million FILETEST-D calls.
15:07 nine That's for a directory containing just 4630 files.
15:08 nine How on earth can that warrant 266229 calls to FILETEST-D???
15:08 lizmat yeah, DIR-RECURSE is later on my list of things to look at
15:08 lizmat hmmm... but 2M seems wrong to me as well
15:08 nine 51K files opened
15:09 nine The id method itself (including the nqp::sha1 call) is only 7.85 % of the runtime.
15:10 nine That suggests that getting rid of sha1ing the contents will not actually buy us all that much.
15:12 lizmat hmmm....
15:14 lizmat indeed...  using path + modified only moves from 2.0 -> 1.9 seconds
15:22 * lizmat starts to remember what she did for the newio branch
15:22 timotimo and this is why i want the profiler to also give us a list of "what frames called this routine how often" for any given routine in the routines list :)
15:25 nine timotimo: oh, yes, pretty please :)
15:44 lizmat nine: wrt to DIR-RECURSE: is there a reason you want to include dirs in there as well ?
15:45 lizmat not just the files in the dirs, but the dirs itself as well?
15:45 FROGGS joined #perl6-dev
15:55 nine lizmat: my version was this: https://github.com/rakudo/rakudo/blob/7d804663db8fdd3313e01be9d02d0e4133fe3cd9/src/core/CompUnit/Repository/FileSystem.pm#L61
15:55 nine lizmat: ugexe++ implemented DIR-RECURSE. Any changes in semantics are non-intenional
15:56 lizmat ok
16:00 TimToady I have no recollection of adding a .Numeric to eval
16:00 yoleaux2 3 Oct 2016 21:51Z <Zoffix> TimToady: do you recall why you added a .Numeric to eval exception? In its default incantation it seems uncallable due to the payload being a string: https://github.com/rakudo/rakudo/blob/01321ca310e9b72b7ee3321dc0fc1c49910e15a2/src/core/Exception.pm#L111
16:01 hackedNODE It was 5 days pre-Christmas... maybe just copy-pasta?
16:01 TimToady likely
16:01 TimToady probably from something trying to support 'errno' or so
16:15 nine I don't get why but a simple perl6 --profile -e 'Rakudo::Internals.DIR-RECURSE(".")' gives me 4 "take"s per file
16:18 nine dir() itself does 2 takes per file
16:19 timotimo why :o
16:19 timotimo is autothreading f-ing it up?
16:19 timotimo no, that'd be extra weird
16:20 brrt joined #perl6-dev
16:22 brrt lizmat: what did you do for the newio branch
16:25 nine OMG!
16:25 nine Do you want to know why the -Iing the mu repo takes soo much longer (almost a minute) than other examples?
16:26 nine /home/nine/install/mu/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/root_pugs/misc/kp6_misc/kp6_ast/roo
16:26 timotimo m(
16:26 nine We follow symlinks
16:26 TimToady um...
16:26 lizmat joined #perl6-dev
16:27 gfldex yes, I miss loop detection too :)
16:27 nine Lesson of the day: recursing directories is much harder than you'd think
16:31 hackedNODE :)
16:31 gfldex what is the reason of the @paths.append/.pop business instead of using real recursion?
16:32 timotimo call frames can be expensive
16:34 nine Removing the symlinks takes it down to 1.0s
16:34 hackedNODE hah
16:34 timotimo from over a minute, eh?
16:34 nine yes
16:34 harmil_wk joined #perl6-dev
16:34 timotimo nice
16:35 nine It just took a minute for the paths to get long enough so it would throw exceptions that we dutifully ignore
16:35 timotimo hahaha
16:35 nine And we ignore them because files may just vanish between the listing and the opening.
16:36 dalek rakudo/nom: e5d9012 | lizmat++ | src/core/Rakudo/Internals.pm:
16:36 dalek rakudo/nom: Simplify DIR-RECURSE a bit
16:36 dalek rakudo/nom:
16:36 dalek rakudo/nom: Now only returns paths that actually exist
16:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e5d9012672
16:36 dalek rakudo/nom: 392d210 | lizmat++ | src/core/CompUnit/Repository/FileSystem.pm:
16:36 dalek rakudo/nom: Don't need to check for existence anymore
16:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/392d210fee
16:37 lizmat takes it down from 2 to 1.9 for me
16:37 gfldex m: my $start = now; while my @paths.pop { last if $++ > 10000; @paths.append("foo") }; say now - $start; $start = now; my $c; { &?BLOCK if $c++ <= 10000 }; say now - $start;
16:37 camelia rakudo-moar 2a2f26: OUTPUT«0.0029239␤0.0004262␤»
16:37 gfldex m: my $start = now; while my @paths.pop { last if $++ > 10000; @paths.append("foo") }; say now - $start; $start = now; my $c; { &?BLOCK if $c++ <= 10000 }; say now - $start;
16:37 camelia rakudo-moar 2a2f26: OUTPUT«0.0030003␤0.00034977␤»
16:38 nine gfldex: I think it was really just a stylistic decision
16:38 gfldex it is a wee bit faster (for now)
16:41 nine I still think dir() could be faster than it is
16:41 timotimo probably
16:41 hackedNODE s: &dir
16:41 SourceBaby hackedNODE, Sauce is at https://github.com/rakudo/rakudo/blob/2a2f26c/src/core/io_operators.pm#L93
16:43 nine Oh. Now I remember why I keep procrastinating by speeding up Inline::Perl5 instead of finishing the new v6::inline implementation. I got stuck trying to find a reference leak...
16:44 brrt joined #perl6-dev
17:02 hankache joined #perl6-dev
17:09 lizmat dalek ?
17:09 dalek rakudo/nom: 72e4f83 | lizmat++ | src/core/Rakudo/Internals.pm:
17:09 dalek rakudo/nom: Add :file test parameter to DIR-RECURSE
17:09 dalek rakudo/nom:
17:09 dalek rakudo/nom: So we don't need to take stuff we don't need
17:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/72e4f83896
17:09 dalek rakudo/nom: f8da735 | lizmat++ | src/core/CompUnit/Repository/FileSystem.pm:
17:09 dalek rakudo/nom: Simplify CURF.id now that we can specify :file
17:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f8da735f14
17:09 lizmat nine: takes it down to 1.8 from 1.9 for me
17:09 hankache hiya lizmat
17:09 lizmat hankache  o/
17:10 nine lizmat: certainly the right direction :)
17:10 nine lizmat: any idea how to get a loop detection into that code?
17:10 lizmat nine: ??
17:10 * nine will lose connectivity any minute now for an hour or so
17:10 lizmat ok, cu later!
17:11 nine lizmat: see backlog
17:11 nine lizmat: oh you dropped outbefore I posted my findings
17:12 lizmat ah, checking irclog now
17:13 gfldex nine: you need the inode and a %seen-Hash and a test for symlink. No idea how that works on windows with it's junctions/reparse-point madness
17:14 gfldex also, you may cross device boundaries and then you need to keep track of devid aswell
17:14 gfldex filesystems are hard
17:15 dalek rakudo/nom: 1e7f69e | (Dominique Dumont)++ | docs/running.pod:
17:15 dalek rakudo/nom: Remove pod instructions specific to Perl6 pod
17:15 dalek rakudo/nom:
17:15 dalek rakudo/nom: With PR #751 , the file docs/running.pod became a Perl6 pod
17:15 dalek rakudo/nom: document (because of =begin pod).
17:15 dalek rakudo/nom:
17:15 dalek rakudo/nom: This breaks man page generation on Debian build (see
17:15 dalek rakudo/nom: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839059 ).
17:15 dalek rakudo/nom:
17:15 dalek rakudo/nom: According to nine, this switch is not intentional.
17:15 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1e7f69ef31
17:15 dalek rakudo/nom: c6c0e69 | lizmat++ | docs/running.pod:
17:15 dalek rakudo/nom: Merge pull request #895 from dod38fr/nom
17:15 dalek rakudo/nom:
17:30 lucasb_ idk what this discussion is about, but... what about accepting a parameter :follow-symlinks (Bool) ?
17:31 lucasb_ this way, you can postpone the fixing of this issue later :)
17:31 hackedNODE Why postpone? We aren't in a hurry.
17:31 lucasb_ and for now, just say :!follow-symlinks
17:31 lucasb_ hackedNODE: ah, right :)
17:53 travis-ci joined #perl6-dev
17:53 travis-ci Rakudo build errored. Elizabeth Mattijsen 'Don't need to check for existence anymore'
17:53 travis-ci https://travis-ci.org/rakudo/rakudo/builds/165000650 https://github.com/rakudo/rakudo/compare/2a2f26c6b879...392d210fee82
17:53 travis-ci left #perl6-dev
17:53 buggable [travis build above] ✓ All failures are due to timeout (1), missing build log (0), or GitHub connectivity (0)
18:15 nine gfldex: we could just ignore the symlink business on Windows until a Windows user actually discovers, that Windows supports them and push DIR-RECURSE into IO::Spec, so we can handle symlinks in IO::Spec::Unix
18:22 nine At least we should be able to get at the relevant information: nqp::const::STAT_PLATFORM_DEV and nqp::const::STAT_PLATFORM_INODE
18:24 gfldex IO::Spec::Unix would be a nice place for stat and readlink
18:24 AlexDaniel joined #perl6-dev
18:24 AlexDaniel .
18:24 hackedNODE :
18:24 hackedNODE Why does everyone use dots? :)
18:25 gfldex you could use ✉
18:26 lucasb_ 'use dots' .... this made me remind of this feature proposal for P5 back in 2013
18:27 lucasb_ unfortunately it wasn't accepted by the then pumpking :)
18:29 nine It seems like our whole stack is missing a way to actually get the complete stat() information. For every single test you have to call stat() again even though the stat buf contains all the information for all tests.
18:30 nine So we're gonna do FILETEST-E, FILETEST-D and FILETEST-L and that runs 3 stat() calls when one would completely suffice.
18:31 * perlpilot notes that P5 had this "optimization" early on.  (caching stat info)
18:32 perlpilot (so early it was in P4 and probably P3 :-)
18:32 nine Probably because back then it took about a second to do a stat()...
18:32 awwaiid so we still have until P8 to add it to P6?
18:44 masak awwaiid: I like the way you're thinking
18:52 cygx joined #perl6-dev
18:52 cygx o/
18:53 cygx so, any further comments on https://github.com/rakudo/rakudo/pull/894 ?
18:53 cygx like, bikeshedding the name of X::IO::DoesExist...
18:55 * hackedNODE would go for X::IO::Exists
18:56 cygx I just went the obvious way from X::IO::DoesNotExist
18:57 cygx .oO( X::IO::DoesSoExist )
18:57 mst X::IO::IsADirectory or X::IO::AlreadyExists ?
18:57 hackedNODE I'd pick X::IO::DoesSoExist over X::IO::DoesExist... because originally I thought it read DoesNotExist, then I thought "is that a typo"...
18:58 cygx X::IO::IsADirectory is already known as X::IO::Directory
18:58 cygx it gets thrown when you pass :exclusive to open, which fails on existing files
18:59 * cygx is afk for a bit
19:21 dalek joined #perl6-dev
19:22 dalek rakudo/nom: d8309d0 | lizmat++ | src/core/Str.pm:
19:22 dalek rakudo/nom: https://en.wikipedia.org/wiki/Life,_the_Universe_and_Everything
19:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d8309d097d
19:25 lucasb_ oh, that's the Oxford comma? :)
19:28 dogbert17 joined #perl6-dev
19:28 dogbert17 hackedNODE: https://gist.github.com/dogbert17/89a6b2e5888259e5deae2b6df6f8f300
19:28 hackedNODE That broke my tweet I posted a few months ago! I thought Perl 6 was meant to be backwards compatible! :)
19:29 hackedNODE https://xkcd.com/1172/
19:30 hackedNODE dogbert17++ added thanks: https://rt.perl.org/Ticket/Display.html?id=128655
19:30 dogbert17 thank you for figuring out the problem
19:30 hackedNODE It was blind luck
19:31 perlpilot dogbert17++ and hackedNODE++ for sure
19:56 japhb Zoffix, nine: Sorry for the late night confusion about Inline::Perl5 ownership.
19:56 japhb nine: Gah, damn Heisenbugs.  SO SICK OF THOSE.
19:56 timotimo quite.
19:57 japhb hackedNODE, lizmat: DUMP's use case is when you need to understand things like containership and whether your data structure is a tree, a DAG, or a general graph.  It's for understanding the bits that .perl and dd can't tell you (but as I recall predates dd)
19:59 timotimo predates dd by years
20:00 japhb History: Someone (pmichaud?) created a very early version of DUMP that couldn't handle non-tree structures. I extended it to handle more general structures, and tightened up the display of containerness and laziness.  Sometime after I got DUMP working decently well, someone else did some further tweaks, and then it bitrotted somewhat as the active contributors were more often using dd by that point (which is much more terse when you don't need the full detail)
20:01 japhb I'm guessing the real breaking point is that it probably wasn't fully updated for post-GLR and pre-Christmas changes.
21:01 cygx joined #perl6-dev
21:09 lizmat decommute&
21:33 stmuk_ joined #perl6-dev
22:13 TimToady joined #perl6-dev
23:30 lizmat joined #perl6-dev
23:45 lucasb_ joined #perl6-dev

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary