- From: Serguei Golberg <sgolberg@voxeo.com>
- Date: Wed, 7 Jul 2010 10:05:03 -0400
- To: Baggia Paolo <paolo.baggia@loquendo.com>
- Cc: Dan Evans <devans@invores.com>, Chris Davis <davisc@iivip.com>, Petr Kuba <kuba@optimsys.cz>, RJ Auburn <rj@voxeo.com>, "W3C Voice Browser Working Group" <w3c-voice-wg@w3.org>, www-voice <www-voice@w3.org>
Hello Paolo, I'll try my best not to delay. -Serguei On Jul 7, 2010, at 10:02 AM, Baggia Paolo wrote: > Hi, > > in attachment is an updated version of 8_4/8_4_A.txml as a resolution > of ISSUE-677. > > May I gently ask a quick review? We are close to publish again CCXML- > IR > after the resolution of all the IR ISSUES. > > Regards, > Paolo Baggia > Author of CCXML-IR Plan > -----Original Message----- > From: w3c-voice-wg-request@w3.org [mailto:w3c-voice-wg- > request@w3.org] On Behalf Of RJ Auburn > Sent: giovedì 1 luglio 2010 18.08 > To: Dan Evans; www-voice; W3C Voice Browser Working Group > Subject: Re: April CCXML: test case conflicts with ECMA rules - > ISSUE-677 > > Folks: > > We discussed this on todays call and the working group would be > willing to approve additional text below in section 3.3 if it's > acceptable to the others on the list list. > > Quick question for Chris and Dan, what was the exact section in the > EMCA262 spec that defined this behavior? I would like to include a > reference into the spec here. > > ------------------------- > NOTE: CCXML implementations MAY provide different levels of > optimization in their ECMAScript interpreters. One such level of > optimization could be a decision to either execute all the > executable items in a transition as if they were a single script > instead of processing them line by line as is the normal mode of > execution. An example of this is the following bit of CCXML Code: > > <if cond="id==session.id"> > <assign name="application.id" expr="'1'"/> > <if cond="id=='1'"> > <var name="id" expr="'2'"/> > > If executed line by line this would end executing every line in the > script. However, if the CCXML implementation were to optimize this > into a single ecmascript chunk you would get the following scriptlet: > > if(id==session.id) { // will always show as undefined > application.id = '1'; > if( id=='1' ) { > var id = '2'; > } > } > > Due to the way ECMAScript treats var declarations the initial ID > will evaluate as undefined. > > Application developers SHOULD NOT depend on this behavior and SHOULD > instead assume code is executed line by line for maximum portability > between implementations. > ------------------------- > > > Regarding the IR test we will send out a modified version of the > session scope test that should work around this issue for review > later today or tomorrow. > > RJ > > On Jul 1, 2010, at 8:34 AM, RJ Auburn wrote: > >> Chris and Dan: >> >> Unfortunately this is a really nasty issue where pretty much we are >> damned if we do and damned if we don't say stuff one way or >> another. Because of the fact that EMCAScript has such a weird set >> of rules about var declaration when running a script in a single >> shot as apposed to more of a line by line execution model we pretty >> much end up in a spot where there will be material differences in >> how applications execute depending on the level of optimization >> done by the platform vendor. >> >> My current recommendation (personal, I still would need to get >> formal buy-in from the rest of the working group) is that we add >> the following text to section 3.3. >> >> ------------------------- >> NOTE: CCXML implementations MAY provide different levels of >> optimization in their ECMAScript interpreters. One such level of >> optimization could be a decision to either execute all the >> executable items in a transition as if they were a single script >> instead of processing them line by line as is the normal mode of >> execution. An example of this is the following bit of CCXML Code: >> >> <transition event="ccxml.loaded"> >> <assign name="x" expr="3"/> >> <var name="x"/> >> </transition> >> >> If executed line by line this would throw an error.semantic due to >> x being undeclared. However, if the CCXML implementation were to >> optimize this into a single ecmascript chunk you would get the >> following scriptlet: >> >> x = 3; >> var x; >> >> Due to the way ECMAScript treats var declarations this is actually >> treated as valid EMCAScript and assigns the value of 3 to x meaning >> that the CCXML application would execute without raising an error. >> >> Application developers SHOULD NOT depend on this behavior and >> SHOULD instead assume code is executed line by line for maximum >> portability between implementations. >> ------------------------- >> >> If we did this we would then have to update the IR test to work in >> this situation. >> >> Anyone got any thoughts about this approach? While I really get the >> idea of optimizing the CCXML applications to run faster introducing >> quirks like this gets messy fast and I do worry that this will end >> up causing some application developer confusion. >> >> RJ >> >> On Jun 7, 2010, at 4:08 PM, Dan Evans wrote: >> >>> Chris, >>> >>> As I said, your desire for efficiency is laudable. The sad fact >>> is that, as you point out, the transformation you make for >>> efficiency reasons changes the semantics of the document (as >>> compared to line-by-line interpretation), due to the unfortunate >>> way ECMAScript defines the "var" statement. In line-by-line, the >>> var statement is never executed and thus the variable is never >>> declared. In the "efficient" transformation, ECMAScript will >>> declare the variable even though the code branch containing the >>> "var" statement is never executed. >>> >>> I think the test should be changed, allowing the "efficient" >>> transformation to pass, but if this idea is rejected, the CCXML CR >>> should state that "line-by-line" interpretation semantics must be >>> followed so that further confusion is avoided. If the idea is >>> accepted, the CCXML CR should make some other statement to >>> indicate that such "efficient" transformations are acceptable but >>> that var declarations at points other than the beginnings of >>> scopes can be problematic. >>> >>> Dan >>> On 6/7/2010 12:26 PM, Chris Davis wrote: >>>> Everyone, >>>> >>>> I'm seeking clarification for why this is "reject". I discussed >>>> this >>>> w/Dan Evans and he agrees that the test >>>> needs to be changed because as written it requires an inefficient >>>> ECMA >>>> embed model to be used. To >>>> quote Dan: >>>> >>>> "After some more study of JS 1.5 and 1.8, some more reading of >>>> ECMA-262, >>>> and a lot of examples, I managed to correct my misunderstanding >>>> of the >>>> handling of 'var' statements. A 'var' statement, not inside a >>>> function, >>>> anywhere in a compilation unit, results in a property definition >>>> on the >>>> current scope object when the execution context is created (value >>>> undefined), while the optional initializer is left behind at the >>>> point >>>> of the 'var' statement, to be executed only if control flows >>>> through >>>> that point. >>>> >>>> I have always agreed with your desire for efficiency, so now I also >>>> agree that the test should be changed. I don't think the CCXML >>>> standard >>>> intends to preclude what you want to do (if it does, it should >>>> make a >>>> statement to that effect), and the test just exposes an unintended >>>> consequence of breaking a Javascript pgm up into smaller >>>> compilation >>>> units. " >>>> >>>> Dan - the above was from your 5/25 email to me. Please chime in. >>>> >>>> Regards, >>>> Chris >>>> >>>> Baggia Paolo wrote: >>>>> Chris, >>>>> >>>>> we reviewed and discussed your comments on CCXML.1.0 scooping. >>>>> >>>>> ISSUE-677: >>>>> >>>>> Proposed Resolution: Reject >>>>> >>>>> In our opinion ISSUE-677 on #798 in 8_4.txml, is correctly testing >>>>> the scope chain of CCXML (in Sect 8.2.1.1). >>>>> >>>>> Where the first 'if' is meant to see if the variable is resolved >>>>> in the 'session' scope, then other scopes are tested as well. >>>>> >>>>> After discussion your request is pending reject. >>>>> >>>>> Please explicitly confirm that you accept the proposed >>>>> resolution or >>>>> after one week we will consider implicitly accepted the >>>>> resolution. If >>>>> you need clarification, please ask them very soon. >>>>> >>>>> Regards, >>>>> Paolo >>>>> >>>>> >>>> >>>> >>> >>> -- >>> Dan Evans >>> Invores Systems >>> o. 800-795-2304 >>> c. 516-410-0169 >>> s. sip:5002@sip.invores.com:5062 >>> >> >> > > > <8_4_A.txml>
Received on Wednesday, 7 July 2010 14:10:14 UTC