- Audio Recording: https://www.youtube.com/watch?v=8RIHCe3sFLU
- GitHub Issue: CTC#65
- Minutes Google Doc: https://docs.google.com/document/d/1AQWL7iqMtnlhE3ylrc1d55lxVrisl-pjKKwIqP1al10
- Previous Minutes Google Doc: https://docs.google.com/document/d/15CWMkzOEeXEGqqt6S7j9cTk787azjMX2sozAdYEXm0g
- Anna Henningsen @addaleax (CTC)
- Bradley Meck @bmeck (observer/GoDaddy/TC39)
- Evan Lucas @evanlucas (CTC)
- Jeremiah Senkpiel @Fishrock123 (CTC)
- James M Snell @jasnell (CTC)
- Josh Gavant @joshgav (observer/Microsoft)
- Michael Dawson @mhdawson (CTC)
- Myles Borins @MylesBorins (CTC)
- Ali Ijaz Sheikh @ofrobots (CTC)
- Jenn Turner @renrutnnej (observer/Node.js Foundation)
- Rod Vagg @rvagg (CTC)
- Michaël Zasso @targos (CTC)
- Sakthipriyan Vairamani @thefourtheye (CTC)
- Rich Trott @Trott (CTC)
- Brian White @mscdex (CTC)
- Anna Henningsen @addaleax (CTC)
- TC39 last week
- Onboarded @abouthiroppy
- Issue & PR review
- Bradley Meck @bmeck (observer/GoDaddy/TC39)
- TC39
- Evan Lucas @evanlucas (CTC)
- Cut v7.5.0 release
- Submitted PR for guide on backporting PRs
- Jeremiah Senkpiel @Fishrock123 (CTC)
- ES Modules Call with people with experience teaching programming to new learners
- Misc stuff in my backlog
- James M Snell @jasnell (CTC)
- Some progress on HTTP2
- Some PRs landed incl. deprecation policy
- Josh Gavant @joshgav (observer/Microsoft)
- bit of diagnostic stuff
- Michael Dawson @mhdawson (CTC)
- updates to smartos build test job to allow new V8 to land
- updates to benchmarking chart gen (dropping 0.12.x + misc)
- reviewing/testing make coverage in ci.
- setting up special benchmarking meetings this week
- ongoing work with team working on ABI stable module API
- general review/comments/lands
- Brian White @mscdex (CTC)
- Reviewing PRs, commenting on issues
- Myles Borins @MylesBorins (CTC)
- Security release for v4 and v6
- Getting up to speed with new gig
- Review of PRs / Issues
- CITGM minor release
- TC39 last week
- Ali Ijaz Sheikh @ofrobots (CTC)
- Mostly internal stuff.
- Some work on the V8 lkgr + node integration build.
- Jenn Turner @renrutnnej (observer/Node.js Foundation)
- Observing
- Michaël Zasso @targos (CTC)
- PR and issue review
- Open PR to backport V8 5.5 in v7.x
- Rich Trott @Trott (CTC)
- Usual bunch of small things (fix a flaky test here, review a PR there), hey, we have a full agenda, let’s just get right to it.
- Updating the Copyright TSC#174
- [WIP] meta: update copyright statements node#10599
- [WIP] Restore copyright attribution node#10155
- meta: deprecation policy node#7964
- lib: deprecate node --debug at runtime node#10970
- fs: runtime deprecation for fs.SyncWriteStream node#10467
- tty: remove NODE_TTY_UNSAFE_ASYNC node#10393
- Rewrite 002 - esm node-eps#39
- assert: enforce type check in deepStrictEqual node#10282
- deps: Add node-inspect node#10187
- lib: be robust when process global is clobbered node#10135
- http: support environment-defined proxy node#8381
- Updating the Copyright TSC#174
- [WIP] Restore copyright attribution node#10155
- [WIP] meta: update copyright statements node#10599
- lib: be robust when process global is clobbered node#10135
- process: Add code to warnings, assign codes to deprecations node#10116
- meta: deprecation policy node#7964
- assert: enforce type check in deepStrictEqual node#10282
- http: support environment-defined proxy node#8381
- deps: Add node-inspect node#10187
- Rewrite 002 - esm node-eps#39
ES Modules node-eps#39
See https://docs.google.com/presentation/d/1xZILfv5WeUBKyQ9s1w8zArNgzTMGRFQXyRseSskjcjw
Does Node.js want to ship a synchronous or asynchronous module loader? That is,
should require
return a Promise or an Object, i.e. a module namespace object?
Temporal Dead Zone when returning module namespace object for an ES module; when returning a Promise a TDZ exists but is past by the time the Promise is fulfilled. But this isn’t how Babel does it.
@bmeck looking for specific direction from CTC, asked for vote.
@jasnell: should be a clear separation between require/CJS and import/ESM, perhaps support async for import but not require.
@mylesborins: modules written for web will expect an async loader, and would be best for Node.js to match browser behavior as much as possible.
@bmeck: browsers will move more and more to async loading.
@addaleax: having an async loader matches expected behavior in other places,
like top-level await
.
@bmeck: synchronous loader and top-level await
are mutually exclusive, can’t
do both.
@ofrobots: if we go async in Node we will disturb ecosystem which expects all to be sync. Yet if we go sync we will lose compat with browsers and web.
@bmeck: browsers don’t have the option to ship an async loader.
@addaleax: an async loader wouldn’t effect CJS modules so concerns can be addressed as authors move to ES modules. So wouldn’t be so disruptive.
@Fishrock123: Getting opinions from trainers of new users if this will make
learning curve steeper. Would be best if require
is only sync. Async loader
could handle circular deps better, so that’s good.
Suggest using require for CJS and import for ES.
@Trott: We're voting on an EP not landing an implementation, which means that we can change course later if necessary.
Are we debating changing require
or just import
?
import(‘es’)
will always return a Promise, require(‘cjs’)
will always return
an object. Question is require(‘es’)
and import(‘cjs’)
.
@jasnell: supporting both async and sync will be difficult.
@evanlucas: biggest concern is breaking ecosystem in order to support future browsers.
@bmeck: but we’re breaking them anyway cause we can’t support named imports (which break Babel transpilation of ES).
How will a sync loader affect future module usage and development in JS/TC39?
- Would disallow top-level await.
- Circular dependencies with asynchronously loaded ES modules.
Q: Why does Node.js want to have synchronous imports? A: So that you can require an ES module and have it behave in the same way as a CJS module.
@jasnell called for a vote next week, @Fishrock123 seconded.
Next steps
- Vote by next week.
assert: enforce type check in deepStrictEqual node#10282
@Trott: Suggest allowing internal changes as long as they don’t change API surface.
@Fishrock123: Current policy is not to change unless needed by core.
Should we unlock assert
for API changes?
Perhaps not, but we should still support new ES constructs within existing API.
@mylesborins will open an issue to re-evaluate what “locked” policy means, becuase JS language changes happen more frequently now.
Next steps
- @Trott to draft proposal based on this discussion as PR (see node#11113).
deps: Add node-inspect node#10187
- Land node-inspect in deps?
- Integrate as
node inspect
ornode debug
.
If we leave in deps and vendor out we could integrate more directly in the future. In the meantime, this is a good experiment for vendoring out modules.
lib: be robust when process global is clobbered node#10135
PR has not yet been updated to remove non-writable aspect.
http: support environment-defined proxy node#8381
Nothing new.
Symbol key props visible in inspection by default node#9726
3 CTC members are reviewing.
Q: How to get more people involved in ES module discussion? A: Comment on the node-eps#39 issue.
Node.js Foundation Calendar: https://calendar.google.com/calendar/embed?src=kap.co_i17i575te0aes6kaanfjr2e4hs%40group.calendar.google.com
- CTC: 2017-02-08, 0500 UTC (Tuesday 0900 US Pacific)
- TSC: 2017-02-09, 2000 UTC (Thursday 1200 US Pacific)