This is intended as a way to run computation close to data. Some databases embed Lua or pluggable languages for that; ZeroVM can run NaCL binaries (compiled with a special toolchain), verified in the same manner as the JVM checks bytecode, on a very limited sandbox (just some pre-configured data channels). Besides the NaCL verifications, they are enforcing functional programming: the program only has access to deterministic instructions and library calls.
I will try and explain it as I understand it:<p>Google Chrome has a sandboxed VM called <i>Native Client</i> (NaCl) that runs at near full speed. Its very neat.<p>So they have taken that same VM and, instead of Chrome's Pepper API, they have a file-handle-based API and some message-passing between instances.<p>Now you can compile your C/C++/whatever program and run it on the cloud!<p>It seems an excellent building-block for big data and big crunching on the cloud, and it gets the benefit of Google's massive resources on security and performance fixes.
Very cool, I've been waiting for this to happen.<p>I'm surprised that Google doesn't explicitly talk more about this use case for Native Client. It could be the backbone for an AWS/Heroku competitor. The ability to run lightweight tasklets securely would enable a lot of interesting scenarios. While not very significant, Google actually already started doing this with their Exacycle program:<p><a href="http://research.google.com/university/exacycle_program.html" rel="nofollow">http://research.google.com/university/exacycle_program.html</a>
If you think NaCL is bloated, Russ Cox's vx32 may be a lightweight answer:<p><a href="http://pdos.csail.mit.edu/~baford/vm/" rel="nofollow">http://pdos.csail.mit.edu/~baford/vm/</a><p>Some of my experiments:<p><a href="http://www.lshift.net/blog/2010/03/31/what-has-happened-to-the-segment-registers" rel="nofollow">http://www.lshift.net/blog/2010/03/31/what-has-happened-to-t...</a><p><a href="https://github.com/majek/vx32example" rel="nofollow">https://github.com/majek/vx32example</a>
I have never read so many words and understood so little about a technology before. The density of marketing-speak per word is approximately 1.<p>Why can't some people just explain things simply?
I read this as RPC with code instead of just data. If so, this is exactly what I've been looking for a long time, because traditional RPC roundtrip latency is often high - so high, that you need to create a more complicated API to avoid excess iteration.<p>Combine this with ZeroMQ and MessagePack, and you have some serious power at your fingertips.<p>Messages can execute at destination, do iteration, API calls and return only needed part of the data and results back.
This is a perfect Mobile Agent platform (<a href="http://en.wikipedia.org/wiki/Mobile_agent" rel="nofollow">http://en.wikipedia.org/wiki/Mobile_agent</a>)
I'm slightly confused as to if this has any use beyond "on-demand data access" use cases. I reviewed the site and I like the idea but I'm confused as to what else this could be used for. Would something like a "Heroku" style PaaS using PyPy or something that targets NaCL benefit from this is a process separation sense? Anybody care to clarify?
This is very interesting! It will be even more interesting to see if it can be compiled to run on my OS. This is exatly the kind of application I have been looking for. ESXi is too big :)<p>Shameless plug: <a href="http://www.returninfinity.com/baremetal.html" rel="nofollow">http://www.returninfinity.com/baremetal.html</a>
Perhaps the "motivation" section would serve as a better landing page.<p>What's the current state of security with LXC? As I recall, Heroku relies on this for it's virtualization.
<i>what is less known is that when deployed at cloud, Hadoop cannot access that enormous dataset locally due to security restrictions and therefore is screamingly inefficient compared to on-premise Hadoop deployment.</i>[1]<p>Can someone explain what that means?<p>[1]: <a href="http://zerovm.org/killer-apps/" rel="nofollow">http://zerovm.org/killer-apps/</a>
OpenMirage project is a similar-ish idea, providing numerous implementations of a std-lib for different targets (sample targets: Android, Linux OS, raw x86), and using this limited API. Sure, ZeroVM has it's own "vm instructions" rather than "library calls," but the ideas both reduce to building virtual machines for great glory and profit.
I love how many high level technologies are left to mature in the java environment and then are reintroduced on a level that's a lot closer to the kernel and the metal.<p>ZeroMQ is another great example of the progression that started with AMQP.<p>Hadoop hopefully will see a similar fate. ZeroMQ combined with ZeroVM actually offers two important building blocks.