Re:Why is Rosetta 2 fast?
by monocularvision on Wednesday November 09, 2022 @08:00PM
(#33540715)
The bitcode Apple used for their platforms was at a much, much lower level than bytecode used on Android.
Yeah, it was also a custom version, somehow people keep thinking they used LLVM bitcode straight out of the box.
I don't know what Android does… some kind of Java but not Java, right?
In that case it's much less expressive, so developers simply can't do the unsafe/specialized code in the first place. Which means they can't write in C or assembly.
Bitcode was a specific Apple feature that used LLVM's compiler IL and might have promised extra portability, but it didn't really work out and was removed this year. ("LLVM" stands for "low level virtual machine" which is funny because it isn't low level and isn't a virtual machine.)
LLVM is lower level than Python or Java bytecode. LLVM is also virtual machine in the sense of an abstract machine, similar in idea to a process virtual machine. Most usages of "virtual machine" today are talking about system virtual machines, but it's important to note that "virtual machine" is an overloaded phrase.
> That's why bitcode is dead now.
Isn't this what Android does today? Applications are distributed in bytecode form and then optimized for the specific processor at install time.