Skip to content

Bump oldest supported safari version from v14.1 to v15 - #27542

Merged
sbc100 merged 2 commits into
emscripten-core:mainfrom
sbc100:bump_safari_min
Aug 14, 2026
Merged

Bump oldest supported safari version from v14.1 to v15#27542
sbc100 merged 2 commits into
emscripten-core:mainfrom
sbc100:bump_safari_min

Conversation

@sbc100

@sbc100 sbc100 commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

Safari 15 has been the default for a while now. This change means it is no longer possible to target anything older.

Toolchain and runtime impact:

  • Drops Binaryen lowering passes for bulk-memory and nontrapping-fptoint because all supported engines (Chrome >= 85, Firefox >= 79, Safari >= 15, Node >= 18.3) support them.
  • JS_BIGINT_INTEGRATION (WASM_BIGINT) is now unconditionally supported across all target engines.
  • Removes legacy JS polyfills (e.g. bigint64array.js) and Safari 14-specific workarounds.

Market share and device compatibility (AI-assisted):

@sbc100
sbc100 requested review from dschuff, juj and kripken August 14, 2026 15:26
Comment thread src/lib/libbrowser.js
@sbc100
sbc100 requested a review from kripken August 14, 2026 17:50
* Exception handling (see :ref:`exceptions` for details).
* SIMD (see :ref:`Porting SIMD code` for details).
* Nontrapping float-to-int conversion (enabled by default, use
``-mno-nontrapping-fptoint`` to disable).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why remove the instructions for disabling them?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its just not that actionable anymore, because all our system libraries build with this flag. If you want to really produce a build without nontrapping-fptoint after this change would need to modify emscripten to change they way it builds its system libraries or restore the binaryen lowering pass (which I think we should probably delete).

@sbc100 sbc100 Aug 14, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passing -mno-nontrapping-fptoint for a single source does work, I'm just not sure useful/interesting it its to mention here.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In that case it seems odd to mention these features at all, and their defaults?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a new section for features that cannot really be disabled. Should I just remove it instead maybe?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's good to keep that new section, as documentation for which features are emitted.

Comment thread test/minimal_webgl/CMakeLists.txt Outdated
Safari 15 has been the default for a while now. This change means it is
no longer possible to target anything older.

Toolchain and runtime impact:
- Drops Binaryen lowering passes for `bulk-memory` and
  `nontrapping-fptoint` because all supported engines (Chrome >= 85,
  Firefox >= 79, Safari >= 15, Node >= 18.3) support them.
- `JS_BIGINT_INTEGRATION` (`WASM_BIGINT`) is now unconditionally
  supported across all target engines.
- Removes legacy JS polyfills (e.g. `bigint64array.js`) and
  Safari 14-specific workarounds.

Market share and device compatibility (AI-assisted):
- Global usage: Safari 14 holds <0.1% global market share and is below
  standard reporting thresholds:
  https://caniuse.com/usage-table
  https://gs.statcounter.com/browser-version-market-share
- iOS / iPadOS: iOS 15 supported all devices that ran iOS 14 (including
  iPhone 6s/7, SE 1st gen, iPad Air 2, iPad mini 4, and iPod touch 7th
  gen), meaning zero active iOS devices were stranded on iOS 14:
  https://support.apple.com/100366
  https://en.wikipedia.org/wiki/IOS_15#Supported_devices
- macOS: Safari 15 was released for macOS Catalina (10.15) and Big Sur
  (11.0), and shipped with Monterey (12.0). Only macOS Mojave (10.14)
  and older were capped at Safari 14.1 (Mojave reached EOL in 2021):
  https://developer.apple.com/documentation/safari-release-notes/safari-15-release-notes
Comment thread site/source/docs/compiling/WebAssembly.rst Outdated
browser versions Emscripten targets.

Some features are available even the oldest supported browser versions, and are
enabled by default. They can be turned of for specific compilation units using

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
enabled by default. They can be turned of for specific compilation units using
enabled by default. They can be turned off for specific compilation units using

Co-authored-by: Alon Zakai <alonzakai@gmail.com>
@sbc100
sbc100 merged commit 8aca6b0 into emscripten-core:main Aug 14, 2026
6 of 22 checks passed
@sbc100
sbc100 deleted the bump_safari_min branch August 14, 2026 21:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants