193 karma · joined January 31, 2011
The features that are being shipped in Firefox are ones that are stable in the draft spec and not expected to change. At the point of spec stability, these features need to be actually tested in broader distribution to help find any potential compatibility corner cases, similar to the issues found with Array.prototype.values [1].
[1] http://www.esdiscuss.org/topic/array-prototype-values-breaks...
Wow wow wow. That is beyond ambiguous into downright misleading. I've always stayed away from these games because I largely don't find them fun, but now I have the additional reason that they are trying to fuck me from the moment they are installed. I didn't realize it was quite that bad.
I passingly wrote some disparaging remarks in a github issue about the ES6 binary data strawman spec written by Dave Herman, pretty much out of my own ignorance, only to get a message from him a few months later asking for feedback on it and what I thought was wrong.
By this point I had learned more about the topic and reading the spec language and knew enough to know I had just been an idiot. I ashamedly responded with an apology and basically told him that my criticism could be ignored because it came from my lack of understanding and not a real problem with the spec.
Narcissus is a meta-circular interpreter that puts a thin layer over the host engine, and requires that host engine itself to have some ES6 features (it can only actually run in Spidermonkey and V8 with the --harmony flag enabled).
Caja is more of a wrapper that protects access to capabilities than anything. In fact it specifically avoids fully parsing source code itself in order to be performant. Its goal is to sandbox code, not interpret it.
Continuum implements the ES6 Object Model and nearly fully implements the internal algorithms of the ~450 page ES6 specification (aside a small handful of things which are a bit out of date or remain to be implemented). In fact, the only thing it does not implement itself is RegExp, which it currently wraps the host engine's functionality to provide. It even fully implements the Date internal algorithms (https://github.com/Benvie/continuum/blob/gh-pages/engine/bui...).
Additionally, it self-hosts much of its own code. All of the ES6 standard library is itself written in ES6 (https://github.com/Benvie/continuum/tree/gh-pages/engine/bui...) and is executed in the virtual machine each time a realm is created. Roughly 25% of Continuum's code is written in ES6, while the other 75% is written in ES3 (I plan to reverse this ratio in time).
Perhaps pairing PyPy with emscripten would be the ideal solution for this, but that would have to be a completely new project because nothing that's currently in Continuum would be useful for that (except probably the standard library that's written in ES6 and executed in the VM).
var leftPartial = (fn, ...args) => function(...remainingArgs){
return fn.apply(this, args.concat(remainingArgs));
};
Run it in http://benvie.github.com/continuum.This is the beginnings of a windows registry library https://github.com/Benvie/node-winreg
This is an example of creating a windowless event loop in order to create a low level keyboard/mouse hook https://github.com/Benvie/node-Windows/blob/master/input.js
The main benefit here isn't that it's possible to do this thing, as many people pointed out the myriad ways this is accomplished elsewhere. The key point is that everything that manipulates data, node core as well as the userland libraries, implement the same interface.
Google of all companies I would have thought would understand and respect the important of giving people the power over their own technology experiences.