Hacker News new | past | comments | ask | show | jobs | submit login

As far as I know, JIT is disabled on iOS at the moment, so one thing developers would notice right away is abysmal JavaScript performance. (Early versions of V8 didn't even have an interpreting or bytecode path, to my knowledge, so it wouldn't even run without major modifications!)



Even if Firefox and Chrome used Gecko and Blink with JSC, that's still a marked improvement from the state of things today. Most of what I dislike about Safari are its weird rendering issues, which would be solved.


Just to be clear though, you will just be getting Blink/Gecko’s rendering issues instead.


You'd be getting the ability to choose which rendering issues you went to experience for any given website, which is actually quite useful.


Which is true, but they're much less prominent overall. Mobile Safari is quirky to say the least and is truly the IE of the present day.


Are they really? Safari is currently leading Interop 2022 https://wpt.fyi/interop-2022


Given how vast the modern web specifications are, you could really be 99% compliant but provide a pretty mediocre experience to your users, or vice versa.

For example, I use Firefox as my main browser, and the lack of e.g. proper WebAuthN support on macOS has a much, much higher impact to me (and is making me consider switching), whereas I couldn't care less about e.g. WebUSB (which I do occasionally use, but I'm fine switching to Chrome for that use case).

To get an accurate picture, you'd have to somehow weigh all of these various standards and features in a way that not only accurately presents actual users, but also their relative importance (i.e. do websites trying to use something fail gracefully, or do I effectively have to use another browser to get achieve what I'm there for).


Ideally or potentially Firefoxes or potentially say Servos or any other browser of choice. As opposed to the very-low not-so-common denominator of this anti-invested in naughty stepchild of the Apple 30% rent-stealing profit-garden that is modern Apple.


That's not how it works; to use JavaScriptCore's JIT you need to load up a WebKit web view (which runs in a separate process).


That's objectively untrue. Even the most basic Google search shows that this is untrue.


Just Googled it and it looks like you’re the one who’s wrong… did you actually Google it yourself before posting this?


Can you show a source, then? I‘m also pretty sure JIT (i.e. write+execute) permissions are enforced at the process level.

Some apps work around this by running JavaScript in an invisible WebKit view, but that approach has IPC overhead, so is probably only worth it for processes that interact with the UI and rest of the app infrequently (which is the opposite of what you‘d want from a JS engine interacting with the DOM).

a-Shell uses it for performant WASM execution of CLI executables, for example.


I think that you just need a special entitlement to enable w+x page. I could be wrong though, haven't dug too deep in this.


That's only officially available for macOS, I believe: https://developer.apple.com/documentation/bundleresources/en...

I've seen some reports of it also becoming available for iOS, but it seems to come and go between minor version upgrades and I'm not sure what the current status is.


It's not available for iOS and never has been.


Maybe not officially, as I mentioned, but it does seem to have been available at least for one minor version: https://9to5mac.com/2020/11/06/ios-14-2-brings-jit-compilati...

Might have been a bug; might have been a feature available earlier than planned.


It’s a bug.


Not an iOS developer; what does available mean in this case? Are you talking actual OS support, or simply that Apple has never approved any app attempting to do it? Because Safari obviously does it so my thinking is the OS must support it, but I guess Apple has a policy not to approve it.


Apps that want to JIT need an “entitlement” from Apple (in other words they have a signature from Apple that the operating system validates before letting the APIs work). So the OS supports it, Apple grants that entitlement to Safari so it can use it, but no third party app can get this entitlement.


But surely once "sideloading" (I hate that term, we used to just call it "installing"...) is enabled, apps not installed through the App Store will be able to utilise this entitlement?


No, all apps (including those that are sideloaded) must be signed with a provisioning profile that comes from Apple.


I have a hard time believing Apple will get away with such a scheme. But time will tell I guess.


Hope so. There should be some developer capability somewhere. And we should build for the reasonable good future, & show whats possible. Not what we can mete from the iron mailed fist of Cupertino in the real world if this or that, but what actual good is.

It'd be a mean spirited system to simply mark everything no-execute, always forever in any env. But that'd be distinct Apple flavored. Think Different, R.I.P..


> And we should build for the reasonable good future, & show whats possible.

Android is 70% worldwide market share. Chrome is 80%.

What's stopping you from showing us this good future? Where are these glorious web apps?


no


Stupid question: does JSC have a JIT?


Yes. On iOS you can only use the JIT through an out-of-process web browser (WKWebView or SFSafariViewController) so it’s likely Firefox and Chrome would use non-JIT in-process engine (even if that were JSC!) unless the JIT restriction is lifted.


I'm sure they'll just use their own bytecode interpreters. Blink in particular has one that they've worked pretty hard on.


Thank you!


>so one thing developers would notice right away is abysmal JavaScript performance

That's actually a good thing! If a substantial chunk of iOS users would use third-party browsers without JS JIT, then webdevs would be forced to better optimize their sites, because the perf ceiling would be lower on these browsers. This then would lead to stellar performance for those who stick with Safari which does have JIT! Kind of how using an M1 is so good today, because there's still a large number of Intel machines out there, so devs can't yet afford releasing software that's only usable on M1 from a cpu/energy point of view.


>performance

In 2021, Microsoft added the "no JIT" option to Edge for additional security [0], and here's the quote in their blog post:

>We see that most tests see no changes with JIT disabled. There are a few improvements and regressions, but most tests remain unchanged. Anecdotally, we find that users with JIT disabled rarely notice a difference in their daily browsing

[0] https://microsoftedge.github.io/edgevr/posts/Super-Duper-Sec...


Ah, good point – Apple has this too, on iOS [1]!

[1] https://www.apple.com/newsroom/2022/07/apple-expands-commitm...


Not sure if you’re kidding, but if not – why would users switch in the first place, if that means abysmal performance?


Because Google would be pushing it hard? E.g. when you click a link in the YouTube app, it doesn't open it in Safari, rather it shows you a "helpful" dark-pattern prompt about opening it with:

- Chrome (mind you, I don't have it installed, so this would send me to the AppStore)

- the "Google" app (again, not installed)

- Safari (which does not open Safari, rather an in-app WKWebView, so that Sundar can still milk your precious eyeballs)

- and finally at the bottom the "Default browser app" (this is what you want)

Of course, there's no setting to save this choice once and for all, so this is done each and every time you try opening a link in the YouTube app. Wait, actually, I'm 99% sure it would suddenly remember your choice if you had installed one of their browsers. From that moment they would duly open all links in Chrome/Google, without this annoying prompt.

I bet every Google app does this on iOS to get you install their crap. Disgusting practice.


> Of course, there's no setting to save this choice once and for all, so this is done each and every time you try opening a link in the YouTube app.

To be clear, the one in GMail does have a "remember this" setting, and it doesn't work.


Google is incredibly aggressive in promoting Chrome yes, but every time I've seen "Safari" as an option in a Google app it isn't WKWebView, but SFSafariViewController which is for all intents and purposes real Safari — it's essentially an out-of-process Safari tab with its own separate cookies, storage, etc. Apps using it can't snoop on your browsing session and they can't dig around in your cookies, etc from standalone Safari.


It’d be useful to see the difference clearly as a user. Personally I try really hard not to use any in-app browser because I have no clue how trustworthy the developer is (except for Facebook and Google, for which the answer is “absolutely not”).


SFSafariViewController is very distinct. Apps can't really change its UI at all.


> Because Google would be pushing it hard? E.g. when you click a link in the YouTube app, it doesn't open it in Safari, rather it shows you a "helpful" dark-pattern prompt about opening it with: Chrome

Ironically the reason this dark pattern exists is because Apple refused to implement support for user-controlled URI handlers in the first place.


“Safari” has always opened in Safari for me.


They're AB testing. Safari used to open Safari for me, but with a new phone now I too get the menu as described above.


This and the ads is why I use YouTube in Safari now.

It's annoying, as websites always have worse UX than native apps.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: