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