Difference between revisions of "JVM System Programming Language"

From JVMLangSummit
Jump to navigationJump to search
(Notes from the discussion)
 
Line 1: Line 1:
 
[[Image:Jvm-syslang-whiteboard.jpg|thumb]]
 
[[Image:Jvm-syslang-whiteboard.jpg|thumb]]
 +
 +
These are Doug's thoughts on a JVM systems programming language (paraphrased and filtered through Nate):
 +
 +
Want a language that serves as "de facto specification" of the JVM.  Includes bytecode + intrinsics supported by the major VMs.
 +
 +
Language should have:
 +
 +
* expressions
 +
** don't want to talk about registers, operand stack
 +
* no implicit conversions
 +
* "tasteful" descriptors (overloading)
 +
** unclear if these should include checked exceptions
 +
** should allow all valid JVM identifiers, not just valid Java identifiers
 +
** Q: how to expose descriptors to a source language like Java?
 +
 +
* macros
 +
** capability testing (ifdef?) (e.g., does this VM support this unsafe operation?)
 +
** expand out specialized methods for primitives
 +
 +
* intrinsics (e.g., unsafe)
 +
** implicit standardization by virtue of a common code base
 +
 +
* no checked exceptions, generics, annotations
 +
** but these are probably necessary at least in signatures to interact with Java
 +
 +
* an unsafe/intrinsic block
 +
 +
Some use cases:
 +
* Unsafe for subtle shades of volatile not expressible in Java
 +
* Unsafe.throwException (can throw checked exception w/o declaring it)
 +
 +
Other ideas from the crowd (sorry, didn't always catch who said what):
 +
* Java with fewer restrictions (statements nested within expressions, code in constructors before constructor call)
 +
* proof carrying code to show use of Unsafe is indeed safe, have the verifier check it
 +
* build while, etc, as macros?  base language something like Grimp (from Soot)?
 +
* tuples, structs

Latest revision as of 09:27, 5 August 2010

Error creating thumbnail: Unable to save thumbnail to destination

These are Doug's thoughts on a JVM systems programming language (paraphrased and filtered through Nate):

Want a language that serves as "de facto specification" of the JVM. Includes bytecode + intrinsics supported by the major VMs.

Language should have:

  • expressions
    • don't want to talk about registers, operand stack
  • no implicit conversions
  • "tasteful" descriptors (overloading)
    • unclear if these should include checked exceptions
    • should allow all valid JVM identifiers, not just valid Java identifiers
    • Q: how to expose descriptors to a source language like Java?
  • macros
    • capability testing (ifdef?) (e.g., does this VM support this unsafe operation?)
    • expand out specialized methods for primitives
  • intrinsics (e.g., unsafe)
    • implicit standardization by virtue of a common code base
  • no checked exceptions, generics, annotations
    • but these are probably necessary at least in signatures to interact with Java
  • an unsafe/intrinsic block

Some use cases:

  • Unsafe for subtle shades of volatile not expressible in Java
  • Unsafe.throwException (can throw checked exception w/o declaring it)

Other ideas from the crowd (sorry, didn't always catch who said what):

  • Java with fewer restrictions (statements nested within expressions, code in constructors before constructor call)
  • proof carrying code to show use of Unsafe is indeed safe, have the verifier check it
  • build while, etc, as macros? base language something like Grimp (from Soot)?
  • tuples, structs