It's amazing seeing that as expected, the dream of actual AOT for WebAssembly is already dead and (at least in the case of iOS) will stay dead for the near future if not indefinitely because the fantasy of AOT was never actually feasible
Conversation
Replying to
Oh, are they moving back to JIT again? I shouldn't be surprised but I thought AOT was gonna stick this time.
1
what the heck, I guess people were getting annoyed at long app install times?
1
I don’t see an indication there that they are moving away from AOT, got another source?
1
See thread: twitter.com/DanielMicay/st
They’re moving away from pure AOT to a hybrid of AOT and JIT in the default configuration.
Quote Tweet
Replying to @pcwalton and @antumbral
I wouldn't really say that they're moving away from it. Since Android 7 (Nougat), it uses a hybrid AOT / JIT compilation strategy in the default configuration. AOT compiled code for the bundled apps/libraries is shipped with the OS, and it starts with JIT for out-of-band updates.
2
1
Can see the defaults in the build configuration changes linked in twitter.com/DanielMicay/st too. I think the vast majority of vendors use the defaults, but they're allowed to change them as long as they pass the CTS including having quick enough app install times, which this does.
Quote Tweet
Replying to @DanielMicay @pcwalton and @antumbral
GrapheneOS has build configuration changes to use full preopt even in development builds, disable the JIT compiler / JIT profiling and use full AOT:
github.com/GrapheneOS/pla
github.com/GrapheneOS/pla
github.com/GrapheneOS/pla
github.com/GrapheneOS/pla
github.com/GrapheneOS/pla
1
1
It's completely possible to fully use the interpreter without the JIT, fully use the JIT, or fully use AOT. Default is a hybrid mix of those. GrapheneOS still uses the interpreter for one-time initializers, etc. just not the JIT compiler, and AOT isn't PGO-based without the JIT.
1
1
PGO in this case mostly means not bothering to compile anything that's cold and relying on the JIT to deal with it as needed if it ends up becoming hot. It can do more than that though. Mix of JIT with background AOT (as part of OS A/B updates and maintenance windows) is neat.
It would be entirely possible for the JIT to provide enough profiling information for AOT compilation to generate specialized versions of code based on types, etc. but at the moment it's mostly just based around guiding AOT compilation based on which code is actually being used.
1
So, different users will actually end up with different compiled code based on which parts of the apps they use. If they don't use substantial portions of an app or only rarely trigger it, that code isn't going to get AOT compilation. If they start using it, JIT deals with it.
1
1
Show replies



