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