xref: /wasmtime-44.0.1/RELEASES.md (revision 72004aad)
1--------------------------------------------------------------------------------
2
3## 21.0.0
4
5Unreleased.
6
7### Added
8
9### Changed
10
11--------------------------------------------------------------------------------
12
13## 20.0.0
14
15Released 2024-04-22
16
17### Added
18
19* Support for shared WebAssembly memories has been added to the C API.
20  [#7940](https://github.com/bytecodealliance/wasmtime/issues/7940)
21
22* A `Component::component_type` method has been added to reflect on the imports
23  and exports of a component.
24  [#8078](https://github.com/bytecodealliance/wasmtime/issues/8078)
25
26* The `with` key in `bindgen!` now supports remapping entire packages and
27  namespaces.
28  [#8083](https://github.com/bytecodealliance/wasmtime/issues/8083)
29
30* Winch now supports the component model by using Cranelift to generate
31  trampolines.
32  [#8082](https://github.com/bytecodealliance/wasmtime/issues/8082)
33  [#8109](https://github.com/bytecodealliance/wasmtime/issues/8109)
34
35* The WASI-NN backend now supports ONNX.
36  [#7691](https://github.com/bytecodealliance/wasmtime/issues/7691)
37
38* The `wasmtime` CLI now has an `-S inherit-env` flag for inheriting the entire
39  process environment.
40  [#8168](https://github.com/bytecodealliance/wasmtime/issues/8168)
41
42* Winch now supports the WebAssembly memory64 proposal.
43  [#8194](https://github.com/bytecodealliance/wasmtime/issues/8194)
44
45* Embedders can now opt-in to allowing wasmtime-wasi to block the current thread
46  with file operations, for example.
47  [#8190](https://github.com/bytecodealliance/wasmtime/issues/8190)
48
49* A `wasmtime::CodeBuilder` type has been added to refine the configuration of
50  compiling a `Module` or a `Component`.
51  [#8181](https://github.com/bytecodealliance/wasmtime/issues/8181)
52
53* The `wasmtime serve` subcommand now enables configuring preopened directories
54  and environment variables.
55  [#8279](https://github.com/bytecodealliance/wasmtime/issues/8279)
56
57### Changed
58
59* Support for WebAssembly GC is in the process of being implemented which has
60  required refactoring and reimplementing the existing gc support for
61  `externref`. Many APIs in this area has changed, see linked PRs for more
62  details. Note that the `wasm_*` parts of the C API no longer support
63  `externref`.
64  [#8011](https://github.com/bytecodealliance/wasmtime/issues/8011)
65  [#8196](https://github.com/bytecodealliance/wasmtime/issues/8196)
66
67* The `wasmtime::component::Val` type no longer stores type information and
68  instead must be interpreted in the context of a type.
69  [#8062](https://github.com/bytecodealliance/wasmtime/issues/8062)
70
71* The arguments required for `ResourceAny::try_from_resource` have been
72  simplified by refactoring the internal representation.
73  [#8061](https://github.com/bytecodealliance/wasmtime/issues/8061)
74
75* The arguments required for `wasmtime::component::Linker::func_new` have been
76  simplified by refactoring the internal representation.
77  [#8070](https://github.com/bytecodealliance/wasmtime/issues/8070)
78
79* The pooling allocator is now enabled by default with `wasmtime serve`.
80  [#8073](https://github.com/bytecodealliance/wasmtime/issues/8073)
81
82* The error message for missing imports in has been improved with components.
83  [#7645](https://github.com/bytecodealliance/wasmtime/issues/7645)
84
85* Wasmtime's MSRV is now 1.75.0.
86  [#8205](https://github.com/bytecodealliance/wasmtime/issues/8205)
87
88* Wasmtime's translation of table-related instructions has improved codegen in
89  some common cases, especially with `call_indirect`.
90  [#8063](https://github.com/bytecodealliance/wasmtime/issues/8063)
91  [#8125](https://github.com/bytecodealliance/wasmtime/issues/8125)
92  [#8124](https://github.com/bytecodealliance/wasmtime/issues/8124)
93  [#8134](https://github.com/bytecodealliance/wasmtime/issues/8134)
94  [#8137](https://github.com/bytecodealliance/wasmtime/issues/8137)
95  [#8162](https://github.com/bytecodealliance/wasmtime/issues/8162)
96  [#8159](https://github.com/bytecodealliance/wasmtime/issues/8159)
97  [#8172](https://github.com/bytecodealliance/wasmtime/issues/8172)
98  [#8171](https://github.com/bytecodealliance/wasmtime/issues/8171)
99  [#8139](https://github.com/bytecodealliance/wasmtime/issues/8139)
100  [#8206](https://github.com/bytecodealliance/wasmtime/issues/8206)
101
102* Book-based documentation has been reordered and refactored.
103  [#8130](https://github.com/bytecodealliance/wasmtime/issues/8130)
104
105* The `-S common` flag is renamed to `-S cli`, to better reflect that it provides
106  the wasi-cli APIs. `-S common` is still accepted for now, and will be deprecated
107  in the future.
108  [#8166](https://github.com/bytecodealliance/wasmtime/issues/8166)
109
110* The tail-call calling convention now supports callee-saved registers to
111  improve performance and allow enabling this WebAssembly proposal by default in
112  the future.
113  [#8246](https://github.com/bytecodealliance/wasmtime/issues/8246)
114
115* The `wasmtime-wasi` crate has been refactored to restructure some items and
116  documentation has been added for most items.
117  [#8228](https://github.com/bytecodealliance/wasmtime/issues/8228)
118
119* Support for the WebAssembly `threads` proposal is now gated by an
120  on-by-default Cargo feature named `threads`.
121  [#8260](https://github.com/bytecodealliance/wasmtime/issues/8260)
122
123* Borrow-checking in `wiggle` has been optimized to not be as fine-grained any
124  more. This is a breaking change if users are relying on the ability to safely
125  mutably borrow disjoint regions of memory.
126  [#8277](https://github.com/bytecodealliance/wasmtime/issues/8277)
127
128### Fixed
129
130* Connection timeouts with `wasi-http` have been fixed.
131  [#8085](https://github.com/bytecodealliance/wasmtime/issues/8085)
132
133* Generating bindings with `bindgen!` now works correctly when some WIT types
134  are not used.
135  [#8065](https://github.com/bytecodealliance/wasmtime/issues/8065)
136
137* Errors in `wasi-http` are no longer accidentally returned as traps.
138  [#8272](https://github.com/bytecodealliance/wasmtime/issues/8272)
139
140--------------------------------------------------------------------------------
141
142## 19.0.2
143
144Released 2024-04-11.
145
146* Fix a panic when compiling invalid components.
147  [#8323](https://github.com/bytecodealliance/wasmtime/issues/8323)
148
149* Fix `bindgen!` with `trappable_error_type` using unversioned/versioned
150  packages.
151  [#8305](https://github.com/bytecodealliance/wasmtime/pull/8305)
152
153* cranelift: Include clobbers and outgoing args in stack limit.
154  [#8301](https://github.com/bytecodealliance/wasmtime/pull/8301)
155
156--------------------------------------------------------------------------------
157
158## 19.0.1
159
160Released 2024-04-02.
161
162* Fix a panic using tables with the wrong type.
163  [#8284](https://github.com/bytecodealliance/wasmtime/pull/8284)
164
165--------------------------------------------------------------------------------
166
167## 19.0.0
168
169Released 2024-03-20
170
171### Added
172
173* C API bindings for the sampling-based profiler in Wasmtime have been added.
174  [#7854](https://github.com/bytecodealliance/wasmtime/pull/7854)
175
176* Add the WasiP1Ctx to ease the use of `wasmtime-wasi` in place of `wasi-common`
177  [#8053](https://github.com/bytecodealliance/wasmtime/pull/8053)
178
179* The Winch compiler backend is now feature-complete for x64. Note that minor
180  issues and fuzz bugs are still being addressed, but now's a good time to test
181  if you're interested.
182  [#7894](https://github.com/bytecodealliance/wasmtime/pull/7894)
183  [#7909](https://github.com/bytecodealliance/wasmtime/pull/7909)
184  [#7927](https://github.com/bytecodealliance/wasmtime/pull/7927)
185  [#7932](https://github.com/bytecodealliance/wasmtime/pull/7932)
186  [#7949](https://github.com/bytecodealliance/wasmtime/pull/7949)
187  [#7974](https://github.com/bytecodealliance/wasmtime/pull/7974)
188  [#8001](https://github.com/bytecodealliance/wasmtime/pull/8001)
189
190* The typed function references proposal to WebAssembly is now fully
191  implemented.
192  [#7943](https://github.com/bytecodealliance/wasmtime/pull/7943)
193
194* The `component::Linker` type is now "semver aware" in that it enables loading
195  components referring to past or future versions of interfaces so long as the
196  types are compatible.
197  [#7994](https://github.com/bytecodealliance/wasmtime/pull/7994)
198
199* Wasmtime can now be built for "custom platforms" which is intended for
200  bare-metal builds.
201  [#7995](https://github.com/bytecodealliance/wasmtime/pull/7995)
202
203* The `wasmtime-wasi-nn` crate now has a backend based on WinML.
204  [#7807](https://github.com/bytecodealliance/wasmtime/pull/7807)
205
206* The `wasmtime` CLI now has flags for configuring limits of the pooling
207  allocator.
208  [#8027](https://github.com/bytecodealliance/wasmtime/pull/8027)
209
210
211### Changed
212
213* The `wasmtime serve` command no longer binds its port with `SO_REUSEADDR`
214  meaning that if it is invoked twice only one will succeed.
215  [#7863](https://github.com/bytecodealliance/wasmtime/pull/7863)
216
217* The sampling-based profiler in Wasmtime now takes an explicit argument of
218  the time delta between samples.
219  [#7873](https://github.com/bytecodealliance/wasmtime/pull/7873)
220
221* Many accessors for type information now require an `&Engine` argument to be
222  specified in preparation for an implementation of wasm GC.
223  [#7892](https://github.com/bytecodealliance/wasmtime/pull/7892)
224
225* The `host` header is now forbidden in wasi-http.
226  [#7905](https://github.com/bytecodealliance/wasmtime/pull/7905)
227
228* Stronger type-checks are now performed for host-owned resources when
229  interacting with the component model to help catch mistakes earlier.
230  [#7902](https://github.com/bytecodealliance/wasmtime/pull/7902)
231
232* Demangling Rust and C/C++ symbols in WebAssembly modules is now done by
233  default in the C API.
234  [#7962](https://github.com/bytecodealliance/wasmtime/pull/7962)
235
236* Preview2-based APIs are now located at the root of the `wasmtime_wasi` crate
237  instead of a submodule.
238  [#7933](https://github.com/bytecodealliance/wasmtime/pull/7933)
239
240* Components now reserve index 0 for handle tables to match the component model
241  specification.
242  [#7661](https://github.com/bytecodealliance/wasmtime/pull/7661)
243
244* Support for `externref` and similar features has been moved behind a new `gc`
245  Cargo feature. This will also gate support for Wasm GC in the future.
246  [#7975](https://github.com/bytecodealliance/wasmtime/pull/7975)
247
248* Require the `WASMTIME_WASI_CONFIG_PREOPEN_SOCKET_ALLOW` environment variable
249  to bet set to allow the use of `wasi_config_preopen_socket` via the c api, as
250  it will be deprecated in `20.0.0`.
251  [#8053](https://github.com/bytecodealliance/wasmtime/pull/8053)
252
253### Fixed
254
255* WIT interface names that are Rust keywords now correctly generate bindings.
256  [#7790](https://github.com/bytecodealliance/wasmtime/pull/7790)
257
258* PKRU state is now restored across await points.
259  [#7789](https://github.com/bytecodealliance/wasmtime/pull/7789)
260
261* Wasmtime now correctly supports `global.get` in all constant expressions
262  within a module.
263  [#7996](https://github.com/bytecodealliance/wasmtime/pull/7996)
264
265--------------------------------------------------------------------------------
266
267## 18.0.4
268
269Released 2024-04-11
270
271### Fixed
272
273* Fix `bindgen!` with `trappable_error_type` using unversioned/versioned
274  packages.
275  [#8305](https://github.com/bytecodealliance/wasmtime/pull/8305)
276
277* cranelift: Include clobbers and outgoing args in stack limit.
278  [#8301](https://github.com/bytecodealliance/wasmtime/pull/8301)
279
280* Fix a panic when compiling invalid components.
281  [#8323](https://github.com/bytecodealliance/wasmtime/issues/8323)
282
283--------------------------------------------------------------------------------
284
285## 18.0.3
286
287Released 2024-03-12
288
289### Fixed
290* Fix inferring native flags when a compilation target is specified.
291  [#7991](https://github.com/bytecodealliance/wasmtime/pull/7991)
292
293--------------------------------------------------------------------------------
294
295## 18.0.2
296
297Released 2024-02-28.
298
299### Fixed
300
301* Fix an egraph rule bug that was permitting an incorrect `ireduce` rewrite to
302  unary and binary operations, leading to miscompilations.
303  [#8005](https://github.com/bytecodealliance/wasmtime/pull/8005)
304
305--------------------------------------------------------------------------------
306
307## 18.0.1
308
309Released 2024-02-20.
310
311### Fixed
312
313* Fixed a mistake in the CI release process that caused the crates.io
314  publication of the 18.0.0 release to not succeed.
315  [#7966](https://github.com/bytecodealliance/wasmtime/pull/7966)
316
317--------------------------------------------------------------------------------
318
319## 18.0.0
320
321Released 2024-02-20
322
323### Added
324
325* The `wasmtime-c-api-impl` crate is now published on crates.io.
326  [#7837](https://github.com/bytecodealliance/wasmtime/pull/7837)
327
328* A new `EngineWeak` type enables holding a weak pointer to an engine with the
329  ability to dynamically and fallibly upgrade it to an `Engine`.
330  [#7797](https://github.com/bytecodealliance/wasmtime/pull/7797)
331
332* The WebAssembly tail calls proposal can now be enabled through the C API.
333  [#7811](https://github.com/bytecodealliance/wasmtime/pull/7811)
334
335* The import and export types of a `Component` can now be inspected at runtime.
336  [#7804](https://github.com/bytecodealliance/wasmtime/pull/7804)
337
338* New APIs/types have been added to support a faster version of looking up
339  module exports without using string lookups with `Module::get_export_index`.
340  [#7828](https://github.com/bytecodealliance/wasmtime/pull/7828)
341
342### Changed
343
344* Owned resources represented with `ResourceAny` can now be passed as arguments
345  to functions that require a `borrow<T>` parameter.
346  [#7783](https://github.com/bytecodealliance/wasmtime/pull/7783)
347
348* Generated structures from `wasmtime::component::bindgen!` for exported
349  interfaces are now all renamed to `Guest` to avoid conflicting with WIT names.
350  [#7794](https://github.com/bytecodealliance/wasmtime/pull/7794)
351
352* Guest profiler output will now automatically demangle symbols.
353  [#7809](https://github.com/bytecodealliance/wasmtime/pull/7809)
354
355* The `wasmtime` crate now has a `runtime` Cargo feature which, if disabled,
356  enables building Wasmtime with only the ability to compile WebAssembly
357  modules. This enables compiling Wasmtime's compilation infrastructure, for
358  example, to WebAssembly itself.
359  [#7766](https://github.com/bytecodealliance/wasmtime/pull/7766)
360
361* Support for the old `wasi-common` crate and the original implementation of
362  "WASIp1" aka "preview1" is being deprecated in the `wasmtime-wasi` crate.
363  Users should migrate to the  `wasmtime_wasi::preview2` implementation, which
364  supports both WASIp1 and WASIp2, as in the next release the
365  `wasi-common`-based reexports of `wasmtime-wasi` will be deleted.
366  [#7881](https://github.com/bytecodealliance/wasmtime/pull/7881)
367
368--------------------------------------------------------------------------------
369
370## 17.0.3
371
372Released 2024-04-11
373
374### Fixed
375
376* cranelift: Include clobbers and outgoing args in stack limit.
377  [#8301](https://github.com/bytecodealliance/wasmtime/pull/8301)
378
379* Fix a panic when compiling invalid components.
380  [#8323](https://github.com/bytecodealliance/wasmtime/issues/8323)
381
382--------------------------------------------------------------------------------
383
384## 17.0.2
385
386Released 2024-02-28
387
388### Fixed
389
390* Fix an egraph rule bug that was permitting an incorrect `ireduce` rewrite to
391  unary and binary operations, leading to miscompilations.
392  [#8005](https://github.com/bytecodealliance/wasmtime/pull/8005)
393
394--------------------------------------------------------------------------------
395
396## 17.0.1
397
398Released 2024-02-07
399
400### Fixed
401
402* Fix an egraph elaboration fuzzbug that was allowing values with dependencies
403  that shouldn't be duplicated to be chosen in a context that would make them
404  invalid.
405  [#7859](https://github.com/bytecodealliance/wasmtime/pull/7859)
406  [#7879](https://github.com/bytecodealliance/wasmtime/pull/7879)
407* Fix an egraph rule bug that was allowing unconstrained recursion through the
408  DFG to run away on large functions.
409  [#7882](https://github.com/bytecodealliance/wasmtime/pull/7882)
410
411--------------------------------------------------------------------------------
412
413## 17.0.0
414
415Released 2024-01-25
416
417The major feature of this release is that the WASI support in Wasmtime is now
418considered stable and flagged at an 0.2.0 version approved by the WASI subgroup.
419The release was delayed a few days to hold off until the WASI subgroup voted to
420approve the CLI and HTTP worlds and they're now on-by-default! Additionally the
421component model is now enabled by default in Wasmtime, for example an opt-in
422flag is no longer required on the CLI. Note that embeddings still must opt-in to
423using the component model by using the `wasmtime::component` module.
424
425### Added
426
427* Cranelift optimizations have been added for "3-way comparisons", or `Ord::cmp`
428  in Rust or `<=>` in C++.
429  [#7636](https://github.com/bytecodealliance/wasmtime/pull/7636)
430  [#7702](https://github.com/bytecodealliance/wasmtime/pull/7702)
431
432* Components now use Wasmtime's compilation cache used for core wasm modules by
433  default.
434  [#7649](https://github.com/bytecodealliance/wasmtime/pull/7649)
435
436* The `Resource<T>` and `ResourceAny` types can now be converted between each
437  other.
438  [#7649](https://github.com/bytecodealliance/wasmtime/pull/7649)
439  [#7712](https://github.com/bytecodealliance/wasmtime/pull/7712)
440
441### Changed
442
443* Minor changes have been made to a number of WITs as they progressed to their
444  official 0.2.0 status.
445  [#7625](https://github.com/bytecodealliance/wasmtime/pull/7625)
446  [#7640](https://github.com/bytecodealliance/wasmtime/pull/7640)
447  [#7690](https://github.com/bytecodealliance/wasmtime/pull/7690)
448  [#7781](https://github.com/bytecodealliance/wasmtime/pull/7781)
449  [#7817](https://github.com/bytecodealliance/wasmtime/pull/7817)
450
451* The component model is now enabled by default.
452  [#7821](https://github.com/bytecodealliance/wasmtime/pull/7821)
453
454* The implementation of `memory.atomic.{wait,notify}` has been rewritten.
455  [#7629](https://github.com/bytecodealliance/wasmtime/pull/7629)
456
457* The `wasmtime_wasi::preview2::Table` type has been moved to
458  `wasmtime::component::ResourceTable`.
459  [#7655](https://github.com/bytecodealliance/wasmtime/pull/7655)
460
461* Creating a UDP stream now validates the address being sent to.
462  [#7648](https://github.com/bytecodealliance/wasmtime/pull/7648)
463
464* Defining resource types in `Linker<T>` now takes the type to define as a
465  runtime parameter.
466  [#7680](https://github.com/bytecodealliance/wasmtime/pull/7680)
467
468* Socket address checks can now be performed dynamically at runtime.
469  [#7662](https://github.com/bytecodealliance/wasmtime/pull/7662)
470
471* Wasmtime and Cranelift's MSRV is now 1.73.0.
472  [#7739](https://github.com/bytecodealliance/wasmtime/pull/7739)
473
474### Fixed
475
476* Bindings for WIT APIs where interfaces have multiple versions are now fixed by
477  putting the version in the generated binding names.
478  [#7656](https://github.com/bytecodealliance/wasmtime/pull/7656)
479
480* The preview1 `fd_{read,write}` APIs are now fixed when a shared memory is
481  used.
482  [#7755](https://github.com/bytecodealliance/wasmtime/pull/7755)
483
484* The preview1 `fd_{read,write}` APIs no longer leak an intermediate stream
485  created.
486  [#7819](https://github.com/bytecodealliance/wasmtime/pull/7819)
487
488--------------------------------------------------------------------------------
489
490## 16.0.0
491
492Released 2023-12-20
493
494### Added
495
496* Add yielding support in `wasmtime_store_epoch_deadline_callback` in the C API.
497  [#7476](https://github.com/bytecodealliance/wasmtime/pull/7476)
498
499* Support for the `wasi_unstable` module ("wasi preview0" canonically) has been
500  added to the `-Spreview2` support in the CLI.
501  [#7548](https://github.com/bytecodealliance/wasmtime/pull/7548)
502
503* The original module can now be obtained from an "instance pre" in the C API.
504  [#7572](https://github.com/bytecodealliance/wasmtime/pull/7572)
505
506* Usage of Mach ports on macOS can now be disabled in the C API.
507  [#7595](https://github.com/bytecodealliance/wasmtime/pull/7595)
508
509### Changed
510
511* The preview1-to-preview2 component adapters now import a smaller number of
512  interfaces by default.
513  [#7543](https://github.com/bytecodealliance/wasmtime/pull/7543)
514  [#7544](https://github.com/bytecodealliance/wasmtime/pull/7544)
515
516* Wasmtime and Cranelift now require Rust 1.72.0 to build.
517  [#7554](https://github.com/bytecodealliance/wasmtime/pull/7554)
518
519* The default `world` supported by `wasmtime serve` has been slimmed down to
520  exactly what `wasi:http/proxy` specifies by default. Support for other WASI
521  APIs can be included with the `-S common` command-line flag.
522  [#7597](https://github.com/bytecodealliance/wasmtime/pull/7597)
523
524* The `wasmtime --version` CLI output will now include date/commit information
525  when Wasmtime is built from a git checkout.
526  [#7610](https://github.com/bytecodealliance/wasmtime/pull/7610)
527
528* Debug intrinsic symbols required by LLDB and GDB have been moved behind a
529  `debug-builtins` feature of the `wasmtime` crate which is enabled by default.
530  [#7626](https://github.com/bytecodealliance/wasmtime/pull/7626)
531
532### Fixed
533
534* MPK support is now explicitly disabled on AMD-based CPUs since the
535  implementation does not currently support it.
536  [#7513](https://github.com/bytecodealliance/wasmtime/pull/7513)
537
538* Initialization of a WebAssembly data segment with a negative offset is fixed
539  to zero-extend the offset instead of sign-extend.
540  [#7559](https://github.com/bytecodealliance/wasmtime/pull/7559)
541
542* The reported offset of `O_APPEND` files in preview1 has been fixed.
543  [#7586](https://github.com/bytecodealliance/wasmtime/pull/7586)
544
545* MPK support does a better job of compacting memories to minimize virtual
546  memory used.
547  [#7622](https://github.com/bytecodealliance/wasmtime/pull/7622)
548
549### Cranelift
550
551* Union node bitpacking has been fixed with egraph optimizations to ensure the
552  minimal cost node is selected.
553  [#7465](https://github.com/bytecodealliance/wasmtime/pull/7465)
554
555* Equivalent-cost expressions now have ties broken with expression depth in
556  egraphs to prefer "shallow" expression trees.
557  [#7456](https://github.com/bytecodealliance/wasmtime/pull/7456)
558
559* Long-and-narrow chains of expressions are now optimized into shallow-and-wide
560  trees.
561  [#7466](https://github.com/bytecodealliance/wasmtime/pull/7466)
562
563--------------------------------------------------------------------------------
564
565## 15.0.1
566
567Released 2023-12-01.
568
569### Fixed
570
571* The `wasi:random/insecure{,_seed}` interfaces are now available through the
572  CLI.
573  [#7614](https://github.com/bytecodealliance/wasmtime/pull/7614)
574
575* A stray debugging `println!` was removed.
576  [#7618](https://github.com/bytecodealliance/wasmtime/pull/7618)
577
578--------------------------------------------------------------------------------
579
580## 15.0.0
581
582Released 2023-11-20
583
584### Added
585
586* Multiple versions of interfaces are now supported in `bindgen!`.
587  [#7172](https://github.com/bytecodealliance/wasmtime/pull/7172)
588
589* UDP has been implemented in `wasi:sockets`.
590  [#7148](https://github.com/bytecodealliance/wasmtime/pull/7148)
591  [#7243](https://github.com/bytecodealliance/wasmtime/pull/7243)
592
593* Support for custom stack memory allocation has been added.
594  [#7209](https://github.com/bytecodealliance/wasmtime/pull/7209)
595
596* The `memory_init_cow` setting can now be configured in the C API.
597  [#7227](https://github.com/bytecodealliance/wasmtime/pull/7227)
598
599* The `splice` method of WASI streams has been implemented.
600  [#7234](https://github.com/bytecodealliance/wasmtime/pull/7234)
601
602* Wasmtime binary releases now have a `wasmtime-min` executable in addition to
603  `libwasmtime-min.*` libraries for the C API. These showcase a minimal
604  build of Wasmtime for comparison.
605  [#7282](https://github.com/bytecodealliance/wasmtime/pull/7282)
606  [#7315](https://github.com/bytecodealliance/wasmtime/pull/7315)
607  [#7350](https://github.com/bytecodealliance/wasmtime/pull/7350)
608
609### Changed
610
611* Many changes to `wasi:http` WITs have happened to keep up with the proposal as
612  it prepares to reach a more stable status.
613  [#7161](https://github.com/bytecodealliance/wasmtime/pull/7161)
614  [#7406](https://github.com/bytecodealliance/wasmtime/pull/7406)
615  [#7383](https://github.com/bytecodealliance/wasmtime/pull/7383)
616  [#7417](https://github.com/bytecodealliance/wasmtime/pull/7417)
617  [#7451](https://github.com/bytecodealliance/wasmtime/pull/7451)
618
619* Add an error resource to WASI streams.
620  [#7152](https://github.com/bytecodealliance/wasmtime/pull/7152)
621
622* Syntax in `bindgen!`'s `trappable_error_type` configuration has changed.
623  [#7170](https://github.com/bytecodealliance/wasmtime/pull/7170)
624
625* TCP errors in `wasi:sockets` have been simplified and clarified.
626  [#7120](https://github.com/bytecodealliance/wasmtime/pull/7120)
627
628* Wasmtime/Cranelift now require Rust 1.71.0 to compile.
629  [#7206](https://github.com/bytecodealliance/wasmtime/pull/7206)
630
631* Logging in Wasmtime is now configured with `WASMTIME_LOG` instead of
632  `RUST_LOG`.
633  [#7239](https://github.com/bytecodealliance/wasmtime/pull/7239)
634
635* Fuel-related APIs on `Store` have been refactored and reimplemented with two
636  new methods `set_fuel` and `reset_fuel`. Previous methods have been removed.
637  [#7240](https://github.com/bytecodealliance/wasmtime/pull/7240)
638  [#7298](https://github.com/bytecodealliance/wasmtime/pull/7298)
639
640* The `forward` method of WASI streams has been removed.
641  [#7234](https://github.com/bytecodealliance/wasmtime/pull/7234)
642
643* The WebAssembly `threads`, `multi-memory`, and `relaxed-simd` proposals are
644  now enabled by default.
645  [#7285](https://github.com/bytecodealliance/wasmtime/pull/7285)
646
647* Logging is now implemented for `wasmtime serve`.
648  [#7366](https://github.com/bytecodealliance/wasmtime/pull/7366)
649
650* Filesystem locking has been temporarily removed from WASI.
651  [#7355](https://github.com/bytecodealliance/wasmtime/pull/7355)
652
653* Wasmtime's implementation of WASI preview1 built on top of preview2
654  (`-Spreview2`) has been enabled by default.
655  [#7365](https://github.com/bytecodealliance/wasmtime/pull/7365)
656
657* The `wasi:clocks` interface now has two `subscribe` functions and a `duration`
658  type.
659  [#7358](https://github.com/bytecodealliance/wasmtime/pull/7358)
660
661* The `wasi:io/poll` interface has seen some refactoring.
662  [#7427](https://github.com/bytecodealliance/wasmtime/pull/7427)
663
664### Fixed
665
666* Profiling the first function in a module now works.
667  [#7254](https://github.com/bytecodealliance/wasmtime/pull/7254)
668
669* Consecutive writes to files in preview2 have been fixed.
670  [#7394](https://github.com/bytecodealliance/wasmtime/pull/7394)
671
672* Copy-on-write initialization of linear memories has been fixed for components.
673  [#7459](https://github.com/bytecodealliance/wasmtime/pull/7459)
674
675### Cranelift
676
677* Support for proof-carrying code has been added to Cranelift to assist with an
678  extra layer of validation about properties such as WebAssembly memory accesses
679  in the future.
680  [#7165](https://github.com/bytecodealliance/wasmtime/pull/7165)
681  [#7180](https://github.com/bytecodealliance/wasmtime/pull/7180)
682  [#7219](https://github.com/bytecodealliance/wasmtime/pull/7219)
683  [#7231](https://github.com/bytecodealliance/wasmtime/pull/7231)
684  [#7262](https://github.com/bytecodealliance/wasmtime/pull/7262)
685  [#7263](https://github.com/bytecodealliance/wasmtime/pull/7263)
686  [#7274](https://github.com/bytecodealliance/wasmtime/pull/7274)
687  [#7280](https://github.com/bytecodealliance/wasmtime/pull/7280)
688  [#7281](https://github.com/bytecodealliance/wasmtime/pull/7281)
689  [#7352](https://github.com/bytecodealliance/wasmtime/pull/7352)
690  [#7389](https://github.com/bytecodealliance/wasmtime/pull/7389)
691  [#7468](https://github.com/bytecodealliance/wasmtime/pull/7468)
692
693* Rematerialization of values no longer accidentally overrides LICM.
694  [#7306](https://github.com/bytecodealliance/wasmtime/pull/7306)
695
696* Inline stack probes no longer make Valgrind unhappy.
697  [#7470](https://github.com/bytecodealliance/wasmtime/pull/7470)
698
699--------------------------------------------------------------------------------
700
701## 14.0.4
702
703Released 2023-11-01
704
705### Fixed
706
707* Using the `--dir` argument combined with a `::`-remapped path no longer prints
708  a warning about compatibility with the old CLI and works with remapping.
709  [#7416](https://github.com/bytecodealliance/wasmtime/pull/7416)
710
711* Consecutive file writes in preview2 have been fixed.
712  [#7394](https://github.com/bytecodealliance/wasmtime/pull/7394)
713
714--------------------------------------------------------------------------------
715
716## 14.0.3
717
718Released 2023-10-29
719
720### Fixed
721
722* The `wasmtime` executable will now attempt to more gracefully handle the
723  transition from the 13.0.0 CLI arguments and parsing to the changes in 14.0.0.
724  CLI commands should now warn if they no longer work with the new parser, but
725  still execute as they previously did. This behavior can be controlled via a
726  new `WASMTIME_NEW_CLI` environment variable if necessary.
727  [#7385](https://github.com/bytecodealliance/wasmtime/pull/7385)
728
729* The `serve` subcommand of the `wasmtime` CLI is now enabled by default for the
730  `wasmtime` executable.
731  [#7392](https://github.com/bytecodealliance/wasmtime/pull/7392)
732
733--------------------------------------------------------------------------------
734
735## 14.0.2
736
737Released 2023-10-26
738
739### Fixed
740
741* Make the `wasmtime::unix` module accessible on macOS again.
742  [#7360](https://github.com/bytecodealliance/wasmtime/pull/7360)
743
744* Inter-crate dependencies between `cranelift-*` crates now disable the
745  `default` feature meaning that it's possible for embedders to depend on
746  `cranelift-codegen` as well without the `default` feature.
747  [#7369](https://github.com/bytecodealliance/wasmtime/pull/7369)
748
749--------------------------------------------------------------------------------
750
751## 14.0.1
752
753Released 2023-10-23
754
755### Fixed
756
757* Cranelift: preserve uext and sext flags for parameters on x86\_64 and apple
758  aarch64. Note that this does not affect Wasmtime and is only intended for
759  Cranelift embedders such as `rustc_codegen_cranelift`.
760  [#7333](https://github.com/bytecodealliance/wasmtime/pull/7333)
761
762--------------------------------------------------------------------------------
763
764## 14.0.0
765
766Released 2023-10-20
767
768One of the larger changes in this release is a redesign of Wasmtime's CLI
769arguments and where arguments are passed. This means that previous invocations
770of the `wasmtime` CLI executable will need to be updated. No functionality was
771removed but most of it is behind new flags. One major change is that Wasmtime
772CLI flags are now grouped behind short options like `-O`. For example
773
774    wasmtime run --opt-level 2 foo.wasm
775
776is now:
777
778    wasmtime run -O opt-level=2 foo.wasm
779
780Additionally options prefixed with `--enable-*` or `--disable-*` now
781consistently are considered boolean setters. For example:
782
783    wasmtime run --disable-cache foo.wasm
784
785is now:
786
787    wasmtime run -C cache=n foo.wasm
788
789Options can be explored with `wasmtime -C help` for example, and `wasmtime -h`
790will show all option groups that can be expanded.
791
792Another major change in the CLI is that any CLI argument which positionally
793comes after the wasm file specified will be passed as an argument to the guest
794module. For example this invocations
795
796    wasmtime run foo.wasm --epoch-interruption
797
798was previously accepted as enabling epoch interruption for the `foo.wasm` file.
799This is now interpreted as if it were `./foo.wasm --epoch-interruption`,
800however, passing the flag to the wasm file itself. Flags to Wasmtime must now
801come after Wasmtime's subcommand (in this case `run`) and before the wasm file
802that's being run, for example:
803
804    wasmtime run -W epoch-interruption foo.wasm
805
806More information about this change can be found on
807[#6925](https://github.com/bytecodealliance/wasmtime/pull/6925) and
808[#6946](https://github.com/bytecodealliance/wasmtime/pull/6946).
809
810### Added
811
812* Added the `wasmtime::FrameInfo::module` method, which returns the
813  `wasmtime::Module` associated with the stack frame.
814
815* The `wasmtime::component::Linker` type now implements `Clone`.
816  [#7032](https://github.com/bytecodealliance/wasmtime/pull/7032)
817
818* Wasmtime's `TypedFunc` API now supports the `v128` WebAssembly type on x86\_64
819  and aarch64.
820  [#7010](https://github.com/bytecodealliance/wasmtime/pull/7010)
821
822* Support for resources exported from a WebAssembly guest has been added to the
823  component `bindgen!` macro.
824  [#7050](https://github.com/bytecodealliance/wasmtime/pull/7050)
825
826* The C API now supports learning about a module's `image_range`.
827  [#7064](https://github.com/bytecodealliance/wasmtime/pull/7064)
828
829* Passing values between components is now possible with a more complete
830  implementation of type-checking of values.
831  [#7065](https://github.com/bytecodealliance/wasmtime/pull/7065)
832
833* Types representing resources can now be customized with `bindgen!`.
834  [#7069](https://github.com/bytecodealliance/wasmtime/pull/7069)
835
836* Wasm-defined globals and memories are now included in core dumps, and the
837  `wasmtime::WasmCoreDump` type is now serializable.
838  [#6935](https://github.com/bytecodealliance/wasmtime/pull/6935)
839  [#7078](https://github.com/bytecodealliance/wasmtime/pull/7078)
840
841* Initial experimental support for Intel MPK has been added to support running
842  more instances concurrently.
843  [#7072](https://github.com/bytecodealliance/wasmtime/pull/7072)
844
845* The implementation of `wasi:http` now supports inbound requests in addition to
846  outbound requests. A new `wasmtime serve` command is an example way of
847  handling http requests with wasm files.
848  [#7091](https://github.com/bytecodealliance/wasmtime/pull/7091)
849
850* The C API now supports Wasmtime's "host memory creation" API to customize the
851  allocation of linear memories.
852  [#7115](https://github.com/bytecodealliance/wasmtime/pull/7115)
853
854* The C API now supports asynchronous invocation of WebAssembly programs.
855  [#7106](https://github.com/bytecodealliance/wasmtime/pull/7106)
856
857* The C API now supports Wasmtime's `InstancePre<T>` type.
858  [#7140](https://github.com/bytecodealliance/wasmtime/pull/7140)
859
860* The `wasi:sockets/ip-name-lookup` interface is now implemented by Wasmtime.
861  [#7109](https://github.com/bytecodealliance/wasmtime/pull/7109)
862
863### Changed
864
865* Wasmtime's CLI has been significantly overhauled. See the note above.
866  [#6925](https://github.com/bytecodealliance/wasmtime/pull/6925)
867  [#6946](https://github.com/bytecodealliance/wasmtime/pull/6946)
868
869* The `wasmtime::FrameInfo::module_name` has been removed, however you can now
870  get identical results by chaining `wasmtime::FrameInfo::module` and
871  `wasmtime::Module::name`: `my_frame.module().name()`.
872
873* WASI interfaces have seen significant work since the previous release. Streams
874  for example have a new backpressure and flushing design. Additionally WIT
875  `resource`s are now used ubiquitously throughout the specification and
876  implementation.
877  [#6877](https://github.com/bytecodealliance/wasmtime/pull/6877)
878  [#7029](https://github.com/bytecodealliance/wasmtime/pull/7029)
879  [#7090](https://github.com/bytecodealliance/wasmtime/pull/7090)
880
881* The implementation of `wasi:http` now uses `{input,output}-stream` from the
882  `wasi:io/streams` interface.
883  [#7056](https://github.com/bytecodealliance/wasmtime/pull/7056)
884
885* Lifting and lowering of the `list<u8>` component values has been significantly
886  optimized.
887  [#6971](https://github.com/bytecodealliance/wasmtime/pull/6971)
888
889* The `wasmtime-c-api` crate is now additionally built as an rlib as well as the
890  previous cdylib/staticlib combo.
891  [#6765](https://github.com/bytecodealliance/wasmtime/pull/6765)
892
893### Fixed
894
895* Support referencing stack slots in the DWARF debug info.
896  [#6960](https://github.com/bytecodealliance/wasmtime/pull/6960)
897
898* Printing unicode to stdio on Windows has been fixed.
899  [#6825](https://github.com/bytecodealliance/wasmtime/pull/6825)
900
901* Building for x86\_64-linux-android has been fixed.
902  [#7055](https://github.com/bytecodealliance/wasmtime/pull/7055)
903
904* Fixed stdout/stderr becoming nonblocking by accident with WASI preview2 on
905  macOS.
906  [#7058](https://github.com/bytecodealliance/wasmtime/pull/7058)
907
908* Fixed some character boundary-related panics in the preview2 implementation of
909  preview1.
910  [#7011](https://github.com/bytecodealliance/wasmtime/pull/7011)
911
912* Fixed an issue of guests sleeping for an incorrect amount of time with
913  preview2.
914  [#6993](https://github.com/bytecodealliance/wasmtime/pull/6993)
915
916* Cranelift will now return an error when running out of temporaries in a very
917  large function instead of panicking.
918  [#7114](https://github.com/bytecodealliance/wasmtime/pull/7114)
919
920--------------------------------------------------------------------------------
921
922## 13.0.1
923
924Released 2023-10-26
925
926### Fixed
927
928* Make the `wasmtime::unix` module accessible on macOS again.
929  [#7360](https://github.com/bytecodealliance/wasmtime/pull/7360)
930
931--------------------------------------------------------------------------------
932
933## 13.0.0
934
935Released 2023-09-20
936
937### Added
938
939* Configuration of mach ports vs signals on macOS is now done through a `Config`
940  instead of at compile time.
941  [#6807](https://github.com/bytecodealliance/wasmtime/pull/6807)
942
943* `Engine::detect_precompiled{,_file}` can be used to determine whether some
944  bytes or a file look like a precompiled module or a component.
945  [#6832](https://github.com/bytecodealliance/wasmtime/pull/6832)
946  [#6937](https://github.com/bytecodealliance/wasmtime/pull/6937)
947
948* A new feature "wmemcheck" has been added to enable Valgrind-like detection of
949  use-after-free within a WebAssembly guest module.
950  [#6820](https://github.com/bytecodealliance/wasmtime/pull/6820)
951  [#6856](https://github.com/bytecodealliance/wasmtime/pull/6856)
952
953* The `wasmtime` CLI now supports executing components.
954  [#6836](https://github.com/bytecodealliance/wasmtime/pull/6836)
955
956* Support for WASI preview2's TCP sockets interface has been added.
957  [#6837](https://github.com/bytecodealliance/wasmtime/pull/6837)
958
959* Wasmtime's implementation of the wasi-nn proposal now supports named models.
960  [#6854](https://github.com/bytecodealliance/wasmtime/pull/6854)
961
962* The C API now supports configuring `native_unwind_info`,
963  `dynamic_memory_reserved_for_growth`, `target`, and Cranelift settings.
964  [#6896](https://github.com/bytecodealliance/wasmtime/pull/6896)
965  [#6934](https://github.com/bytecodealliance/wasmtime/pull/6934)
966
967* The `wasmtime` crate now has initial support for component model bindings
968  generation for the WIT `resource` type.
969  [#6886](https://github.com/bytecodealliance/wasmtime/pull/6886)
970
971* Cranelift's RISC-V backend now has a complete implementation of the
972  WebAssembly SIMD proposal. Many thanks to Afonso Bordado for all their
973  contributions!
974  [#6920](https://github.com/bytecodealliance/wasmtime/pull/6920)
975  [#6924](https://github.com/bytecodealliance/wasmtime/pull/6924)
976
977* The `bindgen!` macro in the `wasmtime` crate now supports conditional
978  configuration for which imports should be `async` and which should be
979  synchronous.
980  [#6942](https://github.com/bytecodealliance/wasmtime/pull/6942)
981
982### Changed
983
984* The pooling allocator was significantly refactored and the
985  `PoolingAllocationConfig` has some minor breaking API changes that reflect
986  those changes.
987
988  Previously, the pooling allocator had `count` slots, and each slot had `N`
989  memories and `M` tables. Every allocated instance would reserve those `N`
990  memories and `M` tables regardless whether it actually needed them all or
991  not. This could lead to some waste and over-allocation when a module used less
992  memories and tables than the pooling allocator's configured maximums.
993
994  After the refactors in this release, the pooling allocator doesn't have
995  one-size-fits-all slots anymore. Instead, memories and tables are in separate
996  pools that can be allocated from independently, and we allocate exactly as
997  many memories and tables as are necessary for the instance being allocated.
998
999  To preserve your old configuration with the new methods you can do the following:
1000
1001  ```rust
1002  let mut config = PoolingAllocationConfig::default();
1003
1004  // If you used to have this old, no-longer-compiling configuration:
1005  config.count(count);
1006  config.instance_memories(n);
1007  config.instance_tables(m);
1008
1009  // You can use these equivalent settings for the new config methods:
1010  config.total_core_instances(count);
1011  config.total_stacks(count); // If using the `async` feature.
1012  config.total_memories(count * n);
1013  config.max_memories_per_module(n);
1014  config.total_tables(count * m);
1015  config.max_tables_per_module(m);
1016  ```
1017
1018  There are additionally a variety of methods to limit the maximum amount of
1019  resources a single core Wasm or component instance can take from the pool:
1020
1021  * `PoolingAllocationConfig::max_memories_per_module`
1022  * `PoolingAllocationConfig::max_tables_per_module`
1023  * `PoolingAllocationConfig::max_memories_per_component`
1024  * `PoolingAllocationConfig::max_tables_per_component`
1025  * `PoolingAllocationConfig::max_core_instances_per_component`
1026
1027  These methods do not affect the size of the pre-allocated pool.
1028  [#6835](https://github.com/bytecodealliance/wasmtime/pull/6835)
1029
1030* Builder methods for WASI contexts now use `&mut self` instead of `self`.
1031  [#6770](https://github.com/bytecodealliance/wasmtime/pull/6770)
1032
1033* Native unwinding information is now properly disabled when it is configured to
1034  be turned off.
1035  [#6547](https://github.com/bytecodealliance/wasmtime/pull/6547)
1036
1037* Wasmtime's minimum supported Rust version (MSRV) is now 1.70.0. Wasmtime's
1038  MSRV policy of supporting the last three releases of Rust (N-2) is now
1039  additionally documented. More discussion can additionally be found on the PR
1040  itself.
1041  [#6900](https://github.com/bytecodealliance/wasmtime/pull/6900)
1042
1043* Wasmtime's support for DWARF debugging information has seen some fixes for
1044  previously reported crashes.
1045  [#6931](https://github.com/bytecodealliance/wasmtime/pull/6931)
1046
1047### Removed
1048
1049* Wasmtime's experimental implementation of wasi-crypto has been removed. More
1050  discussion of this change can be found on
1051  [#6732](https://github.com/bytecodealliance/wasmtime/pull/6732)
1052  and
1053  [#6816](https://github.com/bytecodealliance/wasmtime/pull/6816)
1054
1055* Support for `union` types in the component model has been removed.
1056  [#6913](https://github.com/bytecodealliance/wasmtime/pull/6913)
1057
1058--------------------------------------------------------------------------------
1059
1060## 12.0.2
1061
1062Released 2023-09-14.
1063
1064### Fixed
1065
1066* [CVE-2023-41880] - Miscompilation of wasm `i64x2.shr_s` instruction with
1067  constant input on x86\_64
1068
1069[CVE-2023-41880]: https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-gw5p-q8mj-p7gh
1070
1071--------------------------------------------------------------------------------
1072
1073## 12.0.1
1074
1075Released 2023-08-24
1076
1077### Fixed
1078
1079* Optimized the cranelift compilation on aarch64 for large wasm modules.
1080  [#6804](https://github.com/bytecodealliance/wasmtime/pull/6804)
1081
1082--------------------------------------------------------------------------------
1083
1084## 12.0.0
1085
1086Released 2023-08-21
1087
1088### Added
1089
1090* Wasmtime now supports having multiple different versions of itself being
1091  linked into the same final executable by mangling some C symbols used by
1092  Wasmtime.
1093  [#6673](https://github.com/bytecodealliance/wasmtime/pull/6673)
1094
1095* The `perfmap` profiling option is now supported on any Unix platform instead
1096  of just Linux.
1097  [#6701](https://github.com/bytecodealliance/wasmtime/pull/6701)
1098
1099* The `wasmtime` CLI now supports `--env FOO` to inherit the value of the
1100  environment variable `FOO` which avoids needing to do `--env FOO=$FOO` for
1101  example.
1102  [#6746](https://github.com/bytecodealliance/wasmtime/pull/6746)
1103
1104* Wasmtime now supports component model resources, although support has not yet
1105  been added to `bindgen!`.
1106  [#6691](https://github.com/bytecodealliance/wasmtime/pull/6691)
1107
1108* Wasmtime now supports configuration to enable the tail calls proposal.
1109  Platform support now also includes AArch64 and RISC-V in addition to the
1110  previous x86\_64 support.
1111  [#6723](https://github.com/bytecodealliance/wasmtime/pull/6723)
1112  [#6749](https://github.com/bytecodealliance/wasmtime/pull/6749)
1113  [#6774](https://github.com/bytecodealliance/wasmtime/pull/6774)
1114
1115* Wasmtime's implementation of WASI Preview 2 now supports streams/pollables
1116  with host objects that are all backed by Rust `async`.
1117  [#6556](https://github.com/bytecodealliance/wasmtime/pull/6556)
1118
1119* Support for core dumps has now been added to the `wasmtime` crate.
1120  [#6513](https://github.com/bytecodealliance/wasmtime/pull/6513)
1121
1122* New `{Module,Component}::resources_required` APIs allow inspecting what will
1123  be required when instantiating the module or component.
1124  [#6789](https://github.com/bytecodealliance/wasmtime/pull/6789)
1125
1126### Fixed
1127
1128* Functions on instances defined through `component::Linker::func_new` are now
1129  defined correctly.
1130  [#6637](https://github.com/bytecodealliance/wasmtime/pull/6637)
1131
1132* The `async_stack_size` configuration option is no longer inspected when
1133  `async_support` is disabled at runtime.
1134  [#6771](https://github.com/bytecodealliance/wasmtime/pull/6771)
1135
1136* WASI Preview 1 APIs will now trap on misaligned or out-of-bounds pointers
1137  instead of returning an error.
1138  [#6776](https://github.com/bytecodealliance/wasmtime/pull/6776)
1139
1140### Changed
1141
1142* Empty types are no longer allowed in the component model.
1143  [#6777](https://github.com/bytecodealliance/wasmtime/pull/6777)
1144
1145--------------------------------------------------------------------------------
1146
1147## 11.0.2
1148
1149Released 2023-09-14.
1150
1151### Fixed
1152
1153* [CVE-2023-41880] - Miscompilation of wasm `i64x2.shr_s` instruction with
1154  constant input on x86\_64
1155
1156[CVE-2023-41880]: https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-gw5p-q8mj-p7gh
1157
1158--------------------------------------------------------------------------------
1159
1160## 11.0.1
1161
1162Released 2023-07-24.
1163
1164### Fixed
1165
1166* Update some minimum version requirements for Wasmtime's dependencies to fix
1167  building Wasmtime with historical versions of these dependencies.
1168  [#6758](https://github.com/bytecodealliance/wasmtime/pull/6758)
1169
1170--------------------------------------------------------------------------------
1171
1172## 11.0.0
1173
1174Released 2023-07-20
1175
1176### Changed
1177
1178* The WASI Preview 2 `WasiCtxBuilder` type has been refactored, and `WasiCtx` now has private
1179  fields.
1180  [#6652](https://github.com/bytecodealliance/wasmtime/pull/6652)
1181
1182* Component `bindgen!` now generates owned types by default instead of based on
1183  how they're used
1184  [#6648](https://github.com/bytecodealliance/wasmtime/pull/6648)
1185
1186* Wasmtime/Cranelift on x86-64 can now execute Wasm-SIMD on baseline SSE2, which
1187  all x86-64 processors support (as part of the base x86-64 spec). Previously,
1188  SSE4.2 extensions were required. This new work allows Wasm with SIMD
1189  extensions to execute on processors produced back to 2003.
1190  [#6625](https://github.com/bytecodealliance/wasmtime/pull/6625)
1191
1192
1193### Fixed
1194
1195* Only export the top-level preview2 module from wasmtime-wasi when the
1196  `preview2` feature is enabled.
1197  [#6615](https://github.com/bytecodealliance/wasmtime/pull/6615)
1198
1199
1200### Cranelift changes
1201
1202* Tail call implementation has begun in Cranelift
1203  [#6641](https://github.com/bytecodealliance/wasmtime/pull/6641)
1204  [#6666](https://github.com/bytecodealliance/wasmtime/pull/6666)
1205  [#6650](https://github.com/bytecodealliance/wasmtime/pull/6650)
1206  [#6635](https://github.com/bytecodealliance/wasmtime/pull/6635)
1207  [#6608](https://github.com/bytecodealliance/wasmtime/pull/6608)
1208  [#6586](https://github.com/bytecodealliance/wasmtime/pull/6586)
1209
1210* Work continues on SIMD support for the riscv64 backend
1211  [#6657](https://github.com/bytecodealliance/wasmtime/pull/6657)
1212  [#6643](https://github.com/bytecodealliance/wasmtime/pull/6643)
1213  [#6601](https://github.com/bytecodealliance/wasmtime/pull/6601)
1214  [#6609](https://github.com/bytecodealliance/wasmtime/pull/6609)
1215  [#6602](https://github.com/bytecodealliance/wasmtime/pull/6602)
1216  [#6598](https://github.com/bytecodealliance/wasmtime/pull/6598)
1217  [#6599](https://github.com/bytecodealliance/wasmtime/pull/6599)
1218  [#6587](https://github.com/bytecodealliance/wasmtime/pull/6587)
1219  [#6568](https://github.com/bytecodealliance/wasmtime/pull/6568)
1220  [#6515](https://github.com/bytecodealliance/wasmtime/pull/6515)
1221
1222* Fix `AuthenticatedRet` when stack bytes are popped in the aarch64 backend
1223  [#6634](https://github.com/bytecodealliance/wasmtime/pull/6634)
1224
1225* The `fcvt_low_from_sint` instruction has been removed, as it its current
1226  behavior can be recovered through a combination of `swiden_low` and
1227  `fcvt_from_sint`
1228  [#6565](https://github.com/bytecodealliance/wasmtime/pull/6565)
1229
1230--------------------------------------------------------------------------------
1231
1232## 10.0.2
1233
1234Released 2023-09-14.
1235
1236### Fixed
1237
1238* [CVE-2023-41880] - Miscompilation of wasm `i64x2.shr_s` instruction with
1239  constant input on x86\_64
1240
1241[CVE-2023-41880]: https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-gw5p-q8mj-p7gh
1242
1243--------------------------------------------------------------------------------
1244
1245## 10.0.1
1246
1247Released 2023-06-21
1248
1249### Fixed
1250
1251* Only export the top-level preview2 module from wasmtime-wasi when the
1252  `preview2` feature is enabled.
1253  [#6615](https://github.com/bytecodealliance/wasmtime/pull/6615)
1254
1255--------------------------------------------------------------------------------
1256
1257## 10.0.0
1258
1259Released 2023-06-20
1260
1261### Added
1262
1263* Expose the `Config::static_memory_forced` option through the C api
1264  [#6413](https://github.com/bytecodealliance/wasmtime/pull/6413)
1265
1266* Basic guest-profiler documentation for the book
1267  [#6394](https://github.com/bytecodealliance/wasmtime/pull/6394)
1268
1269* Merge the initial wasi-preview2 implementation
1270  [#6391](https://github.com/bytecodealliance/wasmtime/pull/6391)
1271
1272* The wasi-preview2 component adapter has been pulled into the main wasmtime
1273  repository. It is available for the first time as part of this release, but should be
1274  treated as as a beta at this time. Patch releases will not be made for bug fixes.
1275  [#6374](https://github.com/bytecodealliance/wasmtime/pull/6374)
1276
1277* A callback invoked when an epoch deadline is reached can now be configured via
1278  the C API.
1279  [#6359](https://github.com/bytecodealliance/wasmtime/pull/6359)
1280
1281* PR auto-assignment policies have been documented, to clarify the expectations of
1282  reviewers.
1283  [#6346](https://github.com/bytecodealliance/wasmtime/pull/6346)
1284
1285* Support for the function references has been added
1286  [#5288](https://github.com/bytecodealliance/wasmtime/pull/5288)
1287
1288### Changed
1289
1290* An `epoch_deadline_callback` now returns an `UpdateDeadline` enum to allow
1291  optionally yielding to the async executor after the callback runs.
1292  [#6464](https://github.com/bytecodealliance/wasmtime/pull/6464)
1293
1294* The `--profile-guest` flag has now been folded into `--profile=guest`
1295  [#6352](https://github.com/bytecodealliance/wasmtime/pull/6352)
1296
1297* Initializers are no longer tracked in the type information for globals, and
1298  instead are provided when creating the global.
1299  [#6349](https://github.com/bytecodealliance/wasmtime/pull/6349)
1300
1301* The "raw" representation of `funcref` and `externref` in the embedding API has
1302  been updated from a `usize` to a `*mut u8` to be compatible with Rust's
1303  proposed strict provenance rules. This change is additionally reflected into
1304  the C API as well.
1305  [#6338](https://github.com/bytecodealliance/wasmtime/pull/6338)
1306
1307### Fixed
1308
1309* Fixed a soundness issue with the component model and async
1310  [#6509](https://github.com/bytecodealliance/wasmtime/pull/6509)
1311
1312* Opening directories with WASI on Windows with `NONBLOCK` in flags has been
1313  fixed.
1314  [#6348](https://github.com/bytecodealliance/wasmtime/pull/6348)
1315
1316### Cranelift changes
1317
1318* Performance improvements in regalloc2 have landed, and compilation time has
1319  improved
1320  [#6483](https://github.com/bytecodealliance/wasmtime/pull/6483)
1321  [#6398](https://github.com/bytecodealliance/wasmtime/pull/6398)
1322
1323* Renamed `abi::Caller` to `abi::CallSite`
1324  [#6414](https://github.com/bytecodealliance/wasmtime/pull/6414)
1325
1326* Work has begun on SIMD support for the riscv64 backend
1327  [#6324](https://github.com/bytecodealliance/wasmtime/pull/6324)
1328  [#6366](https://github.com/bytecodealliance/wasmtime/pull/6366)
1329  [#6367](https://github.com/bytecodealliance/wasmtime/pull/6367)
1330  [#6392](https://github.com/bytecodealliance/wasmtime/pull/6392)
1331  [#6397](https://github.com/bytecodealliance/wasmtime/pull/6397)
1332  [#6403](https://github.com/bytecodealliance/wasmtime/pull/6403)
1333  [#6408](https://github.com/bytecodealliance/wasmtime/pull/6408)
1334  [#6419](https://github.com/bytecodealliance/wasmtime/pull/6419)
1335  [#6430](https://github.com/bytecodealliance/wasmtime/pull/6430)
1336  [#6507](https://github.com/bytecodealliance/wasmtime/pull/6507)
1337
1338--------------------------------------------------------------------------------
1339
1340## 9.0.3
1341
1342Released 2023-05-31.
1343
1344### Fixed
1345
1346* Fix Wasi rights system to work with wasi-testsuite, which exposed a corner case
1347  that was missed by the fixes in the 9.0.2 release.
1348  [#6479](https://github.com/bytecodealliance/wasmtime/pull/6479)
1349
1350--------------------------------------------------------------------------------
1351
1352## 9.0.2
1353
1354Released 2023-05-26.
1355
1356### Fixed
1357
1358* Fix Wasi rights system to work with wasi-libc. This regression was
1359  introduced in the 9.0.0 release.
1360  [#6462](https://github.com/bytecodealliance/wasmtime/pull/6462)
1361  [#6471](https://github.com/bytecodealliance/wasmtime/pull/6471)
1362
1363--------------------------------------------------------------------------------
1364
1365## 9.0.1
1366
1367Released 2023-05-22.
1368
1369### Fixed
1370
1371* A panic which happened when enabling support for native platform profilers was
1372  fixed.
1373  [#6435](https://github.com/bytecodealliance/wasmtime/pull/6435)
1374
1375--------------------------------------------------------------------------------
1376
1377## 9.0.0
1378
1379Released 2023-05-22.
1380
1381### Added
1382
1383* Initial integration of the Winch baseline compiler into Wasmtime is
1384  implemented. Note that Winch still does not support much of WebAssembly, but
1385  intrepid explorers may have an easier time playing around with it now.
1386  [#6119](https://github.com/bytecodealliance/wasmtime/pull/6119)
1387
1388* The `wasmtime` CLI now has flags to limit memory, instances, and tables. For
1389  example `--max-memory-size` or `--max-tables`. Additionally it has a new
1390  `--trap-on-grow-failure` option to force a trap whenever a `memory.grow` would
1391  otherwise fail which can be useful for debugging modules which may be
1392  encountering OOM.
1393  [#6149](https://github.com/bytecodealliance/wasmtime/pull/6149)
1394
1395* An initial implementation of the wasi-http proposal was added to Wasmtime in
1396  the shape of a new `wasmtime-wasi-http` crate and a
1397  `--wasi-modules=experimental-wasi-http` CLI flag.  Note that this is not
1398  on-by-default and still in an experimental status at this time.
1399  [#5929](https://github.com/bytecodealliance/wasmtime/pull/5929)
1400
1401* Wasmtime's `bindgen!` macro for components now has `interfaces` and
1402  `with` options to configure use of interfaces defined externally in separate
1403  crates.
1404  [#6160](https://github.com/bytecodealliance/wasmtime/pull/6160)
1405  [#6210](https://github.com/bytecodealliance/wasmtime/pull/6210)
1406
1407* Wasmtime's `bindgen!` macro emits trace events for arguments and results
1408  when enabled.
1409  [#6209](https://github.com/bytecodealliance/wasmtime/pull/6209)
1410
1411* A new `Engine::precompile_compatibility_hash` method has been added to assist
1412  with hashing artifacts to be compatible with versions of Wasmtime.
1413  [#5826](https://github.com/bytecodealliance/wasmtime/pull/5826)
1414
1415* Wasmtime's C API now has functions for enabling the WebAssembly relaxed-simd
1416  proposal.
1417  [#6292](https://github.com/bytecodealliance/wasmtime/pull/6292)
1418
1419* A new `--emit-clif` flag has been added to `wasmtime compile` to see the CLIF
1420  corresponding to a WebAssembly module to be used for debugging.
1421  [#6307](https://github.com/bytecodealliance/wasmtime/pull/6307)
1422
1423* Support for an in-process sampling-based profiler has been added to Wasmtime.
1424  This is intended to be used in conjunction with epochs to enable relatively
1425  simple implementations of profiling a guest module.
1426  [#6282](https://github.com/bytecodealliance/wasmtime/pull/6282)
1427
1428### Changed
1429
1430* Overhauled the way that Wasmtime calls into Wasm and Wasm calls back out to
1431  the host. Instead of chaining together trampolines to convert between calling
1432  conventions, we now represent `funcref`s with multiple function pointers, one
1433  per calling convention. This paves the way for supporting Wasm tail calls and
1434  also results in ~10% speed ups to a variety of function call benchmarks,
1435  however there are some slight compiled Wasm module code size regressions
1436  (which can be alleviated by disabling optional `.eh_frame`
1437  generation). Additionally, in the C API the `wasmtime_func_call_unchecked`
1438  function gained one more parameter, which is the capacity of the
1439  args-and-results
1440  buffer.
1441  [#6262](https://github.com/bytecodealliance/wasmtime/pull/6262)
1442
1443* The `wasmtime compile` command will now default to producing executables for
1444  the native host and its CPU features instead of the baseline feature set of
1445  the host's architecture.
1446  [#6152](https://github.com/bytecodealliance/wasmtime/pull/6152)
1447
1448* The `ResourceLimiter` trait and its `async` equivalent now support returning
1449  errors from growth to force a trap in the wasm module rather than reporting
1450  -1 to the wasm module. Note that this is primarily intended for debugging.
1451  [#6149](https://github.com/bytecodealliance/wasmtime/pull/6149)
1452
1453* The non-egraph-based optimization pipeline has been removed from Cranelift,
1454  and the corresponding `Config::use_egraphs` option is also removed.
1455  [#6167](https://github.com/bytecodealliance/wasmtime/pull/6167)
1456
1457* Generated types for WIT files now always generates owned types by default.
1458  [#6189](https://github.com/bytecodealliance/wasmtime/pull/6189)
1459
1460* Wasmtime's baseline x86\_64 CPU features required for SIMD support has been
1461  lowered from SSE 4.2 to SSE 4.1.
1462  [#6206](https://github.com/bytecodealliance/wasmtime/pull/6206)
1463
1464* The `fd_allocate` implementation in Wasmtime will now always fail with
1465  `ENOTSUP`.
1466  [#6217](https://github.com/bytecodealliance/wasmtime/pull/6217)
1467
1468* The "rights" system in WASI has been removed and rights are no longer
1469  inspected in the implementation of any WASI functions.
1470  [#6265](https://github.com/bytecodealliance/wasmtime/pull/6265)
1471
1472### Fixed
1473
1474* WASI can now open directories without `O_DIRECTORY`.
1475  [#6163](https://github.com/bytecodealliance/wasmtime/pull/6163)
1476
1477* The `poll_oneoff` function has been fixed when handling non-regular files.
1478  [#6258](https://github.com/bytecodealliance/wasmtime/pull/6258)
1479
1480* The behavior of `path_readlink` on too-small buffers has been fixed to
1481  truncate.
1482  [#6225](https://github.com/bytecodealliance/wasmtime/pull/6225)
1483
1484### Cranelift changes
1485
1486> Note: this section documents changes to Cranelift, a code generator backend
1487> that Wasmtime uses. These changes are not always applicable to Wasmtime as a
1488> WebAssembly runtime but may be interesting to other projects which embed or
1489> use Cranelift.
1490
1491* New `{u,s}{add,sub,mul}_overflow` instructions have been added.
1492  [#5784](https://github.com/bytecodealliance/wasmtime/pull/5784)
1493
1494* The `iadd_cout` and `isub_bout` instructions have been removed.
1495  [#6198](https://github.com/bytecodealliance/wasmtime/pull/6198)
1496
1497* ISLE now supports binary and octal integer literals.
1498  [#6234](https://github.com/bytecodealliance/wasmtime/pull/6234)
1499
1500* An implementation of SIMD for RISC-V has started.
1501  [#6240](https://github.com/bytecodealliance/wasmtime/pull/6240)
1502  [#6266](https://github.com/bytecodealliance/wasmtime/pull/6266)
1503  [#6268](https://github.com/bytecodealliance/wasmtime/pull/6268)
1504
1505--------------------------------------------------------------------------------
1506
1507## 8.0.1
1508
1509Released 2023-04-27.
1510
1511### Changed
1512
1513* Breaking: Files opened using Wasmtime's implementation of WASI on Windows now
1514  cannot be deleted until the file handle is closed. This was already true for
1515  open directories. The change was necessary for the bug fix in
1516  [#6163](https://github.com/bytecodealliance/wasmtime/pull/6163).
1517
1518### Fixed
1519
1520* Fixed wasi-common's implementation of the `O_DIRECTORY` flag to match POSIX.
1521  [#6163](https://github.com/bytecodealliance/wasmtime/pull/6163)
1522
1523* Undefined Behavior in Rust runtime functions
1524  [GHSA-ch89-5g45-qwc7](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-ch89-5g45-qwc7)
1525
1526--------------------------------------------------------------------------------
1527
1528## 8.0.0
1529
1530Released 2023-04-20
1531
1532### Added
1533
1534* Allow the MPL-2.0 and OpenSSL licenses in dependencies of wasmtime.
1535  [#6136](https://github.com/bytecodealliance/wasmtime/pull/6136)
1536
1537* Add a bounds-checking optimization for dynamic memories and guard pages.
1538  [#6031](https://github.com/bytecodealliance/wasmtime/pull/6031)
1539
1540* Add support for generating perf maps for simple perf profiling. Additionally,
1541  the `--jitdump` and `--vtune` flags have been replaced with a single
1542  `--profile` flags that accepts `perfmap`, `jitdump`, and `vtune` arguments.
1543  [#6030](https://github.com/bytecodealliance/wasmtime/pull/6030)
1544
1545* Validate faulting addresses are valid to fault on. As a mitigation to CVEs
1546  like `GHSA-ff4p-7xrq-q5r8`, check that the address involved in a fault is one
1547  that could be contained in a `Store`, or print a scary message and abort
1548  immediately.
1549  [#6028](https://github.com/bytecodealliance/wasmtime/pull/6028)
1550
1551* Add the `--default-values-unknown-imports` option to define unknown function
1552  imports as functions that return the default value for their result type.
1553  [#6010](https://github.com/bytecodealliance/wasmtime/pull/6010)
1554
1555* Add `Clone` for `component::InstancePre`.
1556  [#5996](https://github.com/bytecodealliance/wasmtime/issues/5996)
1557
1558* Add `--dynamic-memory-reserved-for-growth` cli flag.
1559  [#5980](https://github.com/bytecodealliance/wasmtime/issues/5980)
1560
1561* Introduce the `wasmtime-explorer` crate for investigating the compilation of
1562  wasm modules. This functionality is also exposed via the `wasmtime explore`
1563  command.
1564  [#5975](https://github.com/bytecodealliance/wasmtime/pull/5975)
1565
1566* Added support for the Relaxed SIMD proposal.
1567  [#5892](https://github.com/bytecodealliance/wasmtime/pull/5892)
1568
1569* Cranelift gained many new machine-independent optimizations.
1570  [#5909](https://github.com/bytecodealliance/wasmtime/pull/5909)
1571  [#6032](https://github.com/bytecodealliance/wasmtime/pull/6032)
1572  [#6033](https://github.com/bytecodealliance/wasmtime/pull/6033)
1573  [#6034](https://github.com/bytecodealliance/wasmtime/pull/6034)
1574  [#6037](https://github.com/bytecodealliance/wasmtime/pull/6037)
1575  [#6052](https://github.com/bytecodealliance/wasmtime/pull/6052)
1576  [#6053](https://github.com/bytecodealliance/wasmtime/pull/6053)
1577  [#6072](https://github.com/bytecodealliance/wasmtime/pull/6072)
1578  [#6095](https://github.com/bytecodealliance/wasmtime/pull/6095)
1579  [#6130](https://github.com/bytecodealliance/wasmtime/pull/6130)
1580
1581### Changed
1582
1583* Derive `Copy` on `wasmtime::ValType`.
1584  [#6138](https://github.com/bytecodealliance/wasmtime/pull/6138)
1585
1586* Make `StoreContextMut` accessible in the epoch deadline callback.
1587  [#6075](https://github.com/bytecodealliance/wasmtime/pull/6075)
1588
1589* Take SIGFPE signals for divide traps on `x86_64`.
1590  [#6026](https://github.com/bytecodealliance/wasmtime/pull/6026)
1591
1592* Use more specialized AVX instructions in the `x86_64` backend.
1593  [#5924](https://github.com/bytecodealliance/wasmtime/pull/5924)
1594  [#5930](https://github.com/bytecodealliance/wasmtime/pull/5930)
1595  [#5931](https://github.com/bytecodealliance/wasmtime/pull/5931)
1596  [#5982](https://github.com/bytecodealliance/wasmtime/pull/5982)
1597  [#5986](https://github.com/bytecodealliance/wasmtime/pull/5986)
1598  [#5999](https://github.com/bytecodealliance/wasmtime/pull/5999)
1599  [#6023](https://github.com/bytecodealliance/wasmtime/pull/6023)
1600  [#6025](https://github.com/bytecodealliance/wasmtime/pull/6025)
1601  [#6060](https://github.com/bytecodealliance/wasmtime/pull/6060)
1602  [#6086](https://github.com/bytecodealliance/wasmtime/pull/6086)
1603  [#6092](https://github.com/bytecodealliance/wasmtime/pull/6092)
1604
1605* Generate more cache-friendly code for traps.
1606  [#6011](https://github.com/bytecodealliance/wasmtime/pull/6011)
1607
1608### Fixed
1609
1610* Fixed suboptimal code generation in the `aarch64` backend.
1611  [#5976](https://github.com/bytecodealliance/wasmtime/pull/5976)
1612  [#5977](https://github.com/bytecodealliance/wasmtime/pull/5977)
1613  [#5987](https://github.com/bytecodealliance/wasmtime/pull/5987)
1614  [#5997](https://github.com/bytecodealliance/wasmtime/pull/5997)
1615  [#6078](https://github.com/bytecodealliance/wasmtime/pull/6078)
1616
1617* Fixed suboptimal code generation in the `riscv64` backend.
1618  [#5854](https://github.com/bytecodealliance/wasmtime/pull/5854)
1619  [#5857](https://github.com/bytecodealliance/wasmtime/pull/5857)
1620  [#5919](https://github.com/bytecodealliance/wasmtime/pull/5919)
1621  [#5951](https://github.com/bytecodealliance/wasmtime/pull/5951)
1622  [#5964](https://github.com/bytecodealliance/wasmtime/pull/5964)
1623  [#6087](https://github.com/bytecodealliance/wasmtime/pull/6087)
1624
1625
1626--------------------------------------------------------------------------------
1627
1628## 7.0.1
1629
1630Released 2023-04-27.
1631
1632### Fixed
1633
1634* Undefined Behavior in Rust runtime functions
1635  [GHSA-ch89-5g45-qwc7](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-ch89-5g45-qwc7)
1636
1637--------------------------------------------------------------------------------
1638
1639## 7.0.0
1640
1641Released 2023-03-20
1642
1643### Added
1644
1645* An initial implementation of the wasi-threads proposal has been implemented
1646  and landed in the Wasmtime CLI. This is available behind a
1647  `--wasi-modules experimental-wasi-threads` flag.
1648  [#5484](https://github.com/bytecodealliance/wasmtime/pull/5484)
1649
1650* Support for WASI sockets has been added to the C API.
1651  [#5624](https://github.com/bytecodealliance/wasmtime/pull/5624)
1652
1653* Support for limiting `Store`-based resource usage, such as memory, tables,
1654  etc, has been added to the C API.
1655  [#5761](https://github.com/bytecodealliance/wasmtime/pull/5761)
1656
1657* A top level alias of `anyhow::Result` as `wasmtime::Result` has been added to
1658  avoid the need to explicitly depend on `anyhow`.
1659  [#5853](https://github.com/bytecodealliance/wasmtime/pull/5853)
1660
1661* Initial support for the WebAssembly core dump format has been added to the CLI
1662  with a `--coredump-on-trap` flag.
1663  [#5868](https://github.com/bytecodealliance/wasmtime/pull/5868)
1664
1665### Changed
1666
1667* The `S` type parameter on component-related methods has been removed.
1668  [#5722](https://github.com/bytecodealliance/wasmtime/pull/5722)
1669
1670* Selection of a `world` to bindgen has been updated to select any `default
1671  world` in a WIT package if there is only one.
1672  [#5779](https://github.com/bytecodealliance/wasmtime/pull/5779)
1673
1674* WASI preopened file descriptors can now be closed.
1675  [#5828](https://github.com/bytecodealliance/wasmtime/pull/5828)
1676
1677* The host traits generated by the `bindgen!` macro are now always named `Host`,
1678  but are still scoped to each individual module.
1679  [#5890](https://github.com/bytecodealliance/wasmtime/pull/5890)
1680
1681### Fixed
1682
1683* Components which have `type` imports are now supported better and error/panic
1684  in fewer cases.
1685  [#5777](https://github.com/bytecodealliance/wasmtime/pull/5777)
1686
1687* Types referred to by `wasmtime::component::Val` are now reexported under
1688  `wasmtime::component`.
1689  [#5790](https://github.com/bytecodealliance/wasmtime/pull/5790)
1690
1691* A panic due to a race between `memory.atomic.{wait32,wait64,notify}`
1692  instructions has been fixed.
1693  [#5871](https://github.com/bytecodealliance/wasmtime/pull/5871)
1694
1695* Guest-controlled out-of-bounds read/write on x86\_64
1696  [GHSA-ff4p-7xrq-q5r8](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-ff4p-7xrq-q5r8)
1697
1698*  Miscompilation of `i8x16.select` with the same inputs on x86\_64
1699  [GHSA-xm67-587q-r2vw](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-xm67-587q-r2vw)
1700
1701--------------------------------------------------------------------------------
1702
1703## 6.0.2
1704
1705Released 2023-04-27.
1706
1707### Fixed
1708
1709* Undefined Behavior in Rust runtime functions
1710  [GHSA-ch89-5g45-qwc7](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-ch89-5g45-qwc7)
1711
1712--------------------------------------------------------------------------------
1713
1714## 6.0.1
1715
1716Released 2023-03-08.
1717
1718### Fixed
1719
1720* Guest-controlled out-of-bounds read/write on x86\_64
1721  [GHSA-ff4p-7xrq-q5r8](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-ff4p-7xrq-q5r8)
1722
1723*  Miscompilation of `i8x16.select` with the same inputs on x86\_64
1724  [GHSA-xm67-587q-r2vw](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-xm67-587q-r2vw)
1725
1726--------------------------------------------------------------------------------
1727
1728## 6.0.0
1729
1730Released 2023-02-20
1731
1732### Added
1733
1734* Wasmtime's built-in cache can now be disabled after being enabled previously.
1735  [#5542](https://github.com/bytecodealliance/wasmtime/pull/5542)
1736
1737* Older x86\_64 CPUs, without SSE4.1 for example, are now supported when the
1738  wasm SIMD proposal is disabled.
1739  [#5567](https://github.com/bytecodealliance/wasmtime/pull/5567)
1740
1741* The Wasmtime C API now has `WASMTIME_VERSION_*` macros defined in its header
1742  files.
1743  [#5651](https://github.com/bytecodealliance/wasmtime/pull/5651)
1744
1745* The `wasmtime` CLI executable as part of Wasmtime's precompiled release
1746  artifacts now has the `all-arch` feature enabled.
1747  [#5657](https://github.com/bytecodealliance/wasmtime/pull/5657)
1748
1749### Changed
1750
1751* Equality of `wasmtime::component::Val::Float{32,64}` now considers NaNs as
1752  equal for assistance when fuzzing.
1753  [#5535](https://github.com/bytecodealliance/wasmtime/pull/5535)
1754
1755* WIT syntax supported by `wasmtime::component::bindgen!` has been updated in
1756  addition to the generated code being updated.
1757  [#5565](https://github.com/bytecodealliance/wasmtime/pull/5565)
1758  [#5692](https://github.com/bytecodealliance/wasmtime/pull/5692)
1759  [#5694](https://github.com/bytecodealliance/wasmtime/pull/5694)
1760
1761* Cranelift's egraph-based optimization framework is now enabled by default.
1762  [#5587](https://github.com/bytecodealliance/wasmtime/pull/5587)
1763
1764* The old `PoolingAllocationStrategy` type has been removed in favor of a more
1765  flexible configuration via a new option
1766  `PoolingAllocationConfig::max_unused_warm_slots` which is more flexible and
1767  subsumes the previous use cases for each strategy.
1768  [#5661](https://github.com/bytecodealliance/wasmtime/pull/5661)
1769
1770* Creation of `InstancePre` through `Linker::instantiate_pre` no longer requires
1771  a `Store` to be provided. Instead a `Store`-related argument is now required
1772  on `Linker::define`-style APIs instead.
1773  [#5683](https://github.com/bytecodealliance/wasmtime/pull/5683)
1774
1775### Fixed
1776
1777* Compilation for FreeBSD on x86\_64 and AArch64 has been fixed.
1778  [#5606](https://github.com/bytecodealliance/wasmtime/pull/5606)
1779
1780--------------------------------------------------------------------------------
1781
1782## 5.0.1
1783
1784Released 2023-03-08.
1785
1786### Fixed
1787
1788* Guest-controlled out-of-bounds read/write on x86\_64
1789  [GHSA-ff4p-7xrq-q5r8](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-ff4p-7xrq-q5r8)
1790
1791*  Miscompilation of `i8x16.select` with the same inputs on x86\_64
1792  [GHSA-xm67-587q-r2vw](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-xm67-587q-r2vw)
1793
1794--------------------------------------------------------------------------------
1795
1796## 5.0.0
1797
1798Released 2023-01-20
1799
1800### Added
1801
1802* A `wasmtime::component::bingen!` macro has been added for generating bindings
1803  from `*.wit` files. Note that WIT is still heavily in development so this is
1804  more of a preview of what will be as opposed to a finished feature.
1805  [#5317](https://github.com/bytecodealliance/wasmtime/pull/5317)
1806  [#5397](https://github.com/bytecodealliance/wasmtime/pull/5397)
1807
1808* The `wasmtime settings` CLI command now has a `--json` option for
1809  machine-readable output.
1810  [#5411](https://github.com/bytecodealliance/wasmtime/pull/5411)
1811
1812* Wiggle-generated bindings can now generate the trait for either `&mut self` or
1813  `&self`.
1814  [#5428](https://github.com/bytecodealliance/wasmtime/pull/5428)
1815
1816* The `wiggle` crate has more convenience APIs for working with guest data
1817  that resides in shared memory.
1818  [#5471](https://github.com/bytecodealliance/wasmtime/pull/5471)
1819  [#5475](https://github.com/bytecodealliance/wasmtime/pull/5475)
1820
1821### Changed
1822
1823* Cranelift's egraph support has been rewritten and updated. This functionality
1824  is still gated behind a flag and may become the default in the next release.
1825  [#5382](https://github.com/bytecodealliance/wasmtime/pull/5382)
1826
1827* The implementation of codegen for WebAssembly linear memory has changed
1828  significantly internally in Cranelift, moving more responsibility to the
1829  Wasmtime embedding rather than Cranelift itself. This should have no
1830  user-visible change, however.
1831  [#5386](https://github.com/bytecodealliance/wasmtime/pull/5386)
1832
1833* The `Val::Float32` and `Val::Float64` variants for components now store `f32`
1834  and `f64` instead of the bit representation.
1835  [#5510](https://github.com/bytecodealliance/wasmtime/pull/5510)
1836
1837### Fixed
1838
1839* Handling of DWARF debugging information in components with multiple modules
1840  has been fixed to ensure the right info is used for each module.
1841  [#5358](https://github.com/bytecodealliance/wasmtime/pull/5358)
1842
1843--------------------------------------------------------------------------------
1844
1845## 4.0.1
1846
1847Released 2023-03-08.
1848
1849### Fixed
1850
1851* Guest-controlled out-of-bounds read/write on x86\_64
1852  [GHSA-ff4p-7xrq-q5r8](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-ff4p-7xrq-q5r8)
1853
1854*  Miscompilation of `i8x16.select` with the same inputs on x86\_64
1855  [GHSA-xm67-587q-r2vw](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-xm67-587q-r2vw)
1856
1857--------------------------------------------------------------------------------
1858
1859## 4.0.0
1860
1861Released 2022-12-20
1862
1863### Added
1864
1865* Dynamic memories are now supported with the pooling instance allocator which
1866  can possibly reduce the number of page faults throughout execution at the cost
1867  of slower to run code. Page faults are primarily reduced by avoiding
1868  releasing memory back to the system, relying on bounds checks to keep the
1869  memory inaccessible.
1870  [#5208](https://github.com/bytecodealliance/wasmtime/pull/5208)
1871
1872* The `wiggle` generator now supports function-level control over `tracing`
1873  calls.
1874  [#5194](https://github.com/bytecodealliance/wasmtime/pull/5194)
1875
1876* Support has been added to `wiggle` to be compatible with shared memories.
1877  [#5225](https://github.com/bytecodealliance/wasmtime/pull/5225)
1878  [#5229](https://github.com/bytecodealliance/wasmtime/pull/5229)
1879  [#5264](https://github.com/bytecodealliance/wasmtime/pull/5264)
1880  [#5268](https://github.com/bytecodealliance/wasmtime/pull/5268)
1881  [#5054](https://github.com/bytecodealliance/wasmtime/pull/5054)
1882
1883* The `wiggle` generator now supports a "trappable error" configuration to
1884  improve error conversions to guest errors and ensure that no host errors are
1885  forgotten or accidentally become traps. The `wasi-common` crate has been
1886  updated to use this.
1887  [#5276](https://github.com/bytecodealliance/wasmtime/pull/5276)
1888  [#5279](https://github.com/bytecodealliance/wasmtime/pull/5279)
1889
1890* The `memory.atomic.{notify,wait32,wait64}` instructions are now all
1891  implemented in Wasmtime.
1892  [#5255](https://github.com/bytecodealliance/wasmtime/pull/5255)
1893  [#5311](https://github.com/bytecodealliance/wasmtime/pull/5311)
1894
1895* A `wasm_config_parallel_compilation_set` configuration function has been added
1896  to the C API.
1897  [#5298](https://github.com/bytecodealliance/wasmtime/pull/5298)
1898
1899* The `wasmtime` CLI can have its input module piped into it from stdin now.
1900  [#5342](https://github.com/bytecodealliance/wasmtime/pull/5342)
1901
1902* `WasmBacktrace::{capture,force_capture}` methods have been added to
1903  programmatically capture a backtrace outside of a trapping context.
1904  [#5341](https://github.com/bytecodealliance/wasmtime/pull/5341)
1905
1906### Changed
1907
1908* The `S` type parameter on `Func::typed` and `Instance::get_typed_func` has
1909  been removed and no longer needs to be specified.
1910  [#5275](https://github.com/bytecodealliance/wasmtime/pull/5275)
1911
1912* The `SharedMemory::data` method now returns `&[UnsafeCell<u8>]` instead of the
1913  prior raw slice return.
1914  [#5240](https://github.com/bytecodealliance/wasmtime/pull/5240)
1915
1916* Creation of a `WasiCtx` will no longer unconditionally acquire randomness from
1917  the OS, instead using the `rand::thread_rng()` function in Rust which is only
1918  periodically reseeded with randomness from the OS.
1919  [#5244](https://github.com/bytecodealliance/wasmtime/pull/5244)
1920
1921* Codegen of dynamically-bounds-checked wasm memory accesses has been improved.
1922  [#5190](https://github.com/bytecodealliance/wasmtime/pull/5190)
1923
1924* Wasmtime will now emit inline stack probes in generated functions for x86\_64,
1925  aarch64, and riscv64 architectures. This guarantees a process abort if an
1926  engine was misconfigured to give wasm too much stack instead of optionally
1927  allowing wasm to skip the guard page.
1928  [#5350](https://github.com/bytecodealliance/wasmtime/pull/5350)
1929  [#5353](https://github.com/bytecodealliance/wasmtime/pull/5353)
1930
1931### Fixed
1932
1933* Dropping a `Module` will now release kernel resources in-use by the pooling
1934  allocator when enabled instead of waiting for a new instance to be
1935  re-instantiated into prior slots.
1936  [#5321](https://github.com/bytecodealliance/wasmtime/pull/5321)
1937
1938--------------------------------------------------------------------------------
1939
1940## 3.0.1
1941
1942Released 2022-12-01.
1943
1944### Fixed
1945
1946* The instruction cache is now flushed for AArch64 Android.
1947  [#5331](https://github.com/bytecodealliance/wasmtime/pull/5331)
1948
1949* Building for FreeBSD and Android has been fixed.
1950  [#5323](https://github.com/bytecodealliance/wasmtime/pull/5323)
1951
1952--------------------------------------------------------------------------------
1953
1954## 3.0.0
1955
1956Released 2022-11-21
1957
1958### Added
1959
1960* New `WasiCtx::{push_file, push_dir}` methods exist for embedders to add their
1961  own objects.
1962  [#5027](https://github.com/bytecodealliance/wasmtime/pull/5027)
1963
1964* Wasmtime's `component-model` support now supports `async` host functions and
1965  embedding in the same manner as core wasm.
1966  [#5055](https://github.com/bytecodealliance/wasmtime/pull/5055)
1967
1968* The `wasmtime` CLI executable now supports a `--max-wasm-stack` flag.
1969  [#5156](https://github.com/bytecodealliance/wasmtime/pull/5156)
1970
1971* AOT compilation support has been implemented for components (aka the
1972  `component-model` feature of the Wasmtime crate).
1973  [#5160](https://github.com/bytecodealliance/wasmtime/pull/5160)
1974
1975* A new `wasi_config_set_stdin_bytes` function is available in the C API to set
1976  the stdin of a WASI-using module from an in-memory slice.
1977  [#5179](https://github.com/bytecodealliance/wasmtime/pull/5179)
1978
1979* When using the pooling allocator there are now options to reset memory with
1980  `memset` instead of `madvisev` on Linux to keep pages resident in memory to
1981  reduce page faults when reusing linear memory slots.
1982  [#5207](https://github.com/bytecodealliance/wasmtime/pull/5207)
1983
1984### Changed
1985
1986* Consuming 0 fuel with 0 fuel left is now considered to succeed. Additionally a
1987  store may not consume its last unit of fuel.
1988  [#5013](https://github.com/bytecodealliance/wasmtime/pull/5013)
1989
1990* A number of variants in the `wasi_common::ErrorKind` enum have been removed.
1991  [#5015](https://github.com/bytecodealliance/wasmtime/pull/5015)
1992
1993* Methods on `WasiDir` now error-by-default instead of requiring a definition by
1994  default.
1995  [#5019](https://github.com/bytecodealliance/wasmtime/pull/5019)
1996
1997* Bindings generated by the `wiggle` crate now always depend on the `wasmtime`
1998  crate meaning crates like `wasi-common` no longer compile for platforms such
1999  as `wasm32-unknown-emscripten`.
2000  [#5137](https://github.com/bytecodealliance/wasmtime/pull/5137)
2001
2002* Error handling in the `wasmtime` crate's API has been changed to primarily
2003  work with `anyhow::Error` for custom errors. The `Trap` type has been replaced
2004  with a simple `enum Trap { ... }` and backtrace information is now stored as a
2005  `WasmBacktrace` type inserted as context into an `anyhow::Error`.
2006  Host-functions are expected to return `anyhow::Result<T>` instead of the prior
2007  `Trap` error return from before. Additionally the old `Trap::i32_exit`
2008  constructor is now a concrete `wasi_commont::I32Exit` type which can be tested
2009  for with a `downcast_ref` on the error returned from Wasmtime.
2010  [#5149](https://github.com/bytecodealliance/wasmtime/pull/5149)
2011
2012* Configuration of the pooling allocator is now done through a builder-style
2013  `PoolingAllocationConfig` API instead of the prior enum-variant API.
2014  [#5205](https://github.com/bytecodealliance/wasmtime/pull/5205)
2015
2016### Fixed
2017
2018* The instruction cache is now properly flushed for AArch64 on Windows.
2019  [#4997](https://github.com/bytecodealliance/wasmtime/pull/4997)
2020
2021* Backtrace capturing with many sequences of wasm->host calls on the stack no
2022  longer exhibit quadratic capturing behavior.
2023  [#5049](https://github.com/bytecodealliance/wasmtime/pull/5049)
2024
2025--------------------------------------------------------------------------------
2026
2027## 2.0.2
2028
2029Released 2022-11-10.
2030
2031### Fixed
2032
2033* [CVE-2022-39392] - modules may perform out-of-bounds reads/writes when the
2034  pooling allocator was configured with `memory_pages: 0`.
2035
2036* [CVE-2022-39393] - data can be leaked between instances when using the pooling
2037  allocator.
2038
2039* [CVE-2022-39394] - An incorrect Rust signature for the C API
2040  `wasmtime_trap_code` function could lead to an out-of-bounds write of three
2041  zero bytes.
2042
2043[CVE-2022-39392]: https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-44mr-8vmm-wjhg
2044[CVE-2022-39393]: https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-wh6w-3828-g9qf
2045[CVE-2022-39394]: https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-h84q-m8rr-3v9q
2046
2047--------------------------------------------------------------------------------
2048
2049## 2.0.1
2050
2051Released 2022-10-27.
2052
2053### Fixed
2054
2055* A compilation error when building only the `wasmtime` crate on Windows with
2056  only the default features enabled has been fixed.
2057  [#5134](https://github.com/bytecodealliance/wasmtime/pull/5134)
2058
2059### Changed
2060
2061* The `rayon` dependency added to `cranelift-isle` in 2.0.0 has been removed to
2062  improve the compile time of the `cranelift-codegen` crate.
2063  [#5101](https://github.com/bytecodealliance/wasmtime/pull/5101)
2064
2065--------------------------------------------------------------------------------
2066
2067## 2.0.0
2068
2069Released 2022-10-20
2070
2071### Added
2072
2073* Cranelift has gained support for forward-edge CFI on the AArch64 backend.
2074  [#3693](https://github.com/bytecodealliance/wasmtime/pull/3693)
2075
2076* A `--disable-parallel-compilation` CLI flag is now implemented for `wasmtime`.
2077  [#4911](https://github.com/bytecodealliance/wasmtime/pull/4911)
2078
2079* [Tier 3] support has been added for for RISC-V 64 with a new backend in
2080  Cranelift for this architecture.
2081  [#4271](https://github.com/bytecodealliance/wasmtime/pull/4271)
2082
2083* Basic [tier 3] support for Windows ARM64 has been added but features such as
2084  traps don't work at this time.
2085  [#4990](https://github.com/bytecodealliance/wasmtime/pull/4990)
2086
2087### Changed
2088
2089* The implementation of the `random_get` function in `wasi-common` is now faster
2090  by using a userspace CSPRNG rather than the OS for randomness.
2091  [#4917](https://github.com/bytecodealliance/wasmtime/pull/4917)
2092
2093* The AArch64 backend has completed its transition to ISLE.
2094  [#4851](https://github.com/bytecodealliance/wasmtime/pull/4851)
2095  [#4866](https://github.com/bytecodealliance/wasmtime/pull/4866)
2096  [#4898](https://github.com/bytecodealliance/wasmtime/pull/4898)
2097  [#4884](https://github.com/bytecodealliance/wasmtime/pull/4884)
2098  [#4820](https://github.com/bytecodealliance/wasmtime/pull/4820)
2099  [#4913](https://github.com/bytecodealliance/wasmtime/pull/4913)
2100  [#4942](https://github.com/bytecodealliance/wasmtime/pull/4942)
2101  [#4943](https://github.com/bytecodealliance/wasmtime/pull/4943)
2102
2103* The size of the `sigaltstack` allocated per-thread for signal handling has
2104  been increased from 16k to 64k.
2105  [#4964](https://github.com/bytecodealliance/wasmtime/pull/4964)
2106
2107
2108[Tier 3]: https://docs.wasmtime.dev/stability-tiers.html
2109
2110--------------------------------------------------------------------------------
2111
2112## 1.0.2
2113
2114Released 2022-11-10.
2115
2116### Fixed
2117
2118* [CVE-2022-39392] - modules may perform out-of-bounds reads/writes when the
2119  pooling allocator was configured with `memory_pages: 0`.
2120
2121* [CVE-2022-39393] - data can be leaked between instances when using the pooling
2122  allocator.
2123
2124* [CVE-2022-39394] - An incorrect Rust signature for the C API
2125  `wasmtime_trap_code` function could lead to an out-of-bounds write of three
2126  zero bytes.
2127
2128--------------------------------------------------------------------------------
2129
2130## 1.0.1
2131
2132Released 2022-09-26
2133
2134This is a patch release that incorporates a fix for a miscompilation of an
2135atomic-CAS operator on aarch64. The instruction is not usable from Wasmtime
2136with default settings, but may be used if the Wasm atomics extension is
2137enabled. The bug may also be reachable via other uses of Cranelift. Thanks to
2138@bjorn3 for reporting and debugging this issue!
2139
2140### Fixed
2141
2142* Fixed a miscompilation of `atomic_cas` on aarch64. The output register was
2143  swapped with a temporary register in the register-allocator constraints.
2144  [#4959](https://github.com/bytecodealliance/wasmtime/pull/4959)
2145  [#4960](https://github.com/bytecodealliance/wasmtime/pull/4960)
2146
2147--------------------------------------------------------------------------------
2148
2149## 1.0.0
2150
2151Released 2022-09-20
2152
2153This release marks the official 1.0 release of Wasmtime and represents the
2154culmination of the work amongst over 300 contributors. Wasmtime has been
2155battle-tested in production through multiple embeddings for quite some time now
2156and we're confident in releasing a 1.0 version to signify the stability and
2157quality of the Wasmtime engine.
2158
2159More information about Wasmtime's 1.0 release is on the [Bytecode Alliance's
2160blog][ba-blog] with separate posts on [Wasmtime's performance
2161features][ba-perf], [Wasmtime's security story][ba-security], and [the 1.0
2162release announcement][ba-1.0].
2163
2164As a reminder the 2.0 release of Wasmtime is scheduled for one month from now on
2165October 20th. For more information see the [RFC on Wasmtime's 1.0
2166release][rfc-1.0].
2167
2168[ba-blog]: https://bytecodealliance.org/articles/
2169[ba-perf]: https://bytecodealliance.org/articles/wasmtime-10-performance
2170[ba-security]: https://bytecodealliance.org/articles/security-and-correctness-in-wasmtime
2171[ba-1.0]: https://bytecodealliance.org/articles/wasmtime-1-0-fast-safe-and-now-production-ready.md
2172[rfc-1.0]: https://github.com/bytecodealliance/rfcs/blob/main/accepted/wasmtime-one-dot-oh.md
2173
2174### Added
2175
2176* An incremental compilation cache for Cranelift has been added which can be
2177  enabled with `Config::enable_incremental_compilation`, and this option is
2178  disabled by default for now. The incremental compilation cache has been
2179  measured to improve compile times for cold uncached modules as well due to
2180  some wasm modules having similar-enough functions internally.
2181  [#4551](https://github.com/bytecodealliance/wasmtime/pull/4551)
2182
2183* Source tarballs are now available as part of Wasmtime's release artifacts.
2184  [#4294](https://github.com/bytecodealliance/wasmtime/pull/4294)
2185
2186* WASI APIs that specify the REALTIME clock are now supported.
2187  [#4777](https://github.com/bytecodealliance/wasmtime/pull/4777)
2188
2189* WASI's socket functions are now fully implemented.
2190  [#4776](https://github.com/bytecodealliance/wasmtime/pull/4776)
2191
2192* The native call stack for async-executed wasm functions are no longer
2193  automatically reset to zero after the stack is returned to the pool when using
2194  the pooling allocator. A `Config::async_stack_zeroing` option has been added
2195  to restore the old behavior of zero-on-return-to-pool.
2196  [#4813](https://github.com/bytecodealliance/wasmtime/pull/4813)
2197
2198* Inline stack probing has been implemented for the Cranelift x64 backend.
2199  [#4747](https://github.com/bytecodealliance/wasmtime/pull/4747)
2200
2201### Changed
2202
2203* Generating of native unwind information has moved from a
2204  `Config::wasm_backtrace` option to a new `Config::native_unwind_info` option
2205  and is enabled by default.
2206  [#4643](https://github.com/bytecodealliance/wasmtime/pull/4643)
2207
2208* The `memory-init-cow` feature is now enabled by default in the C API.
2209  [#4690](https://github.com/bytecodealliance/wasmtime/pull/4690)
2210
2211* Back-edge CFI is now enabled by default on AArch64 macOS.
2212  [#4720](https://github.com/bytecodealliance/wasmtime/pull/4720)
2213
2214* WASI calls will no longer return NOTCAPABLE in preparation for the removal of
2215  the rights system from WASI.
2216  [#4666](https://github.com/bytecodealliance/wasmtime/pull/4666)
2217
2218### Internal
2219
2220This section of the release notes shouldn't affect external users since no
2221public-facing APIs are affected, but serves as a place to document larger
2222changes internally within Wasmtime.
2223
2224* Differential fuzzing has been refactored and improved into one fuzzing target
2225  which can execute against any of Wasmtime itself (configured differently),
2226  wasmi, V8, or the spec interpreter. Fuzzing now executes each exported
2227  function with fuzz-generated inputs and the contents of all of memory and each
2228  exported global is compared after each execution. Additionally more
2229  interesting shapes of modules are also possible to generate.
2230  [#4515](https://github.com/bytecodealliance/wasmtime/pull/4515)
2231  [#4735](https://github.com/bytecodealliance/wasmtime/pull/4735)
2232  [#4737](https://github.com/bytecodealliance/wasmtime/pull/4737)
2233  [#4739](https://github.com/bytecodealliance/wasmtime/pull/4739)
2234  [#4774](https://github.com/bytecodealliance/wasmtime/pull/4774)
2235  [#4773](https://github.com/bytecodealliance/wasmtime/pull/4773)
2236  [#4845](https://github.com/bytecodealliance/wasmtime/pull/4845)
2237  [#4672](https://github.com/bytecodealliance/wasmtime/pull/4672)
2238  [#4674](https://github.com/bytecodealliance/wasmtime/pull/4674)
2239
2240* The x64 backend for Cranelift has been fully migrated to ISLE.
2241  [#4619](https://github.com/bytecodealliance/wasmtime/pull/4619)
2242  [#4625](https://github.com/bytecodealliance/wasmtime/pull/4625)
2243  [#4645](https://github.com/bytecodealliance/wasmtime/pull/4645)
2244  [#4650](https://github.com/bytecodealliance/wasmtime/pull/4650)
2245  [#4684](https://github.com/bytecodealliance/wasmtime/pull/4684)
2246  [#4704](https://github.com/bytecodealliance/wasmtime/pull/4704)
2247  [#4718](https://github.com/bytecodealliance/wasmtime/pull/4718)
2248  [#4726](https://github.com/bytecodealliance/wasmtime/pull/4726)
2249  [#4722](https://github.com/bytecodealliance/wasmtime/pull/4722)
2250  [#4729](https://github.com/bytecodealliance/wasmtime/pull/4729)
2251  [#4730](https://github.com/bytecodealliance/wasmtime/pull/4730)
2252  [#4741](https://github.com/bytecodealliance/wasmtime/pull/4741)
2253  [#4763](https://github.com/bytecodealliance/wasmtime/pull/4763)
2254  [#4772](https://github.com/bytecodealliance/wasmtime/pull/4772)
2255  [#4780](https://github.com/bytecodealliance/wasmtime/pull/4780)
2256  [#4787](https://github.com/bytecodealliance/wasmtime/pull/4787)
2257  [#4793](https://github.com/bytecodealliance/wasmtime/pull/4793)
2258  [#4809](https://github.com/bytecodealliance/wasmtime/pull/4809)
2259
2260* The AArch64 backend for Cranelift has seen significant progress in being
2261  ported to ISLE.
2262  [#4608](https://github.com/bytecodealliance/wasmtime/pull/4608)
2263  [#4639](https://github.com/bytecodealliance/wasmtime/pull/4639)
2264  [#4634](https://github.com/bytecodealliance/wasmtime/pull/4634)
2265  [#4748](https://github.com/bytecodealliance/wasmtime/pull/4748)
2266  [#4750](https://github.com/bytecodealliance/wasmtime/pull/4750)
2267  [#4751](https://github.com/bytecodealliance/wasmtime/pull/4751)
2268  [#4753](https://github.com/bytecodealliance/wasmtime/pull/4753)
2269  [#4788](https://github.com/bytecodealliance/wasmtime/pull/4788)
2270  [#4796](https://github.com/bytecodealliance/wasmtime/pull/4796)
2271  [#4785](https://github.com/bytecodealliance/wasmtime/pull/4785)
2272  [#4819](https://github.com/bytecodealliance/wasmtime/pull/4819)
2273  [#4821](https://github.com/bytecodealliance/wasmtime/pull/4821)
2274  [#4832](https://github.com/bytecodealliance/wasmtime/pull/4832)
2275
2276* The s390x backend has seen improvements and additions to fully support the
2277  Cranelift backend for rustc.
2278  [#4682](https://github.com/bytecodealliance/wasmtime/pull/4682)
2279  [#4702](https://github.com/bytecodealliance/wasmtime/pull/4702)
2280  [#4616](https://github.com/bytecodealliance/wasmtime/pull/4616)
2281  [#4680](https://github.com/bytecodealliance/wasmtime/pull/4680)
2282
2283* Significant improvements have been made to Cranelift-based fuzzing with more
2284  supported features and more instructions being fuzzed.
2285  [#4589](https://github.com/bytecodealliance/wasmtime/pull/4589)
2286  [#4591](https://github.com/bytecodealliance/wasmtime/pull/4591)
2287  [#4665](https://github.com/bytecodealliance/wasmtime/pull/4665)
2288  [#4670](https://github.com/bytecodealliance/wasmtime/pull/4670)
2289  [#4590](https://github.com/bytecodealliance/wasmtime/pull/4590)
2290  [#4375](https://github.com/bytecodealliance/wasmtime/pull/4375)
2291  [#4519](https://github.com/bytecodealliance/wasmtime/pull/4519)
2292  [#4696](https://github.com/bytecodealliance/wasmtime/pull/4696)
2293  [#4700](https://github.com/bytecodealliance/wasmtime/pull/4700)
2294  [#4703](https://github.com/bytecodealliance/wasmtime/pull/4703)
2295  [#4602](https://github.com/bytecodealliance/wasmtime/pull/4602)
2296  [#4713](https://github.com/bytecodealliance/wasmtime/pull/4713)
2297  [#4738](https://github.com/bytecodealliance/wasmtime/pull/4738)
2298  [#4667](https://github.com/bytecodealliance/wasmtime/pull/4667)
2299  [#4782](https://github.com/bytecodealliance/wasmtime/pull/4782)
2300  [#4783](https://github.com/bytecodealliance/wasmtime/pull/4783)
2301  [#4800](https://github.com/bytecodealliance/wasmtime/pull/4800)
2302
2303* Optimization work on cranelift has continued across various dimensions for
2304  some modest compile-time improvements.
2305  [#4621](https://github.com/bytecodealliance/wasmtime/pull/4621)
2306  [#4701](https://github.com/bytecodealliance/wasmtime/pull/4701)
2307  [#4697](https://github.com/bytecodealliance/wasmtime/pull/4697)
2308  [#4711](https://github.com/bytecodealliance/wasmtime/pull/4711)
2309  [#4710](https://github.com/bytecodealliance/wasmtime/pull/4710)
2310  [#4829](https://github.com/bytecodealliance/wasmtime/pull/4829)
2311
2312--------------------------------------------------------------------------------
2313
2314## 0.40.0
2315
2316Released 2022-08-20
2317
2318This was a relatively quiet release in terms of user-facing features where most
2319of the work was around the internals of Wasmtime and Cranelift. Improvements
2320internally have been made along the lines of:
2321
2322* Many more instructions are now implemented with ISLE instead of handwritten
2323  lowerings.
2324* Many improvements to the cranelift-based fuzzing.
2325* Many platform improvements for s390x including full SIMD support, running
2326  `rustc_codegen_cranelift` with features like `i128`, supporting more
2327  ABIs, etc.
2328* Much more of the component model has been implemented and is now fuzzed.
2329
2330Finally this release is currently scheduled to be the last `0.*` release of
2331Wasmtime. The upcoming release of Wasmtime on September 20 is planned to be
2332Wasmtime's 1.0 release. More information about what 1.0 means for Wasmtime is
2333available in the [1.0 RFC]
2334
2335[1.0 RFC]: https://github.com/bytecodealliance/rfcs/blob/main/accepted/wasmtime-one-dot-oh.md
2336
2337### Added
2338
2339* Stack walking has been reimplemented with frame pointers rather than with
2340  native unwind information. This means that backtraces are feasible to capture
2341  in performance-critical environments and in general stack walking is much
2342  faster than before.
2343  [#4431](https://github.com/bytecodealliance/wasmtime/pull/4431)
2344
2345* The WebAssembly `simd` proposal is now fully implemented for the s390x
2346  backend.
2347  [#4427](https://github.com/bytecodealliance/wasmtime/pull/4427)
2348
2349* Support for AArch64 has been added in the experimental native debuginfo
2350  support that Wasmtime has.
2351  [#4468](https://github.com/bytecodealliance/wasmtime/pull/4468)
2352
2353* Support building the C API of Wasmtime with CMake has been added.
2354  [#4369](https://github.com/bytecodealliance/wasmtime/pull/4369)
2355
2356* Clarification was added to Wasmtime's documentation about "tiers of support"
2357  for various features.
2358  [#4479](https://github.com/bytecodealliance/wasmtime/pull/4479)
2359
2360### Fixed
2361
2362* Support for `filestat_get` has been improved for stdio streams in WASI.
2363  [#4531](https://github.com/bytecodealliance/wasmtime/pull/4531)
2364
2365* Enabling the `vtune` feature no longer breaks builds on AArch64.
2366  [#4533](https://github.com/bytecodealliance/wasmtime/pull/4533)
2367
2368--------------------------------------------------------------------------------
2369
2370## 0.39.1
2371
2372Released 2022-07-20.
2373
2374### Fixed
2375
2376* An s390x-specific codegen bug in addition to a mistake introduced in the fix
2377  of CVE-2022-31146 were fixed.
2378  [#4490](https://github.com/bytecodealliance/wasmtime/pull/4490)
2379
2380--------------------------------------------------------------------------------
2381
2382## 0.39.0
2383
2384Released 2022-07-20
2385
2386### Added
2387
2388* Initial support for shared memories and the `threads` WebAssembly proposal
2389  has been added. Note that this feature is still experimental and not ready
2390  for production use yet.
2391  [#4187](https://github.com/bytecodealliance/wasmtime/pull/4187)
2392
2393* A new `Linker::define_unknown_imports_as_traps` method and
2394  `--trap-unknown-imports` CLI flag have been added to conveniently support
2395  running modules with imports that aren't dynamically called at runtime.
2396  [#4312](https://github.com/bytecodealliance/wasmtime/pull/4312)
2397
2398* The VTune profiling strategy can now be selected through the C API.
2399  [#4316](https://github.com/bytecodealliance/wasmtime/pull/4316)
2400
2401### Changed
2402
2403* Some methods on the `Config` structure now return `&mut Self` instead of
2404  `Result<&mut Self>` since the validation is deferred until `Engine::new`:
2405  `profiler`, `cranelift_flag_enable`, `cranelift_flag_set`, `max_wasm_stack`,
2406  `async_stack_size`, and `strategy`.
2407  [#4252](https://github.com/bytecodealliance/wasmtime/pull/4252)
2408  [#4262](https://github.com/bytecodealliance/wasmtime/pull/4262)
2409
2410* Parallel compilation of WebAssembly modules is now enabled in the C API by
2411  default.
2412  [#4270](https://github.com/bytecodealliance/wasmtime/pull/4270)
2413
2414* Implicit Cargo features of the `wasmtime` introduced through `optional`
2415  dependencies may have been removed since namespaced features are now used.
2416  It's recommended to only used the set of named `[features]` for Wasmtime.
2417  [#4293](https://github.com/bytecodealliance/wasmtime/pull/4293)
2418
2419* Register allocation has fixed a few issues related to excessive memory usage
2420  at compile time.
2421  [#4324](https://github.com/bytecodealliance/wasmtime/pull/4324)
2422
2423### Fixed
2424
2425* A refactor of `Config` was made to fix an issue that the order of calls to `Config`
2426  matters now, which may lead to unexpected behavior.
2427  [#4252](https://github.com/bytecodealliance/wasmtime/pull/4252)
2428  [#4262](https://github.com/bytecodealliance/wasmtime/pull/4262)
2429
2430* Wasmtime has been fixed to work on SSE2-only x86\_64 platforms when the
2431  `simd` feature is disabled in `Config`.
2432  [#4231](https://github.com/bytecodealliance/wasmtime/pull/4231)
2433
2434* Generation of platform-specific unwinding information is disabled if
2435  `wasm_backtrace` and `wasm_reference_types` are both disabled.
2436  [#4351](https://github.com/bytecodealliance/wasmtime/pull/4351)
2437
2438--------------------------------------------------------------------------------
2439
2440## 0.38.3
2441
2442Released 2022-07-20.
2443
2444### Fixed.
2445
2446* An s390x-specific codegen bug in addition to a mistake introduced in the fix
2447  of CVE-2022-31146 were fixed.
2448  [#4491](https://github.com/bytecodealliance/wasmtime/pull/4491)
2449
2450--------------------------------------------------------------------------------
2451
2452## 0.38.2
2453
2454Released 2022-07-20.
2455
2456### Fixed.
2457
2458* A miscompilation when handling constant divisors on AArch64 has been fixed.
2459  [CVE-2022-31169](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-7f6x-jwh5-m9r4)
2460
2461* A use-after-free possible with accidentally missing stack maps has been fixed.
2462  [CVE-2022-31146](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-5fhj-g3p3-pq9g)
2463
2464--------------------------------------------------------------------------------
2465
2466## 0.38.1
2467
2468Released 2022-06-27.
2469
2470### Fixed.
2471
2472* A register allocator bug was fixed that could affect direct users of
2473  Cranelift who use struct-return (`sret`) arguments. The bug had to do with
2474  the handling of physical register constraints in the function prologue. No
2475  impact should be possible for users of Cranelift via the Wasm frontend,
2476  including Wasmtime.
2477  [regalloc2#60](https://github.com/bytecodealliance/regalloc2/pull/60)
2478  [#4333](https://github.com/bytecodealliance/wasmtime/pull/4333)
2479
2480* Lowering bugs for the `i8x16.swizzle` and `select`-with-`v128`-inputs
2481  instructions were fixed for the x86\_64 code generator. Note that aarch64 and
2482  s390x are unaffected.
2483  [#4334](https://github.com/bytecodealliance/wasmtime/pull/4334)
2484
2485* A bug in the 8-bit lowering of integer division on x86-64 was fixed in
2486  Cranelift that could cause a register allocator panic due to an undefined
2487  value in a register. (The divide instruction does not take a register `rdx`
2488  as a source when 8 bits but the metadata incorrectly claimed it did.) No
2489  impact on Wasm/Wasmtime users, and impact on direct Cranelift embedders
2490  limited to compilation panics.
2491  [#4332](https://github.com/bytecodealliance/wasmtime/pull/4332)
2492
2493--------------------------------------------------------------------------------
2494
2495## 0.38.0
2496
2497Released 2022-06-21
2498
2499### Added
2500
2501* Enabling or disabling NaN canonicalization in generated code is now exposed
2502  through the C API.
2503  [#4154](https://github.com/bytecodealliance/wasmtime/pull/4154)
2504
2505* A user-defined callback can now be invoked when an epoch interruption happens
2506  via the `Store::epoch_deadline_callback` API.
2507  [#4152](https://github.com/bytecodealliance/wasmtime/pull/4152)
2508
2509* Basic alias analysis with redundant-load elimintation and store-to-load
2510  forwarding optimizations has been added to Cranelift.
2511  [#4163](https://github.com/bytecodealliance/wasmtime/pull/4163)
2512
2513### Changed
2514
2515* Traps originating from epoch-based interruption are now exposed as
2516  `TrapCode::Interrupt`.
2517  [#4105](https://github.com/bytecodealliance/wasmtime/pull/4105)
2518
2519* Binary builds for AArch64 now require glibc 2.17 and for s390x require glibc
2520  2.16. Previously glibc 2.28 was required.
2521  [#4171](https://github.com/bytecodealliance/wasmtime/pull/4171)
2522
2523* The `wasmtime::ValRaw` now has all of its fields listed as private and instead
2524  constructors/accessors are provided for getting at the internal data.
2525  [#4186](https://github.com/bytecodealliance/wasmtime/pull/4186)
2526
2527* The `wasm-backtrace` Cargo feature has been removed in favor of a
2528  `Config::wasm_backtrace` runtime configuration option. Additionally backtraces
2529  are now only captured when an embedder-generated trap actually reaches a
2530  WebAssembly call stack.
2531  [#4183](https://github.com/bytecodealliance/wasmtime/pull/4183)
2532
2533* Usage of `*_unchecked` APIs for `Func` in the `wasmtime` crate and C API now
2534  take a `usize` parameter indicating the number of `ValRaw` values behind
2535  the associated pointer.
2536  [#4192](https://github.com/bytecodealliance/wasmtime/pull/4192)
2537
2538### Fixed
2539
2540* An improvement was made to the spill-slot allocation in code generation to fix
2541  an issue where some stack slots accidentally weren't reused. This issue was
2542  introduced with the landing of regalloc2 in 0.37.0 and may have resulted in
2543  larger-than-intended increases in stack frame sizes.
2544  [#4222](https://github.com/bytecodealliance/wasmtime/pull/4222)
2545
2546--------------------------------------------------------------------------------
2547
2548## 0.37.0
2549
2550Released 2022-05-20
2551
2552### Added
2553
2554* Updated Cranelift to use regalloc2, a new register allocator. This should
2555  result in ~20% faster compile times, and for programs that suffered from
2556  register-allocation pressure before, up to ~20% faster generated code.
2557  [#3989](https://github.com/bytecodealliance/wasmtime/pull/3989)
2558
2559* Pre-built binaries for macOS M1 machines are now available as release
2560  artifacts.
2561  [#3983](https://github.com/bytecodealliance/wasmtime/pull/3983)
2562
2563* Copy-on-write images of memory can now be manually initialized for a `Module`
2564  with an explicit method call, but it is still not required to call this method
2565  and will automatically otherwise happen on the first instantiation.
2566  [#3964](https://github.com/bytecodealliance/wasmtime/pull/3964)
2567
2568### Fixed
2569
2570* Using `InstancePre::instantiate` or `Linker::instantiate` will now panic as
2571  intended when used with an async-configured `Store`.
2572  [#3972](https://github.com/bytecodealliance/wasmtime/pull/3972)
2573
2574### Changed
2575
2576* The unsafe `ValRaw` type in the `wasmtime` crate now always stores its values
2577  in little-endian format instead of the prior native-endian format. Users of
2578  `ValRaw` are recommended to audit their existing code for usage to continue
2579  working on big-endian platforms.
2580  [#4035](https://github.com/bytecodealliance/wasmtime/pull/4035)
2581
2582### Removed
2583
2584* Support for `Config::paged_memory_initialization` and the `uffd` crate feature
2585  have been removed from the `wasmtime` crate. Users should migrate to using
2586  `Config::memory_init_cow` which is more portable and faster at this point.
2587  [#4040](https://github.com/bytecodealliance/wasmtime/pull/4040)
2588
2589--------------------------------------------------------------------------------
2590
2591## 0.36.0
2592
2593Released 2022-04-20
2594
2595### Added
2596
2597* Support for epoch-based interruption has been added to the C API.
2598  [#3925](https://github.com/bytecodealliance/wasmtime/pull/3925)
2599
2600* Support for disabling libunwind-based backtraces of WebAssembly code at
2601  compile time has been added.
2602  [#3932](https://github.com/bytecodealliance/wasmtime/pull/3932)
2603
2604* Async support for call hooks has been added to optionally execute "blocking"
2605  work whenever a wasm module is entered or exited relative to the host.
2606  [#3876](https://github.com/bytecodealliance/wasmtime/pull/3876)
2607
2608### Fixed
2609
2610* Loading a `Module` will now check, at runtime, that the compilation settings
2611  enabled in a `Config` are compatible with the native host. For example this
2612  ensures that if avx2 is enabled that the host actually has avx2 support.
2613  [#3899](https://github.com/bytecodealliance/wasmtime/pull/3899)
2614
2615### Removed
2616
2617* Support for `Config::interruptable` and `InterruptHandle` has been removed
2618  from the `wasmtime` crate. Users should migrate to using epoch-based
2619  interruption instead.
2620  [#3925](https://github.com/bytecodealliance/wasmtime/pull/3925)
2621
2622* The module linking implementation of Wasmtime has been removed to make room
2623  for the upcoming support for the component model.
2624  [#3958](https://github.com/bytecodealliance/wasmtime/pull/3958)
2625
2626--------------------------------------------------------------------------------
2627
2628## 0.35.3
2629
2630Released 2022-04-11.
2631
2632### Fixed
2633
2634* Backported a bugfix for an instruction lowering issue that could cause a
2635  regalloc panic due to an undefined register in some cases. No miscompilation
2636  was ever possible, but panics would result in a compilation failure.
2637  [#4012](https://github.com/bytecodealliance/wasmtime/pull/4012)
2638
2639--------------------------------------------------------------------------------
2640
2641## 0.35.2
2642
2643Released 2022-03-31.
2644
2645### Security Fixes
2646
2647* [CVE-2022-24791](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-gwc9-348x-qwv2):
2648  Fixed a use after free with `externref`s and epoch interruption.
2649
2650## 0.35.1
2651
2652Released 2022-03-09.
2653
2654### Fixed
2655
2656* Fixed a bug in the x86-64 lowering of the `uextend` opcode for narrow (`i8`,
2657  `i16`) integer sources when the value is produced by one of several
2658  arithmetic instructions.
2659  [#3906](https://github.com/bytecodealliance/wasmtime/pull/3906)
2660
2661## 0.35.0
2662
2663Released 2022-03-07.
2664
2665### Added
2666
2667* The `wasmtime_wasi::add_to_linker` function now allows providing
2668  a context object of a custom type instead of `wasmtime_wasi::WasiCtx`,
2669  as long as that type implements the required WASI snapshot traits.
2670  This allows, for example, wrapping `WasiCtx` into a struct and providing
2671  custom implementations for those traits to override the default behaviour.
2672
2673### Changed
2674
2675* WebAssembly tables of `funcref` values are now lazily initialized which can,
2676  in some cases, greatly speed up instantiation of a module.
2677  [#3733](https://github.com/bytecodealliance/wasmtime/pull/3733)
2678
2679* The `memfd` feature in 0.34.0, now renamed to `memory-init-cow`, has been
2680  enabled by default. This means that, where applicable, WebAssembly linear
2681  memories are now initialized with copy-on-write mappings. Support from this
2682  has been expanded from Linux-only to include macOS and other Unix systems when
2683  modules are loaded from precompiled `*.cwasm` files on disk.
2684  [#3777](https://github.com/bytecodealliance/wasmtime/pull/3777)
2685  [#3778](https://github.com/bytecodealliance/wasmtime/pull/3778)
2686  [#3787](https://github.com/bytecodealliance/wasmtime/pull/3787)
2687  [#3819](https://github.com/bytecodealliance/wasmtime/pull/3819)
2688  [#3831](https://github.com/bytecodealliance/wasmtime/pull/3831)
2689
2690* Clarify that SSE 4.2 (and prior) is required for running WebAssembly code with
2691  simd support enabled on x86\_64.
2692  [#3816](https://github.com/bytecodealliance/wasmtime/pull/3816)
2693  [#3817](https://github.com/bytecodealliance/wasmtime/pull/3817)
2694  [#3833](https://github.com/bytecodealliance/wasmtime/pull/3833)
2695  [#3825](https://github.com/bytecodealliance/wasmtime/pull/3825)
2696
2697* Support for profiling with VTune is now enabled at compile time by default,
2698  but it remains disabled at runtime by default.
2699  [#3821](https://github.com/bytecodealliance/wasmtime/pull/3821)
2700
2701* The `ModuleLimits` type has been removed from the configuration of the pooling
2702  allocator in favor of configuring the total size of an instance allocation
2703  rather than each individual field.
2704  [#3837](https://github.com/bytecodealliance/wasmtime/pull/3837)
2705
2706* The native stack size allowed for WebAssembly has been decreased from 1 MiB to
2707  512 KiB on all platforms to better accomodate running wasm on the main thread
2708  on Windows.
2709  [#3861](https://github.com/bytecodealliance/wasmtime/pull/3861)
2710
2711* The `wasi-common` crate now supports doing polls for both read and write
2712  interest on a file descriptor at the same time.
2713  [#3866](https://github.com/bytecodealliance/wasmtime/pull/3866)
2714
2715### Fixed
2716
2717* The `Store::call_hook` callback is now invoked when entering host functions
2718  defined with `*_unchecked` variants.
2719  [#3881](https://github.com/bytecodealliance/wasmtime/pull/3881)
2720
2721### Removed
2722
2723* The incomplete and unmaintained ARM32 backend has been removed from Cranelift.
2724  [#3799](https://github.com/bytecodealliance/wasmtime/pull/3799)
2725
2726--------------------------------------------------------------------------------
2727
2728## 0.34.2
2729
2730Released 2022-03-31.
2731
2732### Security Fixes
2733
2734* [CVE-2022-24791](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-gwc9-348x-qwv2):
2735  Fixed a use after free with `externref`s and epoch interruption.
2736
2737## 0.34.1
2738
2739Released 2022-02-16.
2740
2741### Security Fixes
2742
2743* [CVE-2022-23636](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-88xq-w8cq-xfg7):
2744  Fixed an invalid drop of a partially-initialized instance in the pooling instance
2745  allocator.
2746
2747## 0.33.1
2748
2749Released 2022-02-16.
2750
2751### Security Fixes
2752
2753* [CVE-2022-23636](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-88xq-w8cq-xfg7):
2754  Fixed an invalid drop of a partially-initialized instance in the pooling instance
2755  allocator.
2756
2757## 0.34.0
2758
2759Released 2022-02-07.
2760
2761### Fixed
2762
2763* The `wasi-common` default implementation of some attributes of files has been
2764  updated to ensure that `wasi-libc`'s `isatty` function works as intended.
2765  [#3696](https://github.com/bytecodealliance/wasmtime/pull/3696)
2766
2767* A benign debug assertion related to `externref` and garbage-collection has
2768  been fixed.
2769  [#3734](https://github.com/bytecodealliance/wasmtime/pull/3734)
2770
2771### Added
2772
2773* Function names are now automatically demangled when informing profilers of
2774  regions of JIT code to apply Rust-specific demangling rules if applicable.
2775  [#3683](https://github.com/bytecodealliance/wasmtime/pull/3683)
2776
2777* Support for profiling JIT-generated trampolines with VTune has been added.
2778  [#3687](https://github.com/bytecodealliance/wasmtime/pull/3687)
2779
2780* Wasmtime now supports a new method of async preemption dubbed "epoch-based
2781  interruption" which is intended to be much more efficient than the current
2782  fuel-based method of preemption.
2783  [#3699](https://github.com/bytecodealliance/wasmtime/pull/3699)
2784
2785* On Linux Wasmtime will now by default use copy-on-write mappings to initialize
2786  memories of wasm modules where possible, accelerating instantiation by
2787  avoiding costly memory copies. When combined with the pooling allocator this
2788  can also be used to speed up instance-reuse cases due to fewer syscalls to
2789  change memory mappings being necessary.
2790  [#3697](https://github.com/bytecodealliance/wasmtime/pull/3697)
2791  [#3738](https://github.com/bytecodealliance/wasmtime/pull/3738)
2792  [#3760](https://github.com/bytecodealliance/wasmtime/pull/3760)
2793
2794* Wasmtime now supports the recently-added `sock_accept` WASI function.
2795  [#3711](https://github.com/bytecodealliance/wasmtime/pull/3711)
2796
2797* Cranelift now has support for specifying blocks as cold.
2798  [#3698](https://github.com/bytecodealliance/wasmtime/pull/3698)
2799
2800### Changed
2801
2802* Many more instructions for the x64 backend have been migrated to ISLE,
2803  additionally with refactorings to make incorrect lowerings harder to
2804  accidentally write.
2805  [#3653](https://github.com/bytecodealliance/wasmtime/pull/3653)
2806  [#3659](https://github.com/bytecodealliance/wasmtime/pull/3659)
2807  [#3681](https://github.com/bytecodealliance/wasmtime/pull/3681)
2808  [#3686](https://github.com/bytecodealliance/wasmtime/pull/3686)
2809  [#3688](https://github.com/bytecodealliance/wasmtime/pull/3688)
2810  [#3690](https://github.com/bytecodealliance/wasmtime/pull/3690)
2811  [#3752](https://github.com/bytecodealliance/wasmtime/pull/3752)
2812
2813* More instructions in the aarch64 backend are now lowered with ISLE.
2814  [#3658](https://github.com/bytecodealliance/wasmtime/pull/3658)
2815  [#3662](https://github.com/bytecodealliance/wasmtime/pull/3662)
2816
2817* The s390x backend's lowering rules are now almost entirely defined with ISLE.
2818  [#3702](https://github.com/bytecodealliance/wasmtime/pull/3702)
2819  [#3703](https://github.com/bytecodealliance/wasmtime/pull/3703)
2820  [#3706](https://github.com/bytecodealliance/wasmtime/pull/3706)
2821  [#3717](https://github.com/bytecodealliance/wasmtime/pull/3717)
2822  [#3723](https://github.com/bytecodealliance/wasmtime/pull/3723)
2823  [#3724](https://github.com/bytecodealliance/wasmtime/pull/3724)
2824
2825* Instantiation of modules in Wasmtime has been further optimized now that the
2826  copy-on-write memory initialization removed the previously most-expensive part
2827  of instantiating a module.
2828  [#3727](https://github.com/bytecodealliance/wasmtime/pull/3727)
2829  [#3739](https://github.com/bytecodealliance/wasmtime/pull/3739)
2830  [#3741](https://github.com/bytecodealliance/wasmtime/pull/3741)
2831  [#3742](https://github.com/bytecodealliance/wasmtime/pull/3742)
2832
2833--------------------------------------------------------------------------------
2834
2835## 0.33.0
2836
2837Released 2022-01-05.
2838
2839### Added
2840
2841* Compiled wasm modules may now optionally omit debugging information about
2842  mapping addresses to source locations, resulting in smaller binaries.
2843  [#3598](https://github.com/bytecodealliance/wasmtime/pull/3598)
2844
2845* The WebAssembly SIMD proposal is now enabled by default.
2846  [#3601](https://github.com/bytecodealliance/wasmtime/pull/3601)
2847
2848--------------------------------------------------------------------------------
2849
2850## 0.32.1
2851
2852Released 2022-01-04.
2853
2854### Fixed
2855
2856* Cranelift: remove recently-added build dependency on `sha2` to allow usage in
2857  some dependency-sensitive environments, by computing ISLE manifest hashes
2858  with a different hash function.
2859  [#3619](https://github.com/bytecodealliance/wasmtime/pull/3619)
2860
2861* Cranelift: fixed 8- and 16-bit behavior of popcount (bit population count)
2862  instruction. Does not affect Wasm frontend.
2863  [#3617](https://github.com/bytecodealliance/wasmtime/pull/3617)
2864
2865* Cranelift: fixed miscompilation of 8- and 16-bit bit-rotate instructions.
2866  Does not affect Wasm frontend.
2867  [#3610](https://github.com/bytecodealliance/wasmtime/pull/3610)
2868
2869--------------------------------------------------------------------------------
2870
2871## 0.32.0
2872
2873Released 2021-12-13.
2874
2875### Added
2876
2877* A new configuration option has been added to force using a "static" memory
2878  style to automatically limit growth of memories in some configurations.
2879  [#3503](https://github.com/bytecodealliance/wasmtime/pull/3503)
2880
2881* The `InstancePre<T>` type now implements `Clone`.
2882  [#3510](https://github.com/bytecodealliance/wasmtime/pull/3510)
2883
2884* Cranelift's instruction selection process has begun to be migrated towards the
2885  ISLE compiler and definition language.
2886  [#3506](https://github.com/bytecodealliance/wasmtime/pull/3506)
2887
2888* A `pooling-allocator` feature has been added, which is on-by-default, to
2889  disable the pooling allocator at compile time.
2890  [#3514](https://github.com/bytecodealliance/wasmtime/pull/3514)
2891
2892### Fixed
2893
2894* A possible panic when parsing a WebAssembly `name` section has been fixed.
2895  [#3509](https://github.com/bytecodealliance/wasmtime/pull/3509)
2896
2897* Generating native DWARF information for some C-produced modules has been
2898  fixed, notably those where there may be DWARF about dead code.
2899  [#3498](https://github.com/bytecodealliance/wasmtime/pull/3498)
2900
2901* A number of SIMD code generation bugs have been fixed in the x64 backend
2902  by migrating their lowerings to ISLE.
2903
2904--------------------------------------------------------------------------------
2905
2906## 0.31.0
2907
2908Released 2021-10-29.
2909
2910### Added
2911
2912* New `Func::new_unchecked` and `Func::call_unchecked` APIs have been added with
2913  accompanying functions in the C API to improve the performance of calls into
2914  wasm and the host in the C API.
2915  [#3350](https://github.com/bytecodealliance/wasmtime/pull/3350)
2916
2917* Release binaries are now available for the s390x-unknown-linux-gnu
2918  architecture.
2919  [#3372](https://github.com/bytecodealliance/wasmtime/pull/3372)
2920
2921* A new `ResourceLimiterAsync` trait is added which allows asynchronous blocking
2922  of WebAssembly on instructions such as `memory.grow`.
2923  [#3393](https://github.com/bytecodealliance/wasmtime/pull/3393)
2924
2925### Changed
2926
2927* The `Func::call` method now takes a slice to write the results into rather
2928  than returning a boxed slice.
2929  [#3319](https://github.com/bytecodealliance/wasmtime/pull/3319)
2930
2931* Trampolines are now covered when jitdump profiling is enabled.
2932  [#3344](https://github.com/bytecodealliance/wasmtime/pull/3344)
2933
2934### Fixed
2935
2936* Debugging with GDB has been fixed on Windows.
2937  [#3373](https://github.com/bytecodealliance/wasmtime/pull/3373)
2938
2939* Some quadradic behavior in Wasmtime's compilation of modules has been fixed.
2940  [#3469](https://github.com/bytecodealliance/wasmtime/pull/3469)
2941  [#3466](https://github.com/bytecodealliance/wasmtime/pull/3466)
2942
2943* Bounds-checks for wasm memory accesses in certain non-default configurations
2944  have been fixed to correctly allow loads at the end of the address space.
2945  [#3462](https://github.com/bytecodealliance/wasmtime/pull/3462)
2946
2947* When type-checking memories and tables for satisfying instance imports the
2948  runtime size of the table/memory is now consulted instead of the object's
2949  original type.
2950  [#3450](https://github.com/bytecodealliance/wasmtime/pull/3450)
2951
2952### Removed
2953
2954* The Lightbeam backend has been removed, as per [RFC 14].
2955  [#3390](https://github.com/bytecodealliance/wasmtime/pull/3390)
2956
2957[RFC 14]: https://github.com/bytecodealliance/rfcs/pull/14
2958
2959* Cranelift's old x86 backend has been removed, as per [RFC 12].
2960  [#3309](https://github.com/bytecodealliance/wasmtime/pull/3009)
2961
2962[RFC 12]: https://github.com/bytecodealliance/rfcs/pull/12
2963
2964## 0.30.0
2965
2966Released 2021-09-17.
2967
2968### Security Fixes
2969
2970* [CVE-2021-39216](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-v4cp-h94r-m7xf):
2971  Fixed a use after free passing `externref`s to Wasm in Wasmtime.
2972
2973* [CVE-2021-39218](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-4873-36h9-wv49):
2974  Fixed an out-of-bounds read/write and invalid free with `externref`s and GC
2975  safepoints in Wasmtime.
2976
2977* [CVE-2021-39219](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-q879-9g95-56mx):
2978  Fixed a bug where using two different `Engine`s with the same `Linker`-define
2979  functions caused unsafety without `unsafe` blocks.
2980
2981### Added
2982
2983* Added experimental support for the in-progress 64-bit memories Wasm proposal.
2984
2985* Added support to build Wasmtime without the compiler. This lets you run
2986  pre-compiled Wasm modules, without the ability (or potential attack surface)
2987  of compiling new Wasm modules. The compilation functionality is gated by the
2988  on-by-default `cranelift` cargo feature.
2989
2990* Added support for NaN canonicalization with SIMD vectors.
2991
2992* Added support for differential fuzzing against V8's Wasm engine.
2993
2994* Added support for fuzzing against the Wasm spec interpreter.
2995
2996* Enabled SIMD fuzzing on oss-fuzz.
2997
2998### Changed
2999
3000* A variety of performance improvements to loading pre-compiled modules.
3001
3002* A variety of performance improvements to function calls, both through Rust and
3003  the C API.
3004
3005* Leaf functions that do not use the stack no longer bump the frame pointer on
3006  aarch64 and s390x.
3007
3008* Many updates and expanded instruction support to the in-progress CLIF
3009  interpreter.
3010
3011* Expanded fuzzing of reference types and GC.
3012
3013### Fixed
3014
3015* A number of fixes to both aarch64 and x86_64 support for the Wasm SIMD
3016  proposal and the underlying CLIF vector instructions.
3017
3018* Fixed a potential infinite loop in the SSA computation for
3019  `cranelift-frontend`. This was not reachable from `cranelift-wasm` or
3020  Wasmtime, but might have affected general Cranelift users.
3021
3022### Removed
3023
3024* The `wasmtime wasm2obj` subcommand has been removed. Generating raw object
3025  files for linking natively is no longer supported. Use the `wasmtime compile`
3026  subcommand to pre-compile a Wasm module and `wasmtime run` to run pre-compiled
3027  Wasm modules.
3028
3029## 0.29.0
3030
3031Released 2021-08-02.
3032
3033### Changed
3034
3035* Instance exports are now loaded lazily from instances instead of eagerly as
3036  they were before. This is an internal-only change and is not a breaking
3037  change.
3038  [#2984](https://github.com/bytecodealliance/wasmtime/pull/2984)
3039
3040* All linear memories created by Wasmtime will now, by default, have guard pages
3041  in front of them in addition to after them. This is intended to help mitigate
3042  future bugs in Cranelift, should they arise.
3043  [#2977](https://github.com/bytecodealliance/wasmtime/pull/2977)
3044
3045* Linear memories now correctly support a maximum size of 4GB. Previously, the
3046  limit field was 32 bits, which did not properly support a full 4GB memory.
3047  This update is also a necessary change in preparation for future memory64
3048  support.
3049  [#3013](https://github.com/bytecodealliance/wasmtime/pull/3013)
3050  [#3134](https://github.com/bytecodealliance/wasmtime/pull/3134)
3051
3052* Injection counts of fuel into a `wasmtime::Store` now uses a u64 instead of a
3053  u32.
3054  [#3048](https://github.com/bytecodealliance/wasmtime/pull/3048)
3055
3056### Added
3057
3058* Support for `i128` has improved in the AArch64 backend.
3059  [#2959](https://github.com/bytecodealliance/wasmtime/pull/2959)
3060  [#2975](https://github.com/bytecodealliance/wasmtime/pull/2975)
3061  [#2985](https://github.com/bytecodealliance/wasmtime/pull/2985)
3062  [#2990](https://github.com/bytecodealliance/wasmtime/pull/2990)
3063  [#3002](https://github.com/bytecodealliance/wasmtime/pull/3002)
3064  [#3004](https://github.com/bytecodealliance/wasmtime/pull/3004)
3065  [#3005](https://github.com/bytecodealliance/wasmtime/pull/3005)
3066  [#3008](https://github.com/bytecodealliance/wasmtime/pull/3008)
3067  [#3027](https://github.com/bytecodealliance/wasmtime/pull/3027)
3068
3069* The s390x backend now supports z14 and atomics.
3070  [#2988](https://github.com/bytecodealliance/wasmtime/pull/2988)
3071  [#2991](https://github.com/bytecodealliance/wasmtime/pull/2991)
3072
3073* The `wasmtime::Linker` type now implements `Clone`.
3074  [#2993](https://github.com/bytecodealliance/wasmtime/pull/2993)
3075
3076* Support for the SIMD proposal on both x86\_64 and AArch64 has improved. On
3077  x86\_64, all SIMD opcodes are now supported.
3078  [#2997](https://github.com/bytecodealliance/wasmtime/pull/2997)
3079  [#3035](https://github.com/bytecodealliance/wasmtime/pull/3035)
3080  [#2982](https://github.com/bytecodealliance/wasmtime/pull/2982)
3081  [#3084](https://github.com/bytecodealliance/wasmtime/pull/3084)
3082  [#3082](https://github.com/bytecodealliance/wasmtime/pull/3082)
3083  [#3107](https://github.com/bytecodealliance/wasmtime/pull/3107)
3084  [#3105](https://github.com/bytecodealliance/wasmtime/pull/3105)
3085  [#3114](https://github.com/bytecodealliance/wasmtime/pull/3114)
3086  [#3070](https://github.com/bytecodealliance/wasmtime/pull/3070)
3087  [#3126](https://github.com/bytecodealliance/wasmtime/pull/3126)
3088
3089* A `Trap` can now display its reason without also displaying the backtrace.
3090  [#3033](https://github.com/bytecodealliance/wasmtime/pull/3033)
3091
3092* An initiall fuzzer for CLIF has been added.
3093  [#3038](https://github.com/bytecodealliance/wasmtime/pull/3038)
3094
3095* High-level architecture documentation has been added for Wasmtime.
3096  [#3019](https://github.com/bytecodealliance/wasmtime/pull/3019)
3097
3098* Support for multi-memory can now be configured in Wasmtime's C API.
3099  [#3071](https://github.com/bytecodealliance/wasmtime/pull/3071)
3100
3101* The `wasmtime` crate now supports a `posix-signals-on-macos` feature to force
3102  the usage of signals instead of mach ports to handle traps on macOS.
3103  [#3063](https://github.com/bytecodealliance/wasmtime/pull/3063)
3104
3105* Wasmtime's C API now has a `wasmtime_trap_code` function to get the raw trap
3106  code, if present, for a trap.
3107  [#3086](https://github.com/bytecodealliance/wasmtime/pull/3086)
3108
3109* Wasmtime's C API now has a `wasmtime_linker_define_func` function to define a
3110  store-independent function within a linker.
3111  [#3122](https://github.com/bytecodealliance/wasmtime/pull/3122)
3112
3113* A `wasmtime::Linker::module_async` function was added as the asynchronous
3114  counterpart to `wasmtime::Linker::module`.
3115  [#3121](https://github.com/bytecodealliance/wasmtime/pull/3121)
3116
3117### Fixed
3118
3119* Compiling the `wasmtime` crate into a `dylib` crate type has been fixed.
3120  [#3010](https://github.com/bytecodealliance/wasmtime/pull/3010)
3121
3122* The enter/exit hooks for WebAssembly are now executed for an instance's
3123  `start` function, if present.
3124  [#3001](https://github.com/bytecodealliance/wasmtime/pull/3001)
3125
3126* Some WASI functions in `wasi-common` have been fixed for big-endian platforms.
3127  [#3016](https://github.com/bytecodealliance/wasmtime/pull/3016)
3128
3129* Wasmtime no longer erroneously assumes that all custom sections may contain
3130  DWARF information, reducing instances of `Trap`'s `Display` implementation
3131  providing misleading information to set an env var to get more information.
3132  [#3083](https://github.com/bytecodealliance/wasmtime/pull/3083)
3133
3134* Some issues with parsing DWARF debug information have been fixed.
3135  [#3116](https://github.com/bytecodealliance/wasmtime/pull/3116)
3136
3137## 0.28.0
3138
3139Released 2021-06-09.
3140
3141### Changed
3142
3143* Breaking: Wasmtime's embedding API has been redesigned, as specified in [RFC
3144  11]. Rust users can now enjoy easier times with `Send` and `Sync`, and all
3145  users can now more clearly manage memory, especially in the C API. Language
3146  embeddings have been updated to the new API as well.
3147  [#2897](https://github.com/bytecodealliance/wasmtime/pull/2897)
3148
3149[RFC 11]: https://github.com/bytecodealliance/rfcs/pull/11
3150
3151### Added
3152
3153* A new `InstancePre` type, created with `Linker::instantiate_pre`, has been
3154  added to perform type-checking of an instance once and reduce the work done
3155  for each instantiation of a module:
3156  [#2962](https://github.com/bytecodealliance/wasmtime/pull/2962)
3157
3158* Deserialization of a module can now optionally skip checking the wasmtime
3159  version string:
3160  [#2945](https://github.com/bytecodealliance/wasmtime/pull/2945)
3161
3162* A method has been exposed to frontload per-thread initialization costs if the
3163  latency of every last wasm call is important:
3164  [#2946](https://github.com/bytecodealliance/wasmtime/pull/2946)
3165
3166* Hooks have been added for entry/exit into wasm code to allow embeddings to
3167  track time and other properties about execution in a wasm environment:
3168  [#2952](https://github.com/bytecodealliance/wasmtime/pull/2952)
3169
3170* A [C++ embedding of Wasmtime has been written][cpp].
3171
3172[RFC 11]: https://github.com/bytecodealliance/rfcs/pull/11
3173[cpp]: https://github.com/bytecodealliance/wasmtime-cpp
3174
3175### Fixed
3176
3177* Multiple returns on macOS AArch64 have been fixed:
3178  [#2956](https://github.com/bytecodealliance/wasmtime/pull/2956)
3179
3180## 0.27.0
3181
3182Released 2021-05-21.
3183
3184### Security Fixes
3185
3186* Fixed a security issue in Cranelift's x64 backend that could result in a heap
3187  sandbox escape due to an incorrect sign-extension:
3188  [#2913](https://github.com/bytecodealliance/wasmtime/issues/2913).
3189
3190### Added
3191
3192* Support for IBM z/Archiecture (`s390x`) machines in Cranelift and Wasmtime:
3193  [#2836](https://github.com/bytecodealliance/wasmtime/pull/2836),
3194  [#2837](https://github.com/bytecodealliance/wasmtime/pull/2837),
3195  [#2838](https://github.com/bytecodealliance/wasmtime/pull/2838),
3196  [#2843](https://github.com/bytecodealliance/wasmtime/pull/2843),
3197  [#2854](https://github.com/bytecodealliance/wasmtime/pull/2854),
3198  [#2870](https://github.com/bytecodealliance/wasmtime/pull/2870),
3199  [#2871](https://github.com/bytecodealliance/wasmtime/pull/2871),
3200  [#2872](https://github.com/bytecodealliance/wasmtime/pull/2872),
3201  [#2874](https://github.com/bytecodealliance/wasmtime/pull/2874).
3202
3203* Improved async support in wasi-common runtime:
3204  [#2832](https://github.com/bytecodealliance/wasmtime/pull/2832).
3205
3206* Added `Store::with_limits`, `StoreLimits`, and `ResourceLimiter` to the
3207  Wasmtime API to help with enforcing resource limits at runtime. The
3208  `ResourceLimiter` trait can be implemented by custom resource limiters to
3209  decide if linear memories or tables can be grown.
3210
3211* Added `allow-unknown-exports` option for the run command:
3212  [#2879](https://github.com/bytecodealliance/wasmtime/pull/2879).
3213
3214* Added API to notify that a `Store` has moved to a new thread:
3215  [#2822](https://github.com/bytecodealliance/wasmtime/pull/2822).
3216
3217* Documented guidance around using Wasmtime in multithreaded contexts:
3218  [#2812](https://github.com/bytecodealliance/wasmtime/pull/2812).
3219  In the future, the Wasmtime API will change to allow some of its core types
3220  to be Send/Sync; see the in-progress
3221  [#2897](https://github.com/bytecodealliance/wasmtime/pull/2897) for details.
3222
3223* Support calls from native code to multiple-return-value functions:
3224  [#2806](https://github.com/bytecodealliance/wasmtime/pull/2806).
3225
3226### Changed
3227
3228* Breaking: `Memory::new` has been changed to return `Result` as creating a
3229  host memory object is now a fallible operation when the initial size of
3230  the memory exceeds the store limits.
3231
3232### Fixed
3233
3234* Many instruction selection improvements on x64 and aarch64:
3235  [#2819](https://github.com/bytecodealliance/wasmtime/pull/2819),
3236  [#2828](https://github.com/bytecodealliance/wasmtime/pull/2828),
3237  [#2823](https://github.com/bytecodealliance/wasmtime/pull/2823),
3238  [#2862](https://github.com/bytecodealliance/wasmtime/pull/2862),
3239  [#2886](https://github.com/bytecodealliance/wasmtime/pull/2886),
3240  [#2889](https://github.com/bytecodealliance/wasmtime/pull/2889),
3241  [#2905](https://github.com/bytecodealliance/wasmtime/pull/2905).
3242
3243* Improved performance of Wasmtime runtime substantially:
3244  [#2811](https://github.com/bytecodealliance/wasmtime/pull/2811),
3245  [#2818](https://github.com/bytecodealliance/wasmtime/pull/2818),
3246  [#2821](https://github.com/bytecodealliance/wasmtime/pull/2821),
3247  [#2847](https://github.com/bytecodealliance/wasmtime/pull/2847),
3248  [#2900](https://github.com/bytecodealliance/wasmtime/pull/2900).
3249
3250* Fixed WASI issue with file metadata on Windows:
3251  [#2884](https://github.com/bytecodealliance/wasmtime/pull/2884).
3252
3253* Fixed an issue with debug info and an underflowing (trapping) offset:
3254  [#2866](https://github.com/bytecodealliance/wasmtime/pull/2866).
3255
3256* Fixed an issue with unwind information in the old x86 backend:
3257  [#2845](https://github.com/bytecodealliance/wasmtime/pull/2845).
3258
3259* Fixed i32 spilling in x64 backend:
3260  [#2840](https://github.com/bytecodealliance/wasmtime/pull/2840).
3261
3262## 0.26.0
3263
3264Released 2021-04-05.
3265
3266### Added
3267
3268* Added the `wasmtime compile` command to support AOT compilation of Wasm
3269  modules. This adds the `Engine::precompile_module` method. Also added the
3270  `Config::target` method to change the compilation target of the
3271  configuration. This can be used in conjunction with
3272  `Engine::precompile_module` to target a different host triple than the
3273  current one.
3274  [#2791](https://github.com/bytecodealliance/wasmtime/pull/2791)
3275
3276* Support for macOS on aarch64 (Apple M1 Silicon), including Apple-specific
3277  calling convention details and unwinding/exception handling using Mach ports.
3278  [#2742](https://github.com/bytecodealliance/wasmtime/pull/2742),
3279  [#2723](https://github.com/bytecodealliance/wasmtime/pull/2723)
3280
3281* A number of SIMD instruction implementations in the new x86-64 backend.
3282  [#2771](https://github.com/bytecodealliance/wasmtime/pull/2771)
3283
3284* Added the `Config::cranelift_flag_enable` method to enable setting Cranelift
3285  boolean flags or presets in a config.
3286
3287* Added CLI option `--cranelift-enable` to enable boolean settings and ISA presets.
3288
3289* Deduplicate function signatures in Wasm modules.
3290  [#2772](https://github.com/bytecodealliance/wasmtime/pull/2772)
3291
3292* Optimize overheads of calling into Wasm functions.
3293  [#2757](https://github.com/bytecodealliance/wasmtime/pull/2757),
3294  [#2759](https://github.com/bytecodealliance/wasmtime/pull/2759)
3295
3296* Improvements related to Module Linking: compile fewer trampolines;
3297
3298  [#2774](https://github.com/bytecodealliance/wasmtime/pull/2774)
3299
3300* Re-export sibling crates from `wasmtime-wasi` to make embedding easier
3301  without needing to match crate versions.
3302  [#2776](https://github.com/bytecodealliance/wasmtime/pull/2776)
3303
3304### Changed
3305
3306* Switched the default compiler backend on x86-64 to Cranelift's new backend.
3307  This should not have any user-visible effects other than possibly runtime
3308  performance improvements. The old backend is still available with the
3309  `old-x86-backend` feature flag to the `cranelift-codegen` or `wasmtime`
3310  crates, or programmatically with `BackendVariant::Legacy`. We plan to
3311  maintain the old backend for at least one more release and ensure it works on
3312  CI.
3313  [#2718](https://github.com/bytecodealliance/wasmtime/pull/2718)
3314
3315* Breaking: `Module::deserialize` has been removed in favor of `Module::new`.
3316
3317* Breaking: `Config::cranelift_clear_cpu_flags` was removed. Use `Config::target`
3318  to clear the CPU flags for the host's target.
3319
3320* Breaking: `Config::cranelift_other_flag` was renamed to `Config::cranelift_flag_set`.
3321
3322* CLI changes:
3323  * Wasmtime CLI options to enable WebAssembly features have been replaced with
3324    a singular `--wasm-features` option. The previous options are still
3325    supported, but are not displayed in help text.
3326  * Breaking: the CLI option `--cranelift-flags` was changed to
3327    `--cranelift-set`.
3328  * Breaking: the CLI option `--enable-reference-types=false` has been changed
3329    to `--wasm-features=-reference-types`.
3330  * Breaking: the CLI option `--enable-multi-value=false` has been changed to
3331    `--wasm-features=-multi-value`.
3332  * Breaking: the CLI option `--enable-bulk-memory=false` has been changed to
3333    `--wasm-features=-bulk-memory`.
3334
3335* Improved error-reporting in wiggle.
3336  [#2760](https://github.com/bytecodealliance/wasmtime/pull/2760)
3337
3338* Make WASI sleeping fallible (some systems do not support sleep).
3339  [#2756](https://github.com/bytecodealliance/wasmtime/pull/2756)
3340
3341* WASI: Support `poll_oneoff` with a sleep.
3342  [#2753](https://github.com/bytecodealliance/wasmtime/pull/2753)
3343
3344* Allow a `StackMapSink` to be passed when defining functions with
3345  `cranelift-module`.
3346  [#2739](https://github.com/bytecodealliance/wasmtime/pull/2739)
3347
3348* Some refactoring in new x86-64 backend to prepare for VEX/EVEX (e.g.,
3349  AVX-512) instruction encodings to be supported.
3350  [#2799](https://github.com/bytecodealliance/wasmtime/pull/2799)
3351
3352### Fixed
3353
3354* Fixed a corner case in `srem` (signed remainder) in the new x86-64 backend:
3355  `INT_MIN % -1` should return `0`, rather than trapping. This only occurred
3356  when `avoid_div_traps == false` was set by the embedding.
3357  [#2763](https://github.com/bytecodealliance/wasmtime/pull/2763)
3358
3359* Fixed a memory leak of the `Store` when an instance traps.
3360  [#2803](https://github.com/bytecodealliance/wasmtime/pull/2803)
3361
3362* Some fuzzing-related fixes.
3363  [#2788](https://github.com/bytecodealliance/wasmtime/pull/2788),
3364  [#2770](https://github.com/bytecodealliance/wasmtime/pull/2770)
3365
3366* Fixed memory-initialization bug in uffd allocator that could copy into the
3367  wrong destination under certain conditions. Does not affect the default
3368  wasmtime instance allocator.
3369  [#2801](https://github.com/bytecodealliance/wasmtime/pull/2801)
3370
3371* Fix printing of float values from the Wasmtime CLI.
3372  [#2797](https://github.com/bytecodealliance/wasmtime/pull/2797)
3373
3374* Remove the ability for the `Linker` to instantiate modules with duplicate
3375  import strings of different types.
3376  [#2789](https://github.com/bytecodealliance/wasmtime/pull/2789)
3377
3378## 0.25.0
3379
3380Released 2021-03-16.
3381
3382### Added
3383
3384* An implementation of a pooling instance allocator, optionally backed by
3385  `userfaultfd` on Linux, was added to improve the performance of embeddings
3386  that instantiate a large number of instances continuously.
3387  [#2518](https://github.com/bytecodealliance/wasmtime/pull/2518)
3388
3389* Host functions can now be defined on `Config` to share the function across all
3390  `Store` objects connected to an `Engine`. This can improve the time it takes
3391  to instantiate instances in a short-lived `Store`.
3392  [#2625](https://github.com/bytecodealliance/wasmtime/pull/2625)
3393
3394* The `Store` object now supports having typed values attached to it which can
3395  be retrieved from host functions.
3396  [#2625](https://github.com/bytecodealliance/wasmtime/pull/2625)
3397
3398* The `wiggle` code generator now supports `async` host functions.
3399  [#2701](https://github.com/bytecodealliance/wasmtime/pull/2701)
3400
3401### Changed
3402
3403* The `Func::getN{,_async}` APIs have all been removed in favor of a new
3404  `Func::typed` API which should be more compact in terms of API surface area as
3405  well as more flexible in how it can be used.
3406  [#2719](https://github.com/bytecodealliance/wasmtime/pull/2719)
3407
3408* `Engine::new` has been changed from returning `Engine` to returning
3409  `anyhow::Result<Engine>`. Callers of `Engine::new` will need to be updated to
3410  use the `?` operator on the return value or otherwise unwrap the result to get
3411  the `Engine`.
3412
3413### Fixed
3414
3415* Interpretation of timestamps in `poll_oneoff` for WASI have been fixed to
3416  correctly use nanoseconds instead of microseconds.
3417  [#2717](https://github.com/bytecodealliance/wasmtime/pull/2717)
3418
3419## 0.24.0
3420
3421Released 2021-03-04.
3422
3423### Added
3424
3425* Implement support for `async` functions in Wasmtime
3426  [#2434](https://github.com/bytecodealliance/wasmtime/pull/2434)
3427
3428### Fixed
3429
3430* Fix preservation of the sigaltstack on macOS
3431  [#2676](https://github.com/bytecodealliance/wasmtime/pull/2676)
3432* Fix incorrect semver dependencies involving fs-set-times.
3433  [#2705](https://github.com/bytecodealliance/wasmtime/pull/2705)
3434* Fix some `i128` shift-related bugs in x64 backend.
3435  [#2682](https://github.com/bytecodealliance/wasmtime/pull/2682)
3436* Fix incomplete trap metadata due to multiple traps at one address
3437  [#2685](https://github.com/bytecodealliance/wasmtime/pull/2685)
3438
3439## 0.23.0
3440
3441Released 2021-02-16.
3442
3443### Added
3444
3445* Support for limiting WebAssembly execution with fuel was added, including
3446  support in the C API.
3447  [#2611](https://github.com/bytecodealliance/wasmtime/pull/2611)
3448  [#2643](https://github.com/bytecodealliance/wasmtime/pull/2643)
3449* Wasmtime now has more knobs for limiting memory and table allocations
3450  [#2617](https://github.com/bytecodealliance/wasmtime/pull/2617)
3451* Added a method to share `Config` across machines
3452  [#2608](https://github.com/bytecodealliance/wasmtime/pull/2608)
3453* Added a safe memory read/write API
3454  [#2528](https://github.com/bytecodealliance/wasmtime/pull/2528)
3455* Added support for the experimental wasi-crypto APIs
3456  [#2597](https://github.com/bytecodealliance/wasmtime/pull/2597)
3457* Added an instance limit to `Config`
3458  [#2593](https://github.com/bytecodealliance/wasmtime/pull/2593)
3459* Implemented module-linking's outer module aliases
3460  [#2590](https://github.com/bytecodealliance/wasmtime/pull/2590)
3461* Cranelift now supports 128-bit operations for the new x64 backend.
3462  [#2539](https://github.com/bytecodealliance/wasmtime/pull/2539)
3463* Cranelift now has detailed debug-info (DWARF) support in new backends (initially x64).
3464  [#2565](https://github.com/bytecodealliance/wasmtime/pull/2565)
3465* Cranelift now uses the `POPCNT`, `TZCNT`, and `LZCNT`, as well as SSE 4.1
3466  rounding instructions on x64 when available.
3467* Cranelift now uses the `CNT`, instruction on aarch64 when available.
3468
3469### Changed
3470
3471* A new WASI implementation built on the new
3472  [`cap-std`](https://github.com/bytecodealliance/cap-std) crate was added,
3473  replacing the previous implementation. This brings improved robustness,
3474  portability, and performance.
3475
3476* `wasmtime_wasi::WasiCtxBuilder` moved to
3477  `wasi_cap_std_sync::WasiCtxBuilder`.
3478
3479* The WebAssembly C API is updated, with a few minor API changes
3480  [#2579](https://github.com/bytecodealliance/wasmtime/pull/2579)
3481
3482### Fixed
3483
3484* Fixed a panic in WASI `fd_readdir` on large directories
3485  [#2620](https://github.com/bytecodealliance/wasmtime/pull/2620)
3486* Fixed a memory leak with command modules
3487  [#2017](https://github.com/bytecodealliance/wasmtime/pull/2017)
3488
3489--------------------------------------------------------------------------------
3490
3491## 0.22.0
3492
3493Released 2021-01-07.
3494
3495### Added
3496
3497* Experimental support for [the module-linking
3498  proposal](https://github.com/WebAssembly/module-linking) was
3499  added. [#2094](https://github.com/bytecodealliance/wasmtime/pull/2094)
3500
3501* Added support for [the reference types
3502  proposal](https://webassembly.github.io/reference-types) on the aarch64
3503  architecture. [#2410](https://github.com/bytecodealliance/wasmtime/pull/2410)
3504
3505* Experimental support for [wasi-nn](https://github.com/WebAssembly/wasi-nn) was
3506  added. [#2208](https://github.com/bytecodealliance/wasmtime/pull/2208)
3507
3508### Changed
3509
3510### Fixed
3511
3512* Fixed an issue where the `select` instruction didn't accept `v128` SIMD
3513  operands. [#2391](https://github.com/bytecodealliance/wasmtime/pull/2391)
3514
3515* Fixed an issue where Wasmtime could potentially use the wrong stack map during
3516  GCs, leading to a
3517  panic. [#2396](https://github.com/bytecodealliance/wasmtime/pull/2396)
3518
3519* Fixed an issue where if a host-defined function erroneously returned a value
3520  from a different store, that value would be
3521  leaked. [#2424](https://github.com/bytecodealliance/wasmtime/pull/2424)
3522
3523* Fixed a bug where in certain cases if a module's instantiation failed, it
3524  could leave trampolines in the store that referenced the no-longer-valid
3525  instance. These trampolines could be reused in future instantiations, leading
3526  to use after free bugs.
3527  [#2408](https://github.com/bytecodealliance/wasmtime/pull/2408)
3528
3529* Fixed a miscompilation on aarch64 where certain instructions would read `SP`
3530  instead of the zero register. This could only affect you if you explicitly
3531  enabled the Wasm SIMD
3532  proposal. [#2548](https://github.com/bytecodealliance/wasmtime/pull/2548)
3533
3534--------------------------------------------------------------------------------
3535
3536## 0.21.0
3537
3538Released 2020-11-05.
3539
3540### Added
3541
3542* Experimental support for the multi-memory proposal was added.
3543  [#2263](https://github.com/bytecodealliance/wasmtime/pull/2263)
3544
3545* The `Trap::trap_code` API enables learning what kind of trap was raised.
3546  [#2309](https://github.com/bytecodealliance/wasmtime/pull/2309)
3547
3548### Changed
3549
3550* WebAssembly module validation is now parallelized.
3551  [#2059](https://github.com/bytecodealliance/wasmtime/pull/2059)
3552
3553* Documentation is now available at docs.wasmtime.dev.
3554  [#2317](https://github.com/bytecodealliance/wasmtime/pull/2317)
3555
3556* Windows now compiles like other platforms with a huge guard page instead of
3557  having its own custom limit which made modules compile and run more slowly.
3558  [#2326](https://github.com/bytecodealliance/wasmtime/pull/2326)
3559
3560* The size of the cache entry for serialized modules has been greatly reduced.
3561  [#2321](https://github.com/bytecodealliance/wasmtime/pull/2321)
3562  [#2322](https://github.com/bytecodealliance/wasmtime/pull/2322)
3563  [#2324](https://github.com/bytecodealliance/wasmtime/pull/2324)
3564  [#2325](https://github.com/bytecodealliance/wasmtime/pull/2325)
3565
3566* The `FuncType` API constructor and accessors are now iterator-based.
3567  [#2365](https://github.com/bytecodealliance/wasmtime/pull/2365)
3568
3569### Fixed
3570
3571* A panic in compiling reference-types-using modules has been fixed.
3572  [#2350](https://github.com/bytecodealliance/wasmtime/pull/2350)
3573
3574--------------------------------------------------------------------------------
3575
3576## 0.20.0
3577
3578Released 2020-09-23.
3579
3580### Added
3581
3582* Support for explicitly serializing and deserializing compiled wasm modules has
3583  been added.
3584  [#2020](https://github.com/bytecodealliance/wasmtime/pull/2020)
3585
3586* A `wasmtime_store_gc` C API was added to run GC for `externref`.
3587  [#2052](https://github.com/bytecodealliance/wasmtime/pull/2052)
3588
3589* Support for atomics in Cranelift has been added. Support is not fully
3590  implemented in Wasmtime at this time, however.
3591  [#2077](https://github.com/bytecodealliance/wasmtime/pull/2077)
3592
3593* The `Caller::get_export` function is now implemented for `Func` references as
3594  well.
3595  [#2108](https://github.com/bytecodealliance/wasmtime/pull/2108)
3596
3597### Fixed
3598
3599* Leaks in the C API have been fixed.
3600  [#2040](https://github.com/bytecodealliance/wasmtime/pull/2040)
3601
3602* The `wasm_val_copy` C API has been fixed for reference types.
3603  [#2041](https://github.com/bytecodealliance/wasmtime/pull/2041)
3604
3605* Fix a panic with `Func::new` and reference types when the store doesn't have
3606  reference types enabled.
3607  [#2039](https://github.com/bytecodealliance/wasmtime/pull/2039)
3608
3609--------------------------------------------------------------------------------
3610
3611## 0.19.0
3612
3613Released 2020-07-14.
3614
3615### Added
3616
3617* The [WebAssembly reference-types proposal][reftypes] is now supported in
3618  Wasmtime and the C API.
3619  [#1832](https://github.com/bytecodealliance/wasmtime/pull/1832),
3620  [#1882](https://github.com/bytecodealliance/wasmtime/pull/1882),
3621  [#1894](https://github.com/bytecodealliance/wasmtime/pull/1894),
3622  [#1901](https://github.com/bytecodealliance/wasmtime/pull/1901),
3623  [#1923](https://github.com/bytecodealliance/wasmtime/pull/1923),
3624  [#1969](https://github.com/bytecodealliance/wasmtime/pull/1969),
3625  [#1973](https://github.com/bytecodealliance/wasmtime/pull/1973),
3626  [#1982](https://github.com/bytecodealliance/wasmtime/pull/1982),
3627  [#1984](https://github.com/bytecodealliance/wasmtime/pull/1984),
3628  [#1991](https://github.com/bytecodealliance/wasmtime/pull/1991),
3629  [#1996](https://github.com/bytecodealliance/wasmtime/pull/1996)
3630
3631* The [WebAssembly simd proposal's][simd] spec tests now pass in Wasmtime.
3632  [#1765](https://github.com/bytecodealliance/wasmtime/pull/1765),
3633  [#1876](https://github.com/bytecodealliance/wasmtime/pull/1876),
3634  [#1941](https://github.com/bytecodealliance/wasmtime/pull/1941),
3635  [#1957](https://github.com/bytecodealliance/wasmtime/pull/1957),
3636  [#1990](https://github.com/bytecodealliance/wasmtime/pull/1990),
3637  [#1994](https://github.com/bytecodealliance/wasmtime/pull/1994)
3638
3639* Wasmtime can now be compiled without the usage of threads for parallel
3640  compilation, although this is still enabled by default.
3641  [#1903](https://github.com/bytecodealliance/wasmtime/pull/1903)
3642
3643* The C API is [now
3644  documented](https://bytecodealliance.github.io/wasmtime/c-api/).
3645  [#1928](https://github.com/bytecodealliance/wasmtime/pull/1928),
3646  [#1959](https://github.com/bytecodealliance/wasmtime/pull/1959),
3647  [#1968](https://github.com/bytecodealliance/wasmtime/pull/1968)
3648
3649* A `wasmtime_linker_get_one_by_name` function was added to the C API.
3650  [#1897](https://github.com/bytecodealliance/wasmtime/pull/1897)
3651
3652* A `wasmtime_trap_exit_status` function was added to the C API.
3653  [#1912](https://github.com/bytecodealliance/wasmtime/pull/1912)
3654
3655* Compilation for the `aarch64-linux-android` target should now work, although
3656  keep in mind this platform is not fully tested still.
3657  [#2002](https://github.com/bytecodealliance/wasmtime/pull/2002)
3658
3659[reftypes]: https://github.com/WebAssembly/reference-types
3660
3661### Fixed
3662
3663* Runtime warnings when using Wasmtime on musl have been fixed.
3664  [#1914](https://github.com/bytecodealliance/wasmtime/pull/1914)
3665
3666* A bug affecting Windows unwind information with functions that have spilled
3667  floating point registers has been fixed.
3668  [#1983](https://github.com/bytecodealliance/wasmtime/pull/1983)
3669
3670### Changed
3671
3672* Wasmtime's default branch and development now happens on the `main` branch
3673  instead of `master`.
3674  [#1924](https://github.com/bytecodealliance/wasmtime/pull/1924)
3675
3676### Removed
3677
3678* The "host info" support in the C API has been removed since it was never fully
3679  or correctly implemented.
3680  [#1922](https://github.com/bytecodealliance/wasmtime/pull/1922)
3681
3682* Support for the `*_same` functions in the C API has been removed in the same
3683  vein as the host info APIs.
3684  [#1926](https://github.com/bytecodealliance/wasmtime/pull/1926)
3685
3686--------------------------------------------------------------------------------
3687
3688## 0.18.0
3689
3690Release 2020-06-09.
3691
3692### Added
3693
3694The `WasmTy` trait is now implemented for `u32` and `u64`.
3695
3696  [#1808](https://github.com/bytecodealliance/wasmtime/pull/1808)
3697
3698--------------------------------------------------------------------------------
3699
3700## 0.17.0
3701
3702Released 2020-06-01.
3703
3704### Added
3705
3706* The [Commands and Reactors ABI] is now supported in the Rust API. `Linker::module`
3707  loads a module and automatically handles Commands and Reactors semantics.
3708
3709  [#1565](https://github.com/bytecodealliance/wasmtime/pull/1565)
3710
3711[Commands and Reactors ABI]: https://github.com/WebAssembly/WASI/blob/master/design/application-abi.md#current-unstable-abi
3712
3713The `Table::grow` function now returns the previous table size, making it consistent
3714with the `table.grow` instruction.
3715
3716  [#1653](https://github.com/bytecodealliance/wasmtime/pull/1653)
3717
3718New Wasmtime-specific C APIs for working with tables were added which provide more
3719detailed error information and which make growing a table more consistent with the
3720`table.grow` instruction as well.
3721
3722  [#1654](https://github.com/bytecodealliance/wasmtime/pull/1654)
3723
3724The C API now includes support for enabling logging in Wasmtime.
3725
3726  [#1737](https://github.com/bytecodealliance/wasmtime/pull/1737)
3727
3728### Changed
3729
3730The WASI `proc_exit` function no longer exits the host process. It now unwinds the
3731callstack back to the wasm entrypoint, and the exit value is available from the
3732`Trap::i32_exit_status` method.
3733
3734  [#1646](https://github.com/bytecodealliance/wasmtime/pull/1646)
3735
3736The WebAssembly [multi-value](https://github.com/WebAssembly/multi-value/) proposal
3737is now enabled by default.
3738
3739  [#1667](https://github.com/bytecodealliance/wasmtime/pull/1667)
3740
3741The Rust API does not require a store provided during `Module::new` operation. The `Module` can be send accross threads and instantiate for a specific store. The `Instance::new` now requires the store.
3742
3743  [#1761](https://github.com/bytecodealliance/wasmtime/pull/1761)
3744
3745--------------------------------------------------------------------------------
3746
3747## 0.16.0
3748
3749Released 2020-04-29.
3750
3751### Added
3752
3753* The `Instance` struct has new accessors, `get_func`, `get_table`,
3754  `get_memory`, and `get_global` for quickly looking up exported
3755  functions, tables, memories, and globals by name.
3756  [#1524](https://github.com/bytecodealliance/wasmtime/pull/1524)
3757
3758* The C API has a number of new `wasmtime_*` functions which return error
3759  objects to get detailed error information when an API fails.
3760  [#1467](https://github.com/bytecodealliance/wasmtime/pull/1467)
3761
3762* Users now have fine-grained control over creation of instances of `Memory`
3763  with a new `MemoryCreator` trait.
3764  [#1400](https://github.com/bytecodealliance/wasmtime/pull/1400)
3765
3766* Go bindings for Wasmtime are [now available][go-bindings].
3767  [#1481](https://github.com/bytecodealliance/wasmtime/pull/1481)
3768
3769* APIs for looking up values in a `Linker` have been added.
3770  [#1480](https://github.com/bytecodealliance/wasmtime/pull/1480)
3771
3772* Preliminary support for AArch64, also known as ARM64.
3773  [#1581](https://github.com/bytecodealliance/wasmtime/pull/1581)
3774
3775[go-bindings]: https://github.com/bytecodealliance/wasmtime-go
3776
3777### Changed
3778
3779* `Instance::exports` now returns `Export` objects which contain
3780  the `name`s of the exports in addition to their `Extern` definitions,
3781  so it's no longer necessary to use `Module::exports` to obtain the
3782  export names.
3783  [#1524](https://github.com/bytecodealliance/wasmtime/pull/1524)
3784
3785* The `Func::call` API has changed its error type from `Trap` to `anyhow::Error`
3786  to distinguish between wasm traps and runtime violations (like the wrong
3787  number of parameters).
3788  [#1467](https://github.com/bytecodealliance/wasmtime/pull/1467)
3789
3790* A number of `wasmtime_linker_*` and `wasmtime_config_*` C APIs have new type
3791  signatures which reflect returning errors.
3792  [#1467](https://github.com/bytecodealliance/wasmtime/pull/1467)
3793
3794* Bindings for .NET have moved to
3795  https://github.com/bytecodealliance/wasmtime-dotnet.
3796  [#1477](https://github.com/bytecodealliance/wasmtime/pull/1477)
3797
3798* Passing too many imports to `Instance::new` is now considered an error.
3799  [#1478](https://github.com/bytecodealliance/wasmtime/pull/1478)
3800
3801### Fixed
3802
3803* Spurious segfaults due to out-of-stack conditions when handling signals have
3804  been fixed.
3805  [#1315](https://github.com/bytecodealliance/wasmtime/pull/1315)
3806
3807--------------------------------------------------------------------------------
3808
3809## 0.15.0
3810
3811Released 2020-03-31.
3812
3813### Fixed
3814
3815Full release produced for all artifacts to account for hiccups in 0.13.0 and
38160.14.0.
3817
3818--------------------------------------------------------------------------------
3819
3820## 0.14.0
3821
3822*This version ended up not getting a full release*
3823
3824### Fixed
3825
3826Fix build errors in wasi-common on Windows.
3827
3828--------------------------------------------------------------------------------
3829
3830## 0.13.0
3831
3832Released 2020-03-24.
3833
3834### Added
3835
3836* Lots of documentation of `wasmtime` has been updated. Be sure to check out the
3837  [book](https://bytecodealliance.github.io/wasmtime/) and [API
3838  documentation](https://bytecodealliance.github.io/wasmtime/api/wasmtime/)!
3839
3840* All wasmtime example programs are now in a top-level `examples` directory and
3841  are available in both C and Rust.
3842  [#1286](https://github.com/bytecodealliance/wasmtime/pull/1286)
3843
3844* A `wasmtime::Linker` type was added to conveniently link link wasm modules
3845  together and create instances that reference one another.
3846  [#1384](https://github.com/bytecodealliance/wasmtime/pull/1384)
3847
3848* Wasmtime now has "jitdump" support enabled by default which allows [profiling
3849  wasm code on linux][jitdump].
3850  [#1310](https://github.com/bytecodealliance/wasmtime/pull/1310)
3851
3852* The `wasmtime::Caller` type now exists as a first-class way to access the
3853  caller's exports, namely memory, when implementing host APIs. This can be the
3854  first argument of functions defined with `Func::new` or `Func::wrap` which
3855  allows easily implementing methods which take a pointer into wasm memory. Note
3856  that this only works for accessing the caller's `Memory` for now and it must
3857  be exported. This will eventually be replaced with a more general-purpose
3858  mechanism like interface types.
3859  [#1290](https://github.com/bytecodealliance/wasmtime/pull/1290)
3860
3861* The bulk memory proposal has been fully implemented.
3862  [#1264](https://github.com/bytecodealliance/wasmtime/pull/1264)
3863  [#976](https://github.com/bytecodealliance/wasmtime/pull/976)
3864
3865* Virtual file support has been added to `wasi-common`.
3866  [#701](https://github.com/bytecodealliance/wasmtime/pull/701)
3867
3868* The C API has been enhanced with a Wasmtime-specific `wasmtime_wat2wasm` to
3869  parse `*.wat` files via the C API.
3870  [#1206](https://github.com/bytecodealliance/wasmtime/pull/1206)
3871
3872[jitdump]: https://bytecodealliance.github.io/wasmtime/examples-profiling.html
3873
3874### Changed
3875
3876* The `wast` and `wasm2obj` standalone binaries have been removed. They're
3877  available via the `wasmtime wast` and `wasmtime wasm2obj` subcommands.
3878  [#1372](https://github.com/bytecodealliance/wasmtime/pull/1372)
3879
3880* The `wasi-common` crate now uses the new `wiggle` crate to auto-generate a
3881  trait which is implemented for the current wasi snapshot.
3882  [#1202](https://github.com/bytecodealliance/wasmtime/pull/1202)
3883
3884* Wasmtime no longer has a dependency on a C++ compiler.
3885  [#1365](https://github.com/bytecodealliance/wasmtime/pull/1365)
3886
3887* The `Func::wrapN` APIs have been consolidated into one `Func::wrap` API.
3888  [#1363](https://github.com/bytecodealliance/wasmtime/pull/1363)
3889
3890* The `Callable` trait has been removed and now `Func::new` takes a closure
3891  directly.
3892  [#1363](https://github.com/bytecodealliance/wasmtime/pull/1363)
3893
3894* The Cranelift repository has been merged into the Wasmtime repository.
3895
3896* Support for interface types has been temporarily removed.
3897  [#1292](https://github.com/bytecodealliance/wasmtime/pull/1292)
3898
3899* The exit code of the `wasmtime` CLI has changed if the program traps.
3900  [#1274](https://github.com/bytecodealliance/wasmtime/pull/1274)
3901
3902* The `wasmtime` CLI now logs to stderr by default and the `-d` flag has been
3903  renamed to `--log-to-file`.
3904  [#1266](https://github.com/bytecodealliance/wasmtime/pull/1266)
3905
3906* Values cannot cross `Store` objects, meaning you can't instantiate a module
3907  with values from different stores nor pass values from different stores into
3908  methods.
3909  [#1016](https://github.com/bytecodealliance/wasmtime/pull/1016)
3910
3911--------------------------------------------------------------------------------
3912
3913## 0.12.0
3914
3915Released 2020-02-26.
3916
3917### Added
3918
3919* Support for the [WebAssembly text annotations proposal][annotations-proposal]
3920  has been added.
3921  [#998](https://github.com/bytecodealliance/wasmtime/pull/998)
3922
3923* An initial C API for instantiating WASI modules has been added.
3924  [#977](https://github.com/bytecodealliance/wasmtime/pull/977)
3925
3926* A new suite of `Func::getN` functions have been added to the `wasmtime` API to
3927  call statically-known function signatures in a highly optimized fashion.
3928  [#955](https://github.com/bytecodealliance/wasmtime/pull/955)
3929
3930* Initial support for profiling JIT code through perf jitdump has been added.
3931  [#360](https://github.com/bytecodealliance/wasmtime/pull/360)
3932
3933* More CLI flags corresponding to proposed WebAssembly features have been added.
3934  [#917](https://github.com/bytecodealliance/wasmtime/pull/917)
3935
3936[annotations-proposal]: https://github.com/webassembly/annotations
3937
3938### Changed
3939
3940* The `wasmtime` CLI as well as embedding API will optimize WebAssembly code by
3941  default now.
3942  [#973](https://github.com/bytecodealliance/wasmtime/pull/973)
3943  [#988](https://github.com/bytecodealliance/wasmtime/pull/988)
3944
3945* The `verifier` pass in Cranelift is now no longer run by default when using
3946  the embedding API.
3947  [#882](https://github.com/bytecodealliance/wasmtime/pull/882)
3948
3949### Fixed
3950
3951* Code caching now accurately accounts for optimization levels, ensuring that if
3952  you ask for optimized code you're not accidentally handed unoptimized code
3953  from the cache.
3954  [#974](https://github.com/bytecodealliance/wasmtime/pull/974)
3955
3956* Automated releases for tags should be up and running again, along with
3957  automatic publication of the `wasmtime` Python package.
3958  [#971](https://github.com/bytecodealliance/wasmtime/pull/971)
3959