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.org/rakudo/rakudo/builds/153129466 github.com/rakudo/rakudo/compare/1...7fb7d90549 | |||
buggable | ✓ [travis build above] One job failed due to the timeout. No other failures. | ||
MasterDuke | is anyone else seeing *really* long precomp times with a rakudo built today? compared to a rakudo built yesterday for example | 01:02 | |
Zoffix | t/04-nativecall/06-struct.t started failing for me, but only when run with `make test` :/ | 01:42 | |
gist.github.com/zoffixznet/9fa7ea1...bc7b76cda2 | 01:46 | ||
And these spectest fail (I believe this was already identified above; the modules stuff gist.github.com/zoffixznet/4cc3e21...b04ec681a0 ) | |||
And yet all pass if run by themselves (╯°□°)╯︵ ┻━┻ gist.github.com/zoffixznet/278dc7e...2e573fa4ec | 01:48 | ||
REPL breakage is by github.com/rakudo/rakudo/commit/be...0c8b42eec0 | 01:57 | ||
Trying to figure out the fix. | |||
Well, I think I have a fix but I've no idea why it worked before :/ | 02:28 | ||
The fix being removing this reset: github.com/rakudo/rakudo/commit/be...de1a04R390 | |||
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:02 | ||
.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: rt.perl.org/rt3//Public/Bug/Displa...?id=128973 | ||
yoleaux2 | Zoffix: I'll pass your message to lizmat. | ||
Zoffix | yoleaux2, botsnack | 03:17 | |
synopsebot6 | om nom nom | ||
Zoffix | Hey! That's just rude, synopsebot6! | ||
Zoffix hibernates | |||
dalek | ast: da7a590 | (Zoffix Znet)++ | S19-command-line/repl.t: Re-fudge tests for RT#127933 The unfudging happened due to passing TODOs, however, that pass happened due to RT#128973, which merely shadowed this bug. |
03:25 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127933 | ||
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128973 | |||
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 :-( | ||
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:42 | |
So there's two different precomp files for Grammar.pm which then collide. | 07:43 | ||
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:47 | ||
But it's hard to know the implications :/ And harder to test as the error is so much depending on timing. | 07:52 | ||
[Tux] | test FAIL again. will have a look later | 07:55 | |
nine | And I still get a flapping S11-modules/require.rakudo.moar :/ | 08:11 | |
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? | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128973 | ||
dalek | kudo/nom: 643c0f9 | lizmat++ | src/core/REPL.pm: Revert "Make the REPL catch CONTROL-c when executing" This reverts commit be7ce041a800a9b3f4b532b84583ce0c8b42eec0. No time to fix regression of losing defined variables now. Will have to wait until after the release. |
08:20 | |
nine | Ok, nested.t failed again. So my "fix" didn't actually work :/ | 08:25 | |
But it also doesn't seem to be the same issue. The test runs just find when run individually | 08:26 | ||
lizmat | nine: am about to start commuting to Cluj | 08:32 | |
it's gonna take a few days where I'll be mostly offline | |||
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! | ||
lizmat | DrForr: working on it :-) | ||
nine | lizmat: ok. Have fun! See you in Cluj :) | ||
lizmat | commuting& | ||
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. | 08:55 | |
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Revert "Make the REPL catch CONTROL-c when executing" | 09:15 | |
travis-ci.org/rakudo/rakudo/builds/153202296 github.com/rakudo/rakudo/compare/e...3c0f902598 | |||
|Tux| | one out of every 3 test runs FAIL's, so it is very very hard to pinpoint what is failing | 09:55 | |
timotimo | oh crap | 09:59 | |
ItayAlmog | Should the compiler give error about accessing class attribute (has) at runtime or compilation? | 10:00 | |
jnthn | Can catch those at compile time | 10:01 | |
Though not until class composition time (on the closing curly) | |||
Due to roles | |||
timotimo | GTK::Simple is now incredibly slow to start up and to compile and install | ||
ItayAlmog | Yeah, But how can I know if you are calling a defined type at compile time ? | 10:03 | |
jnthn | "calling a defined type"? | 10:09 | |
nine | Looks like we'll have to revert 848add944fe6de9090f0 and 7d804663db8fdd331 for now :/ | 10:10 | |
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. | ||
So for right now It will do the check at compile time :\ | 10:12 | ||
at runtime* | 10:13 | ||
jnthn | Can you give an example? | ||
m: class C { has $!x; method getX() { $!xx } } | |||
camelia | rakudo-moar 643c0f: OUTPUT«===SORRY!=== Error while compiling <tmp>Attribute $!xx not declared in class Cat <tmp>:1------> ss C { has $!x; method getX() { $!xx } }⏏<EOL>» | ||
jnthn | Do you meant that kind of error (which is compile time)? | ||
ItayAlmog | no, one sec | ||
|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() | ||
|Tux| | csv-ip5xs 9.905 | ||
test 15.093 | |||
test-t 7.249 | |||
csv-parser 16.534 | |||
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 …» | ||
ItayAlmog | m: class T { has $x; method setX() { $x++ }; }; T.setX() | ||
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» | ||
jnthn | Oh, *that* one is runtime | ||
ItayAlmog | ok : | ||
jnthn | Though theoretically possible at compile time in simple cases like that one. | 10:15 | |
ItayAlmog | sorry I didn't explained the problem well :) | ||
Yeah, in theory it can make these simple tests to help the user yeah, So runtime it is :) | 10:16 | ||
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 | |||
timotimo, MasterDuke also was reporting slowness in modules last night | 10:32 | ||
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 :) | ||
nine | timotimo: Does reverting 848add944fe6de9090f0 and 7d804663db8fdd331 help with your performance issue? | ||
masak | ItayAlmog: suggestion: to always put in the twigils for clarity, like `has $!x;` or `has $.x;` | 11:17 | |
ItayAlmog | ok :) | 11:29 | |
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» | ||
ItayAlmog | m: class P { has $.x = 5; }; class T is P {}; T.new.x | ||
camelia | ( no output ) | ||
ItayAlmog | m: class P { has $.x = 5; }; class T is P {}; say T.new.x | 11:33 | |
camelia | rakudo-moar 643c0f: OUTPUT«5» | ||
unmatched} | *sigh* trying to use Atom over sshfs over slow network is rather painful. | 12:21 | |
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 :) | ||
unmatched} | Maybe I can force myself to like it somehow | 12:23 | |
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:25 | |
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:26 | |
dalek | ast: 2d3fa13 | (Zoffix Znet)++ | S19-command-line/repl.t: Declared variables must persist across multiple lines of input RT#128973 |
12:27 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128973 | ||
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:41 | |
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:51 | |
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:52 | ||
unmatched} | yeah, but I don't want to read thousand pages of information just to learn how to configure my editor :) | 12:53 | |
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 | ||
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 | ||
lucs | :) | ||
arnsholt | ShimmerFairy: stty stop undef # =) | 12:55 | |
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? | ||
mst | ShimmerFairy: ZZ | ||
arnsholt | I do that anyways, because it's super confusing when it happens | ||
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) | ||
arnsholt | I actually have my vim configured to handle ^A and ^E, since they're so ingrained from bash | ||
ShimmerFairy | mst: ZZ? | ||
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... | ||
unmatched} | s: Mu, "new", \() | ||
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 | ||
unmatched} | ugh, of course | ||
s: Any, "new", \() | |||
SourceBaby | unmatched}, Sauce is at github.com/rakudo/rakudo/blob/643c.../Mu.pm#L81 | ||
mst | ShimmerFairy: in vi/vim, in command mode, ZZ is save+exit | ||
unmatched} | ItayAlmog: ^^ that should be the sauce for it | 12:59 | |
mst | shorter than :wq<enter> | ||
ShimmerFairy | mst: oh? My "workflow" has always been i [typing stuff] ESC :wq ENTER | ||
mst | ShimmerFairy: ESC ZZ | ||
is equivalent | 13:00 | ||
nine | mst: that.....will require lots of training to adopt | ||
nine must have typed :wq<CR> a million times | |||
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) | ||
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 | ||
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:01 | |
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 | ||
less finger travel makes it a lot more comfortable | |||
lucs | mst: same here | ||
(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)) | ||
dalek | ast: 38f9743 | (Zoffix Znet)++ | packages/Test/Util.pm: Teach is_run_repl to take a Callable to test output streams A Regex can take you far enough, but it's cleaner to use a callable than a bunch of lookarounds when trying to test precise output without relying on user messages REPL displays on start up. |
||
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 | ||
lucs | (oops, not ctrl-h for backspace in Vim, but everywhere else) | ||
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 | ||
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 | ast: a69943d | (Zoffix Znet)++ | S19-command-line/repl.t: REPL must not re-execute previously entered code A potential fix for RT#128973 would've led to all of previously entered code to be stored in a variable and executed over and over, for each new line of input. This test can now catch such regressions. |
||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128973 | ||
DrForr | Or repurpose your capslock. Much shorter. | ||
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 | |
bear in mind I use ex-vi.sf.net/ out of choice | |||
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. | ||
mst: so command mode is a poor man's modifier keys? :P | 13:09 | ||
mst | or vice versa, once you're spending enough time in command mode :) | 13:11 | |
mst keeps playing with spacemacs | 13:15 | ||
I really like the amount of power emacs' command system has | |||
but modifier keys are just enraging after a while, I much prefer modal | |||
dalek | ast: 5bf61e3 | (Zoffix Znet)++ | S19-command-line/repl.t: Update factual information in the comment |
13:16 | |
mst | (also, I want an option for a scriptable editor, and oh gods vimscript no) | ||
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. | ||
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:17 | ||
ilmari | mst: evil-mode? | 13:27 | |
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 | ||
ilmari | ah | ||
mst | that's why I'm playing from there | ||
ilmari | ShimmerFairy: I think was working on porting emacs to guile, which has both elisp and scheme frontends | 13:29 | |
s/was/someone $&/ | |||
ah: www.emacswiki.org/emacs/GuileEmacs | 13:30 | ||
ooh, it also has ECMAScript and WIP support for Lua | |||
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) | ||
ilmari | github.com/NalaGinrut/guile-lua-rebirth # seems to be the lua frontend, and has seen recent development | 13:35 | |
ShimmerFairy | .oO(Maybe also NQPmacs, for similar multiple-language support!) |
13:36 | |
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 | |
* It is not parsing code! I create the AST manually :\ | |||
unmatched} | Nice | 13:58 | |
"> Tried to read() on a socket from outside its originating thread" | 14:37 | ||
And so ends my "fix" for REPL :P | |||
Which was this: gist.github.com/zoffixznet/2d23b81...4078f22e5a | 14:48 | ||
And the message is basically from: await start get | |||
No idea how to proceed next or how such proceedal will interact with Readline/Linenoise | 14:49 | ||
( full src/core/REPL.pm with my changes, since it's easier to see than diff gist.github.com/zoffixznet/872a809...f1ba2d3adf ) | 14:50 | ||
I guess this is the perfect excuse to learn about contexts and try to fix lizmat's original fix. | 14:58 | ||
To the learning machine! | |||
nine | unmatched}: might be fixing the context thingy will be a lot easier | 15:00 | |
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 | |
and spamming the screen | |||
hoelzro | unmatched}: is your REPL work in a branch? | 15:31 | |
hoelzro needs to catch up on the recent happenings in REPL-land | 15:32 | ||
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: github.com/rakudo/rakudo/commit/be...0c8b42eec0 | 15:35 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128900 | ||
unmatched} | (the diff above is all I got for my attempt) | 15:36 | |
I mean hoelzro | |||
Dunno why I decided to talk to myself :P | |||
jdv79 | jnthn, unmatched}: thanks for the bug work | 15:40 | |
hoelzro | unmatched}: ok, thanks for looking at that! | 15:44 | |
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:45 | ||
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:46 | ||
unmatched} | hoelzro: yeah, the revert fixed the blocker. | 15:47 | |
hoelzro | ok, thank you for dealing with all that! | ||
unmatched} | It was lizmat who took care of it :) | ||
hoelzro | lizmat++ | ||
and unmatched}++ for getting involved =) | |||
unmatched}++ a lot for lots of work and blog posts lately, for that matter | |||
unmatched} | .oO( how crazy is it to use Proc::Async with $*EXECUTABLE to work around no-thread-killing limitation.... ) |
17:35 | |
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:42 | |
ugexe | nine: github.com/rakudo/rakudo/pull/837 related to your $!id PRs | 17:45 | |
nine | ugexe: just saw it. Looks cool :) Have you by any chance benchmarked it? | 17:48 | |
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:52 | |
nine | I have no intuition about Perl 6 performance at all. But then I wonder if anyone really has. | 17:53 | |
dalek | kudo/nom: c405ccd | ugexe++ | src/core/ (3 files): Implement Rakudo::Internals.DIR-RECURSE Directory recursion is used in at least 2 internal locations, and this aims to consolidate that behavior |
17:55 | |
kudo/nom: 92d5e76 | niner++ | src/core/ (3 files): Merge pull request #837 from ugexe/internals-recursive-dir Implement Rakudo::Internals.DIR-RECURSE |
|||
unmatched} | Well. My crazy REPL method failed. | 18:06 | |
Time to dial up the insanity | |||
unmatched} tries to make a Proc::Async-based proof of concept | |||
Could end up being a good Perl 6 async article if I manage to succeed | 18:07 | ||
nine | Kinda sucks that slurp unconditionally throws exceptions on failure to open :/ | 18:13 | |
well, there's still slurp-rest | 18:15 | ||
ugexe: I dislike a bit that DIR-RECURSE returns strings instead of IO::Paths. I have to .IO them again. Seems wasteful. | 18:17 | ||
ugexe | nine: yeah. i did strings because the other path related methods in Rakudo::Internals return strings | 18:22 | |
no other reason | |||
unmatched} shelves the idea | 18:24 | ||
nine | ugexe: oh, and there's now: Too few positionals passed; expected 2 arguments but got 0 | 18:25 | |
on the reduce in case we don't find any files | |||
unmatched} | Gonna put it on a very far back burner, so if anyone wants to give rt.perl.org/Ticket/Display.html?id=128900 a go, you're welcome to :) | ||
ugexe | nine: ah crap. i even remember thinking of the cleanest way to implement that check first | 18:28 | |
dalek | kudo/nom: 9aef5c3 | (Zoffix Znet)++ | docs/ChangeLog: Remove REPL ^C from Changelog The original fix for RT#128900 ( be7ce041a80 ) was reverted ( 643c0f9 ), so the feature won't be present in this release. |
18:29 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128900 | ||
nine | ugexe: I replaced the reduce by nqp::sha1([~] grep ...) | ||
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: gist.github.com/zoffixznet/3012637...d94348dfd7 | 18:30 | |
brrt | hmm, oh you can | 18:31 | |
you need a bit of difficulty though | |||
unmatched} | brrt: how? | 18:32 | |
brrt | okay, the second thread is waiting on the Proc::Async right? | ||
kill the Proc::Async | |||
unmatched} | brrt: no, there's no Proc::Async involved. That was my third idea, but I kinda ran out of steam :) | ||
brrt | hmmm | ||
okay, still kill the child process | |||
unmatched} | How? | 18:33 | |
ugexe | nine: ah yeah thats probably it. a shame though, always nice to use a grep/map/reduce combo transform | ||
unmatched} | Basically, it's essentially this: start { signal(SIGINT).tap: { ... }; loop {} } | ||
What do I put inside the signal tap to make that start {} block end; considering I can't put anything inside that loop {} | |||
brrt | you need two things | 18:34 | |
a): to communicate with loop and tell it that it should stop | |||
or in other words, a shared (and locked) $is_running | 18:35 | ||
or something like that | |||
nine | Failed to stat file: no such file or directory | ||
This is becoming harder and harder :/ | |||
brrt | a select on a 'pleaseCloseMe' and whatever else channel is equivalent | ||
nine misses working with databases and transactions | |||
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. | ||
brrt | b): a way to unbreak the waiting inside the loop | ||
well, alright, what are you waiting for in the loop? | 18:36 | ||
oh, right, i get it | |||
i'm thinking of a forking shell | |||
hmmm | |||
well, the low level api to that, in posix, is pthread_signal or something like that | 18:37 | ||
don't we expose that, i wonder | |||
there are a bunch of things we can set to stop a thread for GC, although, you don't really want that mechanism | 18:39 | ||
and, i think pthread_signal() is not the right thing (It's only for condition variables anyway) | 18:40 | ||
dalek | kudo/nom: e039eb9 | niner++ | src/core/CompUnit/Repository/FileSystem.pm: Fix spectest failures caused by changing the repo during compilation S10-packages/precompilation.t actually writes files into t/spec/packages. When this happens between nested.t precompiling A.pm and B.pm the t/spec/packages FileSystem repository's id changes. This id is included in the precomp ids. Therefor when compiling B.pm, we calculate a different precomp id for Grammar.pm leading to collision on load. This just takes commit 22e46b56a2451bb5836ec0100244b59360f59c0c further by completely removing an obsolete mechanism. |
18:42 | |
kudo/nom: bc0293e | niner++ | src/core/CompUnit/Repository/FileSystem.pm: Fix spurious spectest failures caused by ephemeral files Fix spurious "Failed to stat file" errors in massively parallel spectests If between the call to dir() and the stat the file vanishes, we died with an "Failed to stat file: no such file or directory" error. Make that non-fatal as we use the stat result for filtering anyway and files that don't exist anymore should definitely be filtered out. |
|||
nine | Finally a chance to use the word ephemeral ;) | 18:43 | |
ugexe: the "Failed to stat file" error is in this line: @paths.append( dir($path, :$test) ) if Rakudo::Internals.FILETEST-D($path); | 18:53 | ||
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:55 | |
nine | It's tricky. The file may as well disappear between the FILETEST-E and FILETEST-D | 18:56 | |
ugexe | ugh | 18:57 | |
unmatched} | Doesn't -D imply -E? | ||
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. | ||
unmatched} | I get a whole bunch of failures in spectest, just running my first TEST_JOBS=30 run from HEAD | 18:59 | |
ugexe | wouldnt this theoretically affect regular calls to dir() in certain situations as well then? | 19:00 | |
nine | of course | ||
unmatched} | Here are the failures: gist.github.com/zoffixznet/13fbf2c...bd43e5f872 | ||
All of them are "Parse errors: No plan found in TAP output" | |||
That's a TEST_JOBS=30 make stresstest | 19:01 | ||
nine | unmatched}: with bc0293ec87e13d48f0d6df9ae8461b801a2ae8b3 applied? | ||
unmatched} | Yeah | 19:03 | |
lemme nuke it and fetch it and build from scratch | |||
nine | unmatched}: TEST_JOBS=30 make stresstest completed successfully here. Running again with TEST_JOBS=100 | 19:07 | |
unmatched} | (FWIW, I'm doing it on a 24-core box) | 19:08 | |
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:09 | |
unmatched} | nine: still failures, though if I `make` files individually they seem to pass: gist.github.com/zoffixznet/2b862a3...2fbe44e36e | 19:13 | |
nine: here's the full build/test log: gist.github.com/zoffixznet/2fe90d3...1cfabbb1e3 | 19:14 | ||
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 | |
That should give us some error message to work with. | |||
Doing the same for the other failed tests will increase chances of catching something. | 19:16 | ||
unmatched} | nine: "failed to stat file" (at the end of the output) gist.github.com/zoffixznet/3685af2...d8140e9232 | 19:19 | |
nine: here's for t/spec/S10-packages/use-with-class.t gist.github.com/zoffixznet/0b0a758...6035eed52f | 19:22 | ||
nine | Ok, so it is the same issue after all | 19:24 | |
unmatched} | here's t/spec/S11-modules/importing.t gist.github.com/zoffixznet/5406ce9...ad98408338 | ||
unmatched} stops; let me know if you need it for the rest of the files :) | |||
nine | Maybe like this? @paths.append( dir($path, :$test) ) if try Rakudo::Internals.FILETEST-D($path); | 19:26 | |
unmatched}: thanks! Took me a while to respond as I had to finish mopping the floor | 19:27 | ||
nine | With this ^^^ I cannot reproduce any failures at all anymore. | 19:56 | |
unmatched}: can you re-test please? | |||
unmatched} | Yeah, in about an hour (communiting atm) | 20:02 | |
nine | ok | 20:03 | |
Btw jnthn++ # having stable spectests is just fantastic when debugging new flappers! | 20:04 | ||
Though I did just get a failure in t/spec/S17-supply/wait.t | |||
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:05 | ||
Yes, reproducible. | 20:09 | ||
dalek | ast: 3615150 | niner++ | S17-supply/wait.t: Fix race in S17-supply/wait.t The started thread may have been sleeping for quite a while before we started counting the time. Could have led to occasional failures of "did we wait long enough?" |
20:12 | |
Zoffix | nine++ did stresstest with TEST_JOBS=30, 50, 100 All PASS on all runs. | 21:02 | |
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: gist.github.com/zoffixznet/aa0748f...beb41fce01 | |||
s/some/so/; | 21:03 | ||
Zoffix does TEST_JOBS=10000 make stresstest just for fun :P | 21:08 | ||
Same failures as with 1000 jobs. Timing based tests: gist.github.com/zoffixznet/b6b556e...cbe65fef66 | 21:15 | ||
nine | Cool! Thanks for testing ;) | 21:29 | |
lizmat | . | 22:33 | |
.tell nine spectest clear! :-) | |||
yoleaux2 | lizmat: I'll pass your message to nine. | ||
timotimo | great! | 22:35 | |
dalek | kudo/nom: 1b898c8 | lizmat++ | src/core/Mu.pm: Another fix for RT #128931 Basically, make it impossible for an Int:D to mimic an Int:U.WHICH |
22:46 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128931 | ||
lizmat | this was something I still hadn't committed before commuting | 22:48 | |
now, it's time for some sleep | |||
so good night, #perl6-dev! | |||
Zoffix | night | 23:29 |