Comments (16)
Apple forced to use V8 js engine. Hermes is a custom js engine.
Apple forced to use JavaScriptCore,not V8
from hermes.
Apple forced to use V8 js engine. Hermes is a custom js engine.
- https://twitter.com/gereksizcoder/status/1150149439274848256
- https://thenextweb.com/apple/2013/04/04/will-chrome-for-ios-be-able-to-use-googles-new-browser-rendering-engine-blink/
- https://salmanually.com/2019/07/13/all-you-need-to-know-about-new-hermes-javascript-engine-how-to-migrate/
from hermes.
@tohami Looks like see Pull Request 332
from hermes.
Can we disable the ability to execute code dynamically at runtime so we can use it on iOS?
I get that over the air updates is a big feature in RN which is what this dynamic execution helps with I assume. However, not all RN apps need this feature so maybe if we can have the option to disable it then Apple would be okay?
from hermes.
section 2.17 of Apple’s App Store Review Guidelines state that “apps that browse the web must use the iOS WebKit framework and WebKit Javascript.”
But we are not apps that browse the web right?
And if we are precompiling to bytecode? How is it different from frameworks like flutter?
from hermes.
Is there any news on this? If nothing else we'd like to use Hermes on iOS for it's ability to remote debug sync react native code.
from hermes.
I found the quotation from @vovkasm is still a little outdated (dated back to 8/12/2015).
The latest statement from Apple Developer Program License Agreement on https://developer.apple.com/terms is:
3.3.2 Except as set forth in the next paragraph, an Application may not download or install
executable code. Interpreted code may be downloaded to an Application but only so long as
such code: (a) does not change the primary purpose of the Application by providing features or
functionality that are inconsistent with the intended and advertised purpose of the Application as
submitted to the App Store, (b) does not create a store or storefront for other code or
applications, and (c) does not bypass signing, sandbox, or other security features of the OS.An Application that is a programming environment intended for use in learning how to program
may download and run executable code so long as the following requirements are met: (i) no
more than 80 percent of the Application’s viewing area or screen may be taken over with
executable code, except as otherwise permitted in the Documentation, (ii) the Application must
present a reasonably conspicuous indicator to the user within the Application to indicate that the
user is in a programming environment, (iii) the Application must not create a store or storefront for
other code or applications, and (iv) the source code provided by the Application must be
completely viewable and editable by the user (e.g., no pre-compiled libraries or frameworks may
be included with the code downloaded).
which not even mentioned JavaScriptCore at all.
from hermes.
I think that Facebook is already using Hermes on iOS for a while now. There is a hbcbundle instead of a jsbundle in the Facebook app bundle.
See it for yourselves:
https://imgur.com/OQ2duk0
@cayomey is right and my finding (maybe) proves it. I’m very interested to know why is not available on iOS.
from hermes.
@zhigang1992 does hermes works on ios now?
from hermes.
V8 is now on iOS
from hermes.
The important section is this one:
3.3.2 — An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple’s Documented APIs and built-in interpreter(s).
Apple requires that if you want to download and intepret JavaScript at runtime, you use JavaScriptCore. The key part here is runtime - Flutter does not let you dynamically execute code at runtime, only compile it as part of your released app. With Hermes you could (in theory?) download bytecode remotely and execute it at runtime, which is what Apple forbids.
from hermes.
Currently quotation from @alastaircoote is incorrect. Current statement is:
3.3.2 Except as set forth in the next paragraph, 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 exceptions to the
foregoing are scripts and code downloaded and run by Apple's built-in WebKit framework or
JavascriptCore, provided that such scripts and code do not change the primary purpose of the
Application by providing features or functionality that are inconsistent with the intended and
advertised purpose of the Application as submitted to the App Store.
Source: https://developer.apple.com/programs/information/Apple_Developer_Program_Information_8_12_15.pdf
So currently Apple don't force apps to use JSC, it only requires all executed code to be packed in app bundle. And only if you need to download code (technically speaking execute code without any review from Apple), only in this case code can be only executed with system JSC.
from hermes.
Oh, sorry! Of course @cayomey are right. Latest term is at auth only page as he mentioned. And probably it even allows to download "interpreted code" (still needs to be proved by real published apps, imho).
from hermes.
any update? or
Any guidelines to improve app launch time?
from hermes.
@zhigang1992 does hermes works on ios now?
from hermes.
I guess this one should be closed now as hermes is supported in iOS officially since 0.64.0: https://github.com/facebook/react-native/releases/tag/v0.64.0
from hermes.
Related Issues (20)
- simplifyBinOp in InstSimplify generates wrong result HOT 3
- The generator function's body is executed incorrectly when the next() method is not called HOT 1
- [Feature Request] Hello World application for JavaScript Http Server
- Async arrow functions are not supported, making 'show source' unusable inside them HOT 6
- An issues with with statements HOT 1
- Hermes should throw an exception when BigInts use unsigned shift HOT 2
- Hermes should throw an exception when Maxium BigInt size exceed HOT 1
- simplifySwitchInst in SimplifyCFG ignores negative zero HOT 1
- iOS App submission will require a privacy manifest and signature HOT 6
- Possible memory leak HOT 30
- Compile failure with optimized ASan builds HOT 4
- Thread 6: "Exception NSException * "Unhandled JS Exception: Error: invalid host, js engine: hermes" HOT 32
- Parser: improve error message when await is used in non-async functions or instead of async
- JSRangeErrorException setting maximumFractionDigits to 0 with Intl.NumberFormat currency style HOT 1
- Unreachable in ES6 is reachable. HOT 1
- Update documentation on using custom Hermes builds HOT 3
- Building Static Hermes on Windows HOT 4
- Problems finding libraries with fresh compile under windows HOT 3
- Conversion of large array to a Set seems slow HOT 3
- React Native & Hermes: Is Additional Code Obfuscation Beneficial? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hermes.