A while ago I read about Scala for LLVM and I kept wondering which things in the Scala language/specification/library) only exist to make the JVM happy or improve interop with Java.
Considering that running Scala on the LLVM provides much more freedoms and the plan is port the language (and not the whole Java ecosystem around it) which features won’t make sense there?
Guidance: I’m wondering about things like Object#finalize, the monitor stuff (notify, wait), clone vs. Cloneable, no 64-bit array indices, collection sizes limited to 32-bit, java.lang.String, Java reflection, …
The
AnyValtype branch could burn in eternal hell fire. Arrays could be implemented in a sane way (okay, the ugliness is hidden pretty well now), same for reified types. The methodsclone,hashCodeandtoStringcould go into type classes where they belong. Currying could be implemented without multiple arg lists. Type inference and type level programming could be improved.