JS.NET: Report #7

19 views
Skip to first unread message

Florian Gross

unread,
Aug 21, 2005, 5:06:43 PM8/21/05
to mono...@googlegroups.com
Moin!

Eighth report with some delay. Sorry.

This week's success
===================

* We were able to bump the test count from last week's 3386 to 4141.
Lots of thanks to cesar here. The anti-freeze patch helped a lot.

* Eighth patch went in. Here's the Changelog:

> 2005-08-17 Florian Gross <fl...@ccan.de>
>
> * ScriptObject.cs: Added settable _proto for __proto__. This isn't
> currently exposed to JScript, but set by
> FunctionConstructor.CreateInstance. Moved AddField, ClassName,
> proper_array_index up from JSObject
> * Constructors: Added _length
> * JSObject.cs: Moved AddField, ClassName, proper_array_index up to
> ScriptObject. Added precaching of prototype fields
> * PostOrPrefixOperator.cs: EvaluatePostOrPrefix correctly promotoes
> old value to number. Implemented ++obj.a and obj["a"]--
> * ActivationObject.cs: Added GetMemberValue
> * expression.cs: Added logic for undeclared variables from cesar and
> got it to work
> * ObjectPrototype.cs: toString works on ScriptObjects now
> * JScriptException.cs: Added extra_data for adding details to the
> built-in messages
> * IdentificationTable.cs: Adjusted internal name mapping logic
> * Bindings.cs: Added stubbed IsMissing
> * JSFieldInfo.cs: Added SetValue with Binder and CultureInfo stub
> * Convert.cs: Added IsBoolean, implemented ToString for GlobalScope
> * LateBindings.cs: Added name, obj constructor. Heavily refactored
> by adding GetObjectProperty, TryDirectGetObjectProperty,
> TryGetNativeProperty, DirectSetObjectProperty, TrySetNativeProperty
> and changed methods to use them. We now do prototypes correctly in
> general which also slows us down. MapToInternalName does
> substituation of $ to dollar_. Implemented a simple property cache
> * BooleanPrototype.cs: Better implementations of toString, valueOf
> * Parser.cs: Fixed parsing of "in" keyword in argument lists
> * FunctionPrototype.cs: Works with all ScriptFunctions
> * RegExpObject.cs: Added extra data to RegExpSyntax exception
> * GlobalScope.cs: Initializes elems, removed redundant AddField
> override and implemented stub GetField with lex level
> * ScriptFunctions.cs: Correctly sets __proto__ on result

* Also worked on other stuff that is not yet in:
* DateConstructor.cs: Changed routing for float time values
* RegExpPrototype.cs: Truncates lastIndex before using it
* DatePrototype.cs: prototype's time value is NaN, not 0
* Closure.cs: Sets _prototype from func
* FunctionObject.cs: Changed prototype of user functions
* GlobalObject.cs: parseFloat handles whitespace only differently
* RegExpObject.cs: lastindex changed to double (was int)

* And I'm working on getting the RE stuff merged. There's regressions in
the non-ECMA logic I implemented however and I'm not yet sure how to
best address it. Waiting for feed back from Raja.

* Ruby.NET went into SVN. Not much to see just yet, but this is an
important step.


This week's trouble
===================

* I'm feeling a bit overrun right now. Lots of stuff to do, some of it
not Mono related. Not sure how much longer it will be like that.


This week's goals
=================

* Fixed some of the prototype bugs. I'm pretty sure new ones will appear
eventually...

* Feel free to suggest more stuff. -- On the other hand nobody has ever
really done this formally via this list or mail. Are you guys still
listening? :)


Next week's goals
=================

* Currently, the compiler will just bail out if it sees a constant name
in a constructor call that it doesn't know. It should generate
LateBinding logic instead. This happens with "new Math()" and is
somewhat complex to fix -- but it should be doable.

* Ruby.NET?

* More tests.


Random stuff
============

Thanks go to Miguel and Cesar for being on IRC and taking the time to
respond. It helps a lot if you can talk about problems in time.

Okay, I think that is it for this week. Thanks for all the help I have
received from the Mono folks so far -- it is really a nice community and
that is a good thing.

Patches and tests are available from http://flgr.dyndns.org/mono/

Regards,
Florian Gross

miguel de icaza

unread,
Aug 22, 2005, 2:12:37 PM8/22/05
to mono...@googlegroups.com
* And I'm working on getting the RE stuff merged. There's regressions in
the non-ECMA logic I implemented however and I'm not yet sure how to
best address it. Waiting for feed back from Raja.

He just got back, we should hear from him soon.
 
* Ruby.NET went into SVN. Not much to see just yet, but this is an
important step.

Ah lovely,

* Feel free to suggest more stuff. -- On the other hand nobody has ever
really done this formally via this list or mail. Are you guys still
listening? :)

I am :-)

Whats your sense of things missing on jsc?

Can jsc be used interactively?

miguel

Florian Gross

unread,
Aug 22, 2005, 3:17:06 PM8/22/05
to mono...@googlegroups.com
miguel de icaza wrote:

> * And I'm working on getting the RE stuff merged. There's regressions in
> the non-ECMA logic I implemented however and I'm not yet sure how to
> best address it. Waiting for feed back from Raja.
>
> He just got back, we should hear from him soon.

Nice, he already replied to my initial mail, but seems to be very busy
right now which I think is the reason why he had no time to think about
what is the best solution for the regressions just yet. I think it is
important to get this right so some delay is probably not that bad.

> Whats your sense of things missing on jsc?

On JSC or on our implementation? :)

I think the biggest trouble is still the invalid IL cases and similar.
The run time still lacks support for for (var x in obj) and full
exception support. Other than that there is probably still a lot of
bugs. Oh, and Microsoft specific extensions are generally missing
(except for a few trivial things) as well.

There is also still bugs with some of the generated IL (conditions in if
and the tertiary operator sometimes do not work correctly because of
boxing), but things like that is hard to fix and takes quite some time
to make sure that there is no regressions. This bug currently makes a
lot of the date tests meaningless and causes a bit of confusion
elsewhere as well. (Though I think that there still is minor run time
bugs in the run time as well that will cause results off by a few
seconds -- could be leap seconds or similar.)

There also seems to be a few number rounding issues -- nothing serious,
but enough to let us fail some tests.

If you'd like more details on this I can comment a version of the test
log. It's probably a good idea to do this anyway.

> Can jsc be used interactively?

Nope, but I think an interactive mode like that of Python or Ruby's IRB
would be a very nice thing. Would also help with development. I'm a huge
fan of good interactive environments and think that they help a lot --
with learning a language, debugging your code, trying things out,
finding news way to make our implementation go berserk or just having a
calculator when you need one.

However, to implement such a thing we would need something similar to
eval() -- a way to compile with a given context at run-time. This is
something we don't do yet.

Reply all
Reply to author
Forward
0 new messages