Difference between revisions of "JVM System Programming Language"
From JVMLangSummit
Jump to navigationJump to search (New page: Media:Jvm-syslang-whiteboard.jpg) |
(Notes from the discussion) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
− | [[ | + | [[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
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