W3C home > Mailing lists > Public > whatwg@whatwg.org > May 2006

[whatwg] Side effects free scripts

From: Sjoerd Visscher <sjoerd@w3future.com>
Date: Sun, 28 May 2006 12:05:45 +0200
Message-ID: <447975F9.1000608@w3future.com>
Alexey Feldgendler wrote:
> I propose to define the notion of "side effect free script". All 
> browsers which allow scripts in declarations like CSS should only allow 
> side effect free scripts in such places.

I think this is a very good idea. I hope it can be achieved.

> When a script thread is in side effect free mode:
> 
> 1. It stays in this mode until the thread completes.
> 
> 2. It can call any non-native function, but the same restrictions apply.
> 
> 3. It cannot assign any variables except locals.
> 
> 4. It cannot call any native function except those specifically marked 
> by the spec as side effects free. For example, sin() is side effects 
> free, and window.open() is not.
> 
> 5. It can read any property that can be normally read.
> 
> 6. It cannot assign any property for which a native setter function is 
> used.

Ok, here you make it clear that with side effects you only mean visible 
side effects? It seems you are fine with setting properties of 
non-native javascript objects.

> 7. It cannot create new object instances except those specifically 
> marked by the spec as side effects free. For example, RegExp is side 
> effects free, and Image is not.

Creating an Image should be allowed. It might be needed for 
measurements. Appending it to the document shouldn't.

> 8. Any attempt to break these restrictions should generate an exception.
> 
> 9. Optionally, execution time limit may be imposed on the thread, so 
> that it doesn't make the document unrenderable by running an endless 
> loop inside CSS expression().

Javascript might already be too complex to achieve all this, but it 
should certainly be investigated.

-- 
Sjoerd Visscher
http://w3future.com/weblog/
Received on Sunday, 28 May 2006 03:05:45 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 16:58:46 UTC