00:01
finanalyst left
02:06
guifa left
02:09
guifa joined
06:16
guifa left
|
|||
Geth | rakudo/main: b6ea57833e | (Patrick Böker)++ | azure-pipelines.yml Get PRs working for everyone The `build.addbuildtag` command requires special permissions of the PR creator. Effectively failing PRs for many people. Thus that command is not suitable in a public CI pipeline. |
09:21 | |
rakudo/main: 49d06524d0 | (Patrick Böker)++ (committed using GitHub Web editor) | azure-pipelines.yml Merge pull request #5753 from patrickbkr/make-PRs-work-for-everyone Get PRs working for everyone |
|||
nqp/main: 6dd486179d | (Elizabeth Mattijsen)++ | tools/templates/MOAR_REVISION Bump MoarVM for fallthru fixes |
09:24 | ||
rakudo/main: 6363b8e176 | (Elizabeth Mattijsen)++ | tools/templates/NQP_REVISION Bump NQP to get MoarVM fallthru fixes |
09:34 | ||
09:54
sena_kun joined
10:03
finanalyst joined
10:04
finanalyst left
10:05
finanalyst joined
11:12
finanalyst left
13:22
guifa joined
13:59
guifa left
14:01
guifa joined
17:00
MasterDuke joined
|
|||
MasterDuke | committable6: releases my @a; my $t = now; for ^10 { @a.push:$_ }; say now - $t; say @a[2] | 17:01 | |
committable6 | MasterDuke, gist.github.com/bf8afbb4dad4ead0e0...6ca281b19a | 17:02 | |
MasterDuke | committable6: releases my @a; for ^10 { @a.push:$_ }; say @a[2] | ||
committable6 | MasterDuke, ¦releases (86 commits): «(Any)» | 17:03 | |
17:14
MasterDuke left
|
|||
Geth | rakudo/ugexe/deprecate-multi-file-operations: d308e3e482 | (Nick Logan)++ (committed by ab5tract) | 5 files Deprecate IO subs that operate on multiple paths in 6.e While convienient, being able to pass multiple paths to e.g. &rmdir is problematic because there isn't a blessed way to handle what to do when an exception or failure occurs, i.e. should it try to rmdir every entry even if some things fail, or stop on the first failure? ... (24 more lines) |
17:17 | |
rakudo/ugexe/deprecate-multi-file-operations: acdb021d9a | (Nick Logan)++ (committed by ab5tract) | 5 files Deprecate IO subs that operate on multiple paths in 6.e While convienient, being able to pass multiple paths to e.g. &rmdir is problematic because there isn't a blessed way to handle what to do when an exception or failure occurs, i.e. should it try to rmdir every entry even if some things fail, or stop on the first failure? ... (24 more lines) |
18:47 | ||
ab5tract | freaking Windows... | 19:03 | |
Geth | rakudo/main: 8991173fcf | (Christian Bartolomäus)++ (committed using GitHub Web editor) | src/Perl6/bootstrap.c/BOOTSTRAP.nqp [JVM] Reduce backend-specific code in find_best_dispatchee (#5714) This is a follow-up to fa853abc7f which reverted 99f52bcd75 for the JVM backend. From what I understand the cause of the breakage on the JVM was the the removal of the call to nqp::hllizefor in 99f52bcd75. I'm not sure ... (14 more lines) |
19:06 | |
jdv | i used to work in a window factory which is the only gig ive worked at a 100% m$ shop | ||
rakudo/ugexe/deprecate-multi-file-operations: ed7c6651e8 | (Nick Logan)++ (committed by ab5tract) | 5 files Deprecate IO subs that operate on multiple paths in 6.e While convienient, being able to pass multiple paths to e.g. &rmdir is problematic because there isn't a blessed way to handle what to do when an exception or failure occurs, i.e. should it try to rmdir every entry even if some things fail, or stop on the first failure? ... (24 more lines) |
|||
jdv | useless info for the day | ||
ab5tract | jdv: the fact that you lived to tell the tale is useful information :) | ||
jdv | ha, i guess | 19:08 | |
Geth | rakudo/ugexe/deprecate-multi-file-operations: 0cc1a84581 | (Nick Logan)++ (committed by ab5tract) | 5 files Deprecate IO subs that operate on multiple paths in 6.e While convienient, being able to pass multiple paths to e.g. &rmdir is problematic because there isn't a blessed way to handle what to do when an exception or failure occurs, i.e. should it try to rmdir every entry even if some things fail, or stop on the first failure? ... (24 more lines) |
19:26 | |
ab5tract | .... How does this work? 100% of tests passed, but still failed? usercontent.irccloud-cdn.com/file/.../image.png | 19:55 | |
[Coke] | in tap, that could be wrong number of tests run | 19:57 | |
lizmat | or no "done-testing" without a plan | 20:01 | |
ab5tract | hmm... but that shouldn't be the case here, unless a new test file in t/02-rakudo needs to be manually registered somewhere... And it was succeeding in just a previous run. | 20:04 | |
I'll kick it and see if it flaps | |||
Geth | rakudo/ugexe/deprecate-multi-file-operations: 1f3e360c62 | (Nick Logan)++ (committed by ab5tract) | 5 files Deprecate IO subs that operate on multiple paths in 6.e While convienient, being able to pass multiple paths to e.g. &rmdir is problematic because there isn't a blessed way to handle what to do when an exception or failure occurs, i.e. should it try to rmdir every entry even if some things fail, or stop on the first failure? ... (24 more lines) |
20:05 | |
lizmat | ab5tract: also, all test pass, but on the MoarVM teardown something happens that causes a non-zero exit code | ||
such as a segfault | |||
I've seen that | |||
ab5tract | hmm, ok that would make sense too | ||
Unrelated to the previous query, but I'm wondering whether it is possible that we are returning different values for chown on Windows vs Linux | 20:07 | ||
m: say chown("/tmp/nonexistent", "/tmp/also-nonexistent", :uid(111), :gid(222)) ~~ [] | |||
camelia | True | 20:08 | |
ab5tract | that apparently returns False on Windows :S | ||
(if I'm reading the test outputs right) | |||
lizmat | uid and gid on Windows are really iffy | ||
ab5tract | yeah, I figured as much. But when then I'd still expect the code to produce an empty array for two failures (in the old code path) | 20:09 | |
lizmat | only recently I've made $*USER return something sensible | 20:10 | |
on Windows | |||
ugexe | it could also potentially be related to the addition of the file-stat syscall that was added github.com/rakudo/rakudo/blob/8991...kumod#L494 | 20:11 | |
as in a source of potentially odd guid and uid values | 20:12 | ||
ab5tract | Maybe I should just flub those tests for Windows then.. | 20:14 | |
ugexe | actually the syscall thing shouldnt have anything to do with it since that is only used when the uid and gid are not provided | 20:15 | |
Geth | rakudo/ugexe/deprecate-multi-file-operations: 95bb11b83f | (Nick Logan)++ (committed by ab5tract) | 5 files Deprecate IO subs that operate on multiple paths in 6.e While convienient, being able to pass multiple paths to e.g. &rmdir is problematic because there isn't a blessed way to handle what to do when an exception or failure occurs, i.e. should it try to rmdir every entry even if some things fail, or stop on the first failure? ... (24 more lines) |
20:23 | |
ugexe | i suspect chown on windows is a no-op, but that we are missing a piece where we check the file for existence first | 20:32 | |
for nodejs i think that might be handled by this check that the user has write permissions to the file first - github.com/nodejs/node/blob/a34430...2869-L2873 | 20:37 | ||
for our case we can probably just make that file-stat syscall unconditionally and check that. it will already throw an error if the path doesnt exist i think | 20:38 | ||
20:40
finanalyst joined
|
|||
ab5tract | ugexe: so looking the IO::Path source, the file-stat does seem to be unconditional already. But the result is only used in a few 'stat-flags' calls for UID/GID. Is your suggestion to add an additional flag check for file existence? | 20:50 | |
Unfortunately I'm a bit lost in connecting the Node source code to the syscalls in IO::Path | |||
ugexe | ah i was thinking one of those would emit the "Failed to stat file: no such file or directory" error but i guess i was wrong | 20:54 | |
although I suppose that data already exists in the result of that file-stat call | |||
Geth | rakudo/ugexe/deprecate-multi-file-operations: ace48c2486 | ab5tract++ | src/core.c/IO/Path.rakumod Check for file existence first |
20:55 | |
ugexe | the line using uv_fs_chown is on line 2876. i linked to line 2869. between those two lines there is only one significant thing that happens, that call to THROW_IF_INSUFFICIENT_PERMISSIONS | 20:56 | |
i'm presuming that has to stat the file or something to check if it has sufficient permissions, and on windows if the file does not exist that would fail | |||
and never reach the uv_fs_chown call at all | 20:57 | ||
Geth | rakudo/ugexe/deprecate-multi-file-operations: efbf3e411c | ab5tract++ | 2 files Check for file existence first |
21:04 | |
ugexe | thats fine but i think the better solution would be to check $stat to avoid the extra syscalls | 21:07 | |
with the .e the file ends up getting stat-ed multiple times presumably, once with the call to .e, and once with the file-stat | 21:08 | ||
(and avoiding that scenario is what file-stat was implemented for) | 21:09 | ||
ab5tract | ugexe: yeah makes sense. I figured this would help verify that solution first | 21:14 | |
and maybe make it work across moarvm + JVM at the same time | 21:15 | ||
ugexe | presumably jvm has no problem | 21:16 | |
but im just guessing. the core of the issue is libuv uv_fs_chown is a noop on windows | |||
nqp::syscall("stat-flags", $stat, nqp::const::STAT_EXISTS) fwiw | 21:19 | ||
Geth | rakudo/ugexe/deprecate-multi-file-operations: d5f6baa6c3 | ab5tract++ | 3 files Check for file existence first |
21:20 | |
ab5tract | should have waited to push until migrating to checking the result of the stat call | 21:21 | |
Geth | rakudo/ugexe/deprecate-multi-file-operations: da28b2e7dc | ab5tract++ | 3 files Check for file existence first |
21:25 | |
ab5tract | FWIW, I'm not sure that Win_JVM actuallty runs tests .. | 21:30 | |
I hope I don't jinx anything by saying this, but I think we've finally got it :) | 21:41 | ||
guifa | speaking of the JVM --- where do hold the sys calls ? | 21:54 | |
ab5tract | ugexe: Looks like the PR has gone green once again | 22:13 | |
timo | guifa: pardon? | 22:19 | |
guifa | timo: so in MoarVM there's a bunch of syscalls, called from NQP fairly directly with nqp::syscall(...). Where do those reside in our code for JVM (and for JS as well)? So I can bring over my multicast code to the other ones too | 22:29 | |
timo | they don't have an equivalent, but also they don't need to, their implementations of nqp ops go much more directly to functions being called without going through some kind of bytecode like MBC | 22:30 | |
22:34
kjp left
22:36
kjp joined
22:38
kjp left,
kjp joined
|
|||
guifa | hmm okay | 23:01 | |
ab5tract | It would be nice to be able to develop reasonable analogs | 23:17 | |
So that we don’t have to diverge | |||
IIUC guifa would need to implement some NQP functions to do the work on JVM, etc | 23:18 | ||
Then these functions are VM specific, which feels wrong | 23:19 | ||
23:19
sena_kun left
|
|||
timo | yeah, they would become nqp::blabla ops from the perspective of the code inside rakudo or nqp | 23:20 | |
but we can also support nqp::syscall("blabla", ...) to just mean nqp::blabla(...) for a set of names | |||
guifa | So in Rakudo I just see nqp::foo, I guess I'm trying to figure out how to locate that code in JVM. | 23:25 | |
but I admit I'm probably going a bit over my head | |||
guifa also hates Java haha | 23:26 | ||
timo | github.com/raku/nqp/blob/9a843dc6e...#L536-L537 <- github.com/raku/nqp/blob/9a843dc6e....nqp#L2399 | 23:36 |