Repository navigation
[Hermes] Bump Hermes to 260318099.0.2 - #58397
Closed
cipolleschi wants to merge 2 commits into
Closed
cipolleschi wants to merge 2 commits into
cipolleschi wants to merge 2 commits into
Conversation
|
@cipolleschi has imported this pull request. If you are a Meta employee, you can view this in D119166079. |
fabriziocucci
approved these changes
Sep 8, 2026
|
@cipolleschi merged this pull request in e4a7e4e. |
shashikant-panchal
pushed a commit
to shashikant-panchal/react-native
that referenced
this pull request
Sep 10, 2026
Summary: Bump the Hermes version used by React Native from `260318099.0.1` to `260318099.0.2`. ## Changelog: [INTERNAL] [CHANGED] - Bump Hermes to 260318099.0.2. Pull Request resolved: react#58397 Test Plan: - `git diff --check main...HEAD` - CI on this PR. Reviewed By: fabriziocucci Differential Revision: D119166079 Pulled By: cipolleschi fbshipit-source-id: 52181d745cc388e8a70ac62f395bf9659988c4e6
robhogan
added a commit
that referenced
this pull request
Oct 22, 2026
Hermes profiles have lowered generators (with `enableBabelRuntime: false`), `for...of`, `?.`, `??` and optional catch binding in dev builds only since #52651, because Hermes couldn't show local variables when paused on a breakpoint in a native generator. That was a Hermes bug: the generator's resume prologue was stamped with the source location of its last `yield`, so a breakpoint on that line resolved to scope-less entry code. It's fixed in facebook/hermes@d1238c8c6 (hermes-v260318099.0.2), which main has used since #58397. This removes `enableRegenerator`, so Hermes-profile dev output matches release. It also fixes a dev/release divergence - loose `for-of` never calls `iterator.return()`, so breaking out of a `for...of` over a generator skipped its `finally` in dev only. Changelog: [General][Changed] - Babel preset: Hermes profiles no longer lower generators, `for...of`, optional chaining, nullish coalescing or optional catch binding in dev, matching release
meta-codesync Bot
pushed a commit
that referenced
this pull request
Oct 22, 2026
Summary: ## Motivation - Dev/release consistency in correctness and performance shape. - ~10% faster dev cold builds - More responsive dev apps (~2x faster promise handling) - Improved debugging support Since #52651, Hermes profiles have lowered generators (with `enableBabelRuntime: false`), `for...of`, `?.`, `??` and optional catch binding in dev builds only, because Hermes couldn't show local variables when paused on a breakpoint in a native generator. That turned out to be a Hermes bug: a breakpoint on that a `yield` line resolved to scope-less entry code before the body had even run. It was fixed in facebook/hermes@d1238c8 (hermes-v260318099.0.2), which main has used since #58397. This removes `enableRegenerator`, so Hermes-profile dev output matches release. It also fixes a dev-only divergence - loose `for-of` never calls `iterator.return()`, so breaking out of a `for...of` over a generator skipped its `finally` in dev but not release. Note that with the default `enableBabelRuntime`, generators were already native in dev, so in practice the generator change mostly affects `enableBabelRuntime: false` setups, including RN's own Jest. (There's no good reason generator was ever conditional on `enableBabelRuntime === false` - it seems to date from #44668 and probably a misunderstanding of what the `regenerator` argument to `babel/plugin-transform-runtime` did - it doesn't make that plugin transform generators, it just rewrites the helper import.) Native generator debugging still isn't perfect on .0.2 - stepping through `try`/`catch` can stop on a `catch` line that doesn't run, and breakpoints on `yield*` lines or on a `throw` after a resume don't fire. Those already affect every default config though, so there's no regression in most cases. Regenerator has its own problems, eg breakpoints often stop a line early because statements merge into its `case` blocks. Overall, native is now a better experience. Detailed comparison in https://robhogan.github.io/reports/react-native-regenerator-removal/ ## Changelog [GENERAL] [FIXED] - Babel preset: Hermes profiles no longer lower generators, `for...of`, optional chaining, nullish coalescing or optional catch binding in dev, matching release Pull Request resolved: #59303 Test Plan: Reproduced the original bug through Hermes's `CDPAgent` test harness with `Debugger.setBreakpointByUrl`. On hermes-v250829098.0.16 and v260318099.0.1, a breakpoint on a generator's last `yield` line pauses at the generator call with only the global scope, and every local evaluates to `undefined`. On v260318099.0.2 and .0.4 it pauses at the real code with all locals. AI-driven breakpoint sweep: this preset with `dev: true, enableBabelRuntime: false`, before and after this change, over 248 source lines of generator, async function, async generator, exception and loop fixtures. A breakpoint was set on every line, each pause was mapped back through the source map, and every local was evaluated. Same results with eager and lazy compilation. | Hermes | Identical | Different, equivalent | Native better | Native worse | Mixed (loop headers) | Total | | --- | --- | --- | --- | --- | --- | --- | | 250829098.0.16 | 164 | 10 | 49 | 22 | 3 | 248 | | 260318099.0.2 | 183 | 11 | 47 | 3 | 3 | 247 | | 260318099.0.4 | 184 | 11 | 47 | 3 | 3 | 248 | Reviewed By: christophpurrer Differential Revision: D126904757 Pulled By: javache fbshipit-source-id: f2d492ec6c326b9ec8b8101832c85b921836f5ce
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
Bump the Hermes version used by React Native from
260318099.0.1to260318099.0.2.Changelog:
[INTERNAL] [CHANGED] - Bump Hermes to 260318099.0.2.
Test Plan:
git diff --check main...HEAD