Zoffix | ZofBot: tell me things | 00:00 | |
ZofBot | Zoffix, The Party did not permit divorce, but it rather encouraged separation in cases where there were no children | ||
Geth | nqp: e0bd0ec664 | (Zoffix Znet)++ (committed using GitHub Web editor) | docs/ops.markdown Fix eqat description It doesn't appear to default to zero and needs it explicitly specified. |
00:14 | |
MasterDuke | Zoffix: i read that to mean the return value. are you thinking of $pos? | 00:32 | |
Zoffix | Oh, I didn't even read the start of that sentence | 00:34 | |
Geth | nqp: 129d4b8aff | (Zoffix Znet)++ (committed using GitHub Web editor) | docs/ops.markdown Fix eqat description; MasterDuke++ |
||
MasterDuke | heh, Zoffix++, that is clearer | 00:35 | |
AlexDaniel` | samcv++ | 03:12 | |
ok, OO::Actors is a really weird one, but the problem is in the module itself | 03:59 | ||
so it does $*SCHEDULER.cue(stuff) hundreds of times, where each “stuff” has an infinite loop | 04:00 | ||
and that infinite loop never ends, never sleeps, and never blocks on anything | |||
so this is a non-issue and I hope nobody is using the module :) | 04:02 | ||
greppable6: OO\:\:Actors | 04:10 | ||
greppable6 | AlexDaniel`, gist.github.com/5c11d5a188c5e6fc52...01fa5ffd0c | ||
AlexDaniel` | anyway, feel free to discuss: github.com/jnthn/oo-actors/issues/6 | 04:11 | |
.oO( NEXT!! ) |
|||
greppable6: ZOFFLOP | 04:40 | ||
greppable6 | AlexDaniel`, Found nothing! | ||
AlexDaniel` | ehh | ||
ah | |||
quotable6: ZOFFLOP | |||
quotable6 | AlexDaniel`, OK, working on it! This may take up to three minutes (4412528 messages to process) | ||
AlexDaniel`, Found nothing! | |||
AlexDaniel` | ehh | ||
[Tux] | This is Rakudo version 2017.09-490-g3f595acfb built on MoarVM version 2017.09.1-614-g19523568 | 06:10 | |
csv-ip5xs 1.183 - 1.184 | |||
test 11.914 - 12.020 | |||
test-t 3.122 - 3.173 | |||
csv-parser 11.921 - 12.367 | |||
AlexDaniel` | hmmm maybe WebSocket has issues because it is using IO::Socket::INET instead of IO::Socket::Async | 06:22 | |
OK, I see some stability issue | 07:41 | ||
found it when I was digging into RT #132287 | 07:42 | ||
synopsebot | RT#132287 [open]: rt.perl.org/Ticket/Display.html?id=132287 [REGRESSION][CONC] stall/block in async heavy code | ||
AlexDaniel` | the ticket itself is a bit weird because it seems to be doing concurrent access to %c, maybe | ||
but the problem is that it hangs on qqx{} | |||
and I can hang it on qqx without any of that code | |||
it'll take a little bit for me to bisect it, so more info later | 07:43 | ||
*but* I don't see that issue on 2017.09 | |||
or at least right now I don't | 07:44 | ||
lizmat | Files=1229, Tests=75768, 315 wallclock secs (14.68 usr 5.25 sys + 2180.70 cusr 212.04 csys = 2412.67 CPU) | 07:47 | |
AlexDaniel` | lizmat: do you know what files exactly were hanging during the spectest? | 08:13 | |
lizmat | I'm afraid not :-( | 08:36 | |
AlexDaniel` | well, yeah, it'll take some time to bisect | 09:33 | |
the problem that I'm seeing is that this stuff: | 09:34 | ||
await (^5).map({start { say qqx{echo -n foo $_} } }) | |||
dies or hangs, sometimes | |||
lizmat | :-( | ||
AlexDaniel` | I thought that it is a golfed version of this: RT #132287 | ||
synopsebot | RT#132287 [open]: rt.perl.org/Ticket/Display.html?id=132287 [REGRESSION][CONC] stall/block in async heavy code | ||
AlexDaniel` | but I can't really reproduce the issue right after the merge of better-sched | 09:35 | |
and IMO this is the kind of issue we don't want to have in a release | |||
lizmat | but, wasn't this issue already in previous release, and it is now *less* manifest ? | 09:36 | |
AlexDaniel` | I couldn't reproduce it on 2017.09 | 09:37 | |
but I need to double check it | |||
stmuk | Does this only affect v6.d.PREVIEW? | ||
AlexDaniel` | no, “use v6.d.PREVIEW” is not needed to reproduce it | 09:39 | |
AlexDaniel` is trying again on 2017.09 | |||
lizmat | re using phasers in hypered/raced blocks: I would propose setting a $*BATCH dynamic variable if running inside a batch | 09:41 | |
possibly this could have the batch number and maybe some other information | |||
that way we wouldn't need any new phasers | 09:42 | ||
and could code inside a phaser decide to do something special if $*BATCH is set, or not | 09:43 | ||
AlexDaniel` | This representation (Uninstantiable) does not support elems (for type (null)) | ||
lizmat | m: use nqp; nqp::null.elems | ||
camelia | Cannot call method 'elems' on a null object in block <unit> at <tmp> line 1 |
||
AlexDaniel` | OK! False alarm then | ||
lizmat | hmmm | ||
AlexDaniel` | SNAFU. | ||
lizmat | m: use nqp; nqp::elems(nqp::null) | ||
camelia | This representation (Null) does not support elems (for type VMNull) in block <unit> at <tmp> line 1 |
09:44 | |
AlexDaniel` | that's on 2017.09 | ||
lizmat | m: use nqp; nqp::elems(Mu but Ininstantiable) | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared name: Ininstantiable used at line 1 |
||
AlexDaniel` | took a bit longer tho, or maybe it depends on system load or whatever | ||
lizmat | m: use nqp; nqp::elems(Mu but Uninstantiable) | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared name: Uninstantiable used at line 1 |
||
lizmat | hmmm | ||
AlexDaniel` | buggable: tags | 09:45 | |
buggable | AlexDaniel`, Total: 1630; 6.D: 2; 9999: 9; @LARRY: 28; ANNOYING: 8; BOGUSTEST: 1; BOOTSTRAP: 4; BUG: 588; BUILD: 12; CONC: 39; DOCS: 1; EXOTICTEST: 4; FLAP: 1; GLR: 3; IO: 19; JVM: 48; LHF: 7; LTA: 178; MATH: 6; META: 2; MOAR: 2; MOLD: 233; NATIVECALL: 21; NYI: 58; OO: 13; OPTIMIZER: 8; OSX: 2; PARSER: 5; PERF: 27; PERFTEST: 1; POD: 19; PRECOMP: | ||
AlexDaniel`, 15; REGEX: 46; REGRESSION: 38; REPL: 6; RFC: 61; RT: 2; SECURITY: 2; SEGV: 30; SINK: 1; SITE: 1; SPESH: 1; STAR: 7; TESTCOMMITTED: 12; TESTNEEDED: 38; TODO: 13; UNI: 27; UNTAGGED: 284; WEIRD: 2; WINDOWS: 4; See fail.rakudo.party/ for details | |||
AlexDaniel` | This type (Nil+{Mu::Suggestion[Str]}) does not support elems | 09:47 | |
really weird errors coming out of this :) | |||
AlexDaniel` rakudobugs | |||
m: say 42 | 09:52 | ||
camelia | 42 | ||
AlexDaniel` | alright, so there it goes for RT #132287: rt.perl.org/Ticket/Display.html?id...xn-1501863 | 10:05 | |
synopsebot | RT#132287 [open]: rt.perl.org/Ticket/Display.html?id=132287 [REGRESSION][CONC] stall/block in async heavy code | ||
AlexDaniel` | now, OO::Actors is not our problem, and Test::Scheduler creates its own scheduler so I guess it can be fixed in the module itself | 10:07 | |
the only question left is about WebSocket module | 10:08 | ||
I tried running the example and it does not seem to work, so it's not just an issue with tests | |||
or so it seems | |||
samcv: are you online? :) | 10:26 | ||
Zoffix | oh ffs | ||
You brought annoying label to github too? | |||
AlexDaniel` | Zoffix: as I already mentioned, you can rename it to something better | 10:27 | |
(or did I mention it? I guess I did) | |||
Zoffix | AlexDaniel`: I have no idea what the fuck "annoying" is meant to indicate, so I don't know what something better is | 10:29 | |
AlexDaniel` | .hug Zoffix | 10:30 | |
huggable hugs Zoffix | |||
pmurias | m: use Test;my regex single { o | k | e }; ok("bookkeeper" ~~ m/<single> ($<single>)/, 'Named backref'); | ||
camelia | not ok 1 - Named backref # Failed test 'Named backref' # at <tmp> line 1 |
||
pmurias | ^^ that's marked as dubious test | ||
AlexDaniel` | Zoffix: I guess rt.perl.org/Ticket/Display.html?id...xn-1496218 is not good enough to explain the purpose? | 10:31 | |
samcv | AlexDaniel`, i am for a second. was sleeping but woke up | ||
yoleaux | 05:09Z <brrt> samcv: where should i write it? in the repo? | ||
AlexDaniel` | samcv: oh ok, ping me later then | 10:32 | |
we'll get the release going I hope | |||
samcv | awesome. will ping you when i wake up for real | ||
pmurias | AlexDaniel`: to be fair I'm not sure what the label 'annoying' is meant to be? | ||
AlexDaniel` | pmurias: okay, what about the explanation linked above? Does not cut it? | 10:33 | |
it may be that we need more than one tag for things that have 「annoying」 tag right now | 10:40 | ||
pmurias | AlexDaniel`: so the label just means that the bug is super annoying to the person who tagged it? | 10:41 | |
AlexDaniel` | pmurias: oh, that's almost the right definition I think. It means that the bug is super annoying to anyone who stumbles upon it. | 10:43 | |
like, I didn't experience GH #1202 issue myself, so it's not annoying to me personally (but I tagged it). But I can totally imagine someone pulling his hair out because of this | 10:44 | ||
does it make sense? | |||
let's rename it to [hair-pulling] ? :) | 10:46 | ||
Geth | nqp: 6824c6aa89 | pmurias++ | 2 files [js] Implement regex node charrange with ignorecase |
10:50 | |
nqp: d2959ad4a4 | pmurias++ | 3 files [js] Matching literals with :m |
|||
nqp: 9be4f9ae84 | pmurias++ | src/vm/js/nqp-runtime/nfa.js [js] NFA matching for more things |
|||
AlexDaniel` | lizmat: any chance for a git bisect on macos for RT #132349 ? :) | 10:52 | |
synopsebot | RT#132349 [open]: rt.perl.org/Ticket/Display.html?id=132349 $*IN.getc not blocking on macOS | ||
AlexDaniel` | with ssh access to something macos-ish I can do it myself | 10:55 | |
lizmat | AlexDaniel`: I currently don't have a MacOS machine that's accessible from the outside :-( | 10:59 | |
timotimo | .o( it's the inside that counts ) | 11:00 | |
AlexDaniel` | m: say $*INITTIME | 11:08 | |
camelia | Instant:1508756941.119038 | ||
AlexDaniel` | c: HEAD say $*INITTIME | ||
committable6 | AlexDaniel`, gist.github.com/95c61343aa6e1c5f9f...f629f25b38 | ||
AlexDaniel` | “Deprecated since v2017.09.84.gb.02.da.4.d.1.a, will be removed with release v2017.08!” | 11:09 | |
ilmari | m: say $*INIT-INSTANT == INIT now | ||
camelia | False | ||
ilmari | m: say $*INIT-INSTANT; say INIT now | ||
camelia | Instant:1508757008.014608 Instant:1508757008.073634 |
||
timotimo | m: say $*INIT-INSTANT - INIT now | ||
camelia | -0.058967 | ||
lizmat | MoarVM panic: Heap corruption detected: pointer 0x10c02dde8 to past fromspace # whee, running code of github.com/rakudo/rakudo/issues/1202 | 11:10 | |
AlexDaniel` | why camelia prints no deprecation message? | ||
ilmari | I guess $*INIT-INSTANT gets initialised before any INIT phasers run | 11:11 | |
m: say INIT now - $*INIT-INSTANT | |||
camelia | 0.0590460 | ||
timotimo | AlexDaniel`: because it has RAKUDO_NO_DEPRECATIONS set in its environment | ||
lizmat | m: %*ENV<RAKUDO_NO_DEPRECATIONS> = 0; say $*INITTIME | ||
AlexDaniel` | oh | ||
camelia | Instant:1508757135.540318 Saw 1 occurrence of deprecated code. ================================================================================ $*INITTIME seen at: <tmp>, line 1 Deprecated since v2017.09.84.gb.02.da.4.d.1.a, will be remove… |
||
AlexDaniel` | so I am changing it to 2018.08, right? | 11:12 | |
timotimo | among other things because the ================================================================================ doesn't mix well with irc line length limits | ||
AlexDaniel` | or, I guess 2018.07 was mant | ||
meant* | |||
timotimo | how often do you have to run the qqx thing before it usually fails? | ||
AlexDaniel` | timotimo: it really depends. I don't know | 11:13 | |
but normally it fails within a minute | |||
Geth | rakudo/nom: 6af44f8d38 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm Use a lexical instead of a state var to prevent sinking This was one of the places where the code of github.com/rakudo/rakudo/issues/1202 was failing. Since we know that state variables have some racing issues and a state var was not needed here, change it to a lexical to reduce the surface of potential issues. |
11:14 | |
lizmat | running it with --ll-exception gives more info | 11:15 | |
fwiw, most of the issues appear to originate in ThreadPoolScheduler | |||
and looking at the code, I wouldn't be surprised if there are still some racing issues there | 11:16 | ||
Geth | rakudo/nom: bd6c6403e0 | (Aleks-Daniel Jakimenko-Aleksejev)++ | src/core/Instant.pm Fix deprecation date Definitely we cannot remove things from past releases. |
11:18 | |
lizmat | ok, I get the most fails now with "This type (Mu) does not support elems" | 11:23 | |
and this goes back to List.reify-until-lazy, where we first test for $!future.DEFINITE | 11:24 | ||
and only then do a nqp::elems($!future) | |||
timotimo | liz, do you know about the cross-thread-write log? | ||
lizmat | no | 11:25 | |
so $!future is being reset in some other thread (which happens if the list is exhausted) | |||
timotimo | it's got lots of false positives in it, but maybe it can figure out why between .DEFINITE and nqp::elems the value might change there | ||
lizmat | how do I activate that ? | ||
timotimo | set MVM_CROSS_THREAD_WRITE_LOG | 11:27 | |
in the env | |||
lizmat | I also wonder what jnthn's thinking was by making $!general-workers, $!timer-workers and $!affinity-workers HLL List objects | ||
rather than low level nqp::lists | 11:28 | ||
timotimo: activating that brings its own set of errors :-( | 11:29 | ||
moar(81961,0x700003374000) malloc: *** error for object 0x7ffda0479340: pointer being freed was not allocated | 11:30 | ||
or just segfault :-( | |||
timotimo | oh! | 11:31 | |
i suppose it just bitrotted :( | |||
i shall investigate briefly | |||
can't find that kind of error with valgrind | 11:32 | ||
OK, it happens without valgrind though | 11:33 | ||
so requires threading to "cooperate" | |||
lizmat | timotimo: do you know why jnthn used Lists for the worker arrays, rather than nqp::lists ? | ||
timotimo | no | 11:34 | |
probably because List is "good enough"? | |||
lizmat | hmmm.. well, in the comments he says that they're immutable | 11:35 | |
which makes me wonder how such a list can have a $!future | |||
timotimo | grmbl why is --asan broken on my system | 11:37 | |
a realclean helped | 11:42 | ||
patrickz | 'annoying' tag name bikeshedding: 'severe'. A bug with consequences you can't easily live with and without a simple workaround possible. NYIs are never severe. | 11:52 | |
AlexDaniel` | patrickz: I'm totally OK with that. “severe” word does not sound that severe to me, but it works | 11:55 | |
if there are no better suggestions I'll rename it to “severe” in a few hours | 11:56 | ||
timotimo | lizmat: you can get it to not crash by setting MVM_SPESH_BLOCKING and getting the patch i'll push to moar momentarily | 11:58 | |
pmurias | a few of the ones we have in RT don't seem that "severe" | ||
lizmat | timotimo++ | ||
timotimo: I think there's a basic flaw in using Lists for the $!xxx.workers attributes in ThreadPoolScheduler | 11:59 | ||
timotimo | there it is | ||
lizmat | the fails so far are all in .elems being called, and the $!future being obliterated | 12:00 | |
basically: Lists are not thread safe | |||
hmmm... it seems to fail most often when $!general-workers is null | 12:09 | ||
so could it be that the Scheduler object is being used before it has run its BUILDALL to completion ? | 12:10 | ||
Geth | rakudo/nom: 50be159f20 | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/create-release-announcement.pl6 Tiny improvements to announcement generation This gets the generation in line with my monkey patching for last announcements (no trailing whitespace, more unicode, and Perl 6 with nbsp). |
12:22 | |
rakudo/nom: 76017036aa | (Aleks-Daniel Jakimenko-Aleksejev)++ | docs/release_guide.pod Reflect actual date, claim next release |
12:28 | ||
AlexDaniel` | lizmat: hoping to release a bit later today, let me know when you're done :) | ||
getc issue on MacOS is a little bit worrying but there's not much I can do | 12:29 | ||
stmuk | AlexDaniel`: If you need a remote macOS shell I can probably set one up via SSH tunnels | 12:31 | |
AlexDaniel` | stmuk: that would be great | ||
stmuk: the first one from here will do: github.com/AlexDaniel.keys | 12:32 | ||
if your stuff does not support ed25519 then the other one is fine as well | |||
stmuk | OK probably take a few mins I'll msg you when done | 12:34 | |
AlexDaniel` | stmuk: thank you very much! | ||
stmuk | AlexDaniel`: whats your usual UNIX username? | 12:36 | |
AlexDaniel` | alex | ||
[Coke] | I'm in the middle of upgrading xcode but when that's done can test stuff out | 12:41 | |
AlexDaniel` | [Coke]: on macos you mean? It's more about bisecting (not just testing). I want to know what caused RT #132349 | 12:46 | |
synopsebot | RT#132349 [open]: rt.perl.org/Ticket/Display.html?id=132349 $*IN.getc not blocking on macOS | ||
[Coke] | sure, I can kick off a slow bisect once xcode is done. | 12:47 | |
Geth | nqp/master: 9 commits pushed by pmurias++
|
||
AlexDaniel` | [Coke]: that would be great | 12:48 | |
stmuk: not sure if I need that anymore ↑ | |||
Geth | rakudo/nom: 6f6e62ea02 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm Some ThreadPoolScheduler tweaks - make sure we can identify which .elems failed in stacktrace - use = instead of .= Lock like everywhere else - not sure about this one |
12:50 | |
AlexDaniel` | stmuk: but if you'd let me use it in the future then I do need it :) | 12:51 | |
[Coke]: you can probably use something like this to do it automatically: start { sleep 2; exit 1}; say $*IN.getc | 12:55 | ||
stmuk | AlexDaniel`: OK I'll pause that ... but give me a shout if you still need access | 12:56 | |
AlexDaniel` | stmuk: thank you! | ||
[Coke] | (started bisect, one down..) | 12:58 | |
AlexDaniel` | by the way, for anybody else reading: if you stumble across unbuildable stuff then use “git bisect skip”. If you're doing it automatically, then you have to “exit 125”. One way to test it is to check if perl6 executable exists after you run make, or you can use the exit code from make itself. | 13:02 | |
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Use a lexical instead of a state var to prevent sinking | 13:10 | |
travis-ci.org/rakudo/rakudo/builds/291486125 github.com/rakudo/rakudo/compare/3...f44f8d38a0 | |||
[Coke] | 5 steps remaining... | 13:20 | |
lizmat | AlexDaniel`: still tracing some stuff | 13:41 | |
AlexDaniel` | cool | ||
lizmat | bisectable6: class A { has $.a = 42; submethod BUILD() {} }; use nqp; dd nqp::getattr(A.new,A,q/$!a/) | 13:44 | |
bisectable6 | lizmat, On both starting points (old=2015.12 new=6f6e62e) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «Int $!a = 42» | |||
lizmat | so why is it documented that BUILD should take care of the default values as well? | 13:45 | |
[Coke] | last run... | 13:47 | |
(sorry, didn't automate, and am in meeting, so am hitting up arrow every few minutes.) | |||
oh. duh: gist.github.com/coke/071fd4d43ec79...1809e64a2c | 13:50 | ||
it's the commit with "getc" in the subject. :) | |||
AlexDaniel` | yeah but Jul 14 :) | 13:54 | |
[Coke]: thanks | |||
Zoffix | [Coke]: what does perl6 -e '$*IN.eof.say' give you? | 14:01 | |
lizmat | Zoffix: it gives True to me | 14:05 | |
Zoffix | That must be it then. Gives False to me | ||
[Coke] | same as liz, gives true on a recent rakudo | 14:13 | |
Zoffix | What about perl6 -e '$*IN.seek: 0, SeekFromCurrent' does this crash saying can't seek this handle? | 14:22 | |
[Coke] | no output | 14:23 | |
Zoffix | Aha! | 14:24 | |
ZOFVM: Files=1283, Tests=152772, 154 wallclock secs (21.15 usr 3.22 sys + 3311.70 cusr 170.37 csys = 3506.44 CPU) | 14:26 | ||
Geth | rakudo/nom: e70969e342 | (Zoffix Znet)++ | 2 files Use lexical instead of state var when we can Same reasoning as in github.com/rakudo/rakudo/commit/6a...6e33e4d89a |
14:27 | |
travis-ci | Rakudo build passed. Aleks-Daniel Jakimenko-Aleksejev 'Fix deprecation date | 14:30 | |
travis-ci.org/rakudo/rakudo/builds/291487729 github.com/rakudo/rakudo/compare/6...6c6403e083 | |||
Geth | rakudo/nom: 50324bb004 | (Elizabeth Mattijsen)++ | src/core/List.pm Threadsafe List.reify-until-lazy a bit This is a bandaid for the 2017.10 release. It fixes the most common place where github.com/rakudo/rakudo/issues/1202 goes awry. The result is fewer crashes, and if they crash, it's because MoarVM itself go thoroughly corrupted. |
14:36 | |
lizmat | AlexDaniel`: ^^^ concludes my search for now | ||
AlexDaniel` | lizmat: awesome, thanks | 14:37 | |
Zoffix | The macos $*IN.getc bug is likely on this line: github.com/MoarVM/MoarVM/blob/5d2e...ile.c#L171 don't got a macos so can't dump stuff to see what's in it. From answers above, on macos $*IN is seekable, and I'm guessing st_size is zero on that line and seek_pos is zero and the result is it thinks it reached EOF so it doesn't block to wait for a new char | 14:40 | |
Alternatively, the bug is that on macos $*IN is detected as seekable when it ain't (no idea about this stuff) | 14:41 | ||
[Coke] | Zoffix: doing a build with -g now, will try to get you a dump. | 14:49 | |
Zoffix | This tells me "NOT seekable" on Linux: glot.io/snippets/eutbl8qmkz | 14:54 | |
and IIRC basically the code used by MoarVM to figure out if handle is seekable | 14:55 | ||
[Coke] | STDIN IS: seekable | ||
Zoffix | Well, that's where the problem is at, I guess. | 14:56 | |
[Coke] | so do we just hardcode if stdin is seekable? | 14:57 | |
Zoffix | What do you mean hardcode? | ||
[Coke] | stackoverflow.com/questions/287604...x-vs-linux | ||
"if stdin, assume seek behavior is <blah>, regardless of what lseek says" | 14:58 | ||
Zoffix | "It appears to be a problem with OS X's standard library, even though this works with clang on Linux. It works on OS X using the Homebrew G++ 4.9." | 14:59 | |
yikes | |||
[Coke]: with <blah> being what? It could be both seekable and unseekable depending on what it was pointed to, can't it? | |||
[Coke] | no clue, just spitballing. | 15:00 | |
In any case, is reverting jnthn's commit ok? Or adding a version that is mac specific? (Since the old way worked) | 15:01 | ||
AlexDaniel` | what if it needs #include <unistd.h> ? | 15:03 | |
Zoffix | It's already included | 15:04 | |
AlexDaniel` | stackoverflow.com/questions/587254...k-return-0 | ||
ah right | |||
nvm | |||
Zoffix | [Coke]: reverting is kinda sweeping the problem under the rug. .eof would still be broken. This was all part of rework from async libuv stuff to sync stuff, so presumably inside libuv there's an answer for how to figure out EOF | 15:05 | |
Zoffix & | 15:09 | ||
lizmat | afk for a bit& | 15:22 | |
ugexe | note that windows had a similar problem, where we recently added a return -1 if ESPIPE in its platform specific MVM_lseek function. which was ok because like lseek its behavior is not defined for non file type descriptors. so maybe we should add that constraint to non-windows MVM_lseek as well | 15:48 | |
pmurias | bartolin: isn't p6bindattrinv meant for normal non-native attributes? | 15:59 | |
Zoffix | What about changing this github.com/MoarVM/MoarVM/blob/5d2e...ile.c#L171 to return statbuf.st_size == seek_pos || (statbuf.st_size == 0 && S_ISREG(statbuf.st_mode)) | 16:00 | |
'cause we already do stat call there | |||
Ah, wait no | 16:02 | ||
ugexe: how to do that? I googled and results say to do lseek to figure out if you're on a seekable device and another answer is to use S_ISREG macro, but that needs a stat call and that's expensive or something? | 16:09 | ||
ugexe | a naive solution may assume fd 0,1,2 are not seekable | 16:12 | |
Zoffix | That's too native, I think | 16:14 | |
$ perl6 -e '$*IN.readchars(3).say; $*IN.seek: 0, SeekFromBeginning; $*IN.slurp.say' < foo | |||
abc | |||
def | |||
.seek works fine when $*IN is a file | |||
ilmari | $ perl6 -e '$*OUT.say("wibble"); $*OUT.seek: 0, SeekFromBeginning; $*OUT.say("wat")' > wibble | 16:16 | |
$ cat wibble | |||
wat | |||
le | |||
ditto for $*OUT | |||
Zoffix | maybe special handling: use lseek, if it says fd is seekable and fd is 0, 1, 2, then do stat and check S_ISREG(statbuf.st_mode) | 16:18 | |
Zoffix & for a few hours | 16:19 | ||
ugexe | github.com/gdamore/less-fork/searc...&type= this shows `less` using lseek($, 1, $) to check if it is seekable, and then do a lseek($, 0, $) immediately afterwards if it is | 16:21 | |
so maybe in moarvm it should be doing an lseek($,1,$) instead of lseek($,0,$)? | 16:22 | ||
bartolin | pmurias: oh, I didn't know that. I was looking at that, because this code does not work on the jvm backend: github.com/rakudo/rakudo/blob/5032...Int.pm#L31 | 16:23 | |
lizmat | AlexDaniel`: are you still up for a release today ? If not, I think I have an idea on one of the underlying issues of github.com/rakudo/rakudo/issues/1202 | ||
AlexDaniel` | lizmat: go for it, I'll adjust accordingly :) | 16:24 | |
lizmat | the thing is that List.elems may not be a read-only action on a List | ||
and there's plenty of .elems on Lists in ThreadPoolScheduler outside of protected blocks :-( | 16:25 | ||
bartolin | m: use nqp; say nqp::p6bindattrinvres(Int.new,Int,q|$!value|, nqp::getattr(42,Int,q|$!value|)) ## fails with BadReferenceRuntimeException on jvm | 16:26 | |
camelia | 42 | ||
bartolin | pmurias: ^^ in BOOTSTRAP.nqp we define $!value as bigint | 16:27 | |
Zoffix | bartolin: FWIW that used to segfault on MoarVM | 16:32 | |
until recently | |||
m: use nqp; nqp::bindattr(Int.new,Int,q|$!value|, nqp::getattr(42,Int,q|$!value|)); | 16:33 | ||
camelia | ( no output ) | ||
Zoffix | m: use nqp; nqp::bindattr_i(Int.new,Int,q|$!value|, nqp::getattr_i(42,Int,q|$!value|));' | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unable to parse expression in single quotes; couldn't find final "'" (corresponding starter was at line 1) at <tmp>:1 ------> 3e|, nqp::getattr_i(42,Int,q|$!value|));'7⏏5<EOL> expecting … |
||
Zoffix | m: use nqp; nqp::bindattr_i(Int.new,Int,q|$!value|, nqp::getattr_i(42,Int,q|$!value|)); | ||
camelia | ( no output ) | ||
Zoffix | both seem to work for bigint vOv | ||
That was the fix for the segfault: github.com/MoarVM/MoarVM/commit/3b4b032984 | 16:35 | ||
m: use nqp; class Foo { has int $.x }; nqp::p6bindattrinvres(Foo.new, Foo, q|$!x|, my int $ = 42) | 16:40 | ||
camelia | P6opaque: representation mismatch when storing value (of type Int) to attribute (of type int) in block <unit> at <tmp> line 1 |
||
timotimo | you cannot use bindattr with native attributes | 16:41 | |
you need a bindattr_i equiv; we don't have that for p6bindattrinvres it seems | |||
but it'd be easy enough to implement, no need to touch moarvm even | |||
Zoffix | m: use nqp; class Foo { has int $.x = 42 }; nqp::p6bindattrinvres(Foo.new, Foo, q|$!x|, nqp::getattr(Foo.new, Foo, q|$!x|)).x.say | ||
camelia | 42 | ||
lizmat | afk for dinner& | 16:42 | |
timotimo | not sure how exactly that works :) :) | ||
Zoffix | bartolin: maybe Int.new should just be changed? | ||
Feels like the path of least resistance, since on moarvm p6bindattrinvres don't seem to be handling natives in all cases either | 16:43 | ||
timotimo: what's `bigint` is that considered native attribute or not? | 16:44 | ||
timotimo | where exactly are you seeing that? | 16:45 | |
Zoffix | Int's $!value attribute | ||
timotimo | ah | ||
i expect it's .. quite special indeed | |||
write access is usually done via boxing operations | 16:46 | ||
Zoffix | j: use nqp; nqp::bindattr_i(Int.bless,Int, q|$!value|, nqp::getattr_i(nqp::decont(42),Int, q|$!value|)) | ||
camelia | Error while reading '/home/camelia/p6eval-token': No such file or directory at /home/camelia/rakudo-j-inst/bin/eval-client.pl line 10. | ||
timotimo | and at the lowest level Int will behave like a bigint, i guess? | 16:47 | |
bartolin | Zoffix: your last evaluation gives: Attribute '$!value' is not a native int | ||
timotimo | m: use nqp; nqp::box_I(Int, Int.new(99)).perl.say; | ||
camelia | ===SORRY!=== No registered operation handler for 'box_I' |
||
Zoffix | m: use nqp; my $i := Int.bless; nqp::bindattr($i,Int, q|$!value|, nqp::getattr(nqp::decont(4200000000000000000000000000000000000000000000000000),Int, q|$!value|)); say $i | ||
camelia | 4200000000000000000000000000000000000000000000000000 | ||
timotimo | m: use nqp; nqp::add_I(0, Int.new(99)).perl.say; | 16:48 | |
camelia | ===SORRY!=== Arg count 2 doesn't equal required operand count 4 for op 'add_I' |
||
timotimo | m: use nqp; nqp::add_I(0, Int.new(99), Int).perl.say; | ||
camelia | 99 | ||
Zoffix | bartolin: what about my last one ^ | ||
timotimo | since we don't have box_I exposed, you can just do it like that and that'll have the effect you want | ||
bartolin | again a BadREferenceRuntimeException: Cannot access a native attribute as a reference attribute | ||
Zoffix | timotimo: that'd give me infinite loop tho. Is `Int.new` part necessary? | 16:49 | |
timotimo | no, that's the argument you're getting passed in | ||
this is about the Int:D case for Int.new, right? | |||
i mean Int.new(Int:U: Int:D) | |||
Zoffix | Yeah: github.com/rakudo/rakudo/blob/nom/...pm#L31-L32 | 16:50 | |
timotimo | i'd implement it based on add_I | ||
but not using Int literally in the add_I. use self instead, so it'll be subclassing friendly | |||
Zoffix | m: my $i := 42 but role Meows {}; use nqp; dd nqp::add_I(0, $i, Int) | 16:51 | |
camelia | 42 | ||
Zoffix | cool. Patch coming up | ||
timotimo | does that work on the jvm? | ||
j: my $i := 42 but role Meows {}; use nqp; dd nqp::add_I(0, $i, Int) | |||
camelia | Error while reading '/home/camelia/p6eval-token': No such file or directory at /home/camelia/rakudo-j-inst/bin/eval-client.pl line 10. | ||
timotimo | oh, yeah | ||
bartolin | that one gives back 42 | 16:52 | |
but this is a Exception again: 'use nqp; nqp::add_I(0, Int.new(99), Int).perl.say;' | |||
Zoffix | bartolin: 'cause that's got Int.new that has p6bindintvres | 16:53 | |
bartolin | oops, you're right | ||
Zoffix++ | |||
travis-ci | Rakudo build passed. Aleks-Daniel Jakimenko-Aleksejev 'Tiny improvements to announcement generation | 16:54 | |
travis-ci.org/rakudo/rakudo/builds/291513127 github.com/rakudo/rakudo/compare/b...be159f202a | |||
Zoffix | m: use nqp; for ^1000_000 { nqp::p6bindattrinvres(0, Int, q|$!value|, nqp::getattr(42, Int, q|$!value|)) }; say now - INIT now | 16:57 | |
camelia | 0. | ||
Zoffix | what's up with that output lol | 16:58 | |
m: use nqp; for ^1000_000 { nqp::p6bindattrinvres(100, Int, q|$!value|, nqp::getattr(42, Int, q|$!value|)) }; say now - INIT now | 16:59 | ||
camelia | 0.164588 | ||
Zoffix | m: use nqp; for ^1000_000 { nqp::p6bindattrinvres(0, Int, q|$!value|, nqp::getattr(42, Int, q|$!value|)) }; say now - INIT now | ||
camelia | 0. | ||
Zoffix | Ok, whatevs. Seems to be something about messing with 0's guts | ||
ZOFFLOP: t/spec/S11-modules/nested.t | 17:00 | ||
m: use Test; isnt 2.WHERE, Int.new(2).WHERE | 17:01 | ||
camelia | ok 1 - | ||
Zoffix | The nqp::add_I method fails this test | ||
"returns a new object (not a cached constant)" | |||
Zoffix tries to remember why that matters | |||
m: use nqp; my $orig := 2; my $new := nqp::add_I(0, $orig, Int); $new does role Meows {}; $orig.^name.say | 17:04 | ||
camelia | Int+{Meows} | ||
Zoffix | m: use nqp; my $orig := 2; my $new := Int.new: $orig; $new does role Meows {}; $orig.^name.say | 17:05 | |
camelia | Int | ||
Zoffix | m: use nqp; my int $orig = 2; my $new := Int.new: $orig; $new does role Meows {}; $orig.^name.say | 17:06 | |
camelia | Int+{Meows} | ||
Zoffix | Eh, it's a load of crap, I guess. | ||
the test | |||
Or is there a reliable way to get an uncached Int object? Basically, the idea is you could `Int.new: blah` and then mess with that object all you want without affecting all the other cached Int onstants in the entire codebase | 17:07 | ||
Geth | nqp: 0539f6bb77 | MasterDuke17++ (committed using GitHub Web editor) | docs/ops.markdown Correct isprime_I documentation |
17:08 | |
Zoffix | ^ the native int version about just does `box_i` which evidently reuses the cached cosntant | ||
m: use nqp; my int $orig = 2000; my $new := Int.new: $orig; $new does role Meows {}; $orig.^name.say | 17:09 | ||
camelia | Int | ||
Zoffix | m: use nqp; my $orig := 2; my $new := nqp::add_I(0, $orig, Int); $new does role Meows {}; $orig.^name.say; Rat.new(1, $orig).denominator.^name.say | 17:12 | |
camelia | Int+{Meows} Int |
||
Zoffix | Looks like there's a way to do it... | ||
m: use nqp; my int $orig = 2; my $new := nqp::div_I(nqp::decont($orig), 1, Int); $new does role Meows {}; $orig.^name.say; | 17:16 | ||
camelia | Int | ||
Zoffix | works.... kinda hackish, but works | 17:17 | |
ZofBot: it's alive! | 17:20 | ||
ZofBot | Zoffix, He exists | ||
Geth | rakudo/nom: e4a5bb17c9 | (Zoffix Znet)++ | src/core/Int.pm Improve/Fix Int.new - Don't use p6bindattrinvres with `bigint` attributes; it's questionable if it should work and fails on JVM (part of #1201) - Make Int.new: int candidate properly give a new object instead of a cached constant |
17:34 | |
roast: c0aa93b717 | (Zoffix Znet)++ | S32-num/int.t Improve tests for Int.new not returning cached constant - Test the more direct effects instead of poking at memory addresses - Also cover Int.new(int) and Int.new(Str) candidates Rakudo fix: github.com/rakudo/rakudo/commit/e4a5bb17c9 |
17:36 | ||
bartolin builds a new r-j | 17:38 | ||
Zoffix & | 17:43 | ||
Geth | roast: bd0c59de19 | usev6++ | 2 files [jvm] Run some tests using doesn't-hang |
18:16 | |
lizmat | AlexDaniel`: I don't think I'll be able to get to the github.com/rakudo/rakudo/issues/1202 issue for the next 16 hours or so :-( | 18:19 | |
AlexDaniel` | lizmat: ok, so let's decide what we are going to do with it. Thing is, we've had this problem for a while so it's not like we *have* to fix it now. At the same time, samcv is still not here and I'm going to bed soon. | 18:21 | |
lizmat: so if you want to get it into the release, we can release tomorrow | |||
lizmat | I'll be busy with the P6W for the next 3 hours or so | 18:22 | |
and then I'll be ready for bed as well | |||
and tomorrow morning I won't be able to do much until 12:30 at least | |||
AlexDaniel` | well tomorrow is like, in 24 hours :) | ||
lizmat | true, ok, let's take it there :-) | ||
AlexDaniel` | any objections from others? | 18:23 | |
Zoffix | nope | ||
AlexDaniel` | as far as I'm concerned, there is no need to rush | ||
.tell samcv See irclog.perlgeek.de/perl6-dev/2017-..._15342542. Basically, we'll be delaying it for a bit more. There is RT #132349 which would be nice to have fixed, so probably no need to release moar ahead of time (although it's unclear if we'll get getc issue fixed or not). In any case, see you tomorrow o/ | 18:28 | ||
yoleaux | AlexDaniel`: I'll pass your message to samcv. | ||
synopsebot | RT#132349 [open]: rt.perl.org/Ticket/Display.html?id=132349 [REGRESSION] $*IN.getc not blocking on macOS | ||
samcv | thanks AlexDaniel`. i'm working on some of the changelog entries i hadn't yet added right now | ||
yoleaux | 18:28Z <AlexDaniel`> samcv: See irclog.perlgeek.de/perl6-dev/2017-..._15342542. Basically, we'll be delaying it for a bit more. There is RT #132349 which would be nice to have fixed, so probably no need to release moar ahead of time (although it's unclear if we'll get getc issue fixed or not). In any case, see you tomorrow o/ | ||
AlexDaniel` | samcv: by the way, what was your timezone? | 18:29 | |
samcv | -8 | ||
or maybe it's -7 depending | |||
if it's daylight savings | |||
so it's 11:30am right now | 18:30 | ||
AlexDaniel` | 10 hour difference :) | ||
ok good | 18:31 | ||
samcv | if we can get that bug fixed in that release that'd be great as well | ||
AlexDaniel` | yes | ||
Zoffix | I'll take a crack at $*IN.getc tonight... | 18:32 | |
AlexDaniel` | awesome. Zoffix++ | ||
Zoffix | I guess it's time to figure out where to get a macos shell :) | ||
AlexDaniel` | stmuk: ↑ | ||
Zoffix | ZofBot: macos tacos | 18:33 | |
ZofBot | Zoffix, Timings are more stable on my home machine. Must have some high-CPU browser tabs open at work. | ||
AlexDaniel` | stmuk: one shell for Zoffix, please :) | ||
samcv | you still aren't allowed to virtualize macos right? | 18:34 | |
AlexDaniel` | ZofBot: what work? | ||
ZofBot | AlexDaniel`, Tonight was one of his nights at the Community Centre | ||
moritz | samcv: I think not | 18:35 | |
samcv | i think you can if the host is macos though | ||
per the EULA | |||
moritz | and don't rent the virtual copy out to anybody, I assume? | 18:36 | |
ugexe | i used macincloud.com before getting mac hardware | ||
Zoffix | stmuk: these two keys, if possible: gist.github.com/zoffixznet/76a79a0...c35ee54927 | 18:44 | |
travis-ci | Rakudo build passed. Aleks-Daniel Jakimenko-Aleksejev 'Reflect actual date, claim next release' | 19:11 | |
travis-ci.org/rakudo/rakudo/builds/291515551 github.com/rakudo/rakudo/compare/5...017036aaa5 | |||
lizmat | grrr... it looks like my last changes made hyper/racing only use a single worker :-( | 19:12 | |
bisecting now | 19:13 | ||
.oO( P6W driven debugging ) |
|||
Zoffix | :D | 19:14 | |
lizmat | news.ycombinator.com/item?id=15535893 # Quest for a 100-Year Programming Language | 19:19 | |
samcv | javascript is a 100 year language? | 19:20 | |
what | |||
Zoffix | "javascript is a 100 year language" — Web Developer | 19:22 | |
lizmat | .oO( I'm a hammer, you're a nail :-) |
19:23 | |
Zoffix | :) | ||
lizmat just realizes she has been bingewatching Dexter too much | |||
stmuk pauses The Orville to look at SSH keys | 19:24 | ||
lizmat | blog.builtinperl.com/post/perl-in-brazil # last question / answer :-) | 19:25 | |
Zoffix | \o/ | 19:26 | |
lizmat | false alarm: apparently I was running with some uncommitted changes, HEAD is still ok for hypering/racing | 19:28 | |
[Coke] | \o/ | 20:09 | |
lizmat | AlexDaniel`: what was the way to get that gist for tickets again ? | 20:14 | |
(changes of the past week) | 20:15 | ||
Zoffix | I didn't do recent modules page cause I didn't feel up to it | ||
lizmat | Zoffix: no problem, sorry to have put the pressure on :-( | 20:16 | |
so, when *did* the ratchet || fix land in rakudo? I can't really find it/ | 20:37 | ||
? | |||
looks like jnthn merged it in Sep ? | |||
Zoffix | bisect: say so 'abc' ~~ /^ [b || a] bc / | 20:43 | |
bisectable6 | Zoffix, On both starting points (old=2015.12 new=e4a5bb1) the exit code is 0 and the output is identical as well | ||
Zoffix, Output on both points: «True» | |||
Zoffix | bisect: say so 'abc' ~~ /:r ^ [b || a] bc / | 20:44 | |
bisectable6 | Zoffix, On both starting points (old=2015.12 new=e4a5bb1) the exit code is 0 and the output is identical as well | ||
Zoffix, Output on both points: «True» | |||
Zoffix | fine! be that way | ||
bartolin | oops, I just got three segfaults in a row while running integration/error-reporting.t -- and that was not on MoarVM, but on the JVM (1.8.0_144) | 20:45 | |
Zoffix | bisect: say so 'abc' ~~ /:r [a || b] c / | ||
bisectable6 | Zoffix, On both starting points (old=2015.12 new=e4a5bb1) the exit code is 0 and the output is identical as well | ||
Zoffix, Output on both points: «True» | |||
Zoffix | clearly I don't fully understand this stuff :) | 20:46 | |
bartolin | oh, that's really interesting: this code reliably leads to a segfault with Rakudo version 2017.09-498-ge4a5bb17c built on JVM, using OpenJDK build 1.8.0_144-b01 on FreeBSD 10.4: | 20:50 | |
m: -> ::RT129906 { class :: is RT129906 {} } | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> RT129906 does not support inheritance, so <anon|82510288> cannot inherit from it at <tmp>:1 |
||
synopsebot | RT#129906 [resolved]: rt.perl.org/Ticket/Display.html?id=129906 Error when role stubbed as class | ||
Zoffix | bisect: say so 'abc' ~~ /:r ^ a [b || bc] $/ | 20:51 | |
bisectable6 | Zoffix, Bisecting by output (old=2015.12 new=e4a5bb1) because on both starting points the exit code is 0 | ||
Zoffix, bisect log: gist.github.com/8569e45b1eb7f68055...28eccdef1f | 20:52 | ||
Zoffix, (2017-09-20) github.com/rakudo/rakudo/commit/96...50462b4cd2 | |||
Zoffix | k, now I understand | ||
Geth: ver github.com/rakudo/rakudo/commit/96...50462b4cd2 | |||
Geth | Zoffix, version bump brought in these changes: github.com/perl6/nqp/compare/2017....ga5f92f2fe | ||
Zoffix | lizmat: Sep 20; first two commits by smsl++: github.com/perl6/nqp/compare/2017....ga5f92f2fe | 20:53 | |
lizmat | ok, so not in the past 2 weeks | 20:55 | |
Geth | nqp: 84cc117776 | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/io/AsyncProcessHandle.java [jvm] Left shift exit code for AsyncProcessHandle |
21:31 | |
lizmat | and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2017/10/23/...ds-racing/ | 21:37 | |
Zoffix | \o/ | 21:38 | |
cognominal | lizmat++ | 21:42 | |
Geth | roast: 3802dde946 | usev6++ | S07-hyperrace/for.t [jvm] Don't run hyperrace tests that might hang |
||
Zoffix | lizmat: FWIW, this one's in reverse. The description is of the buggy behaviour; I made it return Proc always: "fixed IO::Pipe.close so that only the .close on the last open handle will return the Proc object" | 21:43 | |
lizmat | ah, ok, fixing | ||
must have misread the commit message | |||
fixed | 21:45 | ||
Zoffix++ | |||
Zoffix | lizmat++ # good weekly | ||
samcv | lizmat++ | 21:55 | |
lizmat goes off to bed | 22:06 | ||
Zoffix | wonder how to test the $*IN.getc issue, since it relies on STDIN being a tty or something | 22:19 | |
This covers the bug, but I would've liked to test that I can read from it too and that .eof becomes True when you read everything: gist.github.com/zoffixznet/e377f82...0bdf5e697b | 22:31 | ||
We don't got a way to create IO::Handles from file descriptor numbers, do we? | 22:54 | ||
Alternatively, how do I get features of openpty() without using C code (or using NativeCall) | 22:55 | ||
Zoffix tries to hack something up with `script` command | 23:00 | ||
timotimo | i do believe moar has something to get an io handle from an fd | 23:04 | |
don't know the details, also gotta go to bed | |||
o/ | |||
Zoffix | \o | 23:06 | |
(╯°□°)╯︵ ┻━┻ | 23:24 | ||
24 minutes writing a shiny test routine until I realized `script` sits and waits for MY TTY to CTRL+D instead of reacting to .in.close from shell | 23:25 | ||
Oh wait, nm, it works :p | 23:26 | ||
works on... lInux :( | 23:41 | ||
Another strike against Unicode chars in code: i.imgur.com/afLFM0d.png | 23:42 | ||
Works fine in my editor and terminal, but not when I'm sshed into macos box | |||
(those are fancy quotes) | 23:43 | ||
*sigh* the test hangs on MacOS for some reason | 23:46 | ||
looks like IO::Pipe.spurt is busted on macos | 23:49 | ||
Or rather IO::Pipe.close after spurt :S | 23:50 | ||
Hangs: ./perl6 -e 'my $p = shell :in, q|script -q /dev/null "./perl6" "test.t"|; $p.in.spurt: "meow"; $p.in.close; $p.in.close'; | |||
Works: ./perl6 -e 'my $p = shell :in, q|script -q /dev/null "./perl6" "test.t"|; $p.in.say: "meow"; $p.in.close; $p.in.close'; | 23:51 | ||
oh, it waits for a newline or something | |||
yeah, .print: "meow" "hangs" while .print: "meow\n" ok | |||
k, nm, i'ts something with `script` program. screw it | 23:52 | ||
OK. Now I see the same bug lizmat mentioned in repl.t tests. Where STDIN I send to a Proc ends up in my STDOUT pipe | 23:56 | ||
# expected: "False\nmeow\n\nTrue\n" | |||
# matcher: 'infix:<~~>' | |||
# got: "meow\n^D\b\bTrue\nmeow\n\nTrue\n" |