<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.jvmlangsummit.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jrose</id>
	<title>JVMLangSummit - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.jvmlangsummit.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jrose"/>
	<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Special:Contributions/Jrose"/>
	<updated>2026-06-15T20:16:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=970</id>
		<title>Lambda Forms: IR for Method Handles</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=970"/>
		<updated>2013-02-27T23:20:20Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* video: http://medianetwork.oracle.com/video/player/1785383257001&lt;br /&gt;
* slides: http://cr.openjdk.java.net/~jrose/pres/201207-LF-Tutorial.pdf&lt;br /&gt;
* JVM changes: http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/1d7922586cf6&lt;br /&gt;
* JDK changes: http://hg.openjdk.java.net/hsx/hotspot-comp/jdk/rev/050116960e99&lt;br /&gt;
* Old design notes: http://hg.openjdk.java.net/mlvm/mlvm/hotspot/file/tip/meth-lazy.txt&lt;br /&gt;
* Current documentation: https://wikis.oracle.com/display/HotSpotInternals/Method+handles+and+invokedynamic&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=969</id>
		<title>Lambda Forms: IR for Method Handles</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=969"/>
		<updated>2012-11-19T18:51:39Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* video: http://medianetwork.oracle.com/video/player/1785383257001&lt;br /&gt;
* slides: http://cr.openjdk.java.net/~jrose/pres/201207-LF-Tutorial.pdf&lt;br /&gt;
* JVM changes: http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/1d7922586cf6&lt;br /&gt;
* JDK changes: http://hg.openjdk.java.net/hsx/hotspot-comp/jdk/rev/050116960e99&lt;br /&gt;
* Old design notes: http://hg.openjdk.java.net/mlvm/mlvm/hotspot/file/tip/meth-lazy.txt&lt;br /&gt;
* Current documentation (TBD): https://wikis.oracle.com/display/HotSpotInternals/Documentation+Wishlist&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=968</id>
		<title>Lambda Forms: IR for Method Handles</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=968"/>
		<updated>2012-11-19T18:50:05Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* video: http://medianetwork.oracle.com/video/player/1785383257001&lt;br /&gt;
* slides: http://cr.openjdk.java.net/~jrose/pres/201207-LF-Tutorial.pdf&lt;br /&gt;
* JVM changes: http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/1d7922586cf6&lt;br /&gt;
* JDK changes: http://hg.openjdk.java.net/hsx/hotspot-comp/jdk/rev/050116960e99&lt;br /&gt;
* Old design notes: http://hg.openjdk.java.net/mlvm/mlvm/hotspot/file/tip/meth-lazy.txt&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Project_Alchemy:_Rebooting_a_Dynamic_Image-based_Language_with_a_Large_C_Runtime&amp;diff=967</id>
		<title>Project Alchemy: Rebooting a Dynamic Image-based Language with a Large C Runtime</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Project_Alchemy:_Rebooting_a_Dynamic_Image-based_Language_with_a_Large_C_Runtime&amp;diff=967"/>
		<updated>2012-11-06T00:36:04Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== links ==&lt;br /&gt;
* wiki: http://sw-gis.wikidot.com/magik-lang&lt;br /&gt;
* blog: https://blogs.oracle.com/jtc/entry/sprinkle_some_magik_on_that&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Jaba_Batches&amp;diff=965</id>
		<title>Jaba Batches</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Jaba_Batches&amp;diff=965"/>
		<updated>2012-09-27T00:08:59Z</updated>

		<summary type="html">&lt;p&gt;Jrose: moved Jaba Batches: A Radical (And Better) New Approach to SQL, RMI, and WS Clients to Jaba Batches: new name easier to publish as a link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Batch services are a new approach to distributed computation in which clients send batches of operations to a server and receive hierarchical results sets in response. This architecture is modeled on the successful SQL execution model, but it is generalized so that the scripts are not quoted strings, but are instead extracted from normal client code. The key to making this work seamlessly is that the operations are normal method calls, loops and conditionals expressed in the native client language, but these operations are lifted out of the client program and encoded as cross-platform batch scripts for execution on the server. This raises important questions for language designers, in finding the best way to map client language features (types, loops, variables, lambdas) onto the batch script language. The benefit of doing so is that batch scripts allow high-performance cross-platform access to services, and also have a clean mapping to SQL, where a batch always generates a constant number of SQL queries, no matter how many nested loops are used. Batch blocks in effect create Data Transfer Objects and Remote Facades on the fly. I will demonstrate an extension of javac for batches and also discuss ongoing work on batches for Python and JavaScript.&lt;br /&gt;
For more information, see http://www.cs.utexas.edu/~wcook/projects/batches&lt;br /&gt;
&lt;br /&gt;
Here are the slides from the talk: http://www.cs.utexas.edu/~wcook/Drafts/2012/2012-07-JVM-Summit-Batches.pdf&lt;br /&gt;
&lt;br /&gt;
Here is the video:  http://medianetwork.oracle.com/video/player/1785453109001&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Jaba_Batches:_A_Radical_(And_Better)_New_Approach_to_SQL,_RMI,_and_WS_Clients&amp;diff=966</id>
		<title>Jaba Batches: A Radical (And Better) New Approach to SQL, RMI, and WS Clients</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Jaba_Batches:_A_Radical_(And_Better)_New_Approach_to_SQL,_RMI,_and_WS_Clients&amp;diff=966"/>
		<updated>2012-09-27T00:08:59Z</updated>

		<summary type="html">&lt;p&gt;Jrose: moved Jaba Batches: A Radical (And Better) New Approach to SQL, RMI, and WS Clients to Jaba Batches: new name easier to publish as a link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Jaba Batches]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Arrays_2.0_64&amp;diff=964</id>
		<title>Arrays 2.0 64</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Arrays_2.0_64&amp;diff=964"/>
		<updated>2012-09-27T00:05:09Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides: http://cr.openjdk.java.net/~jrose/pres/201207-Arrays-2.pdf&lt;br /&gt;
* video: http://medianetwork.oracle.com/video/player/1785452137001&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Jaba_Batches&amp;diff=963</id>
		<title>Jaba Batches</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Jaba_Batches&amp;diff=963"/>
		<updated>2012-09-27T00:04:10Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Batch services are a new approach to distributed computation in which clients send batches of operations to a server and receive hierarchical results sets in response. This architecture is modeled on the successful SQL execution model, but it is generalized so that the scripts are not quoted strings, but are instead extracted from normal client code. The key to making this work seamlessly is that the operations are normal method calls, loops and conditionals expressed in the native client language, but these operations are lifted out of the client program and encoded as cross-platform batch scripts for execution on the server. This raises important questions for language designers, in finding the best way to map client language features (types, loops, variables, lambdas) onto the batch script language. The benefit of doing so is that batch scripts allow high-performance cross-platform access to services, and also have a clean mapping to SQL, where a batch always generates a constant number of SQL queries, no matter how many nested loops are used. Batch blocks in effect create Data Transfer Objects and Remote Facades on the fly. I will demonstrate an extension of javac for batches and also discuss ongoing work on batches for Python and JavaScript.&lt;br /&gt;
For more information, see http://www.cs.utexas.edu/~wcook/projects/batches&lt;br /&gt;
&lt;br /&gt;
Here are the slides from the talk: http://www.cs.utexas.edu/~wcook/Drafts/2012/2012-07-JVM-Summit-Batches.pdf&lt;br /&gt;
&lt;br /&gt;
Here is the video:  http://medianetwork.oracle.com/video/player/1785453109001&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=960</id>
		<title>2012 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=960"/>
		<updated>2012-08-30T22:24:36Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Welcome to the wiki for the 2012 JVM Language Summit, taking place July 30-August 1, 2012, at the Oracle Santa Clara Campus.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://medianetwork.oracle.com/media/channels/oracle-technology-network/948003234001 Video of 2012 talks] ([http://medianetwork.oracle.com/search/results?q=JVMLS+2012&amp;amp;max=99 query link] [[Media:JVMLS_2012_Videos.pdf‎|query output snapshot]])&lt;br /&gt;
* [http://openjdk.java.net/projects/mlvm/jvmlangsummit JVM Language Summit] main page&lt;br /&gt;
* Email contacts: [mailto:brian.goetz-at-oracle.com Brian Goetz] and [mailto:john.r.rose-at-oracle.com John Rose]&lt;br /&gt;
* Archived wiki pages: [[2008_Main_Page | 2008]], [[2009_Main_Page | 2009]], [[2010_Main_Page | 2010]], [[2011_Main_Page | 2011]]&lt;br /&gt;
* [[Logistics]] page for travel tips and requests&lt;br /&gt;
* To gain write access, [[#Self-registration | see instructions below]].&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Monday, July 30&lt;br /&gt;
!Tuesday, July 31&lt;br /&gt;
!Wednesday, August 1&lt;br /&gt;
|-&lt;br /&gt;
| 8:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
|-&lt;br /&gt;
| 8:40&lt;br /&gt;
|-&lt;br /&gt;
| 9:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Georges Saab: Welcome from Oracle&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Jaba Batches: A Radical (And Better) New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[RTalk: a Smalltalk 'Live' Environment Built on the JVM|Mark Roos (RTalk)]]&lt;br /&gt;
|-&lt;br /&gt;
| 9:20&lt;br /&gt;
|-&lt;br /&gt;
| 9:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Lambda Expressions in Java|Brian Goetz (Lambda)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Rémi Forax (JDart)]] &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[invokedynamic Performance for Groovy|Jochen Theodorou (Groovy)]]&lt;br /&gt;
|-&lt;br /&gt;
| 10:00&lt;br /&gt;
|-&lt;br /&gt;
| 10:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 10:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[MethodHandle Introspection: Internals|Dan Heidinga (MH introspection)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Truffle: A Self-Optimizing Runtime System|Thomas Wuerthinger (Truffle)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Arrays_2.0_64|John Rose (Arrays[2.0&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt;])]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:00&lt;br /&gt;
|-&lt;br /&gt;
| 11:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Lambda Forms: IR for Method Handles|John Rose (Lambda Forms)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Truffle Workshop|Lukas Stadler (Truffle)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Kawa|Per Bothner (Kawa)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building a Dynamic Language on the JVM|Mark Roos (RTalk)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Working with invokedynamic|Jochen Theodorou (invokedynamic)]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:40&lt;br /&gt;
|-&lt;br /&gt;
| 12:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:40&lt;br /&gt;
|-&lt;br /&gt;
| 13:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[0xdata Big Data|Cliff Click (Big Data)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[7 Features the JVM Should Steal From the CLR|Jeroen Frijters (CLR/JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Project Alchemy: Rebooting a Dynamic Image-based Language with a Large C Runtime|Duncan MacGregor (Migrating to JVM)]]&lt;br /&gt;
|-&lt;br /&gt;
| 13:20&lt;br /&gt;
|-&lt;br /&gt;
| 13:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Datomic|Rich Hickey (Datomic)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Embedding Fortress Types and Dispatch in the JVM|David Chase (Fortress)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Patterns for Staged Compilation in Java|Matt Fowles (Implementing StreamBase)]]&lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 14:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[The Mesh Language|Basil Hosmer (Mesh)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-tenancy Programming Models|Ryan Sciampacone (Multi-tenant JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-language JDI? You're Joking, Right?|Jim Laskey (JDI)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:00&lt;br /&gt;
|-&lt;br /&gt;
| 15:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Graal (2012)|Doug Simon (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Assembling for the JVM|Michael Wiedeking (AL1 JVM assembler)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[A Friend in Need Is a Friend Indeed: Kotlin and Java|Andrey Breslav (Kotlin/Java interop)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:40&lt;br /&gt;
|-&lt;br /&gt;
| 16:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Mesh Deeper Dive|Basil Hosmer (Mesh)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Graal Compiler IR|Gilles Duboscq (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Java Collections Framework Design|Donald Raab (Collections)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Design Discussion for Jaba Batches: A New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building on ASM|Duncan MacGregor (ASM)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[What Kotlin Doesn’t Do and Why|Andrey Breslav (Kotlin)]]&lt;br /&gt;
|-&lt;br /&gt;
| 16:20&lt;br /&gt;
|-&lt;br /&gt;
| 16:40&lt;br /&gt;
|-&lt;br /&gt;
| 17:00&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| 17:20&lt;br /&gt;
|-&lt;br /&gt;
| 17:40&lt;br /&gt;
|-&lt;br /&gt;
| 18:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Dinner&lt;br /&gt;
|-&lt;br /&gt;
| 18:20&lt;br /&gt;
|-&lt;br /&gt;
| 18:40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Self-registration ==&lt;br /&gt;
&lt;br /&gt;
In order to upload slides or create and edit wiki pages, you need an account.&lt;br /&gt;
# Log in as user [[User:jvmlang|jvmlang]] and with a password which you should have received separately.&lt;br /&gt;
# Go to the [http://wiki.jvmlangsummit.com/index.php?title=Special:UserLogin&amp;amp;type=signup user creation page].  (If you have an OpenJDK or java.net user name, please reuse that here.)&lt;br /&gt;
# Log out, then back in using your new user name (note the tiny login link at the upper right).&lt;br /&gt;
&lt;br /&gt;
The initial jvmlang participant account does not have full write privileges; please use it only for self-registering.&lt;br /&gt;
&lt;br /&gt;
If you are having trouble recovering your password from last year, just re-register (e.g., ''jrose2'').&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Bonus Discussions ==&lt;br /&gt;
&lt;br /&gt;
(add pages and/or workshop links here)&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:JVMLS_2012_Videos.pdf&amp;diff=959</id>
		<title>File:JVMLS 2012 Videos.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:JVMLS_2012_Videos.pdf&amp;diff=959"/>
		<updated>2012-08-30T22:21:32Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=958</id>
		<title>Lambda Forms: IR for Method Handles</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=958"/>
		<updated>2012-08-30T22:17:24Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* video: http://medianetwork.oracle.com/video/player/1785383257001&lt;br /&gt;
* slides: http://cr.openjdk.java.net/~jrose/pres/201207-LF-Tutorial.pdf&lt;br /&gt;
* JVM changes: http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/1d7922586cf6&lt;br /&gt;
* JDK changes: http://hg.openjdk.java.net/hsx/hotspot-comp/jdk/rev/050116960e99&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=957</id>
		<title>2012 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=957"/>
		<updated>2012-08-30T22:12:07Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Welcome to the wiki for the 2012 JVM Language Summit, taking place July 30-August 1, 2012, at the Oracle Santa Clara Campus.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://medianetwork.oracle.com/media/channels/oracle-technology-network/948003234001 Video of 2012 talks] ([http://medianetwork.oracle.com/search/results?q=JVMLS+2012&amp;amp;max=99 query link])&lt;br /&gt;
* [http://openjdk.java.net/projects/mlvm/jvmlangsummit JVM Language Summit] main page&lt;br /&gt;
* Email contacts: [mailto:brian.goetz-at-oracle.com Brian Goetz] and [mailto:john.r.rose-at-oracle.com John Rose]&lt;br /&gt;
* Archived wiki pages: [[2008_Main_Page | 2008]], [[2009_Main_Page | 2009]], [[2010_Main_Page | 2010]], [[2011_Main_Page | 2011]]&lt;br /&gt;
* [[Logistics]] page for travel tips and requests&lt;br /&gt;
* To gain write access, [[#Self-registration | see instructions below]].&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Monday, July 30&lt;br /&gt;
!Tuesday, July 31&lt;br /&gt;
!Wednesday, August 1&lt;br /&gt;
|-&lt;br /&gt;
| 8:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
|-&lt;br /&gt;
| 8:40&lt;br /&gt;
|-&lt;br /&gt;
| 9:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Georges Saab: Welcome from Oracle&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Jaba Batches: A Radical (And Better) New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[RTalk: a Smalltalk 'Live' Environment Built on the JVM|Mark Roos (RTalk)]]&lt;br /&gt;
|-&lt;br /&gt;
| 9:20&lt;br /&gt;
|-&lt;br /&gt;
| 9:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Lambda Expressions in Java|Brian Goetz (Lambda)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Rémi Forax (JDart)]] &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[invokedynamic Performance for Groovy|Jochen Theodorou (Groovy)]]&lt;br /&gt;
|-&lt;br /&gt;
| 10:00&lt;br /&gt;
|-&lt;br /&gt;
| 10:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 10:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[MethodHandle Introspection: Internals|Dan Heidinga (MH introspection)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Truffle: A Self-Optimizing Runtime System|Thomas Wuerthinger (Truffle)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Arrays_2.0_64|John Rose (Arrays[2.0&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt;])]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:00&lt;br /&gt;
|-&lt;br /&gt;
| 11:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Lambda Forms: IR for Method Handles|John Rose (Lambda Forms)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Truffle Workshop|Lukas Stadler (Truffle)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Kawa|Per Bothner (Kawa)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building a Dynamic Language on the JVM|Mark Roos (RTalk)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Working with invokedynamic|Jochen Theodorou (invokedynamic)]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:40&lt;br /&gt;
|-&lt;br /&gt;
| 12:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:40&lt;br /&gt;
|-&lt;br /&gt;
| 13:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[0xdata Big Data|Cliff Click (Big Data)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[7 Features the JVM Should Steal From the CLR|Jeroen Frijters (CLR/JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Project Alchemy: Rebooting a Dynamic Image-based Language with a Large C Runtime|Duncan MacGregor (Migrating to JVM)]]&lt;br /&gt;
|-&lt;br /&gt;
| 13:20&lt;br /&gt;
|-&lt;br /&gt;
| 13:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Datomic|Rich Hickey (Datomic)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Embedding Fortress Types and Dispatch in the JVM|David Chase (Fortress)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Patterns for Staged Compilation in Java|Matt Fowles (Implementing StreamBase)]]&lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 14:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[The Mesh Language|Basil Hosmer (Mesh)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-tenancy Programming Models|Ryan Sciampacone (Multi-tenant JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-language JDI? You're Joking, Right?|Jim Laskey (JDI)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:00&lt;br /&gt;
|-&lt;br /&gt;
| 15:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Graal (2012)|Doug Simon (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Assembling for the JVM|Michael Wiedeking (AL1 JVM assembler)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[A Friend in Need Is a Friend Indeed: Kotlin and Java|Andrey Breslav (Kotlin/Java interop)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:40&lt;br /&gt;
|-&lt;br /&gt;
| 16:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Mesh Deeper Dive|Basil Hosmer (Mesh)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Graal Compiler IR|Gilles Duboscq (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Java Collections Framework Design|Donald Raab (Collections)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Design Discussion for Jaba Batches: A New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building on ASM|Duncan MacGregor (ASM)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[What Kotlin Doesn’t Do and Why|Andrey Breslav (Kotlin)]]&lt;br /&gt;
|-&lt;br /&gt;
| 16:20&lt;br /&gt;
|-&lt;br /&gt;
| 16:40&lt;br /&gt;
|-&lt;br /&gt;
| 17:00&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| 17:20&lt;br /&gt;
|-&lt;br /&gt;
| 17:40&lt;br /&gt;
|-&lt;br /&gt;
| 18:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Dinner&lt;br /&gt;
|-&lt;br /&gt;
| 18:20&lt;br /&gt;
|-&lt;br /&gt;
| 18:40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Self-registration ==&lt;br /&gt;
&lt;br /&gt;
In order to upload slides or create and edit wiki pages, you need an account.&lt;br /&gt;
# Log in as user [[User:jvmlang|jvmlang]] and with a password which you should have received separately.&lt;br /&gt;
# Go to the [http://wiki.jvmlangsummit.com/index.php?title=Special:UserLogin&amp;amp;type=signup user creation page].  (If you have an OpenJDK or java.net user name, please reuse that here.)&lt;br /&gt;
# Log out, then back in using your new user name (note the tiny login link at the upper right).&lt;br /&gt;
&lt;br /&gt;
The initial jvmlang participant account does not have full write privileges; please use it only for self-registering.&lt;br /&gt;
&lt;br /&gt;
If you are having trouble recovering your password from last year, just re-register (e.g., ''jrose2'').&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Bonus Discussions ==&lt;br /&gt;
&lt;br /&gt;
(add pages and/or workshop links here)&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=956</id>
		<title>2012 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=956"/>
		<updated>2012-08-30T21:37:11Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Welcome to the wiki for the 2012 JVM Language Summit, taking place July 30-August 1, 2012, at the Oracle Santa Clara Campus.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://medianetwork.oracle.com/media/channels/oracle-technology-network/948003234001 Video of 2012 talks]&lt;br /&gt;
* [http://openjdk.java.net/projects/mlvm/jvmlangsummit JVM Language Summit] main page&lt;br /&gt;
* Email contacts: [mailto:brian.goetz-at-oracle.com Brian Goetz] and [mailto:john.r.rose-at-oracle.com John Rose]&lt;br /&gt;
* Archived wiki pages: [[2008_Main_Page | 2008]], [[2009_Main_Page | 2009]], [[2010_Main_Page | 2010]], [[2011_Main_Page | 2011]]&lt;br /&gt;
* [[Logistics]] page for travel tips and requests&lt;br /&gt;
* To gain write access, [[#Self-registration | see instructions below]].&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Monday, July 30&lt;br /&gt;
!Tuesday, July 31&lt;br /&gt;
!Wednesday, August 1&lt;br /&gt;
|-&lt;br /&gt;
| 8:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
|-&lt;br /&gt;
| 8:40&lt;br /&gt;
|-&lt;br /&gt;
| 9:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Georges Saab: Welcome from Oracle&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Jaba Batches: A Radical (And Better) New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[RTalk: a Smalltalk 'Live' Environment Built on the JVM|Mark Roos (RTalk)]]&lt;br /&gt;
|-&lt;br /&gt;
| 9:20&lt;br /&gt;
|-&lt;br /&gt;
| 9:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Lambda Expressions in Java|Brian Goetz (Lambda)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Rémi Forax (JDart)]] &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[invokedynamic Performance for Groovy|Jochen Theodorou (Groovy)]]&lt;br /&gt;
|-&lt;br /&gt;
| 10:00&lt;br /&gt;
|-&lt;br /&gt;
| 10:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 10:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[MethodHandle Introspection: Internals|Dan Heidinga (MH introspection)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Truffle: A Self-Optimizing Runtime System|Thomas Wuerthinger (Truffle)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Arrays_2.0_64|John Rose (Arrays[2.0&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt;])]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:00&lt;br /&gt;
|-&lt;br /&gt;
| 11:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Lambda Forms: IR for Method Handles|John Rose (Lambda Forms)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Truffle Workshop|Lukas Stadler (Truffle)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Kawa|Per Bothner (Kawa)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building a Dynamic Language on the JVM|Mark Roos (RTalk)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Working with invokedynamic|Jochen Theodorou (invokedynamic)]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:40&lt;br /&gt;
|-&lt;br /&gt;
| 12:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:40&lt;br /&gt;
|-&lt;br /&gt;
| 13:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[0xdata Big Data|Cliff Click (Big Data)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[7 Features the JVM Should Steal From the CLR|Jeroen Frijters (CLR/JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Project Alchemy: Rebooting a Dynamic Image-based Language with a Large C Runtime|Duncan MacGregor (Migrating to JVM)]]&lt;br /&gt;
|-&lt;br /&gt;
| 13:20&lt;br /&gt;
|-&lt;br /&gt;
| 13:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Datomic|Rich Hickey (Datomic)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Embedding Fortress Types and Dispatch in the JVM|David Chase (Fortress)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Patterns for Staged Compilation in Java|Matt Fowles (Implementing StreamBase)]]&lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 14:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[The Mesh Language|Basil Hosmer (Mesh)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-tenancy Programming Models|Ryan Sciampacone (Multi-tenant JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-language JDI? You're Joking, Right?|Jim Laskey (JDI)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:00&lt;br /&gt;
|-&lt;br /&gt;
| 15:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Graal (2012)|Doug Simon (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Assembling for the JVM|Michael Wiedeking (AL1 JVM assembler)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[A Friend in Need Is a Friend Indeed: Kotlin and Java|Andrey Breslav (Kotlin/Java interop)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:40&lt;br /&gt;
|-&lt;br /&gt;
| 16:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Mesh Deeper Dive|Basil Hosmer (Mesh)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Graal Compiler IR|Gilles Duboscq (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Java Collections Framework Design|Donald Raab (Collections)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Design Discussion for Jaba Batches: A New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building on ASM|Duncan MacGregor (ASM)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[What Kotlin Doesn’t Do and Why|Andrey Breslav (Kotlin)]]&lt;br /&gt;
|-&lt;br /&gt;
| 16:20&lt;br /&gt;
|-&lt;br /&gt;
| 16:40&lt;br /&gt;
|-&lt;br /&gt;
| 17:00&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| 17:20&lt;br /&gt;
|-&lt;br /&gt;
| 17:40&lt;br /&gt;
|-&lt;br /&gt;
| 18:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Dinner&lt;br /&gt;
|-&lt;br /&gt;
| 18:20&lt;br /&gt;
|-&lt;br /&gt;
| 18:40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Self-registration ==&lt;br /&gt;
&lt;br /&gt;
In order to upload slides or create and edit wiki pages, you need an account.&lt;br /&gt;
# Log in as user [[User:jvmlang|jvmlang]] and with a password which you should have received separately.&lt;br /&gt;
# Go to the [http://wiki.jvmlangsummit.com/index.php?title=Special:UserLogin&amp;amp;type=signup user creation page].  (If you have an OpenJDK or java.net user name, please reuse that here.)&lt;br /&gt;
# Log out, then back in using your new user name (note the tiny login link at the upper right).&lt;br /&gt;
&lt;br /&gt;
The initial jvmlang participant account does not have full write privileges; please use it only for self-registering.&lt;br /&gt;
&lt;br /&gt;
If you are having trouble recovering your password from last year, just re-register (e.g., ''jrose2'').&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Bonus Discussions ==&lt;br /&gt;
&lt;br /&gt;
(add pages and/or workshop links here)&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Multi-language_JDI%3F_You%27re_Joking,_Right%3F&amp;diff=948</id>
		<title>Multi-language JDI? You're Joking, Right?</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Multi-language_JDI%3F_You%27re_Joking,_Right%3F&amp;diff=948"/>
		<updated>2012-08-01T22:19:55Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides: [[Media:2012_JDI_Mlvmjdi.pdf]]&lt;br /&gt;
* boilerplate: [[Media:Xyzzyxjdi.tgz]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:Xyzzyxjdi.tgz&amp;diff=947</id>
		<title>File:Xyzzyxjdi.tgz</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:Xyzzyxjdi.tgz&amp;diff=947"/>
		<updated>2012-08-01T22:19:30Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Expand with &amp;quot;tar -xzf - &amp;lt; $f&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Expand with &amp;quot;tar -xzf - &amp;lt; $f&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Multi-language_JDI%3F_You%27re_Joking,_Right%3F&amp;diff=945</id>
		<title>Multi-language JDI? You're Joking, Right?</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Multi-language_JDI%3F_You%27re_Joking,_Right%3F&amp;diff=945"/>
		<updated>2012-08-01T22:12:50Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides: [[Media:2012_JDI_Mlvmjdi.pdf]]&lt;br /&gt;
* boilerplate: http://cr.openjdk.java.net/~jrose/pres/Laskey-JDI-xyzzyxjdi.zip&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Project_Alchemy:_Rebooting_a_Dynamic_Image-based_Language_with_a_Large_C_Runtime&amp;diff=934</id>
		<title>Project Alchemy: Rebooting a Dynamic Image-based Language with a Large C Runtime</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Project_Alchemy:_Rebooting_a_Dynamic_Image-based_Language_with_a_Large_C_Runtime&amp;diff=934"/>
		<updated>2012-08-01T20:23:02Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== links == * wiki: http://sw-gis.wikidot.com/magik-lang&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== links ==&lt;br /&gt;
* wiki: http://sw-gis.wikidot.com/magik-lang&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Datomic&amp;diff=933</id>
		<title>Datomic</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Datomic&amp;diff=933"/>
		<updated>2012-08-01T20:09:25Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== links == * slides: Media:Datomicjvmsummit2012.pdf&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== links ==&lt;br /&gt;
* slides: [[Media:Datomicjvmsummit2012.pdf]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:Datomicjvmsummit2012.pdf&amp;diff=932</id>
		<title>File:Datomicjvmsummit2012.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:Datomicjvmsummit2012.pdf&amp;diff=932"/>
		<updated>2012-08-01T20:09:09Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=931</id>
		<title>2012 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=931"/>
		<updated>2012-08-01T19:54:00Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Welcome to the wiki for the 2012 JVM Language Summit, taking place July 30-August 1, 2012, at the Oracle Santa Clara Campus.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://openjdk.java.net/projects/mlvm/jvmlangsummit JVM Language Summit] main page&lt;br /&gt;
* Email contacts: [mailto:brian.goetz-at-oracle.com Brian Goetz] and [mailto:john.r.rose-at-oracle.com John Rose]&lt;br /&gt;
* Archived wiki pages: [[2008_Main_Page | 2008]], [[2009_Main_Page | 2009]], [[2010_Main_Page | 2010]], [[2011_Main_Page | 2011]]&lt;br /&gt;
* [[Logistics]] page for travel tips and requests&lt;br /&gt;
* To gain write access, [[#Self-registration | see instructions below]].&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Monday, July 30&lt;br /&gt;
!Tuesday, July 31&lt;br /&gt;
!Wednesday, August 1&lt;br /&gt;
|-&lt;br /&gt;
| 8:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
|-&lt;br /&gt;
| 8:40&lt;br /&gt;
|-&lt;br /&gt;
| 9:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Georges Saab: Welcome from Oracle&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Jaba Batches: A Radical (And Better) New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[RTalk: a Smalltalk 'Live' Environment Built on the JVM|Mark Roos (RTalk)]]&lt;br /&gt;
|-&lt;br /&gt;
| 9:20&lt;br /&gt;
|-&lt;br /&gt;
| 9:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Lambda Expressions in Java|Brian Goetz (Lambda)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Rémi Forax (JDart)]] &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[invokedynamic Performance for Groovy|Jochen Theodorou (Groovy)]]&lt;br /&gt;
|-&lt;br /&gt;
| 10:00&lt;br /&gt;
|-&lt;br /&gt;
| 10:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 10:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[MethodHandle Introspection: Internals|Dan Heidinga (MH introspection)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Truffle: A Self-Optimizing Runtime System|Thomas Wuerthinger (Truffle)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Arrays_2.0_64|John Rose (Arrays[2.0&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt;])]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:00&lt;br /&gt;
|-&lt;br /&gt;
| 11:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Lambda Forms: IR for Method Handles|John Rose (Lambda Forms)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Truffle Workshop|Lukas Stadler (Truffle)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Kawa|Per Bothner (Kawa)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building a Dynamic Language on the JVM|Mark Roos (RTalk)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Working with invokedynamic|Jochen Theodorou (invokedynamic)]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:40&lt;br /&gt;
|-&lt;br /&gt;
| 12:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:40&lt;br /&gt;
|-&lt;br /&gt;
| 13:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[0xdata|Cliff Click (Big Data)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[7 Features the JVM Should Steal From the CLR|Jeroen Frijters (CLR/JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Project Alchemy: Rebooting a Dynamic Image-based Language with a Large C Runtime|Duncan MacGregor (Migrating to JVM)]]&lt;br /&gt;
|-&lt;br /&gt;
| 13:20&lt;br /&gt;
|-&lt;br /&gt;
| 13:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Datomic|Rich Hickey (Datomic)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Embedding Fortress Types and Dispatch in the JVM|David Chase (Fortress)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Patterns for Staged Compilation in Java|Matt Fowles (Staged compilation)]]&lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 14:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[The Mesh Language|Basil Hosmer (Mesh)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-tenancy Programming Models|Ryan Sciampacone (Multi-tenant JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-language JDI? You're Joking, Right?|Jim Laskey (JDI)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:00&lt;br /&gt;
|-&lt;br /&gt;
| 15:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Graal (2012)|Doug Simon (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Assembling for the JVM|Michael Wiedeking (AL1 JVM assembler)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[A Friend in Need Is a Friend Indeed: Kotlin and Java|Andrey Breslav (Kotlin/Java interop)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:40&lt;br /&gt;
|-&lt;br /&gt;
| 16:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Mesh Deeper Dive|Basil Hosmer (Mesh)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Graal Compiler IR|Gilles Duboscq (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Java Collections Framework Design|Donald Raab (Collections)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Design Discussion for Jaba Batches: A New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building on ASM|Duncan MacGregor (ASM)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[What Kotlin Doesn’t Do and Why|Andrey Breslav (Kotlin)]]&lt;br /&gt;
|-&lt;br /&gt;
| 16:20&lt;br /&gt;
|-&lt;br /&gt;
| 16:40&lt;br /&gt;
|-&lt;br /&gt;
| 17:00&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| 17:20&lt;br /&gt;
|-&lt;br /&gt;
| 17:40&lt;br /&gt;
|-&lt;br /&gt;
| 18:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Dinner&lt;br /&gt;
|-&lt;br /&gt;
| 18:20&lt;br /&gt;
|-&lt;br /&gt;
| 18:40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Self-registration ==&lt;br /&gt;
&lt;br /&gt;
In order to upload slides or create and edit wiki pages, you need an account.&lt;br /&gt;
# Log in as user [[User:jvmlang|jvmlang]] and with a password which you should have received separately.&lt;br /&gt;
# Go to the [http://wiki.jvmlangsummit.com/index.php?title=Special:UserLogin&amp;amp;type=signup user creation page].  (If you have an OpenJDK or java.net user name, please reuse that here.)&lt;br /&gt;
# Log out, then back in using your new user name (note the tiny login link at the upper right).&lt;br /&gt;
&lt;br /&gt;
The initial jvmlang participant account does not have full write privileges; please use it only for self-registering.&lt;br /&gt;
&lt;br /&gt;
If you are having trouble recovering your password from last year, just re-register (e.g., ''jrose2'').&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Bonus Discussions ==&lt;br /&gt;
&lt;br /&gt;
(add pages and/or workshop links here)&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Arrays_2.0_64&amp;diff=930</id>
		<title>Arrays 2.0 64</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Arrays_2.0_64&amp;diff=930"/>
		<updated>2012-08-01T19:53:07Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== Links == * slides: http://cr.openjdk.java.net/~jrose/pres/201207-Arrays-2.pdf&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides: http://cr.openjdk.java.net/~jrose/pres/201207-Arrays-2.pdf&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=RTalk:_a_Smalltalk_%27Live%27_Environment_Built_on_the_JVM&amp;diff=903</id>
		<title>RTalk: a Smalltalk 'Live' Environment Built on the JVM</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=RTalk:_a_Smalltalk_%27Live%27_Environment_Built_on_the_JVM&amp;diff=903"/>
		<updated>2012-07-31T22:15:53Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== Links == * slides:  Media:Roos-Rtalk12.pdf * workshop: Media:Roos-RtalkWks12.pdf&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides:  [[Media:Roos-Rtalk12.pdf]]&lt;br /&gt;
* workshop: [[Media:Roos-RtalkWks12.pdf]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:Roos-RtalkWks12.pdf&amp;diff=902</id>
		<title>File:Roos-RtalkWks12.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:Roos-RtalkWks12.pdf&amp;diff=902"/>
		<updated>2012-07-31T22:15:24Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:Roos-Rtalk12.pdf&amp;diff=901</id>
		<title>File:Roos-Rtalk12.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:Roos-Rtalk12.pdf&amp;diff=901"/>
		<updated>2012-07-31T22:14:47Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Embedding_Fortress_Types_and_Dispatch_in_the_JVM&amp;diff=900</id>
		<title>Embedding Fortress Types and Dispatch in the JVM</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Embedding_Fortress_Types_and_Dispatch_in_the_JVM&amp;diff=900"/>
		<updated>2012-07-31T22:13:10Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== Links == * slides: Media:DavidChase-JVMLS2012.pdf&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides: [[Media:DavidChase-JVMLS2012.pdf]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:DavidChase-JVMLS2012.pdf&amp;diff=899</id>
		<title>File:DavidChase-JVMLS2012.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:DavidChase-JVMLS2012.pdf&amp;diff=899"/>
		<updated>2012-07-31T22:12:33Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Multi-tenancy_Programming_Models&amp;diff=898</id>
		<title>Multi-tenancy Programming Models</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Multi-tenancy_Programming_Models&amp;diff=898"/>
		<updated>2012-07-31T22:09:35Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== Links == * http://www.ibm.com/developerworks/websphere/techjournal/1108_sciampacone/1108_sciampacone.html&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* http://www.ibm.com/developerworks/websphere/techjournal/1108_sciampacone/1108_sciampacone.html&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:Testfile.tgz&amp;diff=890</id>
		<title>File:Testfile.tgz</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:Testfile.tgz&amp;diff=890"/>
		<updated>2012-07-31T21:52:28Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=7_Features_the_JVM_Should_Steal_From_the_CLR&amp;diff=881</id>
		<title>7 Features the JVM Should Steal From the CLR</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=7_Features_the_JVM_Should_Steal_From_the_CLR&amp;diff=881"/>
		<updated>2012-07-31T20:54:05Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== Links == * slides: Media:Jeroen Frijters - JVM-CLR.pdf * blog: http://weblog.ikvm.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides: [[Media:Jeroen Frijters - JVM-CLR.pdf]]&lt;br /&gt;
* blog: http://weblog.ikvm.net/&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Java_Collections_Framework_Design&amp;diff=872</id>
		<title>Java Collections Framework Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Java_Collections_Framework_Design&amp;diff=872"/>
		<updated>2012-07-30T21:03:03Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== Links == * slides: Media:Raab_Collections_Design.pdf‎&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides: [[Media:Raab_Collections_Design.pdf‎]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:Raab_Collections_Design.pdf&amp;diff=871</id>
		<title>File:Raab Collections Design.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:Raab_Collections_Design.pdf&amp;diff=871"/>
		<updated>2012-07-30T21:02:48Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Graal_(2012)&amp;diff=870</id>
		<title>Graal (2012)</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Graal_(2012)&amp;diff=870"/>
		<updated>2012-07-30T21:00:13Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== Links == * slides: Media:Simon_Graal_Presentation.pdf‎&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides: [[Media:Simon_Graal_Presentation.pdf‎]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:Simon_Graal_Presentation.pdf&amp;diff=869</id>
		<title>File:Simon Graal Presentation.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:Simon_Graal_Presentation.pdf&amp;diff=869"/>
		<updated>2012-07-30T20:59:41Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Lambda_Expressions_in_Java&amp;diff=868</id>
		<title>Lambda Expressions in Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Lambda_Expressions_in_Java&amp;diff=868"/>
		<updated>2012-07-30T20:58:03Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== References ==&lt;br /&gt;
* slides: [[Media:Goetz-jvmls-lambda.pdf]]&lt;br /&gt;
* translation doc: http://cr.openjdk.java.net/~briangoetz/lambda/lambda-translation.html&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=File:Goetz-jvmls-lambda.pdf&amp;diff=867</id>
		<title>File:Goetz-jvmls-lambda.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=File:Goetz-jvmls-lambda.pdf&amp;diff=867"/>
		<updated>2012-07-30T20:56:00Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=865</id>
		<title>Lambda Forms: IR for Method Handles</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Lambda_Forms:_IR_for_Method_Handles&amp;diff=865"/>
		<updated>2012-07-30T20:20:26Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== Links == * slides: http://cr.openjdk.java.net/~jrose/pres/201207-LF-Tutorial.pdf * JVM changes: http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/1d7922586cf6 * JDK chan...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
* slides: http://cr.openjdk.java.net/~jrose/pres/201207-LF-Tutorial.pdf&lt;br /&gt;
* JVM changes: http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/1d7922586cf6&lt;br /&gt;
* JDK changes: http://hg.openjdk.java.net/hsx/hotspot-comp/jdk/rev/050116960e99&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Lambda_Expressions_in_Java&amp;diff=858</id>
		<title>Lambda Expressions in Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Lambda_Expressions_in_Java&amp;diff=858"/>
		<updated>2012-07-27T23:16:52Z</updated>

		<summary type="html">&lt;p&gt;Jrose: Created page with &amp;quot;== References == * http://cr.openjdk.java.net/~briangoetz/lambda/lambda-translation.html&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== References ==&lt;br /&gt;
* http://cr.openjdk.java.net/~briangoetz/lambda/lambda-translation.html&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=849</id>
		<title>2012 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=849"/>
		<updated>2012-06-26T17:24:55Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Welcome to the wiki for the 2012 JVM Language Summit, taking place July 30-August 1, 2012, at the Oracle Santa Clara Campus.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://openjdk.java.net/projects/mlvm/jvmlangsummit JVM Language Summit] main page&lt;br /&gt;
* Email contacts: [mailto:brian.goetz-at-oracle.com Brian Goetz] and [mailto:john.r.rose-at-oracle.com John Rose]&lt;br /&gt;
* Archived wiki pages: [[2008_Main_Page | 2008]], [[2009_Main_Page | 2009]], [[2010_Main_Page | 2010]], [[2011_Main_Page | 2011]]&lt;br /&gt;
* [[Logistics]] page for travel tips and requests&lt;br /&gt;
* To gain write access, [[#Self-registration | see instructions below]].&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Monday, July 30&lt;br /&gt;
!Tuesday, July 31&lt;br /&gt;
!Wednesday, August 1&lt;br /&gt;
|-&lt;br /&gt;
| 8:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
|-&lt;br /&gt;
| 8:40&lt;br /&gt;
|-&lt;br /&gt;
| 9:00&lt;br /&gt;
| style=&amp;quot;background-color:#ffeb9c;&amp;quot; | Intro and Welcome&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Jaba Batches: A Radical (And Better) New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[RTalk: a Smalltalk 'Live' Environment Built on the JVM|Mark Roos (RTalk)]]&lt;br /&gt;
|-&lt;br /&gt;
| 9:20&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; | Keynote&lt;br /&gt;
|-&lt;br /&gt;
| 9:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Patterns for Staged Compilation in Java|Matt Fowles (Staged compilation)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[invokedynamic Performance for Groovy|Jochen Theodorou (Groovy)]]&lt;br /&gt;
|-&lt;br /&gt;
| 10:00&lt;br /&gt;
|-&lt;br /&gt;
| 10:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 10:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Brian Goetz&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Truffle: A Self-Optimizing Runtime System|Thomas Wuerthinger (Truffle)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
John Rose&lt;br /&gt;
|-&lt;br /&gt;
| 11:00&lt;br /&gt;
|-&lt;br /&gt;
| 11:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[MethodHandle Introspection: Internals|Dan Heidinga (MH introspection)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Truffle Workshop|Lukas Stadlar (Truffle)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Kawa|Per Bothner (Kawa)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building a Dynamic Language on the JVM|Mark Roos (RTalk)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Working with invokedynamic|Jochen Theodorou (invokedynamic)]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:40&lt;br /&gt;
|-&lt;br /&gt;
| 12:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:40&lt;br /&gt;
|-&lt;br /&gt;
| 13:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Oracle&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[7 Features the JVM Should Steal From the CLR|Jeroen Frijters (CLR/JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Project Alchemy: Rebooting a Dynamic Image-based Language with a Large C Runtime|Duncan MacGregor (Migrating to JVM)]]&lt;br /&gt;
|-&lt;br /&gt;
| 13:20&lt;br /&gt;
|-&lt;br /&gt;
| 13:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Datomic|Rich Hickey (Datomic)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Embedding Fortress Types and Dispatch in the JVM|David Chase (Fortress)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Rémi Forax (JDart)&lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 14:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[The Mesh Language|Basil Hosmer (Mesh)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-tenancy Programming Models|Ryan Sciampacone (Multi-tenant JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-language JDI? You're Joking, Right?|Jim Laskey (JDI)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:00&lt;br /&gt;
|-&lt;br /&gt;
| 15:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Graal (2012)|Doug Simon (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Assembling for the JVM|Michael Wiedeking (AL1 JVM assembler)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[A Friend in Need Is a Friend Indeed: Kotlin and Java|Andrey Breslav (Kotlin/Java interop)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:40&lt;br /&gt;
|-&lt;br /&gt;
| 16:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Mesh Deeper Dive|Basil Hosmer (Mesh)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Graal Compiler IR|Gilles Duboscq (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Java Collections Framework Design|Donald Raab (Collections)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Design Discussion for Jaba Batches: A New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building on ASM|Duncan MacGregor (ASM)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[What Kotlin Doesn’t Do and Why|Andrey Breslav (Kotlin)]]&lt;br /&gt;
|-&lt;br /&gt;
| 16:20&lt;br /&gt;
|-&lt;br /&gt;
| 16:40&lt;br /&gt;
|-&lt;br /&gt;
| 17:00&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| 17:20&lt;br /&gt;
|-&lt;br /&gt;
| 17:40&lt;br /&gt;
|-&lt;br /&gt;
| 18:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Dinner&lt;br /&gt;
|-&lt;br /&gt;
| 18:20&lt;br /&gt;
|-&lt;br /&gt;
| 18:40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Self-registration ==&lt;br /&gt;
&lt;br /&gt;
In order to upload slides or create and edit wiki pages, you need an account.&lt;br /&gt;
# Log in as user [[User:jvmlang|jvmlang]] and with a password which you should have received separately.&lt;br /&gt;
# Go to the [http://wiki.jvmlangsummit.com/index.php?title=Special:UserLogin&amp;amp;type=signup user creation page].  (If you have an OpenJDK or java.net user name, please reuse that here.)&lt;br /&gt;
# Log out, then back in using your new user name (note the tiny login link at the upper right).&lt;br /&gt;
&lt;br /&gt;
The initial jvmlang participant account does not have full write privileges; please use it only for self-registering.&lt;br /&gt;
&lt;br /&gt;
If you are having trouble recovering your password from last year, just re-register (e.g., ''jrose2'').&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Bonus Discussions ==&lt;br /&gt;
&lt;br /&gt;
(add pages and/or workshop links here)&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=MediaWiki:Sidebar&amp;diff=848</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=MediaWiki:Sidebar&amp;diff=848"/>
		<updated>2012-06-26T16:57:50Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** User:Jvmlang|Self-register&lt;br /&gt;
** http://jvmlangsummit.com|Summit Home&lt;br /&gt;
** mainpage|Summit Wiki Main&lt;br /&gt;
** Special:Listusers|List Users&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** helppage|help&lt;br /&gt;
** JVMLangSummit:Copyrights|Terms of Use&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
** Special:Upload|Upload file&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=847</id>
		<title>2012 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=847"/>
		<updated>2012-06-26T16:53:53Z</updated>

		<summary type="html">&lt;p&gt;Jrose: /* Write Access &amp;amp; Uploading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Welcome to the wiki for the 2012 JVM Language Summit, taking place July 30-August 1, 2012, at the Oracle Santa Clara Campus.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://openjdk.java.net/projects/mlvm/jvmlangsummit JVM Language Summit] main page&lt;br /&gt;
* Email contacts: [mailto:brian.goetz-at-oracle.com Brian Goetz] and [mailto:john.r.rose-at-oracle.com John Rose]&lt;br /&gt;
* Archived wiki pages: [[2008_Main_Page | 2008]], [[2009_Main_Page | 2009]], [[2010_Main_Page | 2010]], [[2011_Main_Page | 2011]]&lt;br /&gt;
* [[Logistics]] page for travel tips and requests&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Monday, July 30&lt;br /&gt;
!Tuesday, July 31&lt;br /&gt;
!Wednesday, August 1&lt;br /&gt;
|-&lt;br /&gt;
| 8:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Breakfast&lt;br /&gt;
|-&lt;br /&gt;
| 8:40&lt;br /&gt;
|-&lt;br /&gt;
| 9:00&lt;br /&gt;
| style=&amp;quot;background-color:#ffeb9c;&amp;quot; | Intro and Welcome&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Jaba Batches: A Radical (And Better) New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[RTalk: a Smalltalk 'Live' Environment Built on the JVM|Mark Roos (RTalk)]]&lt;br /&gt;
|-&lt;br /&gt;
| 9:20&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; | Keynote&lt;br /&gt;
|-&lt;br /&gt;
| 9:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Patterns for Staged Compilation in Java|Matt Fowles (Staged compilation)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[invokedynamic Performance for Groovy|Jochen Theodorou (Groovy)]]&lt;br /&gt;
|-&lt;br /&gt;
| 10:00&lt;br /&gt;
|-&lt;br /&gt;
| 10:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 10:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Brian Goetz&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Truffle: A Self-Optimizing Runtime System|Thomas Wuerthinger (Truffle)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
John Rose&lt;br /&gt;
|-&lt;br /&gt;
| 11:00&lt;br /&gt;
|-&lt;br /&gt;
| 11:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[MethodHandle Introspection: Internals|Dan Heidinga (MH introspection)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Truffle Workshop|Lukas Stadlar (Truffle)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Kawa|Per Bothner (Kawa)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building a Dynamic Language on the JVM|Mark Roos (RTalk)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Working with invokedynamic|Jochen Theodorou (invokedynamic)]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:40&lt;br /&gt;
|-&lt;br /&gt;
| 12:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Lunch&lt;br /&gt;
|-&lt;br /&gt;
| 12:40&lt;br /&gt;
|-&lt;br /&gt;
| 13:00&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Oracle&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[7 Features the JVM Should Steal From the CLR|Jeroen Frijters (CLR/JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Project Alchemy: Rebooting a Dynamic Image-based Language with a Large C Runtime|Duncan MacGregor (Migrating to JVM)]]&lt;br /&gt;
|-&lt;br /&gt;
| 13:20&lt;br /&gt;
|-&lt;br /&gt;
| 13:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Datomic|Rich Hickey (Datomic)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Embedding Fortress Types and Dispatch in the JVM|David Chase (Fortress)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
Rémi Forax (JDart)&lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
| style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| 14:40&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[The Mesh Language|Basil Hosmer (Mesh)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-tenancy Programming Models|Ryan Sciampacone (Multi-tenant JVM)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Multi-language JDI? You're Joking, Right?|Jim Laskey (JDI)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:00&lt;br /&gt;
|-&lt;br /&gt;
| 15:20&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Graal (2012)|Doug Simon (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[Assembling for the JVM|Michael Wiedeking (AL1 JVM assembler)]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#ffeb9c;&amp;quot; |&lt;br /&gt;
[[A Friend in Need Is a Friend Indeed: Kotlin and Java|Andrey Breslav (Kotlin/Java interop)]]&lt;br /&gt;
|-&lt;br /&gt;
| 15:40&lt;br /&gt;
|-&lt;br /&gt;
| 16:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Mesh Deeper Dive|Basil Hosmer (Mesh)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Graal Compiler IR|Gilles Duboscq (Graal)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Java Collections Framework Design|Donald Raab (Collections)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Design Discussion for Jaba Batches: A New Approach to SQL, RMI, and WS Clients|William Cook (Batches)]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#c6efce;&amp;quot; |&lt;br /&gt;
[[Building on ASM|Duncan MacGregor (ASM)]],&amp;lt;br/&amp;gt;&lt;br /&gt;
[[What Kotlin Doesn’t Do and Why|Andrey Breslav (Kotlin)]]&lt;br /&gt;
|-&lt;br /&gt;
| 16:20&lt;br /&gt;
|-&lt;br /&gt;
| 16:40&lt;br /&gt;
|-&lt;br /&gt;
| 17:00&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| 17:20&lt;br /&gt;
|-&lt;br /&gt;
| 17:40&lt;br /&gt;
|-&lt;br /&gt;
| 18:00&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#ffc7ce;&amp;quot; | Dinner&lt;br /&gt;
|-&lt;br /&gt;
| 18:20&lt;br /&gt;
|-&lt;br /&gt;
| 18:40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Self-registration ==&lt;br /&gt;
&lt;br /&gt;
In order to upload slides or create and edit wiki pages, you need an account.&lt;br /&gt;
# Log in as user [[User:jvmlang|jvmlang]] and with a password which you should have received separately.&lt;br /&gt;
# Go to the [http://wiki.jvmlangsummit.com/index.php?title=Special:UserLogin&amp;amp;type=signup user creation page].  (If you have an OpenJDK or java.net user name, please reuse that here.)&lt;br /&gt;
# Log out, then back in using your new user name (note the tiny login link at the upper right).&lt;br /&gt;
&lt;br /&gt;
The initial jvmlang participant account does not have full write privileges; please use it only for self-registering.&lt;br /&gt;
&lt;br /&gt;
If you are having trouble recovering your password from last year, just re-register (e.g., ''jrose2'').&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Bonus Discussions ==&lt;br /&gt;
&lt;br /&gt;
(add pages and/or workshop links here)&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=MediaWiki:Sidebar&amp;diff=846</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=MediaWiki:Sidebar&amp;diff=846"/>
		<updated>2012-06-26T16:50:17Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** http://jvmlangsummit.com|Summit Home&lt;br /&gt;
** mainpage|Wiki Home&lt;br /&gt;
** Special:Listusers|List Users&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** helppage|help&lt;br /&gt;
** JVMLangSummit:Copyrights|Terms of Use&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
** User:Jvmlang|Self-register&lt;br /&gt;
** Special:Upload|Upload file&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=2010_Main_Page&amp;diff=823</id>
		<title>2010 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=2010_Main_Page&amp;diff=823"/>
		<updated>2012-04-10T23:59:00Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Media ==&lt;br /&gt;
&lt;br /&gt;
Videos of most talks are available on the [http://medianetwork.oracle.com Oracle Media Network].  Click individual links below to view videos for 2010.&lt;br /&gt;
&lt;br /&gt;
The first four videos below have slides integrated into the video for easier viewing.&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15487 Gathering the threads: JVM Futures] (John Rose, Oracle; Welcome and JSR 292 update) - [[Media:RoseJVMFutureTalk.pdf | Slides]], [http://wiki.jvmlangsummit.com/Gathering_the_threads:_JVM_Futures Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15507 Engineering Fine-Grained Parallelism in Java] (Doug Lea, SUNY Oswego; Keynote) - [[Media:Lea-fj-jul10.pdf | Slides]], [http://wiki.jvmlangsummit.com/Engineering_Fine-Grained_Parallelism_in_Java Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15524 MethodHandles: an IBM implementation] (Dan Heidinga, IBM) - [[Media:J9 MethodHandle Impl.pdf | Slides]], [http://wiki.jvmlangsummit.com/MethodHandles:_an_IBM_implementation Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15501 Efficient compilation of Lambdas using MethodHandles and JRockit] (Fredrik Öhrström, Oracle) - [[Media:ohrstrom-lambdas-2010-07-26.pdf | Slides]], [http://wiki.jvmlangsummit.com/Efficient_compilation_of_Lambdas_using_MethodHandles_and_JRockit Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15488 Trending Toward the Middle: The Best of Static and Dynamic] (Charles Nutter) - [[Media:Nutter Static and Dynamic.pdf | Slides]], [http://wiki.jvmlangsummit.com/Trending_Toward_the_Middle:_The_Best_of_Static_and_Dynamic Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15550 Improvements in OpenJDK useful for JVM languages] (Eric Caspole, AMD) - [[Media:Jvm-lang-2010-ecaspole-100723.pdf | Slides]], [http://wiki.jvmlangsummit.com/Improvements_in_OpenJDK_useful_for_JVM_languages Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15495 Register Allocation on SSA form for Java Just-in-Time Compilation] (Christian Wimmer, UC Irvine) - [[Media:LinearScanSSA.pdf | Slides]], [http://wiki.jvmlangsummit.com/Register_Allocation_on_SSA_form_for_Java_Just-in-Time_Compilation Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15506 Coroutines for the Java Platform] (Lukas Stadler) - [[Media:Coroutines.pdf | Slides]], [http://wiki.jvmlangsummit.com/Coroutines_for_the_Java_Platform Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15525 Chronon - Time Travelling Debugger] (Prashant Deva) - [[Media:Chronon - JVMSummit.pdf | Slides]], [http://wiki.jvmlangsummit.com/Chronon_-_Time_Travelling_Debugger Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15493 LINQ: Language Features for concurrency (among other things)] (Neal Gafter, Microsoft) - [[Media:Gafter-LINQ.pdf | Slides]], [http://wiki.jvmlangsummit.com/LINQ:_Language_Features_for_concurrency_%28among_other_things%29 Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15549 The Thorn Programming Language: Robust Distributed Scripting on the JVM] (John Field, IBM Research) - [[Media:Field-Thorn-Overview-2010.pdf | Slides]], [http://wiki.jvmlangsummit.com/The_Thorn_Programming_Language:_Robust_Distributed_Scripting_on_the_JVM Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15498 Digital Performance] (Cliff Click, Azul Systems) - [http://wiki.jvmlangsummit.com/Digital_Performance Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15496 Erjang - A JVM-based Erlang VM] (Kresten Krab Thorup, Trifork) - [http://wiki.jvmlangsummit.com/Erjang_-_A_JVM-based_Erlang_VM Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15492 Kawa and gnu.bytecode update] (Per Bothner, Oracle) - [http://wiki.jvmlangsummit.com/Kawa_and_gnu.bytecode_update Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15497 Project Fortress compiler implementation status] (Christine Flood, Oracle Sun Labs) - [[Media:JVMSummit-Flood.pdf | Slides]], [http://wiki.jvmlangsummit.com/Project_Fortress_compiler_implementation_status Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15490 Faking closures on the JVM isn't as simple as it looks] (David Pollak) - [http://wiki.jvmlangsummit.com/Faking_closures_on_the_JVM_isn%27t_as_simple_as_it_looks Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15509 Mixed language project compilation in Eclipse: Java and Groovy] (Andy Clement, VMware) - [[Media:Clement MixedLanguageProjectCompilationInEclipse.pdf | Slides]], [http://wiki.jvmlangsummit.com/Mixed_language_project_compilation_in_Eclipse:_Java_and_Groovy Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15494 Symmetric multilanguage VM architecture] (Oleg Pliss, Oracle) - [[Media:Pliss-Monty-Multilanguage VM-2010.pdf | Slides]], [http://wiki.jvmlangsummit.com/Symmetric_multilanguage_VM_architecture Abstract]&lt;br /&gt;
&lt;br /&gt;
* [http://medianetwork.oracle.com/media/show/15499 The Maxine Inspector: a Specialized Tool for VM Development] (Michael Van De Vanter, Oracle Sun Labs) - [[Media:Maxine-JVMLangSummit2010.pdf | Slides]], [http://wiki.jvmlangsummit.com/The_Maxine_Inspector:_a_Specialized_Tool_for_VM_Development Abstract]&lt;br /&gt;
&lt;br /&gt;
Image galleries:&lt;br /&gt;
&lt;br /&gt;
* http://picasaweb.google.com/Pliss.Oleg/JVMLanguageSummit2010# (Oleg Pliss)&lt;br /&gt;
* http://gallery.me.com/rose00#100059 (John Rose)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200px&amp;gt;&lt;br /&gt;
Image:40_-_Doug_Lea.jpg|Doug Lea&lt;br /&gt;
Image:Rose-iphone-IMG 0023.jpg|Remi and Kresten&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Agenda for the 2010 [http://jvmlangsummit.com/ JVM Language Summit] ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Monday 7/26&lt;br /&gt;
!Tuesday 7/27&lt;br /&gt;
!Wednesday 7/28&lt;br /&gt;
|-&lt;br /&gt;
|  8:30|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;color:green; background-color:#ffffcc;&amp;quot; | Breakfast &amp;lt;br&amp;gt; (30 mins) &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  9:00|| Brian Goetz &amp;lt;br&amp;gt; Welcome || rowspan=&amp;quot;2&amp;quot; | Doug Lea (Keynote) &amp;lt;br&amp;gt; [[Engineering Fine-Grained Parallelism in Java]] || Jochen Theodorou &amp;lt;br&amp;gt; [[Improvements in Groovy performance]]&lt;br /&gt;
|-&lt;br /&gt;
|  9:30|| Charles Nutter &amp;lt;br&amp;gt; [[Trending Toward the Middle: The Best of Static and Dynamic]] || Rémi Forax &amp;lt;br&amp;gt; [[PHP.reboot: a post JSR292 dynamic language]]&lt;br /&gt;
|-&lt;br /&gt;
| 10:00|| Eric Caspole &amp;lt;br&amp;gt; [[Improvements in OpenJDK useful for JVM languages]]  || Joshua Bloch &amp;lt;br&amp;gt; [[Performance Anxiety]] || Per Bothner &amp;lt;br&amp;gt; [[Kawa and gnu.bytecode update]]&lt;br /&gt;
|-&lt;br /&gt;
| 10:30|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;color:green; background-color:#ffffcc;&amp;quot; | Break &amp;lt;br&amp;gt; (30 mins) &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 11:00|| John Rose &amp;lt;br&amp;gt; [[Gathering the threads: JVM Futures]]  || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:lightblue; background-color:green;&amp;quot; | W1A: John Rose &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; W1B: Robert McKinney &amp;lt;br&amp;gt; [[Introduction to Gosu]] || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:lightblue; background-color:green;&amp;quot; | W1A: Rich Hickey &amp;lt;br&amp;gt; [[What the JVM needs]] &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; W2B: John Field &amp;lt;br&amp;gt; Thorn&lt;br /&gt;
|-&lt;br /&gt;
| 11:30|| Christian Wimmer &amp;lt;br&amp;gt; [[Register Allocation on SSA form for Java Just-in-Time Compilation]]&lt;br /&gt;
|-&lt;br /&gt;
| 12:00|| align=&amp;quot;center&amp;quot; rowspan=&amp;quot;2&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;color:green; background-color:#ffffcc;&amp;quot; | Lunch &amp;lt;br&amp;gt; (60 mins) || align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;color:green; background-color:#ffffcc;&amp;quot; | Lunch &amp;lt;br&amp;gt; (30 mins) &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 12:30|| Christine Flood &amp;lt;br&amp;gt; [[Project Fortress compiler implementation status]]&lt;br /&gt;
|-&lt;br /&gt;
|  1:00|| Lukas Stadler &amp;lt;br&amp;gt; [[Coroutines for the Java Platform]] || Neal Gafter &amp;lt;br&amp;gt; [[LINQ: Language Features for concurrency (among other things)]] || David Pollak &amp;lt;br&amp;gt; [[Faking closures on the JVM isn't as simple as it looks]] &lt;br /&gt;
|-&lt;br /&gt;
|  1:30|| Prashant Deva &amp;lt;br&amp;gt; [[Chronon - Time Travelling Debugger]] || John Field &amp;lt;br&amp;gt; [[The Thorn Programming Language: Robust Distributed Scripting on the JVM]] || align=&amp;quot;center&amp;quot; style=&amp;quot;color:green; background-color:#ffffcc;&amp;quot; | Break &amp;lt;br&amp;gt; (30 mins)&lt;br /&gt;
|-&lt;br /&gt;
|  2:00|| Fredrik Öhrström &amp;lt;br&amp;gt; [[Efficient compilation of Lambdas using MethodHandles and JRockit]] || align=&amp;quot;center&amp;quot; style=&amp;quot;color:green; background-color:#ffffcc;&amp;quot; | Break &amp;lt;br&amp;gt; (30 mins) || Adam Messinger &amp;lt;br&amp;gt; Oracle&lt;br /&gt;
|-&lt;br /&gt;
|  2:30|| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:lightblue; background-color:green;&amp;quot; | W1A: Fredrik Öhrström &amp;lt;br&amp;gt; Compile your favourite Lambda expression! &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; W1B: Ben Titzer &amp;lt;br&amp;gt; [[Virgil on the JVM]] || Dan Heidinga &amp;lt;br&amp;gt; [[MethodHandles: an IBM implementation]] || Andy Clement &amp;lt;br&amp;gt; [[Mixed language project compilation in Eclipse: Java and Groovy]]&lt;br /&gt;
|-&lt;br /&gt;
|  3:00|| Cliff Click &amp;lt;br&amp;gt; [[Digital Performance]] || Oleg Pliss &amp;lt;br&amp;gt; [[Symmetric multilanguage VM architecture]]&lt;br /&gt;
|-&lt;br /&gt;
|  3:30|| align=&amp;quot;center&amp;quot; style=&amp;quot;color:green; background-color:#ffffcc;&amp;quot; | Break &amp;lt;br&amp;gt; (30 mins) || Kresten Krab Thorup &amp;lt;br&amp;gt; [[Erjang - A JVM-based Erlang VM]] || Michael Van De Vanter &amp;lt;br&amp;gt; [[The Maxine Inspector: a Specialized Tool for VM Development]]&lt;br /&gt;
|-&lt;br /&gt;
|  4:00|| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:lightblue; background-color:green;&amp;quot; | W2A: Charles Nutter &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; W2B: Hiroshi Yamauchi &amp;lt;br&amp;gt; [[Continuations in Servers]] || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:lightblue; background-color:green;&amp;quot; | W2A: Kresten Krab Thorup &amp;lt;br&amp;gt; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:lightblue; background-color:green;&amp;quot; | W2A: Cliff Click &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; W2B: Per Bothner &amp;lt;br&amp;gt; Speedy Scripting&lt;br /&gt;
|-&lt;br /&gt;
|  4:30&lt;br /&gt;
|-&lt;br /&gt;
|  5:00|| Break || Lightning talks || Final break&lt;br /&gt;
|-&lt;br /&gt;
|  6:00|| || Dinner at Faultline ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bonus Discussions ==&lt;br /&gt;
&lt;br /&gt;
(add pages and/or workshop links here)&lt;br /&gt;
* [[What the JVM needs]]&lt;br /&gt;
* [[JVM System Programming Language]]&lt;br /&gt;
* [[Why Tailcalls]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=814</id>
		<title>2012 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=814"/>
		<updated>2011-08-25T23:56:14Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Welcome to the wiki for the 2011 JVM Language Summit, taking place July 18-20, 2011, at the Oracle Santa Clara Campus.&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
Image galleries:&lt;br /&gt;
* https://picasaweb.google.com/Pliss.Oleg/JVMLanguageSummit2011# (Oleg Pliss)&lt;br /&gt;
&lt;br /&gt;
''We expect videos to be online by the end of August.''&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://openjdk.java.net/projects/mlvm/jvmlangsummit JVM Language Summit] main page&lt;br /&gt;
* Email contacts: [mailto:brian.goetz-at-oracle.com Brian Goetz] and [mailto:john.r.rose-at-oracle.com John Rose]&lt;br /&gt;
* Archived wiki pages: [[2008_Main_Page | 2008]], [[2009_Main_Page | 2009]], [[2010_Main_Page | 2010]]&lt;br /&gt;
* [[Logistics]] page for travel tips and requests&lt;br /&gt;
&lt;br /&gt;
== Agenda for the 2011 JVM Language Summit ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Monday 7/18&lt;br /&gt;
!Tuesday 7/19&lt;br /&gt;
!Wednesday 7/20&lt;br /&gt;
|-&lt;br /&gt;
|  8:30|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | Breakfast &amp;lt;br&amp;gt; (30 mins) &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  9:00|| Intro and Welcome || rowspan=&amp;quot;2&amp;quot; | Mark Roos &amp;lt;br&amp;gt; [[Porting Smalltalk]] ([[Media:Roos-Rtalk.pdf|slides]]) || rowspan=&amp;quot;2&amp;quot; | Tobias Ivarsson &amp;lt;br&amp;gt; [[Interface injection]] ([[Media:inti2011.pdf|slides]])&lt;br /&gt;
|-&lt;br /&gt;
|  9:20|| rowspan=&amp;quot;2&amp;quot; | Cameron Purdy &amp;lt;br&amp;gt; [[2011 Keynote]] ([[Media:2011 Purdy.pdf|slides]])&lt;br /&gt;
|-&lt;br /&gt;
|  9:40|| rowspan=&amp;quot;1&amp;quot; | Jim Laskey &amp;lt;br&amp;gt; [[Nashorn]] ([[Media:Nashorn.pdf|slides]]) || rowspan=&amp;quot;1&amp;quot; | Brian Goetz &amp;lt;br&amp;gt; [[Extension methods]] ([[Media:2011 Goetz Extension Slides.pdf|slides]])&lt;br /&gt;
|-&lt;br /&gt;
| 10:20|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | Break &amp;lt;br&amp;gt; (20 mins) &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 10:40|| Mads Torgersen &amp;lt;br&amp;gt; [[Async .NET]] ([[Media:Async_in_.NET.pdf|slides]]) || Shashank Bharadwaj &amp;lt;br&amp;gt; [[invokedynamic+Jython]] ([[Media:Indy_and_Jython-Shashank_Bharadwaj.pdf‎|slides]]) || Sunil Puri &amp;lt;br&amp;gt; [[jvmtracejit]] ([[Media:Puri-jvmtracejit.pdf|slides]]) &amp;lt;br&amp;gt; Brian Goetz &amp;lt;br&amp;gt; [[Lambda Bytecode]] ([[Media:2011 Goetz Lambda.pdf|slides]])&lt;br /&gt;
|-&lt;br /&gt;
| 11:20|| style=&amp;quot;background-color:lightgreen;&amp;quot; | Mads Torgersen (Reification in .NET) || style=&amp;quot;background-color:lightgreen;&amp;quot; | Ola Bini (Seph) &amp;lt;br&amp;gt; Mark Roos || style=&amp;quot;background-color:lightgreen;&amp;quot; | Tom Marble (Performance benchmarking) ([[Media:2011 Marble.pdf|slides]]) &amp;lt;br&amp;gt; Tobias Ivarsson (Interface injection)&lt;br /&gt;
|-&lt;br /&gt;
| 12:20|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | &amp;lt;br&amp;gt; Lunch &amp;lt;br&amp;gt; (60 mins) &amp;lt;br&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|  1:20|| John Rose &amp;lt;br&amp;gt; [[Method Handles]] ([[Media:Rose-2011-FutureDirections.pdf |slides]]) || Attila Szegedi &amp;lt;br&amp;gt; [[Dynalink]] ([[Media:Dynalink_2011_JVM_Language_Summit.pdf |slides]]) || Christine Flood &amp;lt;br&amp;gt; [[Fortress 2011|Fortress]] ([[Media:Project_Fortress_Bytecode_Optimizer.pdf|slides]])&lt;br /&gt;
|-&lt;br /&gt;
|  2:00|| Dan Heidinga &amp;lt;br&amp;gt; [[MethodHandle Implementation]] ([[Media:2011 Heidinga.pdf|slides]]) || Georges Saab &amp;lt;br&amp;gt; [[Java SE]] ([[Media:JVMLS_GES.pdf |slides]]) || Thomas Wuerthinger &amp;lt;br&amp;gt; [[Graal]] ([[Media:GraalJVMSummit2011.pdf|slides]])&lt;br /&gt;
|-&lt;br /&gt;
|  2:40|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | Break &amp;lt;br&amp;gt; (20 mins)&lt;br /&gt;
|-&lt;br /&gt;
|  3:00|| Charles Nutter &amp;lt;br&amp;gt; [[JRuby 2011|JRuby]] ([[Media:2011 Nutter.pdf|slides]]) || Carson Gross &amp;lt;br&amp;gt; [[Gosu - Language Features As A Library]] ([[Media:2011 Gross.pdf|slides]]) || Prashant Deva &amp;lt;br&amp;gt; [[Chronon - Debugging in 2011]] ([[Media:2011_Chronon.pdf|slides]])&lt;br /&gt;
|-&lt;br /&gt;
|  3:40|| Rémi Forax &amp;lt;br&amp;gt; [[JSR-292 Cookbook]] ([[Media:2011 Forax.pdf|slides]]) || JetBrains &amp;lt;br&amp;gt; [[Kotlin]] ([[Media:Jetbrains-Kotlin.pdf|slides]]) || Lightning talks&lt;br /&gt;
|-&lt;br /&gt;
|  4:20|| style=&amp;quot;background-color:lightgreen;&amp;quot; | Jeroen Frijters (IKVM.NET) &amp;lt;br&amp;gt; John Rose || style=&amp;quot;background-color:lightgreen;&amp;quot; | Venkat Subramaniam (Language Integration) &amp;lt;br&amp;gt; JetBrains ([[Kotlin]]) ([[Media:Jetbrains-Kotlin-workshop.pdf|slides]]) || style=&amp;quot;background-color:lightgreen;&amp;quot; | Prashant Deva &amp;lt;br&amp;gt; Lukas Stadler ([[Graal]]) ([[Media:2011 Stadler Graal workshop.pdf|slides]])&lt;br /&gt;
|-&lt;br /&gt;
|  5:20|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightyellow;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|  6:00|| || align=&amp;quot;center&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | Dinner at Faultline ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Write Access &amp;amp; Uploading ==&lt;br /&gt;
&lt;br /&gt;
In order to modify the wiki, you need an account.&lt;br /&gt;
# Log in as user [[User:jvmlang|jvmlang]] and with a password which you should have received separately.&lt;br /&gt;
# Go to the [http://wiki.jvmlangsummit.com/index.php?title=Special:UserLogin&amp;amp;type=signup user creation page].  (If you have an OpenJDK or java.net user name, please reuse that here.)&lt;br /&gt;
# Log out, then back in using your new user name (note the tiny login link at the upper right).&lt;br /&gt;
&lt;br /&gt;
The initial jvmlang participant account does not have full write privileges; please use it only for self-registering.&lt;br /&gt;
&lt;br /&gt;
If you are having trouble recovering your password from last year, just re-register (e.g., ''jrose2'').&lt;br /&gt;
&lt;br /&gt;
* Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
== Bonus Discussions ==&lt;br /&gt;
&lt;br /&gt;
(add pages and/or workshop links here)&lt;br /&gt;
* [[Why Tailcalls]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Why_Interface_Injection&amp;diff=762</id>
		<title>Why Interface Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Why_Interface_Injection&amp;diff=762"/>
		<updated>2011-07-20T23:07:46Z</updated>

		<summary type="html">&lt;p&gt;Jrose: New page: Do we need interface injection, or do ClassValue and invokedynamic do everything we want?  Let's gather the use cases.  Definitions and design discussion may be found at [[Interface_inject...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Do we need interface injection, or do ClassValue and invokedynamic do everything we want?&lt;br /&gt;
&lt;br /&gt;
Let's gather the use cases.&lt;br /&gt;
&lt;br /&gt;
Definitions and design discussion may be found at [[Interface_injection|Tobias Ivarsson's &amp;quot;Case for Interface Injection&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
== use cases for injecting the supertype *only* ==&lt;br /&gt;
&lt;br /&gt;
In many cases, adding runtime information to arbitrary target classes can best be done with java.lang.ClassValue.  The invokedynamic instruction can encode associated operations with this ClassValue.&lt;br /&gt;
&lt;br /&gt;
In some cases, there is a prior commitment or inclination to use Java interfaces and perhaps interface inheritance.&lt;br /&gt;
&lt;br /&gt;
=== Infinite Supertypes ===&lt;br /&gt;
Some languages (a) have infinite sets of supertypes, and (b) want to represent their types as Java classes and interfaces.  Scala and Fortress are in this category.&lt;br /&gt;
&lt;br /&gt;
Example:  Given the way function types work, ()-&amp;gt;String is a subtype of ()-&amp;gt;Object.  Argument type &amp;quot;go backwards&amp;quot;, so (String)-&amp;gt;void is a *supertype* of (Object)-&amp;gt;void.  In fact, (Foo)-&amp;gt;void is a supertype of (Object-&amp;gt;void for every subclass Foo of object!  Thus, if a language represents (Object)-&amp;gt;void as an interface IFn_Object_V, it may attempt to declare super-interfaces in the classfile of IFn_Object_V, including IFn_String_V, etc.  If a new type Foo is loaded, then IFn_Foo_V should be retroactively added to the super-interface list for IFn_Object_V.&lt;br /&gt;
&lt;br /&gt;
Workaround:  Have the language use JVM interface subtyping as a first resort, but have its own subtype algorithm (like the JVM's) as a last resort.  Same idea for method lookup, if IFn_Foo_V contains Java methods.&lt;br /&gt;
&lt;br /&gt;
== use cases for injecting methods ==&lt;br /&gt;
&lt;br /&gt;
=== Defender methods ===&lt;br /&gt;
Defenders are methods which can be added to implementations of interfaces, where the implementation class and the interface are statically related; there is no need to modify a type's supertypes.&lt;br /&gt;
&lt;br /&gt;
== external links ==&lt;br /&gt;
;Old Proposal: http://blogs.oracle.com/jrose/entry/interface_injection_in_the_vm&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=750</id>
		<title>2012 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=2012_Main_Page&amp;diff=750"/>
		<updated>2011-07-20T21:06:53Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Welcome to the wiki for the 2011 JVM Language Summit, taking place July 18-20, 2011, at the Oracle Santa Clara Campus.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://openjdk.java.net/projects/mlvm/jvmlangsummit JVM Language Summit] main page&lt;br /&gt;
* Email contacts: [mailto:brian.goetz-at-oracle.com Brian Goetz] and [mailto:john.r.rose-at-oracle.com John Rose]&lt;br /&gt;
* Archived wiki pages: [[2008_Main_Page | 2008]], [[2009_Main_Page | 2009]], [[2010_Main_Page | 2010]]&lt;br /&gt;
* [[Logistics]] page for travel tips and requests&lt;br /&gt;
&lt;br /&gt;
== Agenda for the 2011 JVM Language Summit ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Monday 7/18&lt;br /&gt;
!Tuesday 7/19&lt;br /&gt;
!Wednesday 7/20&lt;br /&gt;
|-&lt;br /&gt;
|  8:30|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | Breakfast &amp;lt;br&amp;gt; (30 mins) &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  9:00|| Intro and Welcome || rowspan=&amp;quot;2&amp;quot; | Mark Roos &amp;lt;br&amp;gt; [[Porting Smalltalk]] || rowspan=&amp;quot;2&amp;quot; | Tobias Ivarsson &amp;lt;br&amp;gt; [[Interface injection]]&lt;br /&gt;
|-&lt;br /&gt;
|  9:20|| rowspan=&amp;quot;2&amp;quot; | Cameron Purdy &amp;lt;br&amp;gt; [[2011 Keynote]]&lt;br /&gt;
|-&lt;br /&gt;
|  9:40|| rowspan=&amp;quot;1&amp;quot; | Jim Laskey &amp;lt;br&amp;gt; [[Nashorn]] ([[Media:Nashorn.pdf|slides]]) || rowspan=&amp;quot;1&amp;quot; | Brian Goetz &amp;lt;br&amp;gt; [[Extension methods]]&lt;br /&gt;
|-&lt;br /&gt;
| 10:20|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | Break &amp;lt;br&amp;gt; (20 mins) &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 10:40|| Mads Torgersen &amp;lt;br&amp;gt; [[Async .NET]] ([[Media:Async_in_.NET.pdf|slides]]) || Shashank Bharadwaj &amp;lt;br&amp;gt; [[invokedynamic+Jython]] ([[Media:Indy_and_Jython-Shashank_Bharadwaj.pdf‎|slides]]) || Sunil Puri / Brian Goetz &amp;lt;br&amp;gt; Tracing JIT / Lambda Bytecode&lt;br /&gt;
|-&lt;br /&gt;
| 11:20|| style=&amp;quot;background-color:lightgreen;&amp;quot; | Mads Torgersen (TBA) || style=&amp;quot;background-color:lightgreen;&amp;quot; | Ola Bini (Seph) &amp;lt;br&amp;gt; Mark Roos || style=&amp;quot;background-color:lightgreen;&amp;quot; | Tom Marble (Jigsaw+Clojure) &amp;lt;br&amp;gt; Tobias Ivarsson&lt;br /&gt;
|-&lt;br /&gt;
| 12:20|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | &amp;lt;br&amp;gt; Lunch &amp;lt;br&amp;gt; (60 mins) &amp;lt;br&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|  1:20|| John Rose &amp;lt;br&amp;gt; [[Method Handles]] ([[Media:Rose-2011-FutureDirections.pdf |slides]]) || Attila Szegedi &amp;lt;br&amp;gt; [[Dynalink]] ([[Media:Dynalink_2011_JVM_Language_Summit.pdf |slides]]) || Christine Flood &amp;lt;br&amp;gt; [[Fortress 2011|Fortress]] ([[Media:Project_Fortress_Bytecode_Optimizer.pdf|slides]])&lt;br /&gt;
|-&lt;br /&gt;
|  2:00|| Dan Heidinga &amp;lt;br&amp;gt; [[MethodHandle Impl]] ([[Media:2011 Heidinga.pdf|slides]]) || Georges Saab &amp;lt;br&amp;gt; [[Java SE]] || Thomas Wuerthinger &amp;lt;br&amp;gt; [[Graal]]&lt;br /&gt;
|-&lt;br /&gt;
|  2:40|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | Break &amp;lt;br&amp;gt; (20 mins)&lt;br /&gt;
|-&lt;br /&gt;
|  3:00|| Charlie Nutter &amp;lt;br&amp;gt; [[JRuby 2011|JRuby]] ([[Media:2011 Nutter.pdf|slides]]) || Carson Gross &amp;lt;br&amp;gt; [[Gosu]] || Prashant Deva &amp;lt;br&amp;gt; [[Debugger]]&lt;br /&gt;
|-&lt;br /&gt;
|  3:40|| Rémi Forax &amp;lt;br&amp;gt; [[JSR-292 Cookbook]] ([[Media:2011 Forax.pdf|slides]]) || JetBrains &amp;lt;br&amp;gt; [[Kotlin]] || TBA &amp;lt;br&amp;gt; TBA&lt;br /&gt;
|-&lt;br /&gt;
|  4:20|| style=&amp;quot;background-color:lightgreen;&amp;quot; | Jeroen Frijters (IKVM.NET) &amp;lt;br&amp;gt; John Rose (TBA) || style=&amp;quot;background-color:lightgreen;&amp;quot; | Venkat Subramaniam (Language Integration) &amp;lt;br&amp;gt; JetBrains ([[Kotlin]]) || style=&amp;quot;background-color:lightgreen;&amp;quot; | Prashant Deva &amp;lt;br&amp;gt; Lukas Stadler ([[Graal]])&lt;br /&gt;
|-&lt;br /&gt;
|  5:20|| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:lightyellow;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|  6:00|| || align=&amp;quot;center&amp;quot; style=&amp;quot;background-color:lightpink;&amp;quot; | Dinner at Faultline ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Write Access &amp;amp; Uploading ==&lt;br /&gt;
&lt;br /&gt;
In order to modify the wiki, you need an account.&lt;br /&gt;
# Log in as user [[User:jvmlang|jvmlang]] and with a password which you should have received separately.&lt;br /&gt;
# Go to the [http://wiki.jvmlangsummit.com/index.php?title=Special:UserLogin&amp;amp;type=signup user creation page].  (If you have an OpenJDK or java.net user name, please reuse that here.)&lt;br /&gt;
# Log out, then back in using your new user name (note the tiny login link at the upper right).&lt;br /&gt;
&lt;br /&gt;
The initial jvmlang participant account does not have full write privileges; please use it only for self-registering.&lt;br /&gt;
&lt;br /&gt;
If you are having trouble recovering your password from last year, just re-register (e.g., ''jrose2'').&lt;br /&gt;
&lt;br /&gt;
* Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
== Bonus Discussions ==&lt;br /&gt;
&lt;br /&gt;
(add pages and/or workshop links here)&lt;br /&gt;
* [[Why Tailcalls]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Why_Tailcalls&amp;diff=749</id>
		<title>Why Tailcalls</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Why_Tailcalls&amp;diff=749"/>
		<updated>2011-07-20T21:05:37Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are tailcalls fated to come in second place on every feature priority list?&lt;br /&gt;
&lt;br /&gt;
Let's gather the use cases and consider the implementation.&lt;br /&gt;
&lt;br /&gt;
(Note: This page is about &amp;quot;hard tail calls&amp;quot; as defined in the [http://blogs.sun.com/jrose/entry/tail_calls_in_the_vm Rose blog].  Soft TCO is already in many compilers, but does not have a strong effect on software architecture.)&lt;br /&gt;
&lt;br /&gt;
;[[Why_Tailcalls_%28GLS%29|Note from Guy Steele]]&lt;br /&gt;
&lt;br /&gt;
== use cases ==&lt;br /&gt;
=== multi-core task distribution ===&lt;br /&gt;
(Doug Lea) chaining task execution; without tail calls you blow the stack needlessly&lt;br /&gt;
&lt;br /&gt;
=== languages with guaranteed TCO ===&lt;br /&gt;
These are languages with functional patterns, including Scheme, Scala, F#. Seph also aims to give this guarantee.&lt;br /&gt;
&lt;br /&gt;
=== robust support for design patterns ===&lt;br /&gt;
Comment from Matthias Felleisen: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
One common misunderstanding about TCO is due to the word 'optimization'. It is indeed a space optimization (don't use more space than goto, as Guy said in the 1970s) but a language should implement TCO in support of PROPER DESIGN. To wit, go through the OO design pattern books and inspect all the little patterns. Pick some -- say interpreter or composite -- and design your Java program accordingly. Then run a stress test and weep. Java blows up even if all the method calls are tail-recursive because it doesn't support TCO. Now do the same in PLT Scheme's class system and smile. It works -- for all inputs.&lt;br /&gt;
&lt;br /&gt;
See my [http://www.ccs.neu.edu/home/matthias/Presentations/ecoop2004.pdf ECOOP keynote (2004)] for some more details.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pages 51-59 in the keynote are especially relevant.&lt;br /&gt;
&lt;br /&gt;
See also [http://projectfortress.sun.com/Projects/Community/blog/ObjectOrientedTailRecursion this discussion] in the Fortress Community website:&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
=== guaranteed disposal of stack-frame ===&lt;br /&gt;
Clojure needs workarounds to avoid floating garbage&lt;br /&gt;
  public static int count(Object o) {&lt;br /&gt;
    if (o instanceof Counted)&lt;br /&gt;
      return ((Counted) o).count();&lt;br /&gt;
    return countFrom(Util.ret1(o, o = null));&lt;br /&gt;
  }&lt;br /&gt;
  static public Object ret1(Object ret, Object nil) { return ret; }&lt;br /&gt;
&lt;br /&gt;
=== Reduce call stack size ! ===&lt;br /&gt;
(Rémi) Avoid to show language implementation internals by collapsing runtime stack frame.&lt;br /&gt;
&lt;br /&gt;
== external links ==&lt;br /&gt;
;Proposal: http://blogs.sun.com/jrose/entry/tail_calls_in_the_vm&lt;br /&gt;
;Thesis: http://www.ssw.uni-linz.ac.at/Research/Papers/Schwaighofer09Master/&lt;br /&gt;
;mlvm Wiki: http://wikis.sun.com/display/mlvm/TailCalls&lt;br /&gt;
;mlvm Code: http://hg.openjdk.java.net/mlvm/mlvm/hotspot/file/tip/tailc.patch&lt;br /&gt;
;Fortress discussion: http://projectfortress.sun.com/Projects/Community/blog/ObjectOrientedTailRecursion&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Why_Tailcalls&amp;diff=748</id>
		<title>Why Tailcalls</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Why_Tailcalls&amp;diff=748"/>
		<updated>2011-07-20T21:05:03Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are tailcalls fated to come in second place on every feature priority list?&lt;br /&gt;
&lt;br /&gt;
Let's gather the use cases and consider the implementation.&lt;br /&gt;
&lt;br /&gt;
(Note: This page is about &amp;quot;hard tail calls&amp;quot; as defined in the [http://blogs.sun.com/jrose/entry/tail_calls_in_the_vm Rose blog].  Soft TCO is already in many compilers, but does not have a strong effect on software architecture.)&lt;br /&gt;
&lt;br /&gt;
== use cases ==&lt;br /&gt;
=== multi-core task distribution ===&lt;br /&gt;
(Doug Lea) chaining task execution; without tail calls you blow the stack needlessly&lt;br /&gt;
&lt;br /&gt;
=== languages with guaranteed TCO ===&lt;br /&gt;
These are languages with functional patterns, including Scheme, Scala, F#. Seph also aims to give this guarantee.&lt;br /&gt;
&lt;br /&gt;
=== robust support for design patterns ===&lt;br /&gt;
Comment from Matthias Felleisen: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
One common misunderstanding about TCO is due to the word 'optimization'. It is indeed a space optimization (don't use more space than goto, as Guy said in the 1970s) but a language should implement TCO in support of PROPER DESIGN. To wit, go through the OO design pattern books and inspect all the little patterns. Pick some -- say interpreter or composite -- and design your Java program accordingly. Then run a stress test and weep. Java blows up even if all the method calls are tail-recursive because it doesn't support TCO. Now do the same in PLT Scheme's class system and smile. It works -- for all inputs.&lt;br /&gt;
&lt;br /&gt;
See my [http://www.ccs.neu.edu/home/matthias/Presentations/ecoop2004.pdf ECOOP keynote (2004)] for some more details.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pages 51-59 in the keynote are especially relevant.&lt;br /&gt;
&lt;br /&gt;
See also [http://projectfortress.sun.com/Projects/Community/blog/ObjectOrientedTailRecursion this discussion] in the Fortress Community website:&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
=== guaranteed disposal of stack-frame ===&lt;br /&gt;
Clojure needs workarounds to avoid floating garbage&lt;br /&gt;
  public static int count(Object o) {&lt;br /&gt;
    if (o instanceof Counted)&lt;br /&gt;
      return ((Counted) o).count();&lt;br /&gt;
    return countFrom(Util.ret1(o, o = null));&lt;br /&gt;
  }&lt;br /&gt;
  static public Object ret1(Object ret, Object nil) { return ret; }&lt;br /&gt;
&lt;br /&gt;
=== Reduce call stack size ! ===&lt;br /&gt;
(Rémi) Avoid to show language implementation internals by collapsing runtime stack frame.&lt;br /&gt;
&lt;br /&gt;
== external links ==&lt;br /&gt;
;Proposal: http://blogs.sun.com/jrose/entry/tail_calls_in_the_vm&lt;br /&gt;
;Thesis: http://www.ssw.uni-linz.ac.at/Research/Papers/Schwaighofer09Master/&lt;br /&gt;
;mlvm Wiki: http://wikis.sun.com/display/mlvm/TailCalls&lt;br /&gt;
;mlvm Code: http://hg.openjdk.java.net/mlvm/mlvm/hotspot/file/tip/tailc.patch&lt;br /&gt;
;Fortress discussion: http://projectfortress.sun.com/Projects/Community/blog/ObjectOrientedTailRecursion&lt;br /&gt;
;[[Why_Tailcalls_%28GLS%29|Note from Guy Steele]]&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Why_Tailcalls_(GLS)&amp;diff=747</id>
		<title>Why Tailcalls (GLS)</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Why_Tailcalls_(GLS)&amp;diff=747"/>
		<updated>2011-07-20T21:02:39Z</updated>

		<summary type="html">&lt;p&gt;Jrose: New page: While searching for something else, I happened to stumble across an old proposal for JVM tail calls from 1998 (updated 2002)!  Since Cameron apparently mentioned them at the JVM summit, I ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;While searching for something else, I happened to stumble across an old proposal&lt;br /&gt;
for JVM tail calls from 1998 (updated 2002)!  Since Cameron apparently mentioned&lt;br /&gt;
them at the JVM summit, I couldn't resist sending this around for your amusement.&lt;br /&gt;
&lt;br /&gt;
--Guy&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------&lt;br /&gt;
Proposal for JVM tail call support&lt;br /&gt;
&lt;br /&gt;
Guy Steele, May 15, 1998&lt;br /&gt;
updated January 3, 2002&lt;br /&gt;
updated January 8, 2002&lt;br /&gt;
&lt;br /&gt;
Summary: phase in support for tail calls in a manner that is&lt;br /&gt;
compatible with existing JVM implementations (except that such&lt;br /&gt;
implementations might run out of storage when executing code that&lt;br /&gt;
relies heavily on tail calls).&lt;br /&gt;
&lt;br /&gt;
This is done by adding a &amp;quot;TailCall&amp;quot; attribute to methods in class files.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;goto&amp;quot; statement is added to the Java programming language to allow&lt;br /&gt;
tail calls to be expressed in source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(1) At the JVM level:&lt;br /&gt;
&lt;br /&gt;
Introduce a new attribute of the method_info structure: the &amp;quot;TailCall&amp;quot;&lt;br /&gt;
attribute.  The info of this attribute is a list of pc locations&lt;br /&gt;
within the Code attribute for the same method.  Each pc location must&lt;br /&gt;
be the location of an invokeinterface, invokespecial, invokestatic, or&lt;br /&gt;
invokevirtual instruction; moreover, that instruction must be&lt;br /&gt;
immediately followed by a return instruction.  If these constraints&lt;br /&gt;
are not met, the class file is considered malformed and may be&lt;br /&gt;
rejected by a JVM.&lt;br /&gt;
&lt;br /&gt;
An invokeinterface, invokespecial, invokestatic, or invokevirtual&lt;br /&gt;
instruction that is identified by the TailCall attribute is intended&lt;br /&gt;
to be executed as a tail call if possible.  This is done by first&lt;br /&gt;
following all the usual rules for locating the method to be invoked,&lt;br /&gt;
and then (in effect) popping the arguments (and perhaps an objectref)&lt;br /&gt;
from the stack.  At this point, a test is made to see whether a tail&lt;br /&gt;
call is permitted (see below).  If the test succeeds, then the current&lt;br /&gt;
stack frame is removed from the stack as if by an appropriate return&lt;br /&gt;
instruction; this also restores the PC to a point within the *caller*&lt;br /&gt;
of the current method.  Then, whether the test succeeded or failed,&lt;br /&gt;
the rest of the invoke operation is carried out by creating a new&lt;br /&gt;
stack frame, installing the arguments (and perhaps an objectref) as&lt;br /&gt;
local variables, etc.&lt;br /&gt;
&lt;br /&gt;
Here is the test mentioned in the preceding paragraph:&lt;br /&gt;
&lt;br /&gt;
 (1) The test is permitted to fail or to succeed, at the&lt;br /&gt;
 discretion of the implementation, if the called method is native.&lt;br /&gt;
 It is the responsibility of the implementation to ensure that security&lt;br /&gt;
 policies are not compromised if a tail call is used.&lt;br /&gt;
&lt;br /&gt;
 (2) Otherwise, the test is permitted to fail or to succeed, at the&lt;br /&gt;
 discretion of the implementation, if the class loader of either the&lt;br /&gt;
 calling method or the called method is the system class loader (null).&lt;br /&gt;
 It is the responsibility of the implementation to ensure that security&lt;br /&gt;
 policies are not compromised if a tail call is used.&lt;br /&gt;
&lt;br /&gt;
 (3) Otherwise, the test definitely fails if the class loader of the&lt;br /&gt;
 calling method and the class loader of the called method are different&lt;br /&gt;
 and neither is the system class loader (null).&lt;br /&gt;
&lt;br /&gt;
 (4) Otherwise, the test definitely fails if the protection domain of the&lt;br /&gt;
 calling method and the protection domain of the called method are different.&lt;br /&gt;
&lt;br /&gt;
 (5) Otherwise, the test definitely succeeds.&lt;br /&gt;
&lt;br /&gt;
Thus, an application programmer can rely on a tail call consuming no&lt;br /&gt;
net stack space if the JVM supports tail calls and the called method&lt;br /&gt;
has the same class loader and protection domain as the calling method.&lt;br /&gt;
An important special case is that tail calls always &amp;quot;work&amp;quot; if the JVM&lt;br /&gt;
supports tail calls and the called method is defined in the same class&lt;br /&gt;
as the calling method.&lt;br /&gt;
&lt;br /&gt;
It is permitted, though discouraged, for a JVM to ignore the TailCall&lt;br /&gt;
attribute.  In this case, code will be executed in a semantically&lt;br /&gt;
equivalent manner but may fail to complete execution if it runs out of&lt;br /&gt;
storage for stack frames.  (This is permitted primarily to allow some&lt;br /&gt;
measure of compatibility with existing JVM implementations.  The&lt;br /&gt;
intent, however, is to phase in implementations that all properly&lt;br /&gt;
support tail calls so that, after a certain point in time, programmers&lt;br /&gt;
will be able to rely on it as a programming mechanism.)&lt;br /&gt;
&lt;br /&gt;
(This is exactly analogous to the observation that it is permitted,&lt;br /&gt;
but discouraged, for a JVM not to have a garbage collector; it could&lt;br /&gt;
just allocate new objects out of a finite pool of storage and then&lt;br /&gt;
give up when the pool is exhausted.  But that's not considered a&lt;br /&gt;
quality implementation.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(2) At the JLS level:&lt;br /&gt;
&lt;br /&gt;
Introduce a new statement:&lt;br /&gt;
&lt;br /&gt;
	goto &amp;lt;MethodInvocation&amp;gt; ;&lt;br /&gt;
&lt;br /&gt;
This may appear in exactly the places that a return statement may appear.&lt;br /&gt;
(Perhaps, out of an abundance of caution, we should not allow it&lt;br /&gt;
to be used within a constructor.)&lt;br /&gt;
&lt;br /&gt;
If the type of the &amp;lt;MethodInvocation&amp;gt; expression is void, then this&lt;br /&gt;
statement may appear within the body of a method whose return type is&lt;br /&gt;
void [or within the body of a constructor?].  This statement is then&lt;br /&gt;
semantically equivalent to&lt;br /&gt;
&lt;br /&gt;
	{ &amp;lt;MethodInvocation&amp;gt;; return; }&lt;br /&gt;
&lt;br /&gt;
If the type of the &amp;lt;MethodInvocation&amp;gt; expression is not void, then&lt;br /&gt;
this statement may appear within the body of a method whose return&lt;br /&gt;
type is the same as the type of the &amp;lt;MethodInvocation&amp;gt; expression.&lt;br /&gt;
This statement is then semantically equivalent to&lt;br /&gt;
&lt;br /&gt;
	return &amp;lt;MethodInvocation&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
In each case, however, the &amp;quot;goto&amp;quot; form additionally specifies a&lt;br /&gt;
requirement, or at least the strong desire, that the implementation&lt;br /&gt;
should recycle the stack frame of the currently running method&lt;br /&gt;
as it performs the invocation of the called method.  The intent&lt;br /&gt;
is that it should be possible to execute an indefinitely large&lt;br /&gt;
number of &amp;quot;goto&amp;quot; calls without running out of space by reason&lt;br /&gt;
of stack overflow.&lt;br /&gt;
&lt;br /&gt;
However, the programmer cannot expect the stack frame to be recycled&lt;br /&gt;
in this manner if the call might fail the test (mentioned above in the&lt;br /&gt;
JVM section).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(3) Small example: Searching a polymorphic list&lt;br /&gt;
&lt;br /&gt;
Suppose there is a list with two or more kinds of nodes, and we want&lt;br /&gt;
to ask whether there is a node in the list that matches a given&lt;br /&gt;
string, and if so, return an associated value.  The &amp;quot;obvious&amp;quot; way to&lt;br /&gt;
do it is as follows:&lt;br /&gt;
&lt;br /&gt;
 Interface Chain { Value lookup(String name); }&lt;br /&gt;
&lt;br /&gt;
 class SimplePair implements Chain {&lt;br /&gt;
  String name;&lt;br /&gt;
  Value val;&lt;br /&gt;
  Chain next;&lt;br /&gt;
  ...&lt;br /&gt;
  Value lookup(String query) {&lt;br /&gt;
    if (name.equals(query)) return value;&lt;br /&gt;
    if (next == null) return null;&lt;br /&gt;
    return next.lookup(query);		;not me---pass the buck&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class ComputedValue implements Chain {&lt;br /&gt;
  String oldprefix;&lt;br /&gt;
  String newprefix;&lt;br /&gt;
  Chain next;&lt;br /&gt;
  ...&lt;br /&gt;
  Value lookup(String query) {&lt;br /&gt;
    if (query.startsWith(prefix))&lt;br /&gt;
      return new Value(newprefix + query.substring(prefix.length()));&lt;br /&gt;
    if (next == null) return null;&lt;br /&gt;
    return next.lookup(query);		;not me---pass the buck&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Unfortunately, in current JVM implementations, this chews up a stack&lt;br /&gt;
frame for every node in the chain.  As a result, implementors often try&lt;br /&gt;
to use an explicit while loop, which results in tearing apart the code&lt;br /&gt;
for the lookup method in complicated ways.&lt;br /&gt;
&lt;br /&gt;
With tail calls, just replace&lt;br /&gt;
&lt;br /&gt;
   return next.lookup(query);&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
&lt;br /&gt;
   goto next.lookup(query);&lt;br /&gt;
&lt;br /&gt;
and both the algorithmic intent and the intended stack behavior are&lt;br /&gt;
quite clear.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(4) Big example: A tiny Lisp evaluator&lt;br /&gt;
&lt;br /&gt;
Here is an interpreter for a tiny lambda-calculus-based language that&lt;br /&gt;
consists of numeric (BigInteger) literals, variables, an if-then-else&lt;br /&gt;
expression, lambda expressions of one parameter, a rec (label)&lt;br /&gt;
construct for naming a recursive function, and function calls with one&lt;br /&gt;
argument.  It provides add and multiply operators in curried form, so&lt;br /&gt;
that one must say ((+ 3) 4), for example.  There is also an explicit&lt;br /&gt;
zero test primitive that returns true or false.  (Internally, the&lt;br /&gt;
number 0 is used as the false value for if-then-else.)&lt;br /&gt;
&lt;br /&gt;
Programs are of type Expression; the eval method produces a Value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 interface Expression {&lt;br /&gt;
  Value eval(Environment env);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class LiteralNode implements Expression {&lt;br /&gt;
  final Value item;&lt;br /&gt;
  LiteralNode(Value item) { this.item = item; }&lt;br /&gt;
  public Value eval(Environment env) { return item; }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class VariableNode implements Expression {&lt;br /&gt;
  final String name;&lt;br /&gt;
  VariableNode(String name) { this.name = name; }&lt;br /&gt;
  public Value eval(Environment env) { return env.lookup(name); }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class IfNode implements Expression {&lt;br /&gt;
  final Expression test, thenpart, elsepart;&lt;br /&gt;
  IfNode(Expression test, Expression thenpart, Expression elsepart) {&lt;br /&gt;
    this.test = test; this.thenpart = thenpart; this.elsepart = elsepart;&lt;br /&gt;
  }&lt;br /&gt;
  public Value eval(Environment env) {&lt;br /&gt;
    if (!(test.eval(env).isZero()))&lt;br /&gt;
      goto thenpart.eval(env);&lt;br /&gt;
    else&lt;br /&gt;
      goto elsepart.eval(env);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class LambdaNode implements Expression {&lt;br /&gt;
  final String name;&lt;br /&gt;
  final Expression body;&lt;br /&gt;
  LambdaNode(String name, Expression body) { this.name = name; this.body = body; }&lt;br /&gt;
  public Value eval(Environment env) { return new Closure(name, body, env); }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class RecNode implements Expression {&lt;br /&gt;
  final String name;&lt;br /&gt;
  final Expression body;&lt;br /&gt;
  RecNode(String name, Expression body) { this.name = name; this.body = body; }&lt;br /&gt;
  public Value eval(Environment env) {&lt;br /&gt;
    Environment newenv = env.push(name, null);&lt;br /&gt;
    Value item = body.eval(newenv);&lt;br /&gt;
    newenv.clobber(item);&lt;br /&gt;
    return item;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class CallNode implements Expression {&lt;br /&gt;
  final Expression fn, arg;&lt;br /&gt;
  CallNode(Expression fn, Expression arg) { this.fn = fn; this.arg = arg; }&lt;br /&gt;
  public Value eval(Environment env) { goto fn.eval(env).invoke(arg.eval(env)); }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 interface Value {&lt;br /&gt;
  Value invoke(Value arg);&lt;br /&gt;
  boolean isZero();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class IntVal implements Value {&lt;br /&gt;
  final java.math.BigInteger v;&lt;br /&gt;
  IntVal(java.math.BigInteger v) { this.v = v; }&lt;br /&gt;
  IntVal(int v) { this.v = java.math.BigInteger.valueOf(v); }&lt;br /&gt;
  static java.math.BigInteger zero = java.math.BigInteger.valueOf(0);&lt;br /&gt;
  static java.math.BigInteger one = java.math.BigInteger.valueOf(1);&lt;br /&gt;
  public boolean isZero() { return v.equals(zero); }&lt;br /&gt;
  Value zeroTest() { return new IntVal(isZero() ? one : zero); }&lt;br /&gt;
  Value add(Value that) { return new IntVal(this.v.add(((IntVal)that).v)) ; }&lt;br /&gt;
  Value multiply(Value that) { return new IntVal(this.v.multiply(((IntVal)that).v)) ; }&lt;br /&gt;
  public Value invoke(Value arg) { throw new Error(&amp;quot;Can't invoke an integer&amp;quot;); }&lt;br /&gt;
  public String toString() { return v.toString(); }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 abstract class NonZeroValue implements Value { public boolean isZero() { return false; } }&lt;br /&gt;
&lt;br /&gt;
 class Closure extends NonZeroValue {&lt;br /&gt;
  final String name;&lt;br /&gt;
  final Expression body;&lt;br /&gt;
  final Environment env;&lt;br /&gt;
  Closure(String name, Expression body, Environment env) {&lt;br /&gt;
    this.name = name; this.body = body; this.env = env;&lt;br /&gt;
  }&lt;br /&gt;
  public Value invoke(Value arg) { goto body.eval(env.push(name, arg)); }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class ZeroTestPrimitive extends NonZeroValue {&lt;br /&gt;
  public Value invoke(Value arg) { return ((IntVal)arg).zeroTest(); }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class AddPrimitive extends NonZeroValue {&lt;br /&gt;
  public Value invoke(Value arg) { return new CurriedAdd(arg); }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class CurriedAdd extends NonZeroValue {&lt;br /&gt;
  final Value arg1;&lt;br /&gt;
  CurriedAdd(Value arg1) { this.arg1 = arg1; }&lt;br /&gt;
  public Value invoke(Value arg2) {&lt;br /&gt;
    return ((IntVal)arg1).add(arg2);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class MultPrimitive extends NonZeroValue {&lt;br /&gt;
  public Value invoke(Value arg) { return new CurriedMult(arg); }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class CurriedMult extends NonZeroValue {&lt;br /&gt;
  final Value arg1;&lt;br /&gt;
  CurriedMult(Value arg1) { this.arg1 = arg1; }&lt;br /&gt;
  public Value invoke(Value arg2) {&lt;br /&gt;
    return ((IntVal)arg1).multiply(arg2);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 class Environment {&lt;br /&gt;
  final String name;&lt;br /&gt;
  Value item;&lt;br /&gt;
  final Environment next;&lt;br /&gt;
  static Environment empty = new Environment(null, null, null);&lt;br /&gt;
  private Environment(String name, Value item, Environment next) {&lt;br /&gt;
    this.name = name; this.item = item; this.next = next;&lt;br /&gt;
  }&lt;br /&gt;
  Environment push(String name, Value item) {&lt;br /&gt;
    return new Environment(name, item, this);&lt;br /&gt;
  }&lt;br /&gt;
  void clobber(Value item) { this.item = item; }&lt;br /&gt;
  Value lookup(String query) {&lt;br /&gt;
    if (this == empty) throw new Error(&amp;quot;Name &amp;quot; + query + &amp;quot; not found&amp;quot;);&lt;br /&gt;
    if (name.equals(query)) return item;&lt;br /&gt;
    goto next.lookup(query);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 Here is test code that executes the expression&lt;br /&gt;
&lt;br /&gt;
  ((rec fact (lambda (n) (if ((= n) 0) 1 ((* n) (fact ((+ n) -1)))))) j)&lt;br /&gt;
&lt;br /&gt;
 to compute the factorial function for various values of j.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 public class Foo {&lt;br /&gt;
  static Expression demo(int j) {&lt;br /&gt;
    return new CallNode(&lt;br /&gt;
              new RecNode(&amp;quot;fact&amp;quot;,&lt;br /&gt;
                new LambdaNode(&amp;quot;n&amp;quot;,&lt;br /&gt;
                  new IfNode(&lt;br /&gt;
                    new CallNode(&lt;br /&gt;
                      new LiteralNode(new ZeroTestPrimitive()),&lt;br /&gt;
                     new VariableNode(&amp;quot;n&amp;quot;)&lt;br /&gt;
                   ),&lt;br /&gt;
                    new LiteralNode(new IntVal(1)),&lt;br /&gt;
                    new CallNode(&lt;br /&gt;
                      new CallNode(&lt;br /&gt;
                        new LiteralNode(new MultPrimitive()),&lt;br /&gt;
                       new VariableNode(&amp;quot;n&amp;quot;)&lt;br /&gt;
                     ),&lt;br /&gt;
                      new CallNode(&lt;br /&gt;
                        new VariableNode(&amp;quot;fact&amp;quot;),&lt;br /&gt;
                        new CallNode(&lt;br /&gt;
                          new CallNode(&lt;br /&gt;
                           new LiteralNode(new AddPrimitive()),&lt;br /&gt;
                           new VariableNode(&amp;quot;n&amp;quot;)&lt;br /&gt;
                         ),&lt;br /&gt;
                          new LiteralNode(new IntVal(-1))&lt;br /&gt;
                        )&lt;br /&gt;
                      )&lt;br /&gt;
                    )&lt;br /&gt;
                  )&lt;br /&gt;
                )&lt;br /&gt;
              ),&lt;br /&gt;
              new LiteralNode(new IntVal(j)));&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    System.out.println(demo(0).eval(Environment.empty).toString());&lt;br /&gt;
    System.out.println(demo(5).eval(Environment.empty).toString());&lt;br /&gt;
    System.out.println(demo(8).eval(Environment.empty).toString());&lt;br /&gt;
    System.out.println(demo(1000).eval(Environment.empty).toString());&lt;br /&gt;
    System.out.println(demo(1000000).eval(Environment.empty).toString());&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Under the existing JVM, I tested the code exactly as shown except that&lt;br /&gt;
I replaced the keyword &amp;quot;goto&amp;quot; with the keyword &amp;quot;return&amp;quot;.  Here is the&lt;br /&gt;
output:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 livia 69 =&amp;gt;java Foo&lt;br /&gt;
 1&lt;br /&gt;
 24&lt;br /&gt;
 120&lt;br /&gt;
 40320&lt;br /&gt;
 402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&lt;br /&gt;
 Exception in thread &amp;quot;main&amp;quot; java.lang.StackOverflowError: c stack overflow&lt;br /&gt;
 livia 70 =&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that it correctly computed all the factorial values but the last,&lt;br /&gt;
and ran out of stack trying to compute the last one---and rightly so,&lt;br /&gt;
ha ha, for this computation is not tail-recursive!  But now consider&lt;br /&gt;
this test code, which performs a factorial computation tail-recursively:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 Here is test code that executes the expression&lt;br /&gt;
&lt;br /&gt;
  (((rec fact (lambda (n) (lambda (a) (if ((= n) 0) a ((fact ((+ n) -1)) ((* n) a)))))) j) 1)&lt;br /&gt;
&lt;br /&gt;
 to compute the factorial function for various values of j.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 public class Bar {&lt;br /&gt;
  static Expression demo(int j) {&lt;br /&gt;
    return new CallNode(&lt;br /&gt;
             new CallNode(&lt;br /&gt;
                new RecNode(&amp;quot;fact&amp;quot;,&lt;br /&gt;
                  new LambdaNode(&amp;quot;n&amp;quot;,&lt;br /&gt;
                    new LambdaNode(&amp;quot;a&amp;quot;,&lt;br /&gt;
                      new IfNode(&lt;br /&gt;
                        new CallNode(&lt;br /&gt;
                          new CallNode(&lt;br /&gt;
                            new LiteralNode(new EqualsPrimitive()),&lt;br /&gt;
                            new VariableNode(&amp;quot;n&amp;quot;)&lt;br /&gt;
                          ),&lt;br /&gt;
                          new LiteralNode(new IntVal(0))&lt;br /&gt;
                        ),&lt;br /&gt;
                        new VariableNode(&amp;quot;a&amp;quot;),&lt;br /&gt;
                        new CallNode(&lt;br /&gt;
                          new CallNode(&lt;br /&gt;
                            new VariableNode(&amp;quot;fact&amp;quot;),&lt;br /&gt;
                            new CallNode(&lt;br /&gt;
                              new CallNode(&lt;br /&gt;
                                new LiteralNode(new AddPrimitive()),&lt;br /&gt;
                                new VariableNode(&amp;quot;n&amp;quot;)&lt;br /&gt;
                              ),&lt;br /&gt;
                              new LiteralNode(new IntVal(-1))&lt;br /&gt;
                            )&lt;br /&gt;
                          ),&lt;br /&gt;
                          new CallNode(&lt;br /&gt;
                            new CallNode(&lt;br /&gt;
                              new LiteralNode(new MultPrimitive()),&lt;br /&gt;
                              new VariableNode(&amp;quot;n&amp;quot;)&lt;br /&gt;
                            ),&lt;br /&gt;
                            new VariableNode(&amp;quot;a&amp;quot;)&lt;br /&gt;
                          )&lt;br /&gt;
                        )&lt;br /&gt;
                      )&lt;br /&gt;
                   )&lt;br /&gt;
                  )&lt;br /&gt;
                ),&lt;br /&gt;
                new LiteralNode(new IntVal(j))),&lt;br /&gt;
              new LiteralNode(new IntVal(1)));&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    System.out.println(demo(0).eval(Environment.empty).toString());&lt;br /&gt;
    System.out.println(demo(5).eval(Environment.empty).toString());&lt;br /&gt;
    System.out.println(demo(8).eval(Environment.empty).toString());&lt;br /&gt;
    System.out.println(demo(1000).eval(Environment.empty).toString());&lt;br /&gt;
    System.out.println(demo(1000000).eval(Environment.empty).toString());&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This, actually, uses up stack less quickly and so runs out of memory trying&lt;br /&gt;
to compute really huge BigIntegers.  So I changed the starting value 1 to 0,&lt;br /&gt;
and changed * to +, so that it computes triangular numbers instead of&lt;br /&gt;
factorials, and got this output:&lt;br /&gt;
&lt;br /&gt;
 livia 87 =&amp;gt;java Bar&lt;br /&gt;
 0&lt;br /&gt;
 15&lt;br /&gt;
 36&lt;br /&gt;
 500500&lt;br /&gt;
 Exception in thread &amp;quot;main&amp;quot; java.lang.StackOverflowError: c stack overflow&lt;br /&gt;
 livia 88 =&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and I claim that that last stack overflow need not occur if only&lt;br /&gt;
tail calls were supported in Java.&lt;br /&gt;
&lt;br /&gt;
In the code for the evaluator, note how the statements&lt;br /&gt;
&lt;br /&gt;
     goto thenpart.eval(env);&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
     goto elsepart.eval(env);&lt;br /&gt;
&lt;br /&gt;
in the code for the eval method of IfNode make clear the intent&lt;br /&gt;
to process the chosen part of an &amp;quot;if&amp;quot; expression tail-recursively.&lt;br /&gt;
Similarly for the invocation of a function by a CallNode and the&lt;br /&gt;
evaluation of a body by a Closure.&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Closing_over_Variables&amp;diff=744</id>
		<title>Closing over Variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Closing_over_Variables&amp;diff=744"/>
		<updated>2011-07-20T18:36:07Z</updated>

		<summary type="html">&lt;p&gt;Jrose: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Closing over variables considered harmful ==&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx&lt;br /&gt;
&lt;br /&gt;
Agreeing with the author:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
John Rose 22 Jan 2010 8:56 PM&lt;br /&gt;
&lt;br /&gt;
@Konrad: &amp;quot;I much prefer Java’s rule here: only allow closing over variables which are declared `final`. But then, this only works because Java allows local variables to be declared `final`, which C# doesn’t.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The reason Java supports final variables is exactly to fix this problem.  The designer of inner classes was a Lisp refugee who had been bitten by the DOTIMES issue (see Peter Seibel above), and didn't want to allow the problem into Java.&lt;br /&gt;
&lt;br /&gt;
This particular barn door is hard to close after the mutable iteration variable has galloped away.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Closing over variables considered beneficial ==&lt;br /&gt;
&lt;br /&gt;
From your internal interator body, you can manage loop accumulators as if by a primitive while loop.&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Closing_over_Variables&amp;diff=743</id>
		<title>Closing over Variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Closing_over_Variables&amp;diff=743"/>
		<updated>2011-07-20T18:34:15Z</updated>

		<summary type="html">&lt;p&gt;Jrose: New page: == Closing over variables considered harmful  http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx  Agreeing with the author:  John...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Closing over variables considered harmful&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx&lt;br /&gt;
&lt;br /&gt;
Agreeing with the author:&lt;br /&gt;
 John Rose 22 Jan 2010 8:56 PM&lt;br /&gt;
 @Konrad: &amp;quot;I much prefer Java’s rule here: only allow closing over variables which are declared `final`. But then, this only works because Java allows local variables to be declared `final`, which C# doesn’t.&amp;quot;&lt;br /&gt;
 The reason Java supports final variables is exactly to fix this problem.  The designer of inner classes was a Lisp refugee who had been bitten by the DOTIMES issue (see Peter Seibel above), and didn't want to allow the problem into Java.&lt;br /&gt;
 This particular barn door is hard to close after the mutable iteration variable has galloped away.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Closing over variables considered beneficial&lt;br /&gt;
&lt;br /&gt;
From your internal interator body, you can manage loop accumulators as if by a primitive while loop.&lt;/div&gt;</summary>
		<author><name>Jrose</name></author>
		
	</entry>
</feed>