JVM System Programming Language
From JVMLangSummit
Jump to navigationJump to searchThese 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