Skip to content

Commit faa2069

Browse files
authored
Update feature matrix to highlight unconditionally required DedicatedWorkerGlobalScope.name parameter. (#24933)
Way back I recall I did not want to target Worker's `name` parameter given it had browser version requirements, and listed to be a [debugging feature](https://html.spec.whatwg.org/multipage/workers.html#dom-worker-dev). Though now that we have crossed that line, update minimum browser version feature matrix to require `name` support (e.g. after #24190), up[date the minimum required browser versions to highlight this fact. We could maintain separate min required versions for singlethreaded and multithreaded builds, although given that the minimum browser version bump here is relatively small, probably no bother. Although the version bump does mean that Emscripten does no longer support iPhone 5 devices. Fortunately they are very old by now, so practically absent.
1 parent 39ba937 commit faa2069

File tree

4 files changed

+24
-16
lines changed

4 files changed

+24
-16
lines changed

site/source/docs/tools_reference/settings_reference.rst

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2860,7 +2860,7 @@ are desired to work. Pass -sMIN_FIREFOX_VERSION=majorVersion to drop support
28602860
for Firefox versions older than < majorVersion.
28612861
Firefox 79 was released on 2020-07-28.
28622862
MAX_INT (0x7FFFFFFF, or -1) specifies that target is not supported.
2863-
Minimum supported value is 50 which was released on 2016-11-15 (see
2863+
Minimum supported value is 55 which was released on 2017-08-08 (see
28642864
feature_matrix.py)
28652865

28662866
Default value: 79
@@ -2879,8 +2879,10 @@ bundled with macOS 10.14.0 Mojave.
28792879
NOTE: Emscripten is unable to produce code that would work in iOS 9.3.5 and
28802880
older, i.e. iPhone 4s, iPad 2, iPad 3, iPad Mini 1, Pod Touch 5 and older,
28812881
see https://github.com/emscripten-core/emscripten/pull/7191.
2882+
Multithreaded Emscripten code will need Safari 12.2 (iPhone 5s+) at minimum,
2883+
with support for DedicatedWorkerGlobalScope.name parameter.
28822884
MAX_INT (0x7FFFFFFF, or -1) specifies that target is not supported.
2883-
Minimum supported value is 101000 which was released in 2016-09 (see
2885+
Minimum supported value is 120200 which was released on 2019-03-25 (see
28842886
feature_matrix.py).
28852887

28862888
Default value: 150000
@@ -2896,7 +2898,7 @@ This setting also applies to modern Chromium-based Edge, which shares version
28962898
numbers with Chrome.
28972899
Chrome 85 was released on 2020-08-25.
28982900
MAX_INT (0x7FFFFFFF, or -1) specifies that target is not supported.
2899-
Minimum supported value is 55, which was released on 2016-12-01 (see
2901+
Minimum supported value is 70, which was released on 2018-10-16 (see
29002902
feature_matrix.py).
29012903

29022904
Default value: 85

src/settings.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1870,7 +1870,7 @@ var AUTO_NATIVE_LIBRARIES = true;
18701870
// for Firefox versions older than < majorVersion.
18711871
// Firefox 79 was released on 2020-07-28.
18721872
// MAX_INT (0x7FFFFFFF, or -1) specifies that target is not supported.
1873-
// Minimum supported value is 50 which was released on 2016-11-15 (see
1873+
// Minimum supported value is 55 which was released on 2017-08-08 (see
18741874
// feature_matrix.py)
18751875
// [link]
18761876
var MIN_FIREFOX_VERSION = 79;
@@ -1884,8 +1884,10 @@ var MIN_FIREFOX_VERSION = 79;
18841884
// NOTE: Emscripten is unable to produce code that would work in iOS 9.3.5 and
18851885
// older, i.e. iPhone 4s, iPad 2, iPad 3, iPad Mini 1, Pod Touch 5 and older,
18861886
// see https://github.com/emscripten-core/emscripten/pull/7191.
1887+
// Multithreaded Emscripten code will need Safari 12.2 (iPhone 5s+) at minimum,
1888+
// with support for DedicatedWorkerGlobalScope.name parameter.
18871889
// MAX_INT (0x7FFFFFFF, or -1) specifies that target is not supported.
1888-
// Minimum supported value is 101000 which was released in 2016-09 (see
1890+
// Minimum supported value is 120200 which was released on 2019-03-25 (see
18891891
// feature_matrix.py).
18901892
// [link]
18911893
var MIN_SAFARI_VERSION = 150000;
@@ -1896,7 +1898,7 @@ var MIN_SAFARI_VERSION = 150000;
18961898
// numbers with Chrome.
18971899
// Chrome 85 was released on 2020-08-25.
18981900
// MAX_INT (0x7FFFFFFF, or -1) specifies that target is not supported.
1899-
// Minimum supported value is 55, which was released on 2016-12-01 (see
1901+
// Minimum supported value is 70, which was released on 2018-10-16 (see
19001902
// feature_matrix.py).
19011903
// [link]
19021904
var MIN_CHROME_VERSION = 85;

test/test_other.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15232,8 +15232,8 @@ def test_reproduce(self):
1523215232
self.assertTextDataIdentical(expected, response)
1523315233

1523415234
def test_min_browser_version(self):
15235-
err = self.expect_fail([EMCC, test_file('hello_world.c'), '-Wno-transpile', '-Werror', '-sWASM_BIGINT', '-sMIN_SAFARI_VERSION=120000'])
15236-
self.assertContained('emcc: error: MIN_SAFARI_VERSION=120000 is not compatible with WASM_BIGINT (150000 or above required)', err)
15235+
err = self.expect_fail([EMCC, test_file('hello_world.c'), '-Wno-transpile', '-Werror', '-sWASM_BIGINT', '-sMIN_SAFARI_VERSION=130000'])
15236+
self.assertContained('emcc: error: MIN_SAFARI_VERSION=130000 is not compatible with WASM_BIGINT (150000 or above required)', err)
1523715237

1523815238
err = self.expect_fail([EMCC, test_file('hello_world.c'), '-Wno-transpile', '-Werror', '-pthread', '-sMIN_CHROME_VERSION=73'])
1523915239
self.assertContained('emcc: error: MIN_CHROME_VERSION=73 is not compatible with pthreads (74 or above required)', err)
@@ -15247,7 +15247,7 @@ def test_signext_lowering(self):
1524715247
self.assertNotContained('--signext-lowering', err)
1524815248

1524915249
# Specifying an older browser version should trigger the lowering pass
15250-
err = self.run_process(cmd + ['-sMIN_SAFARI_VERSION=120000'], stderr=subprocess.PIPE).stderr
15250+
err = self.run_process(cmd + ['-sMIN_SAFARI_VERSION=120200'], stderr=subprocess.PIPE).stderr
1525115251
self.assertContained('--signext-lowering', err)
1525215252
err = self.run_process(cmd + ['-sMIN_FIREFOX_VERSION=61'], stderr=subprocess.PIPE).stderr
1525315253
self.assertContained('--signext-lowering', err)
@@ -15997,7 +15997,7 @@ def test_no_extra_output(self):
1599715997

1599815998
def test_browser_too_old(self):
1599915999
err = self.expect_fail([EMCC, test_file('hello_world.c'), '-sMIN_CHROME_VERSION=10'])
16000-
self.assertContained('emcc: error: MIN_CHROME_VERSION older than 55 is not supported', err)
16000+
self.assertContained('emcc: error: MIN_CHROME_VERSION older than 70 is not supported', err)
1600116001

1600216002
def test_js_only_settings(self):
1600316003
err = self.run_process([EMCC, test_file('hello_world.c'), '-o', 'foo.wasm', '-sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE=emscripten_get_heap_max'], stderr=PIPE).stderr

tools/feature_matrix.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,16 @@
1515

1616
UNSUPPORTED = 0x7FFFFFFF
1717

18-
# Oldest support browser versions. These have been set somewhat
19-
# arbitrarily for now.
20-
# TODO(sbc): Design a of policy for managing these values.
21-
OLDEST_SUPPORTED_CHROME = 55 # December 1, 2016
22-
OLDEST_SUPPORTED_FIREFOX = 50 # November 15, 2016
23-
OLDEST_SUPPORTED_SAFARI = 101000 # September 20, 2016
18+
# Oldest support browser versions.
19+
# Emscripten unconditionally requires support for:
20+
# - DedicatedWorkerGlobalScope.name parameter for multithreading support, which
21+
# landed first in Chrome 70, Firefox 55 and Safari 12.2.
22+
23+
# N.b. when modifying these values, update comments in src/settings.js on
24+
# MIN_x_VERSION fields to match accordingly.
25+
OLDEST_SUPPORTED_CHROME = 70 # Released on 2018-10-16
26+
OLDEST_SUPPORTED_FIREFOX = 55 # Released on 2017-08-08
27+
OLDEST_SUPPORTED_SAFARI = 120200 # Released on 2019-03-25
2428
# 10.19.0 is the oldest version of node that we do any testing with.
2529
# Keep this in sync with the test-node-compat in .circleci/config.yml.
2630
OLDEST_SUPPORTED_NODE = 101900

0 commit comments

Comments
 (0)