> Building products that put clients first.
I'm not saying those websites are correct in doing that, but in effect browsers are expected to have JIT to maintain any userbase at all, because such websites are so numerous that it would make it seem it is an actual browser "issue" in the eyes of laypeople.
Modern V8 have both interpreter Ignition[2] and TurboFan[3] JITed compiler. My understanding is that on most websites Ignition will be sufficient but when using omething like SPA application TurboFan will gradually speedup bytecode generated by Ignition using JIT like technology.
I am not sure if JIT is required. There are even ideas to compile Typescript to WebAssembly[4]. You could create a compiler that compile strict subset of JS to more performant Webassembly and it would outperform modern JS engines.
[1] https://github.com/facebook/hermes
[2] https://v8.dev/docs/ignition
[3] https://v8.dev/docs/turbofan
[4] https://www.assemblyscript.org/> 3.3.2 An Application may not download or install executable code. Interpreted code may only be used in an Application if all scripts, code and interpreters are packaged in the Application and not downloaded. The only exception to the foregoing is scripts and code downloaded and run by Apple's built-in WebKit framework.
Does this also apply to jailbroken iOS devices? I can imagine that it’s fairly difficult to disable a security feature such as this in the kernel?
But as I understand it apps are signed and have an entitlements file bundled inside. That file determines whether the kernel will allow stuff like changing pages to executable, running in the background, notifications, etc. Safari happens to have this extra entitlement in its embedded entitlements.plist. The signature checks out, so the the kernel allows the functionality.
For example, there is an entitlement to allow a debugger to attach, which dev builds of apps typically have, but Apple won't allow for apps in the store. I would think that if jailbreak short circuited the signature stuff, you could put whatever entitlements you want in there. But there may be some additional constraints.
Now that I'm thinking of it, I wonder if dev builds of apps can have the entitlement to do the JIT magic. I don't know if they place any constraints on the dev signing keys.
I thought it was only JIT due to my background with native apps, my bad.