On Sep 2, 2011, at 1:45 PM, Mikeal Rogers wrote:

> We have no control over what v8 adds or what happens in Harmony.
> 
> We do have control over what we use in node.js core and the patterns we drive 
> forward in the community.
> 
> We already don't use a lot of the features in the language and we're happy 
> with that.

Yeah, but I'm not asking what. I'm asking why.

Beliefs if they are rational can be explained. Why is a callback parameter 
supplied with a function expression actual the only or best way to delimit when 
invariants can vary due to event loop concurrency? Why isn't yield *actually 
better*?

Maybe you need to try yield to say more. It's hard to believe the answer is 
just "because we're used to callbacks". So what' s the deeper reason?

As you heard on that NodeConf panel, people to balk at the function expression 
nesting. Ryan and I both agreed it's an issue. Not the most important, but not 
zero either.

/be

> 
> -Mikeal
> 
> On Sep 2, 2011, at September 2, 20111:34 PM, Brendan Eich wrote:
> 
>> On Sep 2, 2011, at 9:08 AM, Mikeal Rogers wrote:
>> 
>>> fibers turns node.js in to something the core team doesn't really view as 
>>> being "node.js" any longer.
>>> 
>>> we believe that it's more important to have assurances that your state 
>>> can't mutate between anything but a callback and that breaking that means 
>>> you're basically breaking node.
>> 
>> Why do you believe that V8, supporting generators as spec'ed for ES6, 
>> embedded in Node, should not allow people to write yield and explicitly give 
>> up invariants?
>> 
>> /be
>> 
>>> 
>>> -Mikeal
>>> 
>>> On Sep 2, 2011, at September 2, 20118:58 AM, Dmitry Soshnikov wrote:
>>> 
>>>> Besides, IIRC, there is a module for Node called node-fibers, which 
>>>> introduces possibility of `yiled` for V8 (though, the implementation 
>>>> differs from (standard) `yield` from SpiderMonkey).
>>>> 
>>>> And for the topic starter -- in ES6 it's planned to standardize `yield` 
>>>> feature which will allow to have asynchronous programming in the 
>>>> synchronous style. Regarding proxies (and actually just simple getters) 
>>>> you may use just a prefix `yield` which suspends the control execution 
>>>> until the asyncronious result will be ready, and then continuous the 
>>>> execution. E.g.:
>>>> 
>>>> Object.defineProperty(foo, "bar", {
>>>>   get: function () {
>>>>     var r = yield setTimeout(getBar, 1000);
>>>>     return r;
>>>>   };
>>>> });
>>>> 
>>>> var x = 10;
>>>> var y = yield foo.bar + x;
>>>> // other code
>>>> 
>>>> But, I think some less verbose syntactic construct than manual `yield` 
>>>> every time (with wrapping all this in a special "task") would be nice to 
>>>> have.
>>>> 
>>>> Transformation on a source code at compile time (with replacing e.g. `wait 
>>>> foo.bar` with a callback) seems very elegant solution.
>>>> 
>>>> Dmitry.
>>>> 
>>>> On 02.09.2011 19:46, Juan Ignacio Dopazo wrote:
>>>>> 
>>>>> There is already a Node module that uses Proxies as a way of enforcing 
>>>>> promises:
>>>>> 
>>>>> https://github.com/sam-mccall/node-plate
>>>>> 
>>>>> It allows your to write:
>>>>> 
>>>>> var pfs = plate(fs);
>>>>> pfs.writeFile('/etc/passwd.bak', pfs.readFile('/etc/passwd'));
>>>>> pfs.end(function(err) { if(err) throw err; console.log("It's saved"); });
>>>>> 
>>>>> Juan
>>>>> 
>>>>> On Fri, Sep 2, 2011 at 12:02 PM, Xavier MONTILLET 
>>>>> <[email protected]> wrote:
>>>>> Hi,
>>>>> 
>>>>> I'm just a lambda JavaScript programmer who loves building black boxes
>>>>> with the smallest APIs possible and a couple of hours ago, I found out
>>>>> Proxys existed and since then, I've been watching talks and reading
>>>>> articles about them. And it sure looks awesome.
>>>>> 
>>>>> But there's one thing I didn't get:
>>>>> Will we be able to use them to provide an API for remote objects?
>>>>> 
>>>>> Because it looks it it can but it lacks the asynchronous aspect.
>>>>> This guys says it will:
>>>>> http://code.google.com/p/es-lab/wiki/Talks#Changes_to_ECMAScript,_Part_2:_Harmony_Highlights_-_proxies_and
>>>>> But when I look at the draf (
>>>>> http://wiki.ecmascript.org/doku.php?id=harmony:proxies#an_eventual_reference_proxy
>>>>> ), the only sentence I see "asynchronous" in is this one:
>>>>> "This example shows how to implement a proxy that represents an
>>>>> eventual reference, enforcing asynchronous property access on an
>>>>> object."
>>>>> 
>>>>> And in the code below, the only thing that might do something
>>>>> asynchronous is this:
>>>>> 
>>>>> get: function(receiver, name) {
>>>>>     return promiseFor(function(){return obj[name];});
>>>>>   },
>>>>> 
>>>>> And it sounds more like it returns some value and *then* gets the real 
>>>>> one.
>>>>> And this promiseFor function appears nowhere else on the page...
>>>>> 
>>>>> And if it can not be asynchronous, it (probably) can't be used in
>>>>> Node.JS which, apart from the browser, will more likely become one of
>>>>> the most used JavaScript environment.
>>>>> But the thing is that if you provide both a synchronous and an
>>>>> asynchronous APIs, it might become a big mess...
>>>>> The the best solution seems to be to provide only an asynchronous API
>>>>> with a callback given as argument to get, set, has, hasOwn and so on.
>>>>> 
>>>>> But then is gets quite strange because you do:
>>>>> 
>>>>> var value = proxy.property;
>>>>> 
>>>>> and it does
>>>>> 
>>>>> var value = handler.get( proxy, 'property' );
>>>>> 
>>>>> but if get is asynchronous this can not work...
>>>>> Or then it has to be some strange C++ code and we loose all the
>>>>> interest of having asynchronous requests in the first place.
>>>>> 
>>>>> Thank you in advance for your potential future response.
>>>>> 
>>>>> ------------------------------------------------------------
>>>>> 
>>>>> To put it in a nutshell: Will Proxys support asynchronous requests?
>>>>> 
>>>>> ------------------------------------------------------------
>>>>> 
>>>>> If my question is dumb and / or pointless, I'm sorry for wasting your 
>>>>> time.
>>>>> _______________________________________________
>>>>> es-discuss mailing list
>>>>> [email protected]
>>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> es-discuss mailing list
>>>>> [email protected]
>>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>> 
>>>> _______________________________________________
>>>> es-discuss mailing list
>>>> [email protected]
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>> 
>>> _______________________________________________
>>> es-discuss mailing list
>>> [email protected]
>>> https://mail.mozilla.org/listinfo/es-discuss
>> 
> 

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to