Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPM Install Fails #20

Closed
rothn opened this issue Nov 5, 2018 · 4 comments
Closed

NPM Install Fails #20

rothn opened this issue Nov 5, 2018 · 4 comments

Comments

@rothn
Copy link

rothn commented Nov 5, 2018

After running "npm install ems"

I get a bunch of errors like:
../src/ffi.cc:126:11: error: ‘class v8::Object’ has no member named ‘ForceSet’

@refack
Copy link

refack commented Nov 6, 2018

Seems like an ffi vs node version mismatch.
Seems like ffi does not support node > 9.

@mogill
Copy link
Owner

mogill commented Nov 6, 2018

Indeed, it seems the Node/v8 interface treadmill has killed EMS for the second time, but this time I have no plans to update it. A PR for Node 10 is welcome, or you can fork EMS and support a NAPI port yourself.

I presume you are looking at EMS because of my comment about shared memory with Node Workers. Although I tried desperately to inform the authors of Node Workers they were painting themselves into a corner by providing only raw memory buffers in a language which is based on managed objects, they chose to not just ignore my advice, they deleted it.

There is no joy in knowing this short-sighted fundamental mistake was foreseeable, preventable, and will ultimately prevent Node from growing beyond single-threaded algorithms.

The theory and practice of EMS builds upon the parallel programming and execution model used in some Cray supercomputers, which in turn are based on DARPA experimental architectures from the early 80's. Alas, Node's authors do not seem interested in the theory underlying parallel programming, and as a consequence Node cannot benefit from the decades of efforts that differentiate High Performance Computing from distributed computing.

@mogill mogill closed this as completed Nov 6, 2018
@rothn
Copy link
Author

rothn commented Nov 6, 2018

Actually, I wanted to use this because it was the only shared memory plugin for Node that seemed like it might be able to manage a shared memory region larger than 2GB (the max size of a buffer). I need this to efficiently share lots of data with Python.

@mogill
Copy link
Owner

mogill commented Nov 6, 2018

Your hunch is correct: EMS is implemented to support the full 64-bit address space. EMS' design prevents Python and Node's heap & GC from seeing more than a few MB at a time so there is no practical upper-bound on dataset size.

Having said that, I'm no longer able to work on EMS without funding. A significant amount of time and effort went into EMS but it was a financial loss, a fiasco from the Node community perspective, and largely ignored by the Python community. Under these circumstances it's difficult to justify investing my personal time and money on further development.

If EMS is an enabling technology for your application then a business case can probably be made for financially supporting it. I would only be too happy to see EMS continue, but I can't do it for the purpose of subsidizing someone else's business.

This was referenced Nov 8, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants