EDIT: This original post talks about the upgrade to Node 6, but it was decided later on in this thread that Meteor will be upgrading to Node 8 instead. This PR now covers the Node 8 updates.
To test the Meteor 1.6 release-candidate, simply update a project by running:
meteor update --release 1.6-rc.18
Since Meteor 1.4, each release of Meteor has shipped with the latest version of Node 4. However, Node 4 is no longer under "active" long-term support (LTS) and instead falls into the "maintenance" LTS category. Node 6 is now the recommended release for most users. While Node 4 has been perfectly stable for Meteor developers for some time now, it makes sense to keep Meteor up to date.
Meteor 1.6 will be exclusively focused on upgrading the version of Node used by Meteor, along with a few must-have features that depend on Node 6, such as debugging with the --inspect
flag in Chrome DevTools, and leveraging native support for new ECMAScript syntax on the server.
Development of features not dependent on Node 6 will continue along the Meteor 1.5.x version line, and those changes will be regularly merged into this pull request. Bugs pertaining to Meteor 1.6 and/or Node 6 should be filed in the Release 1.6 milestone.
This pull request supersedes #6923, where many of the initial problems with Node 6 have already been resolved. Because much of this work has already happened in parallel with Meteor 1.5, and because Meteor has previously survived an even bigger Node upgrade (Node 0.10.x to 4.x), we expect Meteor 1.6 will take significantly less time to ship than Meteor 1.5 did.
As with previous Meteor beta testing cycles, whenever you see a commit added to this pull request with a message like Bump package versions for 1.6-beta.n release.
, that means you can run meteor update --release 1.6-beta.n
to update an existing app to the new version, or meteor create --release 1.6-beta.n your-new-app
to create a fresh Meteor 1.6 app.
If you want to participate in the development of Meteor 1.6, you should check out the release-1.6
branch, regenerate the dev bundle, and run the meteor
script from a checkout:
cd path/to/meteor
git fetch origin
git checkout -t origin/release-1.6
git submodule update --init --recursive
scripts/generate-dev-bundle.sh
./meteor --help
See these instructions for help with running Meteor from a checkout.
Left to do:
- [x] Release Meteor 1.5 and merge those changes into this branch.
- [x] Audit the codebase to catch up with any breaking changes between Node 4 and 5: https://github.com/nodejs/node/wiki/Breaking-changes-between-v4-and-v5
- [x] Audit the codebase to catch up with any breaking changes between Node 6 and 7: https://github.com/nodejs/node/wiki/Breaking-changes-between-v6-and-v7
- [x] Audit the codebase to catch up with any breaking changes between Node 7 and 8.
- [x] Reimplement
meteor debug
to use Chrome DevTools instead of node-inspector
(👋 @brucejo75), which is such a better debugging experience it's not even funny.
- [x] Get
meteor-tool
to build on Linux 32bit (runs out of memory currently).
- [x] Get
meteor-tool
to build on Windows, and consider adding a 64bit Windows architecture. Note: I think both of these tasks will be easy, but as of right now our Windows build farm doesn't meet the minimum OS requirements of Node 8.
- [x] ~~Consider removing or reducing the use of
Fiber
s in Meteor's command-line tool, though they certainly still work in Node 8, and we've managed to work around the high CPU problems caused by previous versions of the meteor-promise
package (which was the key to getting the tests to pass today).~~ Considered, and postponed until it matters.
- [x] Eliminate most Babel plugins for server code, except for
babel-plugin-transform-es2015-modules-reify
.
- [x] Audit the codebase to catch up with any breaking changes between Node 5 and 6: https://github.com/nodejs/node/wiki/Breaking-changes-between-v5-and-v6
- [x] Upgrade
npm
to version 5, and teach tools/isobuild/meteor-npm.js
to work with package-lock.json
files instead of npm-shrinkwrap.json
files. Merged.