Inside IE 9’s High Performance JavaScript Engine

Thanks. Interesting stuff. Is java script going to be it forever on the browser? Erik does work using java script as an IL. In my simple mind, that seems like a good workaround, but not a complete solution. Will something like this allow any language to run on browser? Like a compiler as a service in the browser deal?
In terms of singularity. Is there an exit summary? What are the learnings? Was there a dead-end? Was there a discovery that lead to new direction and/or project? tia
In terms of Singularity, that was simply a side conversation, unrelated in context... Singularity is and has always been a research project, a test bed for OS proof-of-concept development. The Singularity researchers are the ones who should speak about Singularity's current and future states... I have no idea if/when this will happen.
Again, Singularity is a "platform" for scientific experimentation related to operating system research.
C
Compiling MSIL to JavaScript is the opposite of SPUR, which compiles JavaScript to MSIL. The interesting hypothesis of using a tracing JIT is that it does not matter at which side of the equation you start since all hot abstractions will be "traced away"
at runtime. The potential of no-pay abstraction is quite enticing. It is like being able to feast on an all-you-can-eat buffet without gaining any weight
Awesome analogy, Erik!
Hmm. A buffet with a JIT that traces away calories. Yes, a BJIT. Las Vegas should be the first place to implement this...
C
How does this relate to statically typed languages like C#? Does it improve upon the normal JIT for those too? Apologies if this is answered in the video. I'm bandwidth-limited at the moment so I'll have to watch it later.
Interesting video about a interesting topic. I'm wondering how much a ASP.NET server application could benefit from such a technology. Because such a process runs for a long, long time and therefore even more costly optimizations might pay off. Especially because costly optimizations could run as background task without problems.
Anyway, very I hope will see more interesting research work in this area =)
Interesting video.
Btw, Charles, Erik, do you know the best way I could get an answer to my question for the JSMeter team?
I FW'd your question to Ben and Ben.
C
background theorem prover that tracing itself, what an idea ! sounds like a
M.C. Escher artwork.
and, automatic parallelization in the runtime, wow, truly a gold mine ......
nicely done Charles, and thank you for asking the singularity question.
hope tracing can get into .NET 'beep', today's research is tomorrows reality.
since .NET 4 wave is already released c9 should do more 'future' videos like this.
Yes, SPUR is a tracing JIT for MSIL.
16:30 is what I love about Channel9. Where else can you find this kind of content?
Treat the type as a probabilty wave, and delay the wave collapse until observation. Exceptions can occur on observation, so you Amb them, (Amb in groups of greatest probability, and recursively) for the first one that doesn't, if all do, you have a fatal exception. You pick the probabilities that result in the least possible exceptions, to optimize. But an Exception is really a type conversion. It may not be what you expect but it's a type. Maybe it is supposed to have a string with numbers appended. Swap code/thread that was running in parallel.
I have to watch this all again now. Now I just found this paper saying that there is no least fixed point sematics for Amb, I have a lot to learn.
Superb video!
It does indeed look like a research gold-mine.
Theorem-proving at run-time, tracing, abstract interpretation. Quite a sophisticated set of ideas.
On Singularity, it's interesting that it was a very static approach whereas the tracing approach is much more dynamic in nature but as far as can extract from articles on the Web, there exists an incubation team continuing on the basis that Singularity established.
Also, the idea that Erik mentions of an entire browser being written in C# or some other safe language compiled to MSIL and then traced is pretty cool. The browser and scripts both being traced together.
Also interesting is the Z3 theorem prover. I forget what it's written in, probably C++. It would be interesting if that was ported to perhaps first C++/IL and later to F# (which is probably a better language for a theorem prover).
"Front-ends interact with Z3 by using either a textual format or a binary
API. Three textual input-formats are supported: The SMT-LIB [12] format, the
Simplify [8] format, and a low-level native format in the spirit of the DIMACS
format for propositional SAT formulas. One can also call Z3 procedurally by
using either an ANSI C API, an API for the .NET managed common language
runtime, or an OCaml API.", and "Z3 is implemented in C++".
https://research.microsoft.com/en-us/um/redmond/projects/z3/z3.pdf
Cool, once again a managed implementation of JScript faster than the "current" version of IE's native one. When Managed JScript was still on going, it was faster than IE8's interpreter-based JScript.
So SPUR doesn't yet support neseted trace trees. I wonder if they will consider the trace scheme used in LuaJIT 2 where it doesn't use trace trees, but still supports nested loops well. FYI http://lua-users.org/lists/lua-l/2009-11/msg00089.html
The possibility of being able to trace all the way into SPUR itself is also very interesting. That would evolve into another metacircular VM. Hopefully it'll come true some day.
Page 2 will not load for me. This has happened before.
I can't repro.
C