How do we download packages? Some might be obtained locally while others are obtained from a server
what is the simplest approach?
desire to write code that works on different environments where not all the libraries are available. This motivates the introduction of a conditional compilation mechanism sensitive to the environment
if you wanted to provide different libraries for each set of environmental properties the different choices can lead to a proliferation of libraries
concerns about dependencies between packages and conditional compilation
does the streaming model effect the ability to compile packages offline or are additional restrictions needed?
we have agreement about introducing a mechanism that deals with the global scope - you can determine whether something is there or not.
circular dependencies between classes is quite common, we are less sure about the likelihood of circular dependencies between packages
what information do we need to decide on which way to go?
can we punt on streaming for now but leave the door open for adding it later?
yes, so long as declarations are provided before the things being declared are used
This would be invalid under this rule:
function foo( ) { x = 5 ... some time later ... var x; }
But note it is ok in the current (old) version of ECMAScript.
Herman would like to accept the following for backwards compatibility:
function foo( ) { x = 5 ... some time later ... if (a) var x; else var x; }
But wants to preclude x being declared with different types as in:
function foo( ) { x = 5 ... some time later ... if (a) var x : int; else var x : string; }
Waldemar: streaming closes Pandora's box which is otherwise opened by dynamic types
Rok drew up an example where a class is loaded asynchronously:
<!-- loads a Button class --> <object classid= ..../> <script> ... some code that wants to create and use a Button ... </script>
The example touches upon what the compiler does when Button hasn't yet been downloaded.
Chris writes:
var Button = GetJavaClass("Button"); // now create an instance of the new class var b:Button = new Button( ... )
Microsoft is concerned about complications of dealing with run-time type expression handling
Herman asks for a precise proposal document and a second document for ideas under discussion. Waldemar volunteers to flesh out the semantics in detail.
Microsoft will study the issue and get back to the group for the May meeting. This is predicated on a detailed write up of the semantics from Waldemar.
Herman would love a web-form based access to a trial implementation to test out his understanding. We need to check on progress in the April meeting.