Giter Site home page Giter Site logo

LTS policy about registry-js HOT 5 CLOSED

desktop avatar desktop commented on July 19, 2024
LTS policy

from registry-js.

Comments (5)

shiftkey avatar shiftkey commented on July 19, 2024 1

@vweevers that decision was based on my experiences with supporting keytar, and having to support prebuild targets for three platforms, two different runtimes and two different architectures. That project has gotten out of hand because I've just been adding new platforms, and currently looks like this:

  • Windows - 23 prebuild targets
  • macOS - 13 prebuild targets (x64 only)
  • Linux - 23 prebuild targets

I'm 👍 to revisiting this and formalize something for these projects, so here's some current thoughts...

We leverage nan wherever possible to work with with abstractions that work across multiple versions of Node. Beyond that, I'd like to be able to use newer V8 APIs that won't ever be backported to older versions of Node, like we found in #144, as well as support context aware modules which are only available in Node 10 or later (electron/electron#18397 has more info).

I fear supporting more platforms means more supporting workarounds.

I also want to note that if you try to build this on a platform when a prebuild is not available, it'll fall back to building from source. That's a bit more graceful than completely dropping support, which was never the intent here.

Looking at the upcoming Node release calendar, later this year I can see the situation where I'd potentially have to support 3 LTS releases (two active, one maintenance), the active version, as well as unstable.

You might not count unstable as a channel worth supporting, but it's been a good canary for me to help identify things before they hit an official release (Electron 5 betas helped me get ready for Node 12, for example).

from registry-js.

shiftkey avatar shiftkey commented on July 19, 2024 1

Coming back to this after some time off, and I have no issues with keeping this project in sync with upstream LTS support. I've opened #163 to add this back in, and I'll write some docs in the README to clarify this before closing this out.

from registry-js.

vweevers avatar vweevers commented on July 19, 2024

Thanks for the elaborate response. I agree that dropping a prebuild isn't necessarily a breaking change, although it can feel like a breaking change for some users (when they didn't need a working node-gyp setup before and now they do).

FWIW in leveldown we've greatly improved our prebuilds situation by switching to N-API and prebuildify. Now any version of Node and Electron use the same prebuild. I.e. we need only one prebuild per platform (osx / win / linux / ..) rather than runtime. This simplification has also allowed us to focus on other platforms, like Android, ARM and Alpine.

from registry-js.

shiftkey avatar shiftkey commented on July 19, 2024

by switching to N-API

N-API is on my list of things to investigate, and I'm glad this was helpful with improving support

from registry-js.

vweevers avatar vweevers commented on July 19, 2024

prebuildify also helped a little bit. Because with prebuildify and its companion node-gyp-build, all prebuilds are included in the npm package. That means there's no download step and users can switch runtimes without rebuilding/reinstalling. For some modules this approach won't be feasible, due to a large number of prebuilds, unless N-API is used ;)

from registry-js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.