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