-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stage 2.7 roadmap #24
Comments
I was planning on proposing this for Stage 2.7 at the April meeting, and I remembered just a few days ago (because I was pinged for a review) that editor reviews are needed for Stage 2.7 and not for Stage 3. The spec text at https://tc39.es/proposal-defer-import-eval/ is complete and is what I plan to propose. Regarding the open PRs in this repo:
I know that this ping is coming way too late, so I understand if it's impossible for you to take a look before plenary :) |
This looks good to me, thank you for the good work here. |
@bakkot @michaelficarra @syg I'm planning to re-propose this for 2.7 at the next meeting, I would appreciate if you could find some time to review the spec text. If you already took a look at this last time, there have been two PRs to handle a bug that @guybedford found with re-entrancy and top-level errors: #39 and #43 |
I've had another look, I think this is good for 2.7. |
@nicolo-ribaudo Why do you use an early error to restrict ImportClause in ImportDeclaration to NameSpaceImport when |
@nicolo-ribaudo There's also a misspelling of edit: I'll just turn this into a review feedback comment.
|
@nicolo-ribaudo If you don't mind me asking, is 2.7 an arbitrary number between 2 and 3? Why "Stage 2.7" and not, for example, "Stage 2.5", or "Stage 2.1", or "Stage 2.9"? |
Before Stage 3, we still need to investigate multiple aspects of the proposal. Each topic should be discussed in its own issue, but I'm writing all of them here to keep track of the progress.
TODOs
The current WASM-ESM integration proposal makes WASM modules async from JS's perspective. This meant that their execution would never be deferred. Can this be changed?
We need to investigate more the performance benefits of this proposal, and collect more data. Additionally, we need to explain why top-level await suddenly causing a module to not be deferred anymore is not a performance footgun.
Early errors (related toimport *
potentially doesn't need to parse/link #9)How critical are early errors? Is it ok to defer them until execution, similarly to what happens with dynamic import? This would allow some systems to entirely defer loading modules.
EDIT: After talking with people working on various runtime implementations, it's clear that those implementations would still be able to avoid loading by pre-computing metadata about files.
Deferred re-exports (related to Bloomberg Feedback #18)(Add support for "optional" re-exports #30, Add support for "defer" re-exports #31)It would be useful to support something like
export defer { f } from "./foo"
, that causes the execution of./foo
only iff
is actually imported form this module.EDIT: The surface area for re-exports is much larger due to the tree-shaking semantics, I plan to ask the committee to leave it at stage 2 for longer.
import.defer()
syntax to mirrorimport.source()
#28)Given that
import source
is now stage 3, we should probably add dynamicimport.defer()
to this proposal similar toimport.source()
.Reviews
The text was updated successfully, but these errors were encountered: