emberjs / ember-cli-babel

Ember CLI plugin for Babel
MIT License
153 stars 119 forks source link

Cannot build Ember on ARM64 #443

Closed sandstrom closed 1 year ago

sandstrom commented 2 years ago

Due to issues with nested dependencies, we cannot build Ember on ARM64 on Linux.

The chain of events that's causing this is outlined below:

  1. This package is relying on babel-polyfill (current recommendations is to use core-js directly). https://github.com/babel/ember-cli-babel/blob/v7.26.11/package.json#L53

  2. babel-polyfill is using an old version of core-js. https://github.com/babel/babel/blob/v7.11.5/packages/babel-polyfill/package.json#L22

    This old version is also outdated, this is the warning shown by NPM:

    npm WARN deprecated core-js@2.6.12: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.

  3. The old version of CoreJS has PhantomJS as a dependency. https://github.com/zloirock/core-js/blob/v2.6.5/package.json#L29

    Newer versions of core-js has zero npm dependencies.

  4. The PhantomJS package is deprecated and unmaintained, and it breaks ARM64 on Linux (running npm install with that dependency on your package-lock file will crash). https://www.npmjs.com/package/phantomjs-prebuilt

At level 3 and 4 above there is nothing we can do (core-js has fixed this in recent versions and phantomjs is dead, and will never support ARM). So we should either try to get a fix in with babel-polyfill (level 2), or update this project to not rely on babel-polyfill (level 1).

Questions:

  1. Will ember-cli-babel even exist in the new Embroider world? If not, it's probably not worth spending time fixing this.
  2. Is it possible to update this package to not rely on babel-polyfill?
bertdeblock commented 1 year ago

Going to close this as polyfill support was removed in v8.