Conversation

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
6
4
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
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