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