Closed josephg closed 7 years ago
Hi there,
engines
field in it. Dunno why it isn't helping.node4
branch. It compiles and the tests pass, but it hasn't seen any production use.npm
is so old is because its releases are synced with Cap'n Proto releases, of which there have not been any in a while. This in turn is because:
We know it's a crappy situation. That said, there are a bunch of reasons to think it might get better soon:
Yay for hiring people!
What a hairball. I've got a similar issue with two of my projects.
engines
field was added a year ago (Mar 23, 2015). The version in npm was pushed in Dec 2014.capnp-modern
or something to npm. Using node 0.10 with any packages in today's npm sounds like a world of hurt. (I'd be happy to publish that if you want, and we can make it spit out a deprecation warning when the main version starts working again.)Also, going forward do you want this to be the official sandstorm version for nodejs, or would you rather get the pure JS port to 100% compatibility?
The problem with pushing the node4
branch now is that the code won't build against any release version of Cap'n Proto. (Also, there seem to be some crashy bugs that I haven't had time to investigate.)
Bundling the C++ code into the node module seems like a reasonable idea, actually, although I'm not sure if it fully solves the problem. Fundamentally Cap'n Proto at git head is only guaranteed to be well-tested on our specific environment of Linux+Clang, which is obviously too narrow for a node-capnp release. The more platforms we want to officially support, the more work we'll need to do.
I do think that a pure-JS implementation would be technically superior to what we have here. It would be faster and more portable, and it would presumably work in a browser too, which we very much want. But it's a lot of work, which is why we've been making do with this stop-gap.
I've now published version 0.2.0 of the package which supports node4+. It requires Cap'n Proto 0.6, which was released a few months ago.
It looks like node-capnp is written against an (old?) version of libuv. Consider either
engines
field to the package.json docs#warn
or#error
to check libuv version