Comments (5)
@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.
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.
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.
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.
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)
- How to require it in node module syntax HOT 9
- Editing the Registry HOT 1
- Add support for Electron 7 HOT 5
- Query 32-bit application data HOT 4
- c HOT 1
- Add support for Electron 8 and 9
- build error when add registry-js HOT 7
- Missing registry-js-v1.12.0-electron-v82-win32-x64.tar.gz? HOT 1
- src directory not included in package
- Undefined elements returned from enumerateValues
- Node-Gyp failure while packing registry.js on Electron App HOT 6
- Compare to regedit?
- Hi
- cool update
- Running install script, failed in 1.4s ... WARN install No prebuilt binaries found
- 37554b7ed95a1d6c59f94c73704afdf01dac24f4
- Looks great
- [email protected]
- Limit to win32
- git:/ 1:
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from registry-js.