| 16:57 | <nicolo-ribaudo> | I'll join the meeting ~10 minutes late |
| 18:40 | <Luca Casonato> | The latest iteration of the syntax proposal as discussed: https://gist.github.com/lucacasonato/6f7db6a449fd7e047999343810309ca0
|
| 19:01 | <Kris Kowal> | Justin Ridgewell, for the record, please confirm your position is that a mechanism that feeds into the cache key is necessary, and an as <primitive> + records and tuples as primitives would suffice. |
| 19:01 | <Kris Kowal> | Let’s get this written up in our minutes. Thank you Luca Casonato |
| 19:14 | <littledan> | huh, what's the rationale for the # being in the syntax? |
| 19:15 | <littledan> | not all primitives can be included (e.g., symbols can't) so conceiving of this as "primitives" seems a little funny |
| 19:16 | <Kris Kowal> | The reified value corresponding to the syntax must be a primitive. |
| 19:16 | <littledan> | ah, OK, why? |
| 19:16 | <Kris Kowal> | In order to ensure that the cache key is canonical. |
| 19:17 | <littledan> | ah |
| 19:17 | <Kris Kowal> | Also, given that this is occurring pre-evaluating, that imposes some limits on what’s expressible. |
| 19:17 | <littledan> | well.... we should keep in mind the possibility that R&T won't go to Stage 3 in their current form |
| 19:17 | <littledan> | I don't even know if we have consensus on having any kind of syntax for them, at this point. |
| 19:18 | <Kris Kowal> | That is to say, however the value is lifted off the page, it has to occur in the parse phase, not the evaluation phase, and not in a lexical scope, so what’s expressible is inherently limited. I don’t have strong feelings about how that’s expressed syntactically. |
| 19:18 | <Kris Kowal> | Yeah, we’re aware that this is precarious. |
| 19:19 | <littledan> | (R&T syntax obviously doesn't imply that it doesn't contain expressions) |
| 19:20 | <Kris Kowal> | As solutions go, this so far uniquely addresses all the concerns of both cache key formation, separation of the cache key namespace from non-cache key namespace, and extensibility in bundlers such that the portions participating in the cache key are visible to importHook. |
| 19:20 | <littledan> | also why not : after as? does that indicate that it's part of the cache key? |
| 19:20 | <Kris Kowal> | Yes, as indicates both that it participates in the cache key, allows for composite cache keys, and threading to import hook. |
| 19:20 | <littledan> | well, I'm not sure if using the : for the other keys does a great job indicating that visually |
| 19:21 | <littledan> | as opposed to just, remembering the name |
| 19:21 | <Kris Kowal> | Using the colon is not germane, I think. |
| 19:21 | <littledan> | anyway: I'm happy with the general design of having as participate in the cache key, and the other keys are defined by ecma262 and do not |
| 19:22 | <Kris Kowal> | That is to say, we’re looking for any syntactic solution with the properties:
|
| 19:22 | <littledan> | Should we still design things (e.g., import()'s second arg, the thing passed to importHook) to allow more keys in the cache besides as, even if we don't define them yet? |
| 19:23 | <Kris Kowal> | We also have general support among participants that dynamic import(x, bag) corresponds 1:1 to a shallow static import syntax managed by 262. |
| 19:23 | <Kris Kowal> | Yes. That’s the direction supported by everyone on the call. |
| 19:23 | <littledan> | We also have general support among participants that dynamic |
| 19:24 | <littledan> | yeah this sounds like a huge amount of progress that you all made |
| 19:24 | <littledan> | who were the attendees participating in the agreement? |
| 19:25 | <Kris Kowal> | That is to say, what gets plucked from the options bag is determined by 262, and anything else would presumably get ignored. What gets threaded to importHook is just specifier and as. Every other key has behavior well-defined in 262. |
| 19:26 | <littledan> | hmm, ignored, and not treated as an error? |
| 19:26 | <Kris Kowal> | Present and participating on todays call were Justin Ridgewell nicolo-ribaudo yulia guybedford Luca Casonato and myself. Mathieu Hofman and Richard Gibson observed. Please forgive any omissions! |
| 19:26 | <littledan> | (I've heard arguments on both sides and was personally leaning towards "error") |
| 19:26 | <Kris Kowal> | hmm, ignored, and not treated as an error? |
| 19:26 | <Kris Kowal> | Yeah, I could be swayed either way. |
| 19:26 | <littledan> | forward compatibility cuts both ways |
| 19:27 | <littledan> | or, I guess leans towards error |
| 19:27 | <littledan> | the counterargument is "upgrade path" which is a bit different |
| 19:27 | <Kris Kowal> | Again, I’ve not thought in depth on that detail. I’m presuming from the hip. |
| 19:29 | <littledan> | well, anyway, I'm extremely happy with this direction, and looking forward to the details being spelled out. Did someone sign up for that part? |
| 19:30 | <Kris Kowal> | In any case, it was a good conversation and we found that there’s not a great deal of disagreement in abstract and we just need to get more concrete about one of the many possible directions. Possibly a statement of some kind about vision for evolution of this keyspace and how we accommodate it. guybedford expressly doesn’t want to push in that direction and recognizes that import reflection needs a color for that bikeshed, just doesn’t have strong color preferences. Just a preference not to be blocked on the issue for long. |
| 19:31 | <Kris Kowal> | I’m personally hoping you’re up for writing something up, littledan. |
| 19:31 | littledan | hides |
| 19:31 | <littledan> | can I nominate... anyone but me to do this? |
| 19:31 | <littledan> | all of you who were in the discussion would be good |
| 20:16 | <Justin Ridgewell> | Justin Ridgewell, for the record, please confirm your position is that a mechanism that feeds into the cache key is necessary, and an |
| 20:21 | <littledan> | well, one difference is Records don't exist yet... |
| 20:22 | <Justin Ridgewell> | As for why an extensible value that participates in a cache key is necessary, we can draw from the Currently, you have a runtime function that has to be invoked with options, but if that function escapes the callgraph at all, it's not possible to analyze anymore. I'd be ideal if we can move all these settings into the |
| 20:24 | <littledan> | so the syntax will help explain the limitations on usage, making it non-escaping by construction? |
| 20:24 | <littledan> | I kinda thought that having it refuse to build with a descriptive error message would be enough |
| 20:26 | <Justin Ridgewell> | Yes, we can fail the build if we see things that aren't correct, but still not a great DX |
| 20:27 | <Justin Ridgewell> | It'd be better if we can syntactially say that something doesn't work |
| 20:27 | <Justin Ridgewell> | Eg, what if the user does Roboto({ weights }), with weights being some dynamic array? |
| 20:28 | <Justin Ridgewell> | A static import syntax improves DX by having obvious restrictions |
| 20:48 | <Kris Kowal> |
|
| 20:48 | <Kris Kowal> | A commit point beyond which no further modules will be imported, that is. |
| 20:50 | <Justin Ridgewell> | I think that's an optimization, but not a requirement. When I was doing font work for AMP, I saw tons of publishers who would have multiple imports for the same font with different variations, or multiple imports for different fonts with the same variations. They could all be coalesced into a single stylesheet request, but it's prevented |
| 20:59 | <Kris Kowal> | That optimization might be expressible in terms of the proposed framework. |
| 21:22 | <shu> | Kris Kowal: you've had access to the transcript docs, right? |
| 21:27 | <littledan> | A static import syntax improves DX by having obvious restrictions |
| 21:40 | <Kris Kowal> | Kris Kowal: you've had access to the transcript docs, right? |
| 21:40 | <Kris Kowal> | Mathieu Hofman had the foresight to get a transcript last |
| 21:42 | <shu> | Kris Kowal: cool just wanted to make sure they were accessible |
| 21:43 | <Kris Kowal> | Ah, I see. They show in your drive, but since I pressed the button, I’ve also got access. Thanks. |
| 21:43 | <Kris Kowal> | I’ll “yeat” that up now. |
| 21:49 | <Kris Kowal> | I’ve posted a summary of our conversation and the transcription. https://docs.google.com/document/d/1CD5lIBZLl24XBWbQhokqBdt4Zl7wPAcFJKJrgePr9HU/edit#bookmark=id.wpzrt0f9aa58 |
| 22:31 | <shu> | that reminds me |
| 22:31 | <shu> | do you think the new yorker writes yeët |
| 22:32 | <Kris Kowal> | Not unless it’s polysyllabic. The diaeresis indicates that eë is not a diphthong. |
| 22:33 | <Kris Kowal> | Which is to say, stress between the first and second E. |
| 22:33 | <shu> | do you not say yee-it |
| 22:33 | <Kris Kowal> | I don’t but I’m not a member of the correct generation to speak authoritatively! |
| 22:34 | <Kris Kowal> | Pretty sure “yeet” lasted approximately negative ten minutes in the collective consciousness of neologisms. |
| 22:34 | <shu> | on god i'm old too |
| 22:35 | <Kris Kowal> | I’m told the appropriate reactji is ☠️ but I’m going to run with X-| in solidarity. |
| 22:39 | <Kris Kowal> | But the fun game is using a diaeresis in words that the New Yorker probably never had reason to print. Like, “reïfy”. |
| 22:40 | <shu> | sick |