@@ -18,13 +18,87 @@ to browse the changes between the tags.
18
18
19
19
See docs/process.md for more on how version tagging works.
20
20
21
- 3.1.51 (in development)
21
+ 3.1.53 (in development)
22
22
-----------------------
23
+
24
+ 3.1.52 - 01/19/24
25
+ -----------------
26
+ - The core stack manipulation functions (` stackSave ` , ` stackRestore ` ,
27
+ ` stackAlloc ` ) are no longer exported by default. Users of these function
28
+ now need to depend on them explicitly (either via ` __deps ` attributes or via
29
+ ` -sEXPORTED_FUNCTIONS ` ). (#21075 )
30
+ - Building with ` pthreads+EXPORT_ES6 ` will now emit the worker file as
31
+ ` NAME.worker.mjs ` rather than ` .js ` . This is a necessary breaking change to
32
+ resolve other ` pthreads+EXPORT_ES6 ` issues in Node.js (because Node.js is
33
+ affected by the suffix in some cases). (#21041 )
34
+ - Include paths added by ports (e.g. ` -sUSE_SDL=2 ` ) now use ` -isystem ` rather
35
+ then ` -I ` . This means that files in user-specified include directories will
36
+ now take precedence over port includes. (#21014 )
37
+ - Certain settings that only apply when generating JavaScript output will now
38
+ trigger a warning if used when generating only Wasm.
39
+ - Fix bug where ` main ` was mistakenly included in debug builds but not in
40
+ release builds. (#20971 )
41
+ - Remove JAVA from the list of ` .emscripten ` config file settings. In the
42
+ past we used this to run the java version of closure compiler. If there are
43
+ folks who prefer to use the java version of closure compiler for some reason
44
+ it should be possible by adding ` --platform=java ` to ` --closure-args ` or
45
+ ` EMCC_CLOSURE_ARGS ` but emscripten will no longer do this automatically.
46
+ (#20919 )
47
+ - The WORKAROUND_OLD_WEBGL_UNIFORM_UPLOAD_IGNORED_OFFSET_BUG setting was
48
+ removed. This was a workaround from 2018 (#7459 ) that should no longer be
49
+ needed. (#20925 )
50
+ - The ` --default-obj-ext ` command line flag was removed. (#20917 )
51
+ - emcc will now treat ` .bc ` files as source files. These means that will get
52
+ compiled by clang before being passed to the linker. This matches the
53
+ behaviour of clang. (#20922 )
54
+ - Emscripten now only supports browsers going back to certain versions. The
55
+ current set of minimum versions are: Chrome 32, Firefox 34, Safari 9.
56
+ Attempting to targets version older this using, for example
57
+ ` MIN_CHROME_VERSION ` will now result in build-time error. All of these
58
+ browser versions are at least 8 years old now so the hope is that nobody
59
+ is intending to target them today. (#20924 )
60
+ - C++ objects passed into embind's val via constructors, methods, and call
61
+ function will not be automatically destroyed after the function call. This
62
+ makes the behavior consistent for invocations.
63
+ - The ` SUPPORT_ERRNO ` setting is now deprecated as it only controlled setting
64
+ errno from JS library functions and emscripten no longer requires this.
65
+ (#21074 )
66
+
67
+ 3.1.51 - 12/13/23
68
+ -----------------
69
+ - Support for explicitly targeting the legacy Internet Explorer or EdgeHTML
70
+ (edge version prior to the chromium-based edge) browsers via
71
+ ` -sMIN_EDGE_VERSION/-sMIN_IE_VERSION ` was removed. (#20881 )
72
+ - Emscripten is now more strict about handling unsupported shared library
73
+ inputs. For example, under the old behaviour if a system shared library
74
+ such as ` /usr/lib/libz.so ` was passed to emscripten it would silently re-write
75
+ this to ` -lz ` , which would then search this a libz in its own sysroot. Now
76
+ this file is passed though the linker like any other input file and you will
77
+ see an ` unknown file type ` error from the linker (just like you would with the
78
+ native clang or gcc toolchains). (#20886 )
79
+ - Support for explicitly targeting the legacy EdgeHTML browser (edge version
80
+ prior to the chromium-based edge) via ` -sMIN_EDGE_VERSION ` was removed.
81
+ Using ` -sLEGACY_VM_SUPPORT ` should still work if anyone still wanted to target
82
+ this or any other legacy browser.
23
83
- Breaking change: Using the ` *glGetProcAddress() ` family of functions now
24
84
requires passing a linker flag -sGL_ENABLE_GET_PROC_ADDRESS. This prevents
25
85
ports of native GL renderers from later accidentally attempting to activate
26
86
"dormant" features if web browser implementations gain new WebGL extensions in
27
87
the future, which ` *glGetProcAddress() ` is not able to support. (#20802 )
88
+ - Added Hi DPI support to GLFW. When enabled, GLFW automatically accounts for
89
+ the ` devicePixelRatio ` browser property and changes the size of the canvas
90
+ accordingly (including dynamically if the canvas is moved from a 4K screen to
91
+ a 2K screen and vice-versa). ` glfwGetFramebufferSize ` now properly returns the
92
+ canvas size in pixels, while ` glfwGetWindowSize ` returns the canvas size is
93
+ screen size. By default, this feature is disabled. You can enable it before
94
+ creating a window by calling `glfwWindowHint(GLFW_SCALE_TO_MONITOR,
95
+ GLFW_TRUE)`. You can also dynamically change it after the window has been
96
+ created by calling `glfwSetWindowAttrib(window, GLFW_SCALE_TO_MONITOR,
97
+ GLFW_TRUE)`. (#20584 )
98
+ - Transpilation to support older environments/browsers is now performed by babel
99
+ rather than closure compiler. This means that folks targeting older browsers
100
+ (e.g. ` -sLEGACY_VM_SUPPORT ` ) do not need to ensure their code is closure
101
+ compliant. (#20879 )
28
102
29
103
3.1.50 - 11/29/23
30
104
-----------------
@@ -38,8 +112,8 @@ See docs/process.md for more on how version tagging works.
38
112
the ` DEFAULT_TO_CXX ` setting now only applies when linking and not when
39
113
compiling. (#20712 )
40
114
- JavaScript library code can now use the full range of ES6 features and we rely
41
- on closure compiler to transpile for ES5 when targetting older browsers.
42
- For those that would rather perform transpilation seperately outside of
115
+ on closure compiler to transpile for ES5 when targeting older browsers.
116
+ For those that would rather perform transpilation separately outside of
43
117
emscripten you can use the ` -sPOLYFILL=0 ` setting. (#20700 )
44
118
- libcxx, libcxxabi, libunwind, and compiler-rt were updated to LLVM 17.0.4.
45
119
(#20705 , #20707 , and #20708 )
@@ -71,7 +145,7 @@ See docs/process.md for more on how version tagging works.
71
145
JavaScript code. (#20551 )
72
146
- A new top-level ` bootstrap ` script was added. This script is for emscripten
73
147
developers and helps take a care of post-checkout tasks such as ` npm install ` .
74
- If this script needs to be run (e.g. becuase package.json was changed, emcc
148
+ If this script needs to be run (e.g. because package.json was changed, emcc
75
149
will exit with an error. (#19736 )
76
150
- If exceptions are disabled, using ` new ` together with ` std::nothrow ` no
77
151
longer aborts if the allocation fails. Instead ` nullptr ` is returned now.
@@ -115,7 +189,7 @@ See docs/process.md for more on how version tagging works.
115
189
-----------------
116
190
- The ` wasmTable ` global is now a JS library function that will only be included
117
191
as needed. Code that references ` wasmTable ` will no need to declare a
118
- dependency on it. It can also be explictly included using
192
+ dependency on it. It can also be explicitly included using
119
193
` -sEXPORTED_RUNTIME_METHODS=wasmTable ` .
120
194
- libunwind updated to LLVM 16.0.6. (#20088 )
121
195
- The ` --minify=0 ` commnad line flag will now preserve comments as well as
@@ -132,7 +206,7 @@ See docs/process.md for more on how version tagging works.
132
206
- The ` USE_GLFW ` settings now defaults to 0 rather than 2. This matches other
133
207
other settings such as ` USE_SDL ` that default to 0 these days and also matches
134
208
the existing behaviour for ` MINIMAL_RUNTIME ` and ` STRICT ` mode.
135
- If you use GLFW you now need to explictly opt into it using ` -sUSE_GLFW ` or
209
+ If you use GLFW you now need to explicitly opt into it using ` -sUSE_GLFW ` or
136
210
` -lglfw ` . (#19939 )
137
211
- A new settings ` TABLE_BASE ` was introduced that can be used to place static
138
212
function addresses (table slots) at a certain offset. This defaults to 1
@@ -182,7 +256,7 @@ See docs/process.md for more on how version tagging works.
182
256
` -sMIN_NODE_VERSION=101900 ` which will apply the previous minimum version of
183
257
10.19.0. (#19192 ).
184
258
- The log message that emcc will sometime print (for example when auto-building
185
- system libraries) can now be completely supressed by running with
259
+ system libraries) can now be completely suppressed by running with
186
260
` EMCC_LOGGING=0 ` .
187
261
- Runtime dynamic linking symbols such as dlopen and dlsym will no longer cause
188
262
a linker error when building without ` -sMAIN_MODULE ` . Instead stub functions
@@ -259,13 +333,13 @@ See docs/process.md for more on how version tagging works.
259
333
- stringToUTF8
260
334
- lengthBytesUTF8
261
335
If you use any of these functions in your JS code you will now need to include
262
- them explictly in one of the following ways:
336
+ them explicitly in one of the following ways:
263
337
- Add them to a ` __deps ` entry in your JS library file (with leading $)
264
338
- Add them to ` DEFAULT_LIBRARY_FUNCS_TO_INCLUDE ` (with leading $)
265
339
- Add them to ` EXPORTED_FUNCTIONS ` (without leading $)
266
340
- Set ` -sLEGACY_RUNTIME ` to include all of them at once.
267
341
- ` FS.loadFilesFromDB ` and ` FS.saveFilesToDB ` were removed. We think it's
268
- unlikly there were any users of these functions since there is now a separate
342
+ unlikely there were any users of these functions since there is now a separate
269
343
IDBFS filesystem for folks that want persistence. (#19049 )
270
344
- ` allocateUTF8 ` and ` allocateUTF8OnStack ` library function moved to
271
345
` library_legacy.js ` . Prefer the more accurately named ` stringToNewUTF8 ` and
@@ -286,7 +360,7 @@ See docs/process.md for more on how version tagging works.
286
360
- Fix for using ` EM_JS ` functions defined in other object files. This was a bug
287
361
that was introduced when ` LLD_REPORT_UNDEFINED ` was enabled by default back in
288
362
3.1.28. (#18928 )
289
- - The prefered way to enable pthread is now to just the the standard ` -pthread `
363
+ - The preferred way to enable pthreads is now to just use the standard ` -pthread `
290
364
flag. The ` -sUSE_PTHREADS ` setting still works but is marked as legacy and
291
365
will generate a warning in ` -sSTRICT ` mode.
292
366
- When targeting node, and using ` -sMODULARIZE ` , we no longer internally catch
0 commit comments