00:01:45  * dbeveniusquit (Ping timeout: 268 seconds)
00:02:13  <joyee>And if safe_globals is executed before loaders.js then I am pretty certain that the point right after the execution of safe_globals is somewhere a snapshot can be taken - if safe_globals stays environment-independent
00:03:16  <joyee>loaders.js on the other hand still depends on CLI flags and environment variables in its evaluation.
00:04:31  <joyee>So with it's current shape we cannot snapshot after loaders.js - that'd be a bogus snapshot that can crash if not loaded in the same environment as the one where it's built
00:08:34  <joyee>(But maybe I am still too optimistic because the construction of process object itself, that happens before all that, is already environment dependent)
00:15:10  * zedsjoined
00:15:17  * zedspart
00:25:56  * dbeveniusjoined
00:30:36  * dbeveniusquit (Ping timeout: 250 seconds)
00:31:58  * lundibundiquit (Ping timeout: 268 seconds)
01:28:55  * dbeveniusjoined
01:33:43  * dbeveniusquit (Ping timeout: 268 seconds)
01:46:01  * dbeveniusjoined
01:50:18  * dbeveniusquit (Ping timeout: 246 seconds)
01:59:13  <bradleymeck>joyee: SnapshotCreator can contain codegen
01:59:43  <bradleymeck>i don't think that is safe to use cross arch, but it should be safe per build
02:01:13  <bradleymeck>https://github.com/v8/v8/blob/master/include/v8.h#L8590 v8::SnapshotCreator::FunctionCodeHandling::kKeep
02:01:33  <bradleymeck>one of the big things with that is that you can prewarm your JIT
02:03:27  <joyee>bradleymeck: that's separate, there simply isn't a point snapshotting bootstrapping code other than the modules that will also be executed later.
02:04:29  <bradleymeck>last i did a benchmark it was significant if you prewarmed things for apps at least
02:04:42  <bradleymeck>i couldn't ever get node.js to be snapshot properly
02:04:57  <joyee>Why? the bootstrap code should be GC'd after bootstrap
02:05:07  <bradleymeck>but the point is that code can be contained, I was confused why you said it couldnt
02:05:23  <bradleymeck>joyee: because persistent refs to functions stay warmed with their inline caches
02:06:00  <bradleymeck>otherwise it drops back and completely does a 1st pass codegen
02:06:07  <bradleymeck>and then has to rewarm
02:06:58  <devsnek>y'all have the craziest convos these days
02:07:01  * dbeveniusjoined
02:08:22  <joyee>That's not the bootstrap functions, but the closures that are the results of execution of the functions, though I don't think it hurts - you'd need to pay the cost of warming it up without snapshots anyway
02:09:46  <bradleymeck>joyee: for ones that are never called, sure
02:10:07  <bradleymeck>the point is to call as much as you can then get to a point where snapshotting is ok
02:10:14  <bradleymeck>node isn't in a great position for this currently
02:10:36  <bradleymeck>but moving more towards treating snapshots as only for data instead of codegen seems to be very limited
02:11:07  * dbeveniusquit (Ping timeout: 240 seconds)
02:11:09  <joyee>In my brain data contains code
02:11:20  <joyee>Or to say, code is a subset
02:11:26  <joyee>They are part of the heap
02:11:33  <bradleymeck>not if you use kClear
02:12:38  <bradleymeck>anyways, we can certainly keep our globals thing to a new thing only compiled from C++ before the snapshot
02:13:41  <joyee>Optional subset is still a subset ;)
02:14:45  <joyee>That's what I attempted once to do in per_context.js but I couldn't because
02:14:54  <joyee>per_context.js is part of the embdder API
02:15:30  <joyee>So you can't really return anything, or to store anything
02:16:07  <bradleymeck>if the subset is never intersecting the set, it isn't really a subset
02:16:08  <joyee>(Maybe you can by adding another embedder field in the context but I don't think it's worth it)
02:17:42  <joyee>If you look at the set dynamically, it's always a subset
02:18:08  <bradleymeck>i don't agree in realistic terms~
02:18:32  <devsnek>per_context is node internals
02:18:41  <bradleymeck>but disagreeing doesn't really affect this stuff
02:19:23  <joyee>devsnek: but it's part of the embedder contract
02:19:34  <devsnek>you've lost me
02:20:25  <devsnek>bradleymeck: out of curiosity what do you use "~" to mean
02:20:36  <joyee>If you return something from per_context.js, you can't really store it and get it back out later other than store a field in the context
02:20:50  <joyee>Which is visible to the embedder so it's not really an internal
02:21:09  <devsnek>oh for getting a reference to the iife?
02:21:18  <bradleymeck>devsnek: that the discussion could go either way, in actual voice my words would go up and down in pitch most likely around that
02:21:23  <joyee>`NewContext` is embedder API
02:21:41  <joyee>devsnek: for getting a reference directly to something created in per_context.js
02:22:22  <joyee>(Instead of through...global, then you'd be poluting it for embedders)
02:24:21  <bradleymeck>joyee: you could always hide some number of things if you could control the actual calling of v8 couldn't you
02:24:50  <joyee>bradleymeck: what do you mean by actual calling of v8?
02:25:18  <joyee>Also v8 is not controlled by us in the embedder API
02:26:56  <bradleymeck>well if we don't control v8 it doesn't matter, but you can make funky views of globals
02:27:01  * dbeveniusjoined
02:31:07  * dbeveniusquit (Ping timeout: 240 seconds)
02:55:59  * dbeveniusjoined
03:00:40  * dbeveniusquit (Ping timeout: 268 seconds)
03:17:46  * dbeveniusjoined
03:22:47  * dbeveniusquit (Ping timeout: 268 seconds)
03:37:05  * dbeveniusjoined
03:41:36  * dbeveniusquit (Ping timeout: 258 seconds)
04:11:54  * dbeveniusjoined
04:43:10  * dbeveniu_joined
04:43:10  * dbeveniusquit (Read error: Connection reset by peer)
06:17:34  * dbeveniu_quit (Remote host closed the connection)
06:19:56  * dbeveniusjoined
06:24:55  * lpinjoined
06:30:55  * lundibundijoined
06:49:54  * lundibundiquit (Ping timeout: 272 seconds)
08:17:46  * al-damiriquit (Quit: Connection closed for inactivity)
09:04:09  * seishunjoined
09:38:19  * gamelasterjoined
09:40:16  * joaocgreisquit (Ping timeout: 264 seconds)
09:40:16  * parshap____quit (Ping timeout: 264 seconds)
09:40:28  * joaocgreisjoined
09:41:53  * parshap____joined
10:03:21  * lundibundijoined
10:11:57  * mgoljoined
10:27:40  * seishunquit (Ping timeout: 268 seconds)
10:44:25  * lundibundiquit (Ping timeout: 258 seconds)
11:02:40  * svennidaljoined
11:06:36  * dbeveniusquit (Remote host closed the connection)
11:13:56  * lundibundijoined
11:16:08  * dbeveniusjoined
11:20:55  * dbeveniusquit (Ping timeout: 246 seconds)
11:32:00  * seishunjoined
11:32:21  * dbeveniusjoined
11:51:30  * lundibundiquit (Ping timeout: 258 seconds)
12:30:08  * lundibundijoined
12:51:58  * lundibundiquit (Ping timeout: 268 seconds)
13:03:41  * howdoiquit (Quit: Connection closed for inactivity)
13:17:40  * al-damirijoined
13:25:07  * seishunquit (Ping timeout: 240 seconds)
13:27:57  * seishunjoined
14:08:55  * seishunquit (Ping timeout: 246 seconds)
14:12:48  * lundibundijoined
14:21:25  * seishunjoined
14:24:39  <bradleymeck>is it possible to run a CI job just to test 1 test w/ debug output via NODE_DEBUG?
14:26:09  <bradleymeck>I really just want to run https://ci.nodejs.org/job/node-test-binary-windows/22998/
14:27:34  <joyee>bradleymeck: https://ci.nodejs.org/job/node-test-commit-custom-suites-freestyle/build?delay=0sec
14:28:13  <joyee>Although it does not provide a way to set the environment variable - you can write a test to fork itself with NODE_DEBUG
14:29:08  <joyee>(or add support of customized environment variables in tools/test.py)
14:32:23  <bradleymeck>i'm kind of surprised test.py doesn't have NODE_DEBUG flags
14:32:44  <joyee>bradleymeck: why? What kind of values would that be?
14:33:07  <joyee>It would significantly slow everything if say you add `stream` to that value
14:33:35  <bradleymeck>joyee: it wouldn't be on by default, the whole point of that ENV is to debug something that isn't readily visible
14:33:57  <bradleymeck>like with policies, I can't tell what is going wrong with windows and don't have a windows machine available right now
14:34:49  <joyee>bradleymeck: but the test runner cannot set any NODE_DEBUG flags by default - there is no guarantee about the overhead of that variable at the moment
14:35:03  <bradleymeck>I could make a change to my commits just for CI purposes that always logs stuff, but that seems odd
14:35:25  <bradleymeck>joyee: if you have to set it in the CI parameters manually it would never be on by default
14:35:38  <bradleymeck>so no overhead, just turn on as needed
14:36:16  <joyee>I guess it's because most people do not use customized args of tools/test.py, because the custom test suite is new
14:37:06  <bradleymeck>i would assume it is only run when something doesn't make sense
14:37:08  <joyee>As with many things, the python test runner never gets the love it deserves
14:39:07  <bradleymeck>thats true of too many things, eventually you just have to prioritize
14:42:16  <joyee>bradleymeck: if you are confused about the status mismatch, maybe just inherit the stdio instead of piping it?
14:42:36  <joyee>the test runner would print the stdout and the stderr outputs on failure
14:42:52  <bradleymeck>yea, that was the suggestion but I didn't feel like I would want to rerun the whole test suite just for that
14:42:55  <bradleymeck>this should work
14:43:59  <joyee>if there is a bug in the test or in the implementation on Windows and you have to fix it by pushing new code, then you have to rerun the test suite either ways
14:45:59  <joyee>To make sure the fix does not accidentally introduce a bug on other platforms
14:46:18  <bradleymeck>yea, but while debugging i don't want to run 1hr worth of test suite for feedback
14:47:21  <joyee>But you can use the custom job for that? (although if you use that you have to wait for 1hr for Windows because that's how slow our machines are and they do not build incrementally)
14:48:49  <joyee>I vaguely remember someone suggested adding SSH support for our Windows machines but right now there is none...they are controlled with RDP
14:49:03  <bradleymeck>fun fun
14:49:25  <bradleymeck>but i didn't even know of custom jobs before you mentioned that
14:49:41  <bradleymeck>hence I think it "should work" (tm)
14:52:07  <joyee>I don't actually know if the custom job work on windows machines, the configurations are bash scripts, not batch
14:52:12  <bradleymeck>but it looks like custom only runs on ubuntu x64 reading previous things and params
14:53:14  <joyee>Right...I guess that's really test-commit-custom-suites-where-bash-can-be-used
15:54:30  * lundibundiquit (Ping timeout: 268 seconds)
16:01:15  <bradleymeck>brain hurty but it looks like `new URL('C:/foo', 'file:///C:/win')` is dropping the `file:`
16:02:15  <devsnek>bradleymeck: yeah that's how the spec works
16:02:22  <bradleymeck>yea
16:02:50  <bradleymeck>trying to figure out right way to convert a path to a valid relative URL string
16:03:02  <bradleymeck>adding `/` to beginning messes up `../` and `./`
16:03:30  <devsnek>well / isn't relative in the same way paths are relative
16:03:41  <bradleymeck>yea
16:04:16  <bradleymeck>i just want to have the input types like `./policy`, `../policy`, `C:/policy`, and `/policy` work as expected from CLI
16:04:39  <bradleymeck>could test for absolute path using path.isAbsolute :thinki
16:04:43  <bradleymeck>:thinking:
16:04:44  <devsnek>`/policy` isn't relative
16:05:09  <bradleymeck>it is on windows since it refers to current drive
16:05:20  <devsnek>the root of the current drive though
16:05:30  <bradleymeck>https://url.spec.whatwg.org/#relative-url-string
16:05:46  <bradleymeck>kind of true on *nix with chroot as well
17:03:23  * julianduquejoined
17:30:09  * dbeveniusquit (Remote host closed the connection)
17:37:24  * dbeveniusjoined
17:41:43  * dbeveniusquit (Ping timeout: 246 seconds)
17:47:23  * svennidalquit (Quit: WeeChat 2.3)
17:50:42  * AtumTjoined
18:13:30  * seishunquit (Ping timeout: 244 seconds)
18:17:31  * dbeveniusjoined
18:20:40  * seishunjoined
18:22:07  * dbeveniusquit (Ping timeout: 258 seconds)
18:25:04  * lundibundijoined
18:38:10  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:44:46  * julianduquequit (Ping timeout: 250 seconds)
18:49:47  * Guest13640_quit
18:54:13  * lpinquit (Quit: Textual IRC Client: www.textualapp.com)
18:55:46  * dbeveniusjoined
19:09:59  * lundibundiquit (Ping timeout: 268 seconds)
19:10:13  * mgoljoined
19:26:54  * gamelasterquit (Ping timeout: 258 seconds)
19:56:35  * bhughesquit (Read error: Connection reset by peer)
19:56:44  * bhughesjoined
20:06:05  * jcovingtjoined
20:09:53  * dbeveniusquit (Remote host closed the connection)
20:10:55  * lundibundijoined
20:17:40  * dbeveniusjoined
20:22:06  * dbeveniusquit (Ping timeout: 258 seconds)
20:26:03  * lundibundiquit (Remote host closed the connection)
21:05:58  * julianduquejoined
21:20:06  * seishunquit (Ping timeout: 272 seconds)
21:26:55  * dbeveniusjoined
21:31:29  * dbeveniusquit (Ping timeout: 258 seconds)
21:38:46  * jcovingtquit (Remote host closed the connection)
21:44:34  * seishunjoined
21:57:45  * dbeveniusjoined
22:02:32  * dbeveniusquit (Ping timeout: 258 seconds)
22:16:21  * seishunquit (Ping timeout: 246 seconds)
22:16:46  * dbeveniusjoined
22:21:46  * dbeveniusquit (Ping timeout: 268 seconds)
22:28:12  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:38:03  * AtumTquit (Quit: AtumT)
22:46:46  * dbeveniusjoined
22:51:59  * dbeveniusquit (Ping timeout: 268 seconds)
23:18:50  * dbeveniusjoined
23:23:25  * dbeveniusquit (Ping timeout: 258 seconds)