50 ms·
I've found technical descriptions of NaCl, but still don't get what it would look like in practice. Does NaCl enable languages like OCaml to be used instead of
by lunchbox 17y ago
I've found technical descriptions of NaCl, but still don't get what it would look like in practice. Does NaCl enable languages like OCaml to be used instead of JavaScript to manipulate HTML pages? Or is it like Silverlight, which has its own non-HTML UI widget library and runs within the browser? Or would it run outside of the browser entirely?
- gecko 17y agoNaCl is a way to run native x86 instructions in a secure manner inside the browser. As such, it has more in common with Silverlight than JavaScript. The difference between NaCl and Silverlight is that you can use any language with NaCl, provided that it compiles to a verifiable subset of x86. The downside, obviously, is that while Silverlight runs just fine on any platform with a CLR, which in practice means desktops and Zunes, NaCl only runs on x86 systems that have the NaCl plugin installed, which currently means the dev channel of Chrome. As such, I view NaCl more as a research project right now than anything else, but who knows? If Chrome OS takes off, NaCl would suddenly be a very serious target, even if no other browsers endorse it. Meanwhile, it's still fun to tinker with.
- lunchbox 17y agoThanks Gecko. What about UI? With Silverlight, one would write XAML to define a webapp's UI elements (e.g. forms). Is there a NaCl equivalent? (Please excuse my rudimentary knowledge of how things work under the hood.)
- gecko 17y agoNaCl can talk to the DOM/JavaScript, or can draw things itself using a frame buffer. All demos I've seen use the latter technique. As far as I know, there are currently no standard widgets. http://nativeclient.googlecode.com/svn/data/docs_tarball/nacl/googleclient/native_client/scons-out/doc/html/index.html http://nativeclient.googlecode.com/svn/data/docs_tarball/nac... has a good overview of the APIs available. I had thought that at least a little OpenGL was available as well, though I don't see it enumerated there. I'm unsure whether that's because I'm wrong, or because it's simply not in the generated documentation. At any rate, given that the API is based around framebuffers, it'd be pretty easy to port GDK or a similar system to run in NaCl.
- tptacek 17y agoNaCL programs are x86 programs built with a special version of the GCC-flavor toolchain, provided by Google, which creates ELF binaries that are especially easy to analyze. Before being run, they're passed through a verifier. The major difference between NaCL x86 and bare-metal x86 is that NaCL programs can't call out to the operating system (or do anything outside their code segment at all). Those limitations don't rule out most programming languages; NaCL-flavored Haskell should be just as doable. The programs themselves do in fact live in a process outside the browser. The big limitation with NaCL is that virtually none of your site's visitors will have it enabled.
- wmf 17y agoDoes NaCl enable languages like OCaml to be used instead of JavaScript to manipulate HTML pages? Or is it like Silverlight, which has its own non-HTML UI widget library and runs within the browser? You can do it either way. Most of the demos draw the UI in NaCl itself (Flash/Silverlight style).