Comments (24)
We did actually discuss this in another thread. Basically, if we're on a weekly release cycle and v8 makes a breaking change that means that we bump the major version that week.
from node.
@mikeal I see, was this done in the node-forward repo? I've not kept up with every issue there. The initial release thread appeared to have just shrugged off the question with folks talking about rvagg/nan. And @indutny said that he "couldn't really say anything on this topic yet" which sounded to me like this wasn't something that was decided.
If you know it happened on node-forward or something, I can go looking there. But nothing on this repo appears to set that standard.
from node.
you know, I can't recall where the thread was, probably a good reason to just have this talk again :)
how i see it is, we're gonna follow semver now. if we take deps that changes backward or forward compatibility then we have to increment that semver number accordingly. staying on top of those changes will be a challenge but I think it's a worthy one.
from node.
-1. Wouldn't that cause dependency hell similar to peerDependencies?
Let's say npm package A is pure JS and package B uses native V8 API. All packages initially support io.js 1.0.0. Then assume that V8 API changes while the io.js JS API remain unchanged, the major version still bumps to 2.0.0. It is reasonable to require B to update their native code, but to A it is really minor version update of io.js and no update should be required. And if package maintainer of A do not update their package.json, a project that require both A and B would face dependency hell problem even when there really isn't one.
I thought the rationale behind semver is so that future npm packages can have dependency to certain version of io.js. That in turn allows io.js to make breaking changes in major version update while preventing outdated npm packages from being accidentally installed. The purpose of semver would be defeated if all pure JS npm packages ended up specifying that they can run on io.js version *.*.*
.
I'd propose to have two or more version numbers come with every io.js release. We can have for example one version number for io.js JS APIs and another version number for V8 APIs. Then npm packages that contain native code can specify dependency to the V8 version in their package.json independent of the JS API version.
Taking this approach further, perhaps we can have separate versioning for different subsystems in io.js, such as libuv.js. Issue #9 already state that we'd like io.js to be split into smaller interdependent subprojects. It make sense to let these subsystems evolve independently and allow npm packages to have dependency to specific subsystems. Though in such case, the main version number of io.js would be mostly symbolic and is rarely needed for dependency management.
from node.
I get that v8 extensions are super powerful, but it's kind of lame that they are the only way to call into a C lib. Maybe it's just me, but I've always thought it was a really big hassle just to call an shared library compared to something like cgo or pinvoke in C#. Why can't there be a nice clean standard solution for shared C library invocation that ships with node and can be configured without writing a bunch of C++ code yourself? IMO, requiring everyone to learn the internals of v8 just to call a function on a C lib makes native extensions a lot more brittle than they need to be and is really painful.
Does it really have to be 100x more complicated than PInvoke?
[DllImport("msvcrt.dll")]
public static extern int puts([MarshalAs(UnmanagedType.LPStr)] string m);
And cgo?
// #include <stdio.h>
import "C"
C.puts("blah")
from node.
- Yes
- C++
- v1.0.0
On Mon, Dec 8, 2014, 07:19 Michael Caine [email protected] wrote:
Hello!
I am pleased to see your valuable contribution to this project. Would you
please mind answering a couple of questions to help me classify this
submission
and/or gather required information for the core team members?
Questions:
- Issue-only Does this issue happen in core, or in some user-space
module from npm or other source? Please ensure that the test case that
reproduces this problem is not using any external dependencies. If the
error is not reproducible with just core modules - it is most likely not a
io.js problem. Expected: yes- Which part of core do you think it might be related to? One of:
debugger, http, assert, buffer, child_process, cluster, crypto, dgram, dns,
domain, events, fs, http, https, module, net, os, path, querystring,
readline, repl, smalloc, stream, timers, tls, url, util, vm, zlib, c++,
docs, other (label)- Which versions of io.js do you think are affected by this? One of:
v0.10, v0.12, v1.0.0 (label)Please provide the answers in an ordered list like this:
- Answer for the first question
- Answer for the second question
- ...
Note that I am just a bot with a limited human-reply parsing abilities,
so please be very careful with numbers and don't skip the questions!In case of success I will say: ...summoning the core team devs!.
In case of validation problem I will say: Sorry, but something is not
right
here:.Truly yours,
Caine.
Responsibilities
- indutny: crypto, tls, https, child_process, c++
- trevnorris: buffer, http, https, smalloc
- bnoordhuis: http, cluster, child_process, dgram
—
Reply to this email directly or view it on GitHub
#47 (comment).
from node.
Oh, the bot reply is gone, replied via email and didn't see it got deleted
from node.
@jezell Something like js-ctypes might make an acceptable addition to core but it's going to be a lot of work. You are welcome to give it a try.
from node.
Is there any formal plan to keep iojs up-to-date with the latest (or latest-1) version of V8? The last upgrade seems to have been to 3.30.37, which is the latest version in the 3.30.x series. In case there is another 3.30.x release, would that translate to a patch version in iojs?
from node.
@ruimarinho that will depend on the nature of the V8 upgrades .. Google aren't exactly masters of versioning so I suspect decisions will be reactive rather than carefully planned on our part. If there is a breaking API change from V8 then that'll warrant a major version bump from io.js, if there are feature additions then likely just a minor bump.
from node.
Ok, fair enough. Is the plan to stick to 0.30.x
on iojs 1.0.0
?
from node.
I don't follow V8 development closely but I don't believe there will be another release soon enough to make it in to our 1.0.0 schedule, we're aiming to have an alpha release in a week or two from now.
from node.
3.30
has been a huge step already 🙏 since node 0.12 will stay at 0.26
, so 3.31
may be too much to ask for. V8 3.31 does ship with a stable implementation of a considerable number of new ES6 features by default (numeric literals, block scoping, classes, object literals extensions and templates).
from node.
Out of curiosity, I've just compiled the results of iojs (head) which includes the most recent v8 update and that alone translates into a nice 28% bump on the ES6 compat-table.
from node.
looks like 3.32.1 has been branched, so latest-not-in-dev would be 3.31.74 not sure if it can be called stable though
from node.
3.31.74.1
is already on Chrome's dev channel, so it looks like it will be the one moving onto beta and stable. @bnoordhuis, any chance of an upgrade to 3.31 being considered by the TC?
from node.
@ruimarinho I intend to bring it up at the TC meeting tonight.
from node.
PR: #243
from node.
@ruimarinho care to run those es6-compat tests again with #243 merged?
from node.
@rvagg: already did (compat-table/compat-table#388)! Do you want me to crosslink with this issue on the commit for future reference? (Edit: mentioned crosslink on commit message).
from node.
thanks @ruimarinho, this is a Big Deal ™️ for io.js ®️
from node.
Indeed, that is a game-changer for me and many other developers for sure! It'd also be interesting to see how benchmarks compare against each milestone (previous 3.30.31 upgrade and joyent/0.12.x which is on 3.26).
from node.
Added an issue for a dedicated resource on ES6 (#251).
from node.
Discussion has moved to #544
from node.
Related Issues (20)
- Cross-compilation bug when compiling for ARM64 on a non-ARM64 host with Windows HOT 2
- Nominating @pimterry as collaborator HOT 5
- Remove `sys` entirely HOT 8
- Error with child_process spawn after updating to node 20.11.0 HOT 2
- International number formatting regression for Hungarian in Node 20.12.x HOT 2
- `--test` & `--test-reporter` & `--test-reporter-destination` will swallow error HOT 4
- Task runner (node --run) should set lifecycle_event environment variable HOT 7
- clang build error for v22.0.0 HOT 2
- Extremely slow assertion error message generation for minified bundles HOT 7
- riscv64 build failure in 22.0.0 HOT 1
- unable to require mjs vis network import? HOT 3
- Spawning some commands on windows fails with error EINVAL in Node 20 LTS (20.12.2) only HOT 2
- GitHub action for Windows fails with module not found error for node 22 HOT 26
- CJS and ESM Hell
- require URLs HOT 4
- flaky: parallel/test-filehandle-close
- flaky: benchmark/test-benchmark-crypto HOT 1
- Cannot install Node20.12.2 Windows ARM (VMWare on M1 Mac) [fixed by uninstalling x64 first] HOT 1
- Tracking issue: compile cache HOT 1
- Tracking issue: require(esm) HOT 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 node.