07:56 | <Rob Palmer> | Good morning, all |
07:56 | <Rob Palmer> | We will start in 3 mins! |
07:56 | <Rob Palmer> | (just working through AV issues in the room) |
08:00 | <Rob Palmer> | The schedule has been updated. Chris would prefer to defer the "Agenda Deadline" topic to the next plenary. Therefore the meeting will conclude at 12:30 CET. |
08:03 | <jkup> | Where can we find the issues on the code of conduct? Trying to link in notes |
08:06 | <Rob Palmer> | Issue #62 |
08:16 | <jkup> | I don't see the person currently talking in the delegates.txt file |
08:16 | <ljharb> | it's an open PR, hasn't landed yet |
08:16 | <ljharb> | use ZTZ for now, i think |
08:17 | <jkup> | looks like their abbrevation is not yet decided. ok will do thanks! |
08:17 | <naugtur> | I submitted a PR with ZBT |
08:17 | <Michael Ficarra> | we really need to get better about merging those before the meeting, this isn't the first (or even the second) time this has happened |
08:17 | <ljharb> | yep - there's a comment on that PR that explains our typical convention, which is "first initial, first letter of last name, last letter of last name" |
08:18 | <naugtur> | oh. ok |
08:35 | <naugtur> | I support Waldemar's clarifying question |
08:43 | <Chengzhong Wu> | naugtur: please feel free to update typos (directly) in the doc, without a doc suggestion |
08:44 | <Christian Ulbrich> | I support MMs concerns. Proxy should not be "detectable". I also think, that what actual equality means, is hard to decide on. |
08:44 | <Michael Ficarra> | or any other kinds of edits! |
08:45 | <Michael Ficarra> | I would prefer we move this forward with only a "shallow" SameValue comparison, and possibly consider some other comparison operations as follow-ons |
08:46 | <Michael Ficarra> | otherwise we're never going to get past all these weird equality hang-ups and see if we even want the feature to begin with |
08:46 | <Michael Ficarra> | I guess I'll get on the queue |
08:46 | <naugtur> | I've been doing that a lot over the 3 days, I'm only using suggestions if I'm offering a change I'm not sure about to something I already saw someone edit. (happened twice out of ~100) |
08:49 | <naugtur> | One useful simplification would be to validate a clone that uses the same behavior as JSON serializer does and return a POJO as a result. But that's barely on topic |
08:49 | <Michael Ficarra> | again, these are the rat holes I don't want to go down at the moment, we will waste all of our time when we don't even know whether we want to do this |
08:51 | <naugtur> | RIP validation usecase |
08:54 | <ljharb> | we wouldn't want anything with global state, but a sort of "create an assert function" API might work for customization |
08:59 | <Ashley Claymore> | lots of people seemed interested in disabling code in production. Right now the closest to a standard we have is process.env.NODE_ENV === "development" .Maybe time for standard pre-processor tags :D |
08:59 | <Ashley Claymore> | just disabling assertions is not always enough as the code we actually want to disable is: compute-expensive-value and assert-something-about-it |
09:02 | <Michael Ficarra> | I'm reminded again that we really need to add a section to our new contributors guide on how to not "over cook" a Stage 0 proposal |
09:02 | <Michael Ficarra> | like every newcomer makes this mistake |
09:05 | <Michael Ficarra> | agreed, and we didn't even mention whether the asserted expression would be eliminated or run for its effects yet! |
09:11 | <nicolo-ribaudo> | https://matrix.to/#/#tc39-decimal:matrix.org |
09:14 | <joyee> | Needs to be careful to not run into https://nodejs.org/en/learn/getting-started/nodejs-the-difference-between-development-and-production |
09:16 | <nicolo-ribaudo> | My topic also disappeared, is there somebody clicking "I'm done speaking" by themselves? |
09:33 | <jkup> | Would someone mind taking over notes at some point soon? My wrist is starting to feel it 😅 |
09:40 | <Ashley Claymore> | Yeah it's a Wild West right now. sometimes we want to run the tests on production code and include assertions. other times we want to do performance tests and skip the development assertions. sometimes code checks for === development, other times it checks for !== development. 😫 |
09:49 | <jkup> | I'm not sure if the notes can support images? If not, maybe naugtur we can just add a note inside brackets instead? I think these notes get pulled into some official archive after we touch them up |
10:09 | <nicolo-ribaudo> | Wishing TCQ supported more levels of nesting... |
10:10 | <jkup> | yeah we're very deep in reply land |
10:16 | <Jacob Smith> | i'm putting together an updated proposal presentation. what is the latest time i can present today? |
10:25 | <jkup> | I just asked in TCQ, I'm unsure if we're meeting back after lunch or if it would need to be before? |
10:25 | <nicolo-ribaudo> | Rob Palmer: ? |
10:26 | <jkup> | Jacob Smith: are you prepared to present now or in 5 minutes? |
10:26 | <Jacob Smith> | yes, i can do |
10:26 | <jkup> | I think we're planning to be finished at lunch time |
10:29 | <naugtur> | I need to get off the notes duty |
10:29 | <naugtur> | and tend to family |
10:30 | <jkup> | Thank you for all the help! |
10:30 | <jkup> | I can help with Nic |
10:31 | <naugtur> | thanks, I'm out for a bit |
10:40 | <Jacob Smith> | thank you Michael Ficarra 🙏 |
10:48 | <Rob Palmer> | The plenary meeting has now fully closed. There will not be a PM session. |
18:21 | <James M Snell> | hey all... a question has come up with regards to ERM in practical use.... the current definition gives no mechanism to determine what kind of completion has occurred in the block where the disposers are called. For instance |
18:22 | <James M Snell> | For some kinds of resources, it would be good to know if the completion was normal or exceptional to determine how best to close the resource. For example, let's consider a socket... { using sock = connect(...) } when this block exits, should the socket be closed gracefully or should it be abruptly aborted |
18:24 | <James M Snell> | I might want to customize the disposer behavior based on the answer to that question and currently the only way I can do so is to catch any error inside the block, like {using sock = connect(...); try { ... } catch (err) { sock.hadError(err); } } or some other similar kind of signal... in which case I just wouldn't use ERM and would call sock.abort() directly |
18:28 | <bakkot> | Discussed explicitly in https://github.com/tc39/proposal-explicit-resource-management/issues/234 / https://github.com/tc39/proposal-explicit-resource-management/issues/49 |
18:29 | <bakkot> | though the way I would do it right now is not with a try/catch but with a .commit method which you call at the end of the block; if it's not called you can assume the exit was exceptional (although this does not work if you have an early return ) |
18:30 | <James M Snell> | oh awesome, somehow I managed to completely overlook those two issues :-/ .... thanks for the links! |
18:42 | <rbuckton> | I will probably ly transfer that issue (and any other related issues) to the Symbol.enter repo so the discussion can continue in that proposal. |
18:44 | <James M Snell> | And FWIW, in our use cases in workers we really would have no desire for the disposer to suppress an error... for our purposes it mostly just ideal to have access to the error. For instance, if I have something like using socket = connect(...) and the block has an exception, it would be ideal to be able to socket.abort(error) with the error that was thrown, but as it stands now I have no way of getting to it |
18:44 | <James M Snell> | without hacks at least |
19:05 | <bakkot> | I liked the idea of passing the error (if any) as an argument to Symbol.dispose |
19:05 | <bakkot> | I forget what happened to that |
19:06 | <bakkot> | it does mean you have to check arguments.length to tell apart the case of no error vs throwing undefined , but otoh if someone throws undefined I think that's their problem |
19:08 | <James M Snell> | nothing good can come from throwing undefined lol |
19:24 | <James M Snell> | For our case, tho, it really wouldn't matter if they did throw undefined, we would end up passing it to, for instance, socket.abort(error) without really worrying too much about the specific thing that was thrown. We more just want to be able to (a) detect that it was, in fact, an exception return and (b) propagate whatever was thrown to the abort |
19:25 | <James M Snell> | I can definitely see the use cases for Symbol.enter /Symbol.exit as being useful but just having the error argument passed would be a major improvement |
20:11 | <bakkot> | the point about undefined is that if you just did [Symbol.dispose](error) { if (error != null) socket.abort(error) } then you would think that it didn't throw in the case that someone had thrown undefined |
20:11 | <bakkot> | so the correct thing to write would be [Symbol.dispose](error) { if (arguments.length) socket.abort(error) } |
20:12 | <James M Snell> | yep, unless we just kept always assuming disposal was the exception case |
20:13 | <James M Snell> | in which case we'd likely just do something like [Symbol.dispose](error) { if (!socket.closed) socket.abort(error); } |
20:31 | <bakkot> | ah, sure, yeah |
22:39 | <Steve Hicks> | Michael Ficarra: You summarized "Pull request #1923, access .value on the final IteratorResult object" - can you please clarify which #1923 that is? I'm struggling to figure out the context here. Thanks! |
23:49 | <Michael Ficarra> | @Steve Hicks I did not write that summary |
23:49 | <Michael Ficarra> | I think it's supposed to say #19/#23 though |
23:49 | <Michael Ficarra> | I will fix up the notes next week when I'm back at work |