JVM System Programming Language

From JVMLangSummit
Jump to navigationJump to search
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