Revision: 3864
Author: jasvir
Date: Mon Nov 23 11:54:16 2009
Log: Edited wiki page through web user interface.
http://code.google.com/p/google-caja/source/detail?r=3864
Modified:
/wiki/SourcesOfNonDeterminism.wiki
=======================================
--- /wiki/SourcesOfNonDeterminism.wiki Sat Nov 21 20:10:34 2009
+++ /wiki/SourcesOfNonDeterminism.wiki Mon Nov 23 11:54:16 2009
@@ -12,18 +12,17 @@
== Sources of Non-Determinism in JavaScript ==
* Enumeration order of `for..in` loops
- * Semantics of modifying a list that is being iterated over
* Several aspects of the behaviour of `Array.sort` (stability of the
sort, ordering of calls to accessors and `valueOf`, behaviour when the
comparison function is inconsistent, and a few other edge cases -- see ES5
section 15.4.4.11)
- * Order of callbacks queued using `setTimeout`
- * Some information about running time of a piece of code inferable from
`setTimeout`
* Implementation-defined behaviour of base !JavaScript library functions
(for example, `String.prototype.localeCompare`; any function called with
extra arguments).
+ * Non-deterministic exceptions like out of memory and stack overflow are
catchable
== Sources of Non-determinism in Tamed Libraries ==
When taming libraries, the author of taming must be careful that the tamed
code does not accidentally violate the security properties of the cajoled
program using it. Determinism is a particularly easy property to violate
in taming.
== Sources of Non-determinism in Domita ==
-
+ * Order of callbacks queued using `setTimeout`
+ * Some information about running time of a piece of code inferable from
`setTimeout`
* Fetching an external resource identified by a URL is not deterministic
* This can be addressed using a url policy which caches agressively
* Parse tree generated by setting `innerHTML` varies depending on the
browser