ES4 draft last call: line continuation in string and regex literals

2008-03-08 Thread Lars Hansen
Last call for the line continuation spec:

http://wiki.ecmascript.org/doku.php?id=spec:line_continuation_in_strings

("Last call" = it will be taken into the language spec within a week or
so unless there's opposition now.)

--lars
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


RE: ES4 draft: Vector

2008-03-08 Thread Lars Hansen
> -Original Message-
> From: Eylon Stroh 
> Sent: 7. mars 2008 12:22
> To: Lars Hansen; es4-discuss@mozilla.org
> Subject: RE: ES4 draft: Vector
> 
> << FIXME   Need to check a detail of the type system, namely 
> whether Vector. is a subtype of Vector. if T is a 
> subtype of U and U is not *. >>
> 
> It shouldn't be.  Consider Bar <: Foo, Baz <: Foo:
> 
> let baz:Vector. = new Vector.(); 
> let foo:Vector. = baz; // allowed if Vector. <: Vector.

> foo.add(new Bar()); 

That would fail with a run-time check since Bar is not <: Baz.

Note that the type annotations here do not imply any absence of run-time
checks.  For this program, the annotations make no difference and could
be left out.  (Annotations only have a run-time effect in that they
cause errors to be thrown on assigning to variables and properties if
the types don't match, and they cause some primitive values to be
converted to other primitive values.)

> let bazItem:Baz = baz.get(0); // type error!

Wouldn't get that far.

Anyhow we've decided against covariant vector types 
except that Vector. <: Vector.<*> for all T.

> Other comments:
> 
> push() is missing "length++;"

It is not; writing to this[length] updates length.

> sort() is missing "return this;"

Indeed.

> I think that the first for loop in unshift() should read
>
> for ( let i=1 ; i <= oldlimit ; i++ )
> this[newlimit-i] = this[oldlimit-i];

I think the test is i <= numitems but otherwise you're right, it needs
to run from 1.

> also, "return newlength;" should be
> length = newlimit;
> return length;
> assuming that the length setter only sets the length 
> property, without setting any default values (otherwise it 
> would need to be moved up to before the for loops).

Superficially this is the same issue as for push(), length has already
been updated by the assignments in the first loop.  So the explicit
update is not needed before return.  But the first loop is not actually
correct, it needs to set the new length first otherwise the assignments
will be illegal if more than one value is unshifted in.

Thanks for the careful reading.

--lars

> 
> 
> -Original Message-
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Lars Hansen
> Sent: Monday, March 03, 2008 12:36 PM
> To: es4-discuss@mozilla.org
> Subject: ES4 draft: Vector
> 
> I enclose a slightly incomplete/rough draft for the Vector class.
> Please comment.
> 
> --lars
> 
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


ES4 draft last call: Line terminator normalization

2008-03-08 Thread Lars Hansen
Last call for the line terminator normalization spec:

http://wiki.ecmascript.org/doku.php?id=spec:line_terminator_normalizatio
n

--lars
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


RE: ES4 draft: Object

2008-03-08 Thread Lars Hansen
> -Original Message-
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of zwetan
> Sent: 7. mars 2008 19:28
> To: Brendan Eich
> Cc: es4-discuss@mozilla.org es4-discuss; Yuh-Ruey Chen; Erik Arvidsson
> Subject: Re: ES4 draft: Object
> 
> why not have a global utility function, maybe in the magic namespace

The "magic" namespace (like "informational" and "helper") is a
specification artifact, it does not exist in an implementation.

--lars
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


Re: ES4 draft: Object

2008-03-08 Thread P T Withington
On 2008-03-07, at 22:43 EST, Brendan Eich wrote:

> The goal is to find the minimum amount of mutating meta-programming
> sharpness for this "make certain properties non-enumerable" tool. If
> it can be done with a one-time namespace qualification step, that  
> wins.

A few comments:

I am confused.  I guess I thought everything was in a namespace, just  
that there is a default namespace that things with no explicit  
namespace are in.  Which makes me wonder how the namespace/not- 
enumerable proposal will really work.

I think it is absolutely right that fixtures are not enumerable.  And  
a bug that things that would have been fixtures if you had them are  
enumerable in es3.  It seems to me that for-in/enumerability are all  
about Maps, maybe now that we have Maps (and classes with fixtures),  
we don't have to worry about enumerability in Objects so much.

Finally, for debugging, I would want to be able to find all the  
properties of an object, non-enumerable and fixtures included.  Will  
there be a way to introspect like that?
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


RE: ES4 draft: Object

2008-03-08 Thread Lars Hansen
> -Original Message-
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of P T Withington
> Sent: 8. mars 2008 10:10
> To: Brendan Eich
> Cc: zwetan; es4-discuss@mozilla.org es4-discuss; Yuh-Ruey 
> Chen; Erik Arvidsson
> Subject: Re: ES4 draft: Object
> 
> On 2008-03-07, at 22:43 EST, Brendan Eich wrote:
> 
> > The goal is to find the minimum amount of mutating meta-programming 
> > sharpness for this "make certain properties non-enumerable" 
> tool. If 
> > it can be done with a one-time namespace qualification step, that 
> > wins.
> 
> A few comments:
> 
> I am confused.  I guess I thought everything was in a 
> namespace, just that there is a default namespace that things 
> with no explicit namespace are in.  Which makes me wonder how 
> the namespace/not- enumerable proposal will really work.

Some namespaces are "public" and distinguished thereby, properties
in these namespaces would be enumerated.  One of the public 
namespaces is the default namespace that things with no explicit
namespace are in.  (We're still fine-tuning the details of that.)

> Finally, for debugging, I would want to be able to find all 
> the properties of an object, non-enumerable and fixtures 
> included.  Will there be a way to introspect like that?

Not certain yet.  Being able to "just do it" is a security 
concern if you think namespaces are in part about hiding access
to private data.  (Debugging facilities in the language are
not a good idea if there is any chance at all that some of the
code in a program may be hostile.  We have to make a choice
about that when we write the spec for the reflection mechanism.)

--lars
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


Re: ES4 draft: Object

2008-03-08 Thread Yuh-Ruey Chen
Brendan Eich wrote:
> > - Users may think this dontenum namespace is magical and yet another
> > thing to keep in mind, when it really just relies on the namespace  
> > trick
> > you mentioned. With the introduction of classes and namespaces, the
> > rules of enumerability are already more complex, so this adds to the
> > cognitive load slightly.
>
> Slightly, but it takes away the magic DontEnum attribute, formerly  
> hogged by the specification and magic predefined objects.
>   

But doesn't DontEnum still have to be there for ES3 objects? How else 
would you prevent the enumeration of ES3 builtin methods, e.g. 
Object.prototype.toString()? Or is there some more open namespace magic 
that I'm unware of?

> > BTW, if setPropertyIsEnumerable() is added,
> > would it be possible to make fixtures enumerable? Enumerability is
> > orthogonal to static analysis (which fixtures are meant to help with),
> > so I don't see why not.
>
> This gets to the heart of the public vs. public-in-context-of-class- 
> or-package issue. We need to sort this out to find out exactly how  
> orthogonal enumerability is, as well as decide how flexible it should  
> be.
>   

Well, I think the only overlap is that public-in-class-context methods 
(or any method really) default to be non-public in terms of enumerability

> > - The name sucks :p
>
> Indeed. How about 'hidden' or 'nonEnumerable'?
>   

I'd prefer 'hidden', since 'nonEnumerable' implies more strongly that a 
prop needs to be in that namespace to not be enumerable, when that's not 
the case.

Which gets me back to the cognitive load issue. Even with a name like 
'hidden', they may think they may have to do some funky syntax like 
|obj.hidden::other_ns::prop| do hide a prop in another namespace.

While we're on the topic of namespaces, I read in the ES4 overview: "In 
addition, the names internal, public, protected, and private denote 
namespace values, but the values depend on the context of the use." As 
the wiki doesn't talk about this, and the online spec is 
inaccessible/outdated, can you elaborate on this? I wonder if 'private' 
could be used somehow for enumerability.

-Yuh-Ruey Chen
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


Re: ES4 draft: Object

2008-03-08 Thread Brendan Eich
On Mar 8, 2008, at 1:16 PM, Yuh-Ruey Chen wrote:

> Brendan Eich wrote:
>>> - Users may think this dontenum namespace is magical and yet another
>>> thing to keep in mind, when it really just relies on the namespace
>>> trick
>>> you mentioned. With the introduction of classes and namespaces, the
>>> rules of enumerability are already more complex, so this adds to the
>>> cognitive load slightly.
>>
>> Slightly, but it takes away the magic DontEnum attribute, formerly
>> hogged by the specification and magic predefined objects.
>
> But doesn't DontEnum still have to be there for ES3 objects? How else
> would you prevent the enumeration of ES3 builtin methods, e.g.
> Object.prototype.toString()? Or is there some more open namespace  
> magic
> that I'm unware of?

ES3 code can't detect namespaces, so arguably shouldn't care if we  
were to implement DontEnum using an open namespace. But this could be  
a problem for mixed ES3 and ES4 scenarios where the ES4 code does  
introspect via Name objects and is surprised to find "ES3" objects  
with qualified property names.

>>> BTW, if setPropertyIsEnumerable() is added,
>>> would it be possible to make fixtures enumerable? Enumerability is
>>> orthogonal to static analysis (which fixtures are meant to help  
>>> with),
>>> so I don't see why not.
>>
>> This gets to the heart of the public vs. public-in-context-of-class-
>> or-package issue. We need to sort this out to find out exactly how
>> orthogonal enumerability is, as well as decide how flexible it should
>> be.
>>
>
> Well, I think the only overlap is that public-in-class-context methods
> (or any method really) default to be non-public in terms of  
> enumerability

Is that the right design?

dynamic class C {
 public var fixture;
 function C() { this.expando = 42; }
}
for (var i in new C)
 intrinsic::print(i);

wouldn't you expect to see "expando" printed? Is it printed because  
the default namespace for expando is the public-default one? I  
believe it is not, in the current proposal and the RI. Rather, each  
class or package gets a nonce-named public namespace, different from  
every other such per-class or per-package public. IIRC package trumps  
class -- classes within a package share the package's nonce-named  
public namespace (Jeff, Lars, please correct me if I'm wrong).

> While we're on the topic of namespaces, I read in the ES4 overview:  
> "In
> addition, the names internal, public, protected, and private denote
> namespace values, but the values depend on the context of the use." As
> the wiki doesn't talk about this, and the online spec is
> inaccessible/outdated, can you elaborate on this? I wonder if  
> 'private'
> could be used somehow for enumerability.

This is the entire issue. See above and let me know if that's unclear.

/be
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


server-side ECMAScript 4?

2008-03-08 Thread ToolmakerSteve98
Are there any Open Source projects to develop server-side ECMAScript 4?

I'm in preliminary stages of locating (or starting if none exists) a project to 
use Tamarin/ActionScript 3 on both server and client. This would naturally 
evolve into ES4 once that is final.

Researching to see what exists.

My tentative thought is to adapt Whitebeam http://www.whitebeam.org/
from SpiderMonkey to Tamarin. This would provide an XML-based Web Application 
Server.

Targeting Flash Player 9 on the client side, as a rich media platform. (and 
Flash Lite 2 on mobile devices -- looking forward to a future version with AS3 
support).

If anyone has an interest, or any relevant information, please let me know.

~ToolmakerSteve
[EMAIL PROTECTED]
http://toolmakersteve.com
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


Re: ES4 draft last call: line continuation in string and regex literals

2008-03-08 Thread Maciej Stachowiak

On Mar 8, 2008, at 8:20 AM, Lars Hansen wrote:

> Last call for the line continuation spec:
>
> http://wiki.ecmascript.org/doku.php?id=spec:line_continuation_in_strings
>
> ("Last call" = it will be taken into the language spec within a week  
> or
> so unless there's opposition now.)

This (and the line terminator normalization draft) seem to be in  
restricted parts of the wiki. Could they go somewhere public?

  - Maciej

___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


Feature specs namespace in wiki.ecmascript.org

2008-03-08 Thread Jeff Dyer
Hi,

The 'spec' directory we were using to post feature specs is not publicly
visible (my bad). To avoid making all the content in that directory (most of
which is out of date) generally visible, I've created a new directory named
'feature specs'. 

  http://wiki.ecmascript.org/doku.php?id=features_specs:feature_specs

You'll find the currently active speclets posted there.

Jd

___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


ES4 process tweaks

2008-03-08 Thread Jeff Dyer
Hi,

Now that feature specs are starting to flow, we should pin down the process
for reviewing these specs. Here is a proposal.

The basic elements of the process:

- Spec distribution
- Discussion by email
- Tickets for open issues
- Last call for comments
- Live discussion at monthly F2F meetings
- Phone calls as needed

Key points:

- Individual feature specs distributed by implementer/designer as discussed
previously.

- Discussion carried out on es4-discuss so that everyone has a voice and
there is a full record of the discussion.

- Unresolved issues get recorded in Trac tickets and linked from the
relevant feature spec

- Last call for comments just to mark the end of the discussion and give
everyone a chance to weigh in. No doubt as the feature specs get woven
together new issues will become apparent. This milestone is simply to agree
on what the known issues are at a specific point in time.

- F2F meetings should be primarily for drafting specs and having "last call"
discussions. It will be good to limit the review discussions as much as
possible to es4-discuss so that everyone is included.

- Phone meetings should be scheduled only as needed. They neither have the
visibility of es4-discuss nor the bandwidth of the F2F meetings, and so
don't serve our current communication needs well.

Thoughts?

Jd

___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


Re: server-side ECMAScript 4?

2008-03-08 Thread Michael O'Brien
We will be using our ES4 implementation server side. Mainly for  
embedded uses, but it could apply more broadly.
We have a server side page technology like ASP -- called ESP. This  
simply processes <% code %> sequences and
effectively converts the web page into javascript code that is then  
processed. We've used this in our Appweb embedded
web server for quite a while, but the javascript language was very  
limited. Still it has worked well.


Upgrading to ES4 will give a very sweet server side environment. Of  
course, we have had to add quite a bit of extra

library code suitable for server side processing.

What kind of server side were you interested in?

Michael O'Brien
Mbedthis Software


On Mar 8, 2008, at 3:14 PM, ToolmakerSteve98 wrote:

Are there any Open Source projects to develop server-side ECMAScript  
4?


I'm in preliminary stages of locating (or starting if none exists) a  
project to use Tamarin/ActionScript 3 on both server and client.  
This would naturally evolve into ES4 once that is final.


Researching to see what exists.

My tentative thought is to adapt Whitebeam http://www.whitebeam.org/
from SpiderMonkey to Tamarin. This would provide an XML-based Web  
Application Server.


Targeting Flash Player 9 on the client side, as a rich media  
platform. (and Flash Lite 2 on mobile devices -- looking forward to  
a future version with AS3 support).


If anyone has an interest, or any relevant information, please let  
me know.


~ToolmakerSteve
[EMAIL PROTECTED]
http://toolmakersteve.com

___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


Re: ES4 draft: Namespace

2008-03-08 Thread zwetan
do I understand well that E4X will be removed from ES4 ???

this is so wrong i can not even believe it...

try to parse XML in .NET/Java/PHP/whatever...
the ONLY elegant and straightforward way to do it is E4X imho

but ok let's stay on the standard and on the web,
look at how browsers parse XML without E4X

see why those projects exists
http://dev.abiss.gr/sarissa/
http://code.google.com/p/ajaxslt/

yeah that's the reality in browsers XML parsing sucks
because every browser does its own cooking...

so again, even if the E4X spec is buggy etc.
would it not be better to keep E4X and/or try to improve it within ES4 ?

I know this ML is focused on specs,
but I can really not understand why something as E4X
which is easy and powerfull to use for any dev would be removed

zwetan
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


Re: ES4 draft: Namespace

2008-03-08 Thread Lars T Hansen
On 3/8/08, zwetan <[EMAIL PROTECTED]> wrote:
> do I understand well that E4X will be removed from ES4 ???

It was never in ES4 to  begin with.

--lars

>  this is so wrong i can not even believe it...
>
>  try to parse XML in .NET/Java/PHP/whatever...
>  the ONLY elegant and straightforward way to do it is E4X imho
>
>  but ok let's stay on the standard and on the web,
>  look at how browsers parse XML without E4X
>
>  see why those projects exists
>  http://dev.abiss.gr/sarissa/
>  http://code.google.com/p/ajaxslt/
>
>  yeah that's the reality in browsers XML parsing sucks
>  because every browser does its own cooking...
>
>  so again, even if the E4X spec is buggy etc.
>  would it not be better to keep E4X and/or try to improve it within ES4 ?
>
>  I know this ML is focused on specs,
>  but I can really not understand why something as E4X
>  which is easy and powerfull to use for any dev would be removed
>
>
>  zwetan
>
> ___
>  Es4-discuss mailing list
>  Es4-discuss@mozilla.org
>  https://mail.mozilla.org/listinfo/es4-discuss
>
___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss


Re: ES4 draft: Namespace

2008-03-08 Thread Brendan Eich
On Mar 8, 2008, at 8:58 PM, zwetan wrote:

> do I understand well that E4X will be removed from ES4 ???

Not removed, not included. It's a separate Ecma standard. As I wrote  
(you read :-/), the spec is in poor enough shape, and feedback from  
our users suggest enough changes, that we didn't want to delay ES4 to  
include it.

More important, we do not believe it is proper to mandate E4X support  
as a normative part of ES4. ES3 is implemented in very small devices  
and used by many other standards. Some of those implementations and  
standards have nothing to do with XML.

> this is so wrong i can not even believe it...

What would be wrong is your apparent stance: require all ES3  
implementations contemplating ES4 to implement E4X, even if XML is  
irrelevant.

Your message goes on to decry the state of XML parsing in browsers,  
but E4X is not really an XML parser. It is out of date regarding XML  
1.1 and namespaces. It has no provision for streaming (SAX-style  
parsing). Its "DOM" duplicates the browsers' DOMs with gratuitous  
differences, yet (optionally) requires the two DOMs to be  
synchronized. How mandating E4X as part of ES4 would help XML parsing  
in browsers is beyond me.

/be

___
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss