Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-08-18

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

All times shown according to UTC.

Time Nick Message
00:52 travis-ci joined #perl6-dev
00:52 travis-ci Rakudo build errored. Zoffix Znet 'Add S24-testing/8-die_on_fail.t to list of tests to run'
00:52 travis-ci https://travis-ci.org/rakudo/rakudo/builds/153129466 https://github.com/rakudo/rakudo/compare/1c7ca5e13b32...e97fb7d90549
00:52 travis-ci left #perl6-dev
00:52 buggable ✓ [travis build above] One job failed due to the timeout. No other failures.
01:02 MasterDuke is anyone else seeing *really* long precomp times with a rakudo built today? compared to a rakudo built yesterday for example
01:42 Zoffix t/04-nativecall/06-struct.t started failing for me, but only when run with `make test` :/
01:46 Zoffix https://gist.github.com/zoffixznet/9fa7ea127a5dc72a64d763bc7b76cda2
01:46 Zoffix And these spectest fail (I believe this was already identified above; the modules stuff https://gist.github.com/zoffixznet/4cc3e215133be6fbbbbf0cb04ec681a0 )
01:48 Zoffix And yet all pass if run by themselves (╯°□°)╯︵ ┻━┻ https://gist.github.com/zoffixznet/278dc7e51595ea1c154f782e573fa4ec
01:57 Zoffix REPL breakage is by https://github.com/rakudo/rakudo/commit/be7ce041a800a9b3f4b532b84583ce0c8b42eec0
01:57 Zoffix Trying to figure out the fix.
02:19 benchable joined #perl6-dev
02:19 committable joined #perl6-dev
02:19 bisectable joined #perl6-dev
02:28 Zoffix Well, I think I have a fix but I've no idea why it worked before :/
02:28 Zoffix The fix being removing this reset: https://github.com/rakudo/rakudo/commit/be7ce041a800a9b3f4b532b84583ce0c8b42eec0#diff-aabf1f85520833d9ca2ff23a67de1a04R390
03:02 Zoffix Actually the fix won't fix anthing, 'cause it just evals the code from the start. It's something to do with context and I've no idea what they are
03:16 Zoffix .tell lizmat be7ce041a8 breaks variables in REPL (RT#128973). I tried to fix it and it looks like it has something to do with context and they appear to behave different when in different thread? I've don't know what contexts are yet, so I failed at fixing this. Perhaps you would know how to fix it?
03:16 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128973
03:16 yoleaux2 Zoffix: I'll pass your message to lizmat.
03:17 Zoffix yoleaux2, botsnack
03:17 synopsebot6 om nom nom
03:17 Zoffix Hey! That's just rude, synopsebot6!
03:17 * Zoffix hibernates
03:25 dalek roast: da7a590 | (Zoffix Znet)++ | S19-command-line/repl.t:
03:25 dalek roast: Re-fudge tests for RT#127933
03:25 dalek roast:
03:25 dalek roast: The unfudging happened due to passing TODOs, however, that pass
03:25 dalek roast: happened due to RT#128973, which merely shadowed this bug.
03:25 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=127933
03:25 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128973
03:25 dalek roast: review: https://github.com/perl6/roast/commit/da7a5903b8
05:48 [Tux] joined #perl6-dev
06:14 pmurias joined #perl6-dev
06:26 RabidGravy joined #perl6-dev
07:28 nine lizmat: now that I've run the 5th spectest I can finally reproduce the issue here
07:28 yoleaux2 17 Aug 2016 22:15Z <lizmat> nine: with 848add944fe6de9090f0 and 7d804663db8fdd331 reverted, all works fine for me :-(
07:42 nine I have a theory: S10-packages/precompilation.t actually writes files into t/spec/packages. When this happens between nested.t precompiling A.pm and B.pm file#t/spec/packages' id changes. This id is included in the precomp ids. Therefor when compiling B.pm, we calculate a different precomp id for Grammar.pm
07:43 nine So there's two different precomp files for Grammar.pm which then collide.
07:46 sno joined #perl6-dev
07:47 nine I think the solution will be to change CompUnit::Repository::FileSystem::!comp-unit-id to just nqp::sha1($name); instead of nqp::sha1($name ~ self.id);
07:52 nine But it's hard to know the implications :/ And harder to test as the error is so much depending on timing.
07:55 [Tux] test FAIL again. will have a look later
08:11 nine And I still get a flapping S11-modules/require.rakudo.moar :/
08:19 lizmat .
08:19 yoleaux2 03:17Z <Zoffix> lizmat: be7ce041a8 breaks variables in REPL (RT#128973). I tried to fix it and it looks like it has something to do with context and they appear to behave different when in different thread? I've don't know what contexts are yet, so I failed at fixing this. Perhaps you would know how to fix it?
08:19 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128973
08:20 dalek rakudo/nom: 643c0f9 | lizmat++ | src/core/REPL.pm:
08:20 dalek rakudo/nom: Revert "Make the REPL catch CONTROL-c when executing"
08:20 dalek rakudo/nom:
08:20 dalek rakudo/nom: This reverts commit be7ce041a800a9b3f4b532b84583ce0c8b42eec0.
08:20 dalek rakudo/nom:
08:20 dalek rakudo/nom: No time to fix regression of losing defined variables now.  Will
08:20 dalek rakudo/nom: have to wait until after the release.
08:20 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/643c0f9025
08:25 nine Ok, nested.t failed again. So my "fix" didn't actually work :/
08:26 nine But it also doesn't seem to be the same issue. The test runs just find when run individually
08:32 lizmat nine: am about to start commuting to Cluj
08:32 lizmat it's gonna take a few days where I'll be mostly offline
08:33 lizmat won't be able to test anything until much later today (if at all)
08:33 DrForr lizmat: Good luck! See ya here in a few days! HEAL, DAMNIT!
08:33 lizmat DrForr: working on it  :-)
08:33 nine lizmat: ok. Have fun! See you in Cluj :)
08:33 lizmat commuting&
08:39 AlexDaniel joined #perl6-dev
08:55 nine Both require.t and nested.t now fail before even outputting a test plan. So I guess they die trying to calculate the sha1s of the files in the FileSystem repo. Could really be some weird issue reading the files.
09:15 travis-ci joined #perl6-dev
09:15 travis-ci Rakudo build passed. Elizabeth Mattijsen 'Revert "Make the REPL catch CONTROL-c when executing"
09:15 travis-ci https://travis-ci.org/rakudo/rakudo/builds/153202296 https://github.com/rakudo/rakudo/compare/e97fb7d90549...643c0f902598
09:15 travis-ci left #perl6-dev
09:16 |Tux| joined #perl6-dev
09:55 |Tux| one out of every 3 test runs FAIL's, so it is very very hard to pinpoint what is failing
09:59 ItayAlmog joined #perl6-dev
09:59 timotimo oh crap
10:00 ItayAlmog Should the compiler give error about accessing class attribute (has) at runtime or compilation?
10:01 jnthn Can catch those at compile time
10:01 jnthn Though not until class composition time (on the closing curly)
10:01 jnthn Due to roles
10:01 timotimo GTK::Simple is now incredibly slow to start up and to compile and install
10:03 ItayAlmog Yeah, But how can I know if you are calling a defined type at compile time ?
10:09 jnthn "calling a defined type"?
10:10 nine Looks like we'll have to revert 848add944fe6de9090f0 and 7d804663db8fdd331 for now :/
10:11 jnthn We can't type check assignments to attributes at compile time in general, but we can check they exist at least, which is what I thought you meant.
10:11 ItayAlmog like, saying you have a class which has an attribute x and method getX, than it means you need to initialize the class first with the new method.
10:12 ItayAlmog So for right now It will do the check at compile time :\
10:13 ItayAlmog at runtime*
10:13 jnthn Can you give an example?
10:13 jnthn m: class C { has $!x; method getX() { $!xx } }
10:13 camelia rakudo-moar 643c0f: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Attribute $!xx not declared in class C␤at <tmp>:1␤------> ss C { has $!x; method getX() { $!xx } }⏏<EOL>␤»
10:13 jnthn Do you meant that kind of error (which is compile time)?
10:13 ItayAlmog no, one sec
10:14 |Tux| This is Rakudo version 2016.07.1-214-g643c0f9 built on MoarVM version 2016.07-18-g2f269d8
10:14 ItayAlmog m: class T { has $x; method setX() { $x++ }; } T.setX()
10:14 |Tux| csv-ip5xs        9.905
10:14 |Tux| test            15.093
10:14 |Tux| test-t           7.249
10:14 |Tux| csv-parser      16.534
10:14 camelia rakudo-moar 643c0f: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Strange text after block (missing semicolon or comma?)␤at <tmp>:1␤------> ss T { has $x; method setX() { $x++ }; }⏏ T.setX()␤    expecting any of:␤        infix␤        infix stopper␤   …»
10:14 ItayAlmog m: class T { has $x; method setX() { $x++ }; }; T.setX()
10:14 camelia rakudo-moar 643c0f: OUTPUT«Cannot look up attributes in a type object␤  in method setX at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
10:14 jnthn Oh, *that* one is runtime
10:14 ItayAlmog ok :
10:15 jnthn Though theoretically possible at compile time in simple cases like that one.
10:15 ItayAlmog sorry I didn't explained the problem well :)
10:16 ItayAlmog Yeah, in theory it can make these simple tests to help the user yeah, So runtime it is :)
10:31 Zoffix I'm thinking we move the REPL start {} block to be around the REPL loop and attach a SIGINT handler that will throw. We then await and check for that specific throw and restart that Promise if it was an attempt to abort a running code, and will probably fix the variable issue too.
10:31 * Zoffix will test sometime today
10:32 Zoffix timotimo, MasterDuke also was reporting slowness in modules last night
10:39 Zoffix How do you trigger the partial line mode in REPL, where it waits for you to enter the rest of the line even if you press ENTER? I saw that codepath last night, but couldn't enter it. It just kept giving me errors on partial lines
10:39 DrForr Well, Perl6::Tidy finally catches all the whitespace in and after 'sub foo( Str $a where 'foo' ) { }', which is more formidable of a challenge than it should be :)
10:39 nine timotimo: Does reverting 848add944fe6de9090f0 and 7d804663db8fdd331 help with your performance issue?
10:40 edehont joined #perl6-dev
11:17 masak ItayAlmog: suggestion: to always put in the twigils for clarity, like `has $!x;` or `has $.x;`
11:29 ItayAlmog ok :)
11:32 ItayAlmog m: class P { has $.x = 5; }; class T is P {}; T.x
11:32 camelia rakudo-moar 643c0f: OUTPUT«Cannot look up attributes in a type object␤  in block <unit> at <tmp> line 1␤␤»
11:32 ItayAlmog m: class P { has $.x = 5; }; class T is P {}; T.new.x
11:32 camelia rakudo-moar 643c0f: ( no output )
11:33 ItayAlmog m: class P { has $.x = 5; }; class T is P {}; say T.new.x
11:33 camelia rakudo-moar 643c0f: OUTPUT«5␤»
11:44 ItayAlmog left #perl6-dev
12:21 unmatched} *sigh* trying to use Atom over sshfs over slow network is rather painful.
12:22 unmatched} I wish I liked vim... or any other terminal-based editor :/
12:22 DrForr One of the benefits of vim is it's pretty much anywhere you are :)
12:23 unmatched} Maybe I can force myself to like it somehow
12:25 DrForr For me it's more muscle memory than anything. Plus it gives you a chance to wear out different keys on the keyboard.
12:26 unmatched} The whole edit mode/insert mode or whatever is is annoying as well. I have CTRL+S in muscle memory that I probably press it after every few words
12:27 dalek roast: 2d3fa13 | (Zoffix Znet)++ | S19-command-line/repl.t:
12:27 dalek roast: Declared variables must persist across multiple lines of input
12:27 dalek roast:
12:27 dalek roast: RT#128973
12:27 dalek roast: review: https://github.com/perl6/roast/commit/2d3fa1389f
12:27 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128973
12:41 ShimmerFairy unmatched} for the record, I use vim when I need to make quick edits in-terminal, it's not too bad in that respect. But emacs is superior for any real editing :P
12:51 ItayAlmog joined #perl6-dev
12:51 lucs unmatched}: I've got my "save" mapped to "::" in vim -- I think I reflexively press it every time I stop typing (so, very, very often).
12:52 lucs What I like about Vim is that I can very easily set up my config on just about any machine from my git repo.
12:53 unmatched} yeah, but I don't want to read thousand pages of information just to learn how to configure my editor :)
12:54 unmatched} Same thing with Atom. It may be a "hackable editor" but just try making it auto-close parentheses without auto-closing quotes too :)
12:54 lucs Turns out I probably read those thousand pages, but I did it over a period of many years :p
12:54 ShimmerFairy lucs: that's what gets me in trouble with vim, since trying C-x C-s to save gets you a suspended console :P
12:54 lucs :)
12:55 arnsholt ShimmerFairy: stty stop undef # =)
12:56 ShimmerFairy heh, I learned about ^Q soon enough, and I'm used to using vim for quick edits now, so that doesn't happen anymore :)
12:56 ItayAlmog when you call `Type.new`, What is it doing in the background?
12:56 mst ShimmerFairy: ZZ
12:56 arnsholt I do that anyways, because it's super confusing when it happens
12:57 arnsholt And I hit it every so often, when I want to do something like ^A
12:57 ShimmerFairy arnsholt: Konsole nowadays pops up a little warning across the top telling you what you screwed up (think Firefox's "we blocked a popup" type messages)
12:57 arnsholt I actually have my vim configured to handle ^A and ^E, since they're so ingrained from bash
12:57 ShimmerFairy mst: ZZ?
12:58 unmatched} ItayAlmog: it calls that method on Type, or Mu.new if Type doesn't implement it. And there's nothing special about that method. It just calls self.bless
12:58 lucs You type that when you go to sleep...
12:58 unmatched} s: Mu, "new", \()
12:58 SourceBaby unmatched}, Something's wrong: ␤ERR: Cannot resolve caller sourcery(Mu, Str, Capture); none of these signatures match:␤    ($thing, Str:D $method, Capture $c)␤    ($thing, Str:D $method)␤    (&code)␤    (&code, Capture $c)␤  in block <unit> at -e line 6␤␤
12:58 unmatched} ugh, of course
12:58 unmatched} s: Any, "new", \()
12:58 SourceBaby unmatched}, Sauce is at https://github.com/rakudo/rakudo/blob/643c0f9/src/core/Mu.pm#L81
12:58 mst ShimmerFairy: in vi/vim, in command mode, ZZ is save+exit
12:59 unmatched} ItayAlmog: ^^ that should be the sauce for it
12:59 mst shorter than :wq<enter>
12:59 ShimmerFairy mst: oh? My "workflow" has always been i [typing stuff] ESC :wq ENTER
12:59 mst ShimmerFairy: ESC ZZ
13:00 mst is equivalent
13:00 nine mst: that.....will require lots of training to adopt
13:00 * nine must have typed :wq<CR> a million times
13:00 ItayAlmog I am right now working on way to instantiate a class (for right now everything is on the heap to make is easier for me)
13:00 ShimmerFairy mst: I'll try to keep that in mind, if I ever get bothered by typing two extra chars to save and quit out of an editor I don't use much :P
13:01 mst ShimmerFairy: I've had people who aren't already vi addicts moan about it at length before, so I mention it to be helpful
13:02 ShimmerFairy fair enough, I could see the shifting required being an issue especially
13:02 mst I also use Ctrl-[ instead of the Esc key
13:02 mst less finger travel makes it a lot more comfortable
13:02 lucs mst: same here
13:03 lucs (and ctrl-h for backspace)
13:03 ShimmerFairy ItayAlmog: if your class has public attributes, then the quickest way to do it would be with named parameters. As a tiny example:  class Foo { my $.bar }; Foo.new(:bar(42))
13:03 dalek roast: 38f9743 | (Zoffix Znet)++ | packages/Test/Util.pm:
13:03 dalek roast: Teach is_run_repl to take a Callable to test output streams
13:03 dalek roast:
13:03 dalek roast: A Regex can take you far enough, but it's cleaner to use
13:03 dalek roast: a callable than a bunch of lookarounds when trying to
13:03 dalek roast: test precise output without relying on user messages REPL displays
13:03 dalek roast: on start up.
13:03 dalek roast: review: https://github.com/perl6/roast/commit/38f97430fd
13:03 ShimmerFairy mst: I dunno, reaching for 'Esc' reminds me that I'm finally escaping vim, and that it forgot what the primary "mode" of a text editor should be :P
13:03 lucs (oops, not ctrl-h for backspace in Vim, but everywhere else)
13:04 ItayAlmog Well, For right now my compiler will not do it >:P
13:04 mst ShimmerFairy: add 'start' to the bottom of your .vimrc then
13:06 ShimmerFairy mst: hmm... is this a secret plot to make me defect from the hallowed halls of emacs? :)    More seriously, I think I'm comfortable enough with the sequence I go through by now. If only I got this advice sooner...
13:06 dalek roast: a69943d | (Zoffix Znet)++ | S19-command-line/repl.t:
13:06 dalek roast: REPL must not re-execute previously entered code
13:06 dalek roast:
13:06 dalek roast: A potential fix for RT#128973 would've led to all of previously
13:06 dalek roast: entered code to be stored in a variable and executed over and over,
13:06 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128973
13:06 dalek roast: for each new line of input. This test can now catch such regressions.
13:06 dalek roast: review: https://github.com/perl6/roast/commit/a69943d558
13:06 DrForr Or repurpose your capslock. Much shorter.
13:07 mst ShimmerFairy: not really, since tbh it's realising that starting in command mode is more powerful that's the point at which you start to properly grok vi to my mind :P
13:07 mst bear in mind I use http://ex-vi.sf.net/ out of choice
13:08 mst it annoys me less than anything else, and because it was designed for 1200 baud, it's the only editor I've found that still works fine over conference wireless
13:08 ShimmerFairy DrForr: yeah, I've started having occasional pain in my left pinky (which is when I'm careful and have my ring finger take over). I wish Space Cadet keyboards were still around. They looked cool and sanely designed.
13:09 ShimmerFairy mst: so command mode is a poor man's modifier keys? :P
13:11 mst or vice versa, once you're spending enough time in command mode :)
13:15 * mst keeps playing with spacemacs
13:15 mst I really like the amount of power emacs' command system has
13:15 mst but modifier keys are just enraging after a while, I much prefer modal
13:16 dalek roast: 5bf61e3 | (Zoffix Znet)++ | S19-command-line/repl.t:
13:16 dalek roast: Update factual information in the comment
13:16 dalek roast: review: https://github.com/perl6/roast/commit/5bf61e38ff
13:16 mst (also, I want an option for a scriptable editor, and oh gods vimscript no)
13:16 ShimmerFairy there's a reason why I wish the Space Cadet keyboard was still around, emacs was built for it. In particular, Ctrl by the spacebar so the thumb uses it.
13:17 ShimmerFairy mst: elisp is probably better, but I do wish it would modernize and go with common lisp. Or Perl 6, that works too :P
13:23 skids joined #perl6-dev
13:27 ilmari mst: evil-mode?
13:28 * ilmari uses emacs and always switches capslock to be an extra control
13:28 mst ilmari: spacemacs has one of the vi binding sets built in
13:28 ilmari ah
13:28 mst that's why I'm playing from there
13:29 ilmari ShimmerFairy: I think was working on porting emacs to guile, which has both elisp and scheme frontends
13:29 ilmari s/was/someone $&/
13:30 ilmari ah: https://www.emacswiki.org/emacs/GuileEmacs
13:30 ilmari ooh, it also has ECMAScript and WIP support for Lua
13:31 ilmari dunno about common lisp, though
13:31 ShimmerFairy ilmari: yeah, I came across that before. I hope it comes through, since then I could code in common lisp if I wish :) . (At least, IIRC)
13:35 ilmari https://github.com/NalaGinrut/guile-lua-rebirth # seems to be the lua frontend, and has seen recent development
13:36 ShimmerFairy .oO(Maybe also NQPmacs, for similar multiple-language support!)
13:57 ItayAlmog It is working! I can create a new Mu object and call the define method, which (for right now) will return 1 (defined) and you can call Mu.defined which will return 0 (undefined) :D
13:57 ItayAlmog * It is not parsing code! I create the AST manually :\
13:58 unmatched} Nice
14:37 unmatched} "> Tried to read() on a socket from outside its originating thread"
14:37 unmatched} And so ends my "fix" for REPL :P
14:48 unmatched} Which was this: https://gist.github.com/zoffixznet/2d23b8132620a2d7e96ae34078f22e5a
14:48 unmatched} And the message is basically from: await start get
14:49 unmatched} No idea how to proceed next or how such proceedal will interact with Readline/Linenoise
14:50 unmatched} ( full src/core/REPL.pm with my changes, since it's easier to see than diff https://gist.github.com/zoffixznet/872a809fe47d02ab6a079bf1ba2d3adf )
14:58 unmatched} I guess this is the perfect excuse to learn about contexts and try to fix lizmat's original fix.
14:58 unmatched} To the learning machine!
15:00 nine unmatched}: might be fixing the context thingy will be a lot easier
15:01 unmatched} Though that fix is kinda iffy in that we don't kill the running code, but basically put it into background. so "foo".say for ^Inf will still keep running after ^C
15:01 unmatched} and spamming the screen
15:31 hoelzro unmatched}: is your REPL work in a branch?
15:32 * hoelzro needs to catch up on the recent happenings in REPL-land
15:35 unmatched} unmatched}: there's no real "work" to be honest. I was just trying to do #128900 and the first attempt wasn't perfect and there was some breakage, so it was revereted: https://github.com/rakudo/rakudo/commit/be7ce041a800a9b3f4b532b84583ce0c8b42eec0
15:35 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128900
15:36 unmatched} (the diff above is all I got for my attempt)
15:36 unmatched} I mean hoelzro
15:36 unmatched} Dunno why I decided to talk to myself :P
15:40 jdv79 jnthn, unmatched}: thanks for the bug work
15:44 hoelzro unmatched}: ok, thanks for looking at that!
15:45 hoelzro unmatched}: I saw a lot of chatter about the REPL last night/this morning (I have irssi e-mail me whenever someone mentions "REPL"); were there other issues? I thought I saw something about a release blocker? or was this it?
15:46 hoelzro I would like to help more with the REPL work, but I had a side contract in July and I'm moving into a house next week, so this has been a really awful summer for Perl 6 work for me =(
15:47 unmatched} hoelzro: yeah, the revert fixed the blocker.
15:47 hoelzro ok, thank you for dealing with all that!
15:47 unmatched} It was lizmat who took care of it :)
15:47 hoelzro lizmat++
15:47 hoelzro and unmatched}++ for getting involved =)
15:47 hoelzro unmatched}++ a lot for lots of work and blog posts lately, for that matter
17:10 ItayAlmog joined #perl6-dev
17:20 committable6 joined #perl6-dev
17:35 unmatched} .oO( how crazy is it to use Proc::Async with $*EXECUTABLE to work around no-thread-killing limitation.... )
17:42 nine Oooh...this is it! The failing S11 tests do use lib "." while other tests create short lived files like getout-13575-776701.in. Those files disappear between the .dir that lists them and the .open leading to: "Failed to open file /home/nine/rakudo/getout-13575-776701.in: no such file or directory"
17:45 ugexe nine: https://github.com/rakudo/rakudo/pull/837 related to your $!id PRs
17:48 nine ugexe: just saw it. Looks cool :) Have you by any chance benchmarked it?
17:52 ugexe nine: no, i'll try it tonight though. i figured nqp::sha1 would be the bottleneck no matter what, and it still gets called the same number of times
17:53 nine I have no intuition about Perl 6 performance at all. But then I wonder if anyone really has.
17:55 dalek rakudo/nom: c405ccd | ugexe++ | src/core/ (3 files):
17:55 dalek rakudo/nom: Implement Rakudo::Internals.DIR-RECURSE
17:55 dalek rakudo/nom:
17:55 dalek rakudo/nom: Directory recursion is used in at least 2 internal locations, and
17:55 dalek rakudo/nom: this aims to consolidate that behavior
17:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c405ccd198
17:55 dalek rakudo/nom: 92d5e76 | niner++ | src/core/ (3 files):
17:55 dalek rakudo/nom: Merge pull request #837 from ugexe/internals-recursive-dir
17:55 dalek rakudo/nom:
17:55 dalek rakudo/nom: Implement Rakudo::Internals.DIR-RECURSE
17:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/92d5e766d0
18:00 brrt joined #perl6-dev
18:06 unmatched} Well. My crazy REPL method failed.
18:06 unmatched} Time to dial up the insanity
18:06 * unmatched} tries to make a Proc::Async-based proof of concept
18:07 unmatched} Could end up being a good Perl 6 async article if I manage to succeed
18:13 nine Kinda sucks that slurp unconditionally throws exceptions on failure to open :/
18:15 nine well, there's still slurp-rest
18:17 nine ugexe: I dislike a bit that DIR-RECURSE returns strings instead of IO::Paths. I have to .IO them again. Seems wasteful.
18:22 ugexe nine: yeah. i did strings because the other path related methods in Rakudo::Internals return strings
18:22 ugexe no other reason
18:24 * unmatched} shelves the idea
18:25 nine ugexe: oh, and there's now: Too few positionals passed; expected 2 arguments but got 0
18:25 nine on the reduce in case we don't find any files
18:25 unmatched} Gonna put it on a very far back burner, so if anyone wants to give https://rt.perl.org/Ticket/Display.html?id=128900 a go, you're welcome to :)
18:28 ugexe nine: ah crap. i even remember thinking of the cleanest way to implement that check first
18:29 dalek rakudo/nom: 9aef5c3 | (Zoffix Znet)++ | docs/ChangeLog:
18:29 dalek rakudo/nom: Remove REPL ^C from Changelog
18:29 dalek rakudo/nom:
18:29 dalek rakudo/nom: The original fix for RT#128900 ( be7ce041a80 ) was reverted ( 643c0f9 ),
18:29 dalek rakudo/nom: so the feature won't be present in this release.
18:29 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128900
18:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9aef5c334e
18:29 nine ugexe: I replaced the reduce by nqp::sha1([~] grep ...)
18:30 unmatched} And this is the contents of my second failed REPL attempt. This one can read across the threads, but can't start a new loop on ^C, because signal tap is in another thread, so I can't throw from it to kill the REPL thread: https://gist.github.com/zoffixznet/3012637e4c304d567cab5dd94348dfd7
18:31 brrt hmm, oh you can
18:31 brrt you need a bit of difficulty though
18:32 unmatched} brrt: how?
18:32 brrt okay, the second thread is waiting on the Proc::Async right?
18:32 brrt kill the Proc::Async
18:32 unmatched} brrt: no, there's no Proc::Async involved. That was my third idea, but I kinda ran out of steam :)
18:32 brrt hmmm
18:32 brrt okay, still kill the child process
18:33 unmatched} How?
18:33 ugexe nine: ah yeah thats probably it. a shame though, always nice to use a grep/map/reduce combo transform
18:33 unmatched} Basically, it's essentially this:   start { signal(SIGINT).tap: { ... }; loop {} }
18:33 unmatched} What do I put inside the signal tap to make that start {} block end; considering I can't put anything inside that loop {}
18:34 brrt you need two things
18:34 brrt a): to communicate with loop and tell it that it should stop
18:35 brrt or in other words, a shared (and locked) $is_running
18:35 brrt or something like that
18:35 nine Failed to stat file: no such file or directory
18:35 nine This is becoming harder and harder :/
18:35 brrt a select on a 'pleaseCloseMe' and whatever else channel is equivalent
18:35 * nine misses working with databases and transactions
18:35 unmatched} brrt: Yeah, I can't. That loop is representative of code entered into REPL by the user. If the user enters loop {}; that's all there is so it blocks, and I wants the signal to end that loop.
18:35 brrt b): a way to unbreak the waiting inside the loop
18:36 brrt well, alright, what are you waiting for in the loop?
18:36 brrt oh, right, i get it
18:36 brrt i'm thinking of a forking shell
18:36 brrt hmmm
18:37 brrt well, the low level api to that, in posix, is pthread_signal or something like that
18:37 brrt don't we expose that, i wonder
18:39 brrt there are a bunch of things we can set to stop a thread for GC, although, you don't really want that mechanism
18:40 brrt and, i think pthread_signal() is not the right thing (It's only for condition variables anyway)
18:42 dalek rakudo/nom: e039eb9 | niner++ | src/core/CompUnit/Repository/FileSystem.pm:
18:42 dalek rakudo/nom: Fix spectest failures caused by changing the repo during compilation
18:42 dalek rakudo/nom:
18:42 dalek rakudo/nom: S10-packages/precompilation.t actually writes files into t/spec/packages.
18:42 dalek rakudo/nom: When this happens between nested.t precompiling A.pm and B.pm the
18:42 dalek rakudo/nom: t/spec/packages FileSystem repository's id changes. This id is included in
18:42 dalek rakudo/nom: the precomp ids. Therefor when compiling B.pm, we calculate a different
18:42 dalek rakudo/nom: precomp id for Grammar.pm leading to collision on load.
18:42 dalek rakudo/nom:
18:42 dalek rakudo/nom: This just takes commit 22e46b56a2451bb5836ec0100244b59360f59c0c further by
18:42 dalek rakudo/nom: completely removing an obsolete mechanism.
18:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e039eb9d5f
18:42 dalek rakudo/nom: bc0293e | niner++ | src/core/CompUnit/Repository/FileSystem.pm:
18:42 dalek rakudo/nom: Fix spurious spectest failures caused by ephemeral files
18:43 nine Finally a chance to use the word ephemeral ;)
18:53 nine ugexe: the "Failed to stat file" error is in this line: @paths.append( dir($path, :$test) ) if Rakudo::Internals.FILETEST-D($path);
18:55 ugexe seems it might be related to the ephemeral files you mention. I guess it has to check FILETEST-E($path) && FILETEST-D($path)
18:56 nine It's tricky. The file may as well disappear between the FILETEST-E and FILETEST-D
18:57 ugexe ugh
18:57 unmatched} Doesn't -D imply -E?
18:58 unmatched} Oh.. that's what you were talking about.. never mind :P
18:58 nine I wonder if I should just leave it as is. I can only reproduce those failures by runningthose S11 tests in loops while running a TEST_JOBS=12 spectest. It's hardly a real world use case.
18:59 unmatched} I get a whole bunch of failures in spectest, just running my first TEST_JOBS=30 run from HEAD
19:00 ugexe wouldnt this theoretically affect regular calls to dir() in certain situations as well then?
19:00 nine of course
19:00 unmatched} Here are the failures: https://gist.github.com/zoffixznet/13fbf2c418dad5ac3f3ae3bd43e5f872
19:00 unmatched} All of them are "Parse errors: No plan found in TAP output"
19:01 unmatched} That's a TEST_JOBS=30 make stresstest
19:01 nine unmatched}: with bc0293ec87e13d48f0d6df9ae8461b801a2ae8b3 applied?
19:03 unmatched} Yeah
19:03 unmatched} lemme nuke it and fetch it and build from scratch
19:07 nine unmatched}: TEST_JOBS=30 make stresstest completed successfully here. Running again with TEST_JOBS=100
19:08 unmatched} (FWIW, I'm doing it on a 24-core box)
19:09 nine I'd love to have that as development machine :) But with AMD's Zen approaching, I'm at least gonna upgrade to an 8 core next year.
19:13 unmatched} nine: still failures, though if I `make` files individually they seem to pass: https://gist.github.com/zoffixznet/2b862a3e6a43edd930e4fa2fbe44e36e
19:14 unmatched} nine: here's the full build/test log: https://gist.github.com/zoffixznet/2fe90d3da4c8ad859b21521cfabbb1e3
19:15 nine unmatched}: can you please try running a "while RAKUDO_MODULE_DEBUG=1 perl6 -Ilib --ll-exception t/spec/S11-modules/require.rakudo.moar ; do true ; done" while running the spectest?
19:15 nine That should give us some error message to work with.
19:16 nine Doing the same for the other failed tests will increase chances of catching something.
19:19 unmatched} nine: "failed to stat file" (at the end of the output) https://gist.github.com/zoffixznet/3685af2db1a93644a56eded8140e9232
19:22 unmatched} nine: here's for t/spec/S10-packages/use-with-class.t https://gist.github.com/zoffixznet/0b0a758dca79b091ad90b36035eed52f
19:24 nine Ok, so it is the same issue after all
19:24 unmatched} here's t/spec/S11-modules/importing.t https://gist.github.com/zoffixznet/5406ce958fdfd3549c2c69ad98408338
19:24 * unmatched} stops; let me know if you need it for the rest of the files :)
19:26 nine Maybe like this? @paths.append( dir($path, :$test) ) if try Rakudo::Internals.FILETEST-D($path);
19:27 nine unmatched}: thanks! Took me a while to respond as I had to finish mopping the floor
19:55 dalek rakudo/nom: 6e84a5e | niner++ | src/core/ (2 files):
19:55 dalek rakudo/nom: Fix spurious "Failed to stat file" errors in massively parallel spectests
19:55 dalek rakudo/nom:
19:55 dalek rakudo/nom: If between the call to dir() and the stat the file vanishes, we died with an
19:55 dalek rakudo/nom: "Failed to stat file: no such file or directory" error. Make that non-fatal
19:55 dalek rakudo/nom: as we use the stat result for filtering anyway and files that don't exist
19:55 dalek rakudo/nom: anymore should definitely be filtered out.
19:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6e84a5ed05
19:56 nine With this ^^^ I cannot reproduce any failures at all anymore.
19:56 nine unmatched}: can you re-test please?
20:02 unmatched} Yeah, in about an hour (communiting atm)
20:03 nine ok
20:04 nine Btw jnthn++ # having stable spectests is just fantastic when debugging new flappers!
20:04 nine Though I did just get a failure in t/spec/S17-supply/wait.t
20:05 nine ok $waiting + 2 < now failed. However I think, that my $waiting = now; should simply be moved to before the isa-ok start { line. Otherwise the started thread may be sleeping for a while before we start counting.
20:09 nine Yes, reproducible.
20:12 dalek roast: 3615150 | niner++ | S17-supply/wait.t:
20:12 dalek roast: Fix race in S17-supply/wait.t
20:12 dalek roast:
20:12 dalek roast: The started thread may have been sleeping for quite a while before we started
20:12 dalek roast: counting the time. Could have led to occasional failures of "did we wait long
20:12 dalek roast: enough?"
20:12 dalek roast: review: https://github.com/perl6/roast/commit/36151500a8
20:27 Ven joined #perl6-dev
20:36 sno joined #perl6-dev
20:36 Ven_ joined #perl6-dev
21:02 Zoffix nine++ did stresstest with TEST_JOBS=30, 50, 100 All PASS on all runs.
21:02 Zoffix Did , TEST_JOBS=1000 too and got these failures but I'm 99% certain those are timing based tests and they just failed 'cause it took forever to get through the tests with some many running at the same time: https://gist.github.com/zoffixznet/aa0748f107db4615a5c60bbeb41fce01
21:03 Zoffix s/some/so/;
21:08 * Zoffix does TEST_JOBS=10000 make stresstest just for fun :P
21:15 Zoffix Same failures as with 1000 jobs. Timing based tests: https://gist.github.com/zoffixznet/b6b556e0131b50f11ec6dccbe65fef66
21:29 nine Cool! Thanks for testing ;)
22:10 Zoffix joined #perl6-dev
22:22 lizmat joined #perl6-dev
22:23 skids joined #perl6-dev
22:33 lizmat .
22:33 lizmat .tell nine spectest clear!  :-)
22:33 yoleaux2 lizmat: I'll pass your message to nine.
22:35 timotimo great!
22:46 dalek rakudo/nom: 1b898c8 | lizmat++ | src/core/Mu.pm:
22:46 dalek rakudo/nom: Another fix for RT #128931
22:46 dalek rakudo/nom:
22:46 dalek rakudo/nom: Basically, make it impossible for an Int:D to mimic an Int:U.WHICH
22:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1b898c81c8
22:46 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128931
22:48 lizmat this was something I still hadn't committed before commuting
22:48 lizmat now, it's time for some sleep
22:48 lizmat so good night, #perl6-dev!
23:29 Zoffix night
23:56 AlexDaniel joined #perl6-dev

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