1-------------------------------------------------------------------------------- 2 3## 0.37.0 4 5Unreleased. 6 7### Fixed 8 9* Using `InstancePre::instantiate` or `Linker::instantiate` will now panic as 10 intended when used with an async-configured `Store`. 11 [#TODO](https://github.com/bytecodealliance/wasmtime/pull/TODO) 12 13-------------------------------------------------------------------------------- 14 15## 0.36.0 16 17Unreleased. 18 19### Added 20 21* Support for epoch-based interruption has been added to the C API. 22 [#3925](https://github.com/bytecodealliance/wasmtime/pull/3925) 23 24* Support for disabling libunwind-based backtraces of WebAssembly code at 25 compile time has been added. 26 [#3932](https://github.com/bytecodealliance/wasmtime/pull/3932) 27 28* Async support for call hooks has been added to optionally execute "blocking" 29 work whenever a wasm module is entered or exited relative to the host. 30 [#3876](https://github.com/bytecodealliance/wasmtime/pull/3876) 31 32### Fixed 33 34* Loading a `Module` will now check, at runtime, that the compilation settings 35 enabled in a `Config` are compatible with the native host. For example this 36 ensures that if avx2 is enabled that the host actually has avx2 support. 37 [#3899](https://github.com/bytecodealliance/wasmtime/pull/3899) 38>>>>>>> Update release notes for 0.36.0 39 40### Removed 41 42* Support for `Config::interruptable` and `InterruptHandle` has been removed 43 from the `wasmtime` crate. Users should migrate to using epoch-based 44 interruption instead. 45 [#3925](https://github.com/bytecodealliance/wasmtime/pull/3925) 46 47* The module linking implementation of Wasmtime has been removed to make room 48 for the upcoming support for the component model. 49 [#3958](https://github.com/bytecodealliance/wasmtime/pull/3958) 50 51-------------------------------------------------------------------------------- 52 53## 0.35.2 54 55Released 2022-03-31. 56 57### Security Fixes 58 59* [CVE-2022-24791](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-gwc9-348x-qwv2): 60 Fixed a use after free with `externref`s and epoch interruption. 61 62## 0.35.1 63 64Released 2022-03-09. 65 66### Fixed 67 68* Fixed a bug in the x86-64 lowering of the `uextend` opcode for narrow (`i8`, 69 `i16`) integer sources when the value is produced by one of several 70 arithmetic instructions. 71 [#3906](https://github.com/bytecodealliance/wasmtime/pull/3906) 72 73## 0.35.0 74 75Released 2022-03-07. 76 77### Added 78 79* The `wasmtime_wasi::add_to_linker` function now allows providing 80 a context object of a custom type instead of `wasmtime_wasi::WasiCtx`, 81 as long as that type implements the required WASI snapshot traits. 82 This allows, for example, wrapping `WasiCtx` into a struct and providing 83 custom implementations for those traits to override the default behaviour. 84 85### Changed 86 87* WebAssembly tables of `funcref` values are now lazily initialized which can, 88 in some cases, greatly speed up instantiation of a module. 89 [#3733](https://github.com/bytecodealliance/wasmtime/pull/3733) 90 91* The `memfd` feature in 0.34.0, now renamed to `memory-init-cow`, has been 92 enabled by default. This means that, where applicable, WebAssembly linear 93 memories are now initialized with copy-on-write mappings. Support from this 94 has been expanded from Linux-only to include macOS and other Unix systems when 95 modules are loaded from precompiled `*.cwasm` files on disk. 96 [#3777](https://github.com/bytecodealliance/wasmtime/pull/3777) 97 [#3778](https://github.com/bytecodealliance/wasmtime/pull/3778) 98 [#3787](https://github.com/bytecodealliance/wasmtime/pull/3787) 99 [#3819](https://github.com/bytecodealliance/wasmtime/pull/3819) 100 [#3831](https://github.com/bytecodealliance/wasmtime/pull/3831) 101 102* Clarify that SSE 4.2 (and prior) is required for running WebAssembly code with 103 simd support enabled on x86\_64. 104 [#3816](https://github.com/bytecodealliance/wasmtime/pull/3816) 105 [#3817](https://github.com/bytecodealliance/wasmtime/pull/3817) 106 [#3833](https://github.com/bytecodealliance/wasmtime/pull/3833) 107 [#3825](https://github.com/bytecodealliance/wasmtime/pull/3825) 108 109* Support for profiling with VTune is now enabled at compile time by default, 110 but it remains disabled at runtime by default. 111 [#3821](https://github.com/bytecodealliance/wasmtime/pull/3821) 112 113* The `ModuleLimits` type has been removed from the configuration of the pooling 114 allocator in favor of configuring the total size of an instance allocation 115 rather than each individual field. 116 [#3837](https://github.com/bytecodealliance/wasmtime/pull/3837) 117 118* The native stack size allowed for WebAssembly has been decreased from 1 MiB to 119 512 KiB on all platforms to better accomodate running wasm on the main thread 120 on Windows. 121 [#3861](https://github.com/bytecodealliance/wasmtime/pull/3861) 122 123* The `wasi-common` crate now supports doing polls for both read and write 124 interest on a file descriptor at the same time. 125 [#3866](https://github.com/bytecodealliance/wasmtime/pull/3866) 126 127### Fixed 128 129* The `Store::call_hook` callback is now invoked when entering host functions 130 defined with `*_unchecked` variants. 131 [#3881](https://github.com/bytecodealliance/wasmtime/pull/3881) 132 133### Removed 134 135* The incomplete and unmaintained ARM32 backend has been removed from Cranelift. 136 [#3799](https://github.com/bytecodealliance/wasmtime/pull/3799) 137 138-------------------------------------------------------------------------------- 139 140## 0.34.2 141 142Released 2022-03-31. 143 144### Security Fixes 145 146* [CVE-2022-24791](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-gwc9-348x-qwv2): 147 Fixed a use after free with `externref`s and epoch interruption. 148 149## 0.34.1 150 151Released 2022-02-16. 152 153### Security Fixes 154 155* [CVE-2022-23636](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-88xq-w8cq-xfg7): 156 Fixed an invalid drop of a partially-initialized instance in the pooling instance 157 allocator. 158 159## 0.33.1 160 161Released 2022-02-16. 162 163### Security Fixes 164 165* [CVE-2022-23636](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-88xq-w8cq-xfg7): 166 Fixed an invalid drop of a partially-initialized instance in the pooling instance 167 allocator. 168 169## 0.34.0 170 171Released 2022-02-07. 172 173### Fixed 174 175* The `wasi-common` default implementation of some attributes of files has been 176 updated to ensure that `wasi-libc`'s `isatty` function works as intended. 177 [#3696](https://github.com/bytecodealliance/wasmtime/pull/3696) 178 179* A benign debug assertion related to `externref` and garbage-collection has 180 been fixed. 181 [#3734](https://github.com/bytecodealliance/wasmtime/pull/3734) 182 183### Added 184 185* Function names are now automatically demangled when informing profilers of 186 regions of JIT code to apply Rust-specific demangling rules if applicable. 187 [#3683](https://github.com/bytecodealliance/wasmtime/pull/3683) 188 189* Support for profiling JIT-generated trampolines with VTune has been added. 190 [#3687](https://github.com/bytecodealliance/wasmtime/pull/3687) 191 192* Wasmtime now supports a new method of async preemption dubbed "epoch-based 193 interruption" which is intended to be much more efficient than the current 194 fuel-based method of preemption. 195 [#3699](https://github.com/bytecodealliance/wasmtime/pull/3699) 196 197* On Linux Wasmtime will now by default use copy-on-write mappings to initialize 198 memories of wasm modules where possible, accelerating instantiation by 199 avoiding costly memory copies. When combined with the pooling allocator this 200 can also be used to speed up instance-reuse cases due to fewer syscalls to 201 change memory mappings being necessary. 202 [#3697](https://github.com/bytecodealliance/wasmtime/pull/3697) 203 [#3738](https://github.com/bytecodealliance/wasmtime/pull/3738) 204 [#3760](https://github.com/bytecodealliance/wasmtime/pull/3760) 205 206* Wasmtime now supports the recently-added `sock_accept` WASI function. 207 [#3711](https://github.com/bytecodealliance/wasmtime/pull/3711) 208 209* Cranelift now has support for specifying blocks as cold. 210 [#3698](https://github.com/bytecodealliance/wasmtime/pull/3698) 211 212### Changed 213 214* Many more instructions for the x64 backend have been migrated to ISLE, 215 additionally with refactorings to make incorrect lowerings harder to 216 accidentally write. 217 [#3653](https://github.com/bytecodealliance/wasmtime/pull/3653) 218 [#3659](https://github.com/bytecodealliance/wasmtime/pull/3659) 219 [#3681](https://github.com/bytecodealliance/wasmtime/pull/3681) 220 [#3686](https://github.com/bytecodealliance/wasmtime/pull/3686) 221 [#3688](https://github.com/bytecodealliance/wasmtime/pull/3688) 222 [#3690](https://github.com/bytecodealliance/wasmtime/pull/3690) 223 [#3752](https://github.com/bytecodealliance/wasmtime/pull/3752) 224 225* More instructions in the aarch64 backend are now lowered with ISLE. 226 [#3658](https://github.com/bytecodealliance/wasmtime/pull/3658) 227 [#3662](https://github.com/bytecodealliance/wasmtime/pull/3662) 228 229* The s390x backend's lowering rules are now almost entirely defined with ISLE. 230 [#3702](https://github.com/bytecodealliance/wasmtime/pull/3702) 231 [#3703](https://github.com/bytecodealliance/wasmtime/pull/3703) 232 [#3706](https://github.com/bytecodealliance/wasmtime/pull/3706) 233 [#3717](https://github.com/bytecodealliance/wasmtime/pull/3717) 234 [#3723](https://github.com/bytecodealliance/wasmtime/pull/3723) 235 [#3724](https://github.com/bytecodealliance/wasmtime/pull/3724) 236 237* Instantiation of modules in Wasmtime has been further optimized now that the 238 copy-on-write memory initialization removed the previously most-expensive part 239 of instantiating a module. 240 [#3727](https://github.com/bytecodealliance/wasmtime/pull/3727) 241 [#3739](https://github.com/bytecodealliance/wasmtime/pull/3739) 242 [#3741](https://github.com/bytecodealliance/wasmtime/pull/3741) 243 [#3742](https://github.com/bytecodealliance/wasmtime/pull/3742) 244 245-------------------------------------------------------------------------------- 246 247## 0.33.0 248 249Released 2022-01-05. 250 251### Added 252 253* Compiled wasm modules may now optionally omit debugging information about 254 mapping addresses to source locations, resulting in smaller binaries. 255 [#3598](https://github.com/bytecodealliance/wasmtime/pull/3598) 256 257* The WebAssembly SIMD proposal is now enabled by default. 258 [#3601](https://github.com/bytecodealliance/wasmtime/pull/3601) 259 260-------------------------------------------------------------------------------- 261 262## 0.32.1 263 264Released 2022-01-04. 265 266### Fixed 267 268* Cranelift: remove recently-added build dependency on `sha2` to allow usage in 269 some dependency-sensitive environments, by computing ISLE manifest hashes 270 with a different hash function. 271 [#3619](https://github.com/bytecodealliance/wasmtime/pull/3619) 272 273* Cranelift: fixed 8- and 16-bit behavior of popcount (bit population count) 274 instruction. Does not affect Wasm frontend. 275 [#3617](https://github.com/bytecodealliance/wasmtime/pull/3617) 276 277* Cranelift: fixed miscompilation of 8- and 16-bit bit-rotate instructions. 278 Does not affect Wasm frontend. 279 [#3610](https://github.com/bytecodealliance/wasmtime/pull/3610) 280 281-------------------------------------------------------------------------------- 282 283## 0.32.0 284 285Released 2021-12-13. 286 287### Added 288 289* A new configuration option has been added to force using a "static" memory 290 style to automatically limit growth of memories in some configurations. 291 [#3503](https://github.com/bytecodealliance/wasmtime/pull/3503) 292 293* The `InstancePre<T>` type now implements `Clone`. 294 [#3510](https://github.com/bytecodealliance/wasmtime/pull/3510) 295 296* Cranelift's instruction selection process has begun to be migrated towards the 297 ISLE compiler and definition language. 298 [#3506](https://github.com/bytecodealliance/wasmtime/pull/3506) 299 300* A `pooling-allocator` feature has been added, which is on-by-default, to 301 disable the pooling allocator at compile time. 302 [#3514](https://github.com/bytecodealliance/wasmtime/pull/3514) 303 304### Fixed 305 306* A possible panic when parsing a WebAssembly `name` section has been fixed. 307 [#3509](https://github.com/bytecodealliance/wasmtime/pull/3509) 308 309* Generating native DWARF information for some C-produced modules has been 310 fixed, notably those where there may be DWARF about dead code. 311 [#3498](https://github.com/bytecodealliance/wasmtime/pull/3498) 312 313* A number of SIMD code generation bugs have been fixed in the x64 backend 314 by migrating their lowerings to ISLE. 315 316-------------------------------------------------------------------------------- 317 318## 0.31.0 319 320Released 2021-10-29. 321 322### Added 323 324* New `Func::new_unchecked` and `Func::call_unchecked` APIs have been added with 325 accompanying functions in the C API to improve the performance of calls into 326 wasm and the host in the C API. 327 [#3350](https://github.com/bytecodealliance/wasmtime/pull/3350) 328 329* Release binaries are now available for the s390x-unknown-linux-gnu 330 architecture. 331 [#3372](https://github.com/bytecodealliance/wasmtime/pull/3372) 332 333* A new `ResourceLimiterAsync` trait is added which allows asynchronous blocking 334 of WebAssembly on instructions such as `memory.grow`. 335 [#3393](https://github.com/bytecodealliance/wasmtime/pull/3393) 336 337### Changed 338 339* The `Func::call` method now takes a slice to write the results into rather 340 than returning a boxed slice. 341 [#3319](https://github.com/bytecodealliance/wasmtime/pull/3319) 342 343* Trampolines are now covered when jitdump profiling is enabled. 344 [#3344](https://github.com/bytecodealliance/wasmtime/pull/3344) 345 346### Fixed 347 348* Debugging with GDB has been fixed on Windows. 349 [#3373](https://github.com/bytecodealliance/wasmtime/pull/3373) 350 351* Some quadradic behavior in Wasmtime's compilation of modules has been fixed. 352 [#3469](https://github.com/bytecodealliance/wasmtime/pull/3469) 353 [#3466](https://github.com/bytecodealliance/wasmtime/pull/3466) 354 355* Bounds-checks for wasm memory accesses in certain non-default configurations 356 have been fixed to correctly allow loads at the end of the address space. 357 [#3462](https://github.com/bytecodealliance/wasmtime/pull/3462) 358 359* When type-checking memories and tables for satisfying instance imports the 360 runtime size of the table/memory is now consulted instead of the object's 361 original type. 362 [#3450](https://github.com/bytecodealliance/wasmtime/pull/3450) 363 364### Removed 365 366* The Lightbeam backend has been removed, as per [RFC 14]. 367 [#3390](https://github.com/bytecodealliance/wasmtime/pull/3390) 368 369[RFC 14]: https://github.com/bytecodealliance/rfcs/pull/14 370 371* Cranelift's old x86 backend has been removed, as per [RFC 12]. 372 [#3309](https://github.com/bytecodealliance/wasmtime/pull/3009) 373 374[RFC 12]: https://github.com/bytecodealliance/rfcs/pull/12 375 376## 0.30.0 377 378Released 2021-09-17. 379 380### Security Fixes 381 382* [CVE-2021-39216](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-v4cp-h94r-m7xf): 383 Fixed a use after free passing `externref`s to Wasm in Wasmtime. 384 385* [CVE-2021-39218](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-4873-36h9-wv49): 386 Fixed an out-of-bounds read/write and invalid free with `externref`s and GC 387 safepoints in Wasmtime. 388 389* [CVE-2021-39219](https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-q879-9g95-56mx): 390 Fixed a bug where using two different `Engine`s with the same `Linker`-define 391 functions caused unsafety without `unsafe` blocks. 392 393### Added 394 395* Added experimental support for the in-progress 64-bit memories Wasm proposal. 396 397* Added support to build Wasmtime without the compiler. This lets you run 398 pre-compiled Wasm modules, without the ability (or potential attack surface) 399 of compiling new Wasm modules. The compilation functionality is gated by the 400 on-by-default `cranelift` cargo feature. 401 402* Added support for NaN canonicalization with SIMD vectors. 403 404* Added support for differential fuzzing against V8's Wasm engine. 405 406* Added support for fuzzing against the Wasm spec interpreter. 407 408* Enabled SIMD fuzzing on oss-fuzz. 409 410### Changed 411 412* A variety of performance improvements to loading pre-compiled modules. 413 414* A variety of performance improvements to function calls, both through Rust and 415 the C API. 416 417* Leaf functions that do not use the stack no longer bump the frame pointer on 418 aarch64 and s390x. 419 420* Many updates and expanded instruction support to the in-progress CLIF 421 interpreter. 422 423* Expanded fuzzing of reference types and GC. 424 425### Fixed 426 427* A number of fixes to both aarch64 and x86_64 support for the Wasm SIMD 428 proposal and the underlying CLIF vector instructions. 429 430* Fixed a potential infinite loop in the SSA computation for 431 `cranelift-frontend`. This was not reachable from `cranelift-wasm` or 432 Wasmtime, but might have affected general Cranelift users. 433 434### Removed 435 436* The `wasmtime wasm2obj` subcommand has been removed. Generating raw object 437 files for linking natively is no longer supported. Use the `wasmtime compile` 438 subcommand to pre-compile a Wasm module and `wasmtime run` to run pre-compiled 439 Wasm modules. 440 441## 0.29.0 442 443Released 2021-08-02. 444 445### Changed 446 447* Instance exports are now loaded lazily from instances instead of eagerly as 448 they were before. This is an internal-only change and is not a breaking 449 change. 450 [#2984](https://github.com/bytecodealliance/wasmtime/pull/2984) 451 452* All linear memories created by Wasmtime will now, by default, have guard pages 453 in front of them in addition to after them. This is intended to help mitigate 454 future bugs in Cranelift, should they arise. 455 [#2977](https://github.com/bytecodealliance/wasmtime/pull/2977) 456 457* Linear memories now correctly support a maximum size of 4GB. Previously, the 458 limit field was 32 bits, which did not properly support a full 4GB memory. 459 This update is also a necessary change in preparation for future memory64 460 support. 461 [#3013](https://github.com/bytecodealliance/wasmtime/pull/3013) 462 [#3134](https://github.com/bytecodealliance/wasmtime/pull/3134) 463 464* Injection counts of fuel into a `wasmtime::Store` now uses a u64 instead of a 465 u32. 466 [#3048](https://github.com/bytecodealliance/wasmtime/pull/3048) 467 468### Added 469 470* Support for `i128` has improved in the AArch64 backend. 471 [#2959](https://github.com/bytecodealliance/wasmtime/pull/2959) 472 [#2975](https://github.com/bytecodealliance/wasmtime/pull/2975) 473 [#2985](https://github.com/bytecodealliance/wasmtime/pull/2985) 474 [#2990](https://github.com/bytecodealliance/wasmtime/pull/2990) 475 [#3002](https://github.com/bytecodealliance/wasmtime/pull/3002) 476 [#3004](https://github.com/bytecodealliance/wasmtime/pull/3004) 477 [#3005](https://github.com/bytecodealliance/wasmtime/pull/3005) 478 [#3008](https://github.com/bytecodealliance/wasmtime/pull/3008) 479 [#3027](https://github.com/bytecodealliance/wasmtime/pull/3027) 480 481* The s390x backend now supports z14 and atomics. 482 [#2988](https://github.com/bytecodealliance/wasmtime/pull/2988) 483 [#2991](https://github.com/bytecodealliance/wasmtime/pull/2991) 484 485* The `wasmtime::Linker` type now implements `Clone`. 486 [#2993](https://github.com/bytecodealliance/wasmtime/pull/2993) 487 488* Support for the SIMD proposal on both x86\_64 and AArch64 has improved. On 489 x86\_64, all SIMD opcodes are now supported. 490 [#2997](https://github.com/bytecodealliance/wasmtime/pull/2997) 491 [#3035](https://github.com/bytecodealliance/wasmtime/pull/3035) 492 [#2982](https://github.com/bytecodealliance/wasmtime/pull/2982) 493 [#3084](https://github.com/bytecodealliance/wasmtime/pull/3084) 494 [#3082](https://github.com/bytecodealliance/wasmtime/pull/3082) 495 [#3107](https://github.com/bytecodealliance/wasmtime/pull/3107) 496 [#3105](https://github.com/bytecodealliance/wasmtime/pull/3105) 497 [#3114](https://github.com/bytecodealliance/wasmtime/pull/3114) 498 [#3070](https://github.com/bytecodealliance/wasmtime/pull/3070) 499 [#3126](https://github.com/bytecodealliance/wasmtime/pull/3126) 500 501* A `Trap` can now display its reason without also displaying the backtrace. 502 [#3033](https://github.com/bytecodealliance/wasmtime/pull/3033) 503 504* An initiall fuzzer for CLIF has been added. 505 [#3038](https://github.com/bytecodealliance/wasmtime/pull/3038) 506 507* High-level architecture documentation has been added for Wasmtime. 508 [#3019](https://github.com/bytecodealliance/wasmtime/pull/3019) 509 510* Support for multi-memory can now be configured in Wasmtime's C API. 511 [#3071](https://github.com/bytecodealliance/wasmtime/pull/3071) 512 513* The `wasmtime` crate now supports a `posix-signals-on-macos` feature to force 514 the usage of signals instead of mach ports to handle traps on macOS. 515 [#3063](https://github.com/bytecodealliance/wasmtime/pull/3063) 516 517* Wasmtime's C API now has a `wasmtime_trap_code` function to get the raw trap 518 code, if present, for a trap. 519 [#3086](https://github.com/bytecodealliance/wasmtime/pull/3086) 520 521* Wasmtime's C API now has a `wasmtime_linker_define_func` function to define a 522 store-independent function within a linker. 523 [#3122](https://github.com/bytecodealliance/wasmtime/pull/3122) 524 525* A `wasmtime::Linker::module_async` function was added as the asynchronous 526 counterpart to `wasmtime::Linker::module`. 527 [#3121](https://github.com/bytecodealliance/wasmtime/pull/3121) 528 529### Fixed 530 531* Compiling the `wasmtime` crate into a `dylib` crate type has been fixed. 532 [#3010](https://github.com/bytecodealliance/wasmtime/pull/3010) 533 534* The enter/exit hooks for WebAssembly are now executed for an instance's 535 `start` function, if present. 536 [#3001](https://github.com/bytecodealliance/wasmtime/pull/3001) 537 538* Some WASI functions in `wasi-common` have been fixed for big-endian platforms. 539 [#3016](https://github.com/bytecodealliance/wasmtime/pull/3016) 540 541* Wasmtime no longer erroneously assumes that all custom sections may contain 542 DWARF information, reducing instances of `Trap`'s `Display` implementation 543 providing misleading information to set an env var to get more information. 544 [#3083](https://github.com/bytecodealliance/wasmtime/pull/3083) 545 546* Some issues with parsing DWARF debug information have been fixed. 547 [#3116](https://github.com/bytecodealliance/wasmtime/pull/3116) 548 549## 0.28.0 550 551Released 2021-06-09. 552 553### Changed 554 555* Breaking: Wasmtime's embedding API has been redesigned, as specified in [RFC 556 11]. Rust users can now enjoy easier times with `Send` and `Sync`, and all 557 users can now more clearly manage memory, especially in the C API. Language 558 embeddings have been updated to the new API as well. 559 [#2897](https://github.com/bytecodealliance/wasmtime/pull/2897) 560 561[RFC 11]: https://github.com/bytecodealliance/rfcs/pull/11 562 563### Added 564 565* A new `InstancePre` type, created with `Linker::instantiate_pre`, has been 566 added to perform type-checking of an instance once and reduce the work done 567 for each instantiation of a module: 568 [#2962](https://github.com/bytecodealliance/wasmtime/pull/2962) 569 570* Deserialization of a module can now optionally skip checking the wasmtime 571 version string: 572 [#2945](https://github.com/bytecodealliance/wasmtime/pull/2945) 573 574* A method has been exposed to frontload per-thread initialization costs if the 575 latency of every last wasm call is important: 576 [#2946](https://github.com/bytecodealliance/wasmtime/pull/2946) 577 578* Hooks have been added for entry/exit into wasm code to allow embeddings to 579 track time and other properties about execution in a wasm environment: 580 [#2952](https://github.com/bytecodealliance/wasmtime/pull/2952) 581 582* A [C++ embedding of Wasmtime has been written][cpp]. 583 584[RFC 11]: https://github.com/bytecodealliance/rfcs/pull/11 585[cpp]: https://github.com/bytecodealliance/wasmtime-cpp 586 587### Fixed 588 589* Multiple returns on macOS AArch64 have been fixed: 590 [#2956](https://github.com/bytecodealliance/wasmtime/pull/2956) 591 592## 0.27.0 593 594Released 2021-05-21. 595 596### Security Fixes 597 598* Fixed a security issue in Cranelift's x64 backend that could result in a heap 599 sandbox escape due to an incorrect sign-extension: 600 [#2913](https://github.com/bytecodealliance/wasmtime/issues/2913). 601 602### Added 603 604* Support for IBM z/Archiecture (`s390x`) machines in Cranelift and Wasmtime: 605 [#2836](https://github.com/bytecodealliance/wasmtime/pull/2836), 606 [#2837](https://github.com/bytecodealliance/wasmtime/pull/2837), 607 [#2838](https://github.com/bytecodealliance/wasmtime/pull/2838), 608 [#2843](https://github.com/bytecodealliance/wasmtime/pull/2843), 609 [#2854](https://github.com/bytecodealliance/wasmtime/pull/2854), 610 [#2870](https://github.com/bytecodealliance/wasmtime/pull/2870), 611 [#2871](https://github.com/bytecodealliance/wasmtime/pull/2871), 612 [#2872](https://github.com/bytecodealliance/wasmtime/pull/2872), 613 [#2874](https://github.com/bytecodealliance/wasmtime/pull/2874). 614 615* Improved async support in wasi-common runtime: 616 [#2832](https://github.com/bytecodealliance/wasmtime/pull/2832). 617 618* Added `Store::with_limits`, `StoreLimits`, and `ResourceLimiter` to the 619 Wasmtime API to help with enforcing resource limits at runtime. The 620 `ResourceLimiter` trait can be implemented by custom resource limiters to 621 decide if linear memories or tables can be grown. 622 623* Added `allow-unknown-exports` option for the run command: 624 [#2879](https://github.com/bytecodealliance/wasmtime/pull/2879). 625 626* Added API to notify that a `Store` has moved to a new thread: 627 [#2822](https://github.com/bytecodealliance/wasmtime/pull/2822). 628 629* Documented guidance around using Wasmtime in multithreaded contexts: 630 [#2812](https://github.com/bytecodealliance/wasmtime/pull/2812). 631 In the future, the Wasmtime API will change to allow some of its core types 632 to be Send/Sync; see the in-progress 633 [#2897](https://github.com/bytecodealliance/wasmtime/pull/2897) for details. 634 635* Support calls from native code to multiple-return-value functions: 636 [#2806](https://github.com/bytecodealliance/wasmtime/pull/2806). 637 638### Changed 639 640* Breaking: `Memory::new` has been changed to return `Result` as creating a 641 host memory object is now a fallible operation when the initial size of 642 the memory exceeds the store limits. 643 644### Fixed 645 646* Many instruction selection improvements on x64 and aarch64: 647 [#2819](https://github.com/bytecodealliance/wasmtime/pull/2819), 648 [#2828](https://github.com/bytecodealliance/wasmtime/pull/2828), 649 [#2823](https://github.com/bytecodealliance/wasmtime/pull/2823), 650 [#2862](https://github.com/bytecodealliance/wasmtime/pull/2862), 651 [#2886](https://github.com/bytecodealliance/wasmtime/pull/2886), 652 [#2889](https://github.com/bytecodealliance/wasmtime/pull/2889), 653 [#2905](https://github.com/bytecodealliance/wasmtime/pull/2905). 654 655* Improved performance of Wasmtime runtime substantially: 656 [#2811](https://github.com/bytecodealliance/wasmtime/pull/2811), 657 [#2818](https://github.com/bytecodealliance/wasmtime/pull/2818), 658 [#2821](https://github.com/bytecodealliance/wasmtime/pull/2821), 659 [#2847](https://github.com/bytecodealliance/wasmtime/pull/2847), 660 [#2900](https://github.com/bytecodealliance/wasmtime/pull/2900). 661 662* Fixed WASI issue with file metadata on Windows: 663 [#2884](https://github.com/bytecodealliance/wasmtime/pull/2884). 664 665* Fixed an issue with debug info and an underflowing (trapping) offset: 666 [#2866](https://github.com/bytecodealliance/wasmtime/pull/2866). 667 668* Fixed an issue with unwind information in the old x86 backend: 669 [#2845](https://github.com/bytecodealliance/wasmtime/pull/2845). 670 671* Fixed i32 spilling in x64 backend: 672 [#2840](https://github.com/bytecodealliance/wasmtime/pull/2840). 673 674## 0.26.0 675 676Released 2021-04-05. 677 678### Added 679 680* Added the `wasmtime compile` command to support AOT compilation of Wasm 681 modules. This adds the `Engine::precompile_module` method. Also added the 682 `Config::target` method to change the compilation target of the 683 configuration. This can be used in conjunction with 684 `Engine::precompile_module` to target a different host triple than the 685 current one. 686 [#2791](https://github.com/bytecodealliance/wasmtime/pull/2791) 687 688* Support for macOS on aarch64 (Apple M1 Silicon), including Apple-specific 689 calling convention details and unwinding/exception handling using Mach ports. 690 [#2742](https://github.com/bytecodealliance/wasmtime/pull/2742), 691 [#2723](https://github.com/bytecodealliance/wasmtime/pull/2723) 692 693* A number of SIMD instruction implementations in the new x86-64 backend. 694 [#2771](https://github.com/bytecodealliance/wasmtime/pull/2771) 695 696* Added the `Config::cranelift_flag_enable` method to enable setting Cranelift 697 boolean flags or presets in a config. 698 699* Added CLI option `--cranelift-enable` to enable boolean settings and ISA presets. 700 701* Deduplicate function signatures in Wasm modules. 702 [#2772](https://github.com/bytecodealliance/wasmtime/pull/2772) 703 704* Optimize overheads of calling into Wasm functions. 705 [#2757](https://github.com/bytecodealliance/wasmtime/pull/2757), 706 [#2759](https://github.com/bytecodealliance/wasmtime/pull/2759) 707 708* Improvements related to Module Linking: compile fewer trampolines; 709 710 [#2774](https://github.com/bytecodealliance/wasmtime/pull/2774) 711 712* Re-export sibling crates from `wasmtime-wasi` to make embedding easier 713 without needing to match crate versions. 714 [#2776](https://github.com/bytecodealliance/wasmtime/pull/2776) 715 716### Changed 717 718* Switched the default compiler backend on x86-64 to Cranelift's new backend. 719 This should not have any user-visible effects other than possibly runtime 720 performance improvements. The old backend is still available with the 721 `old-x86-backend` feature flag to the `cranelift-codegen` or `wasmtime` 722 crates, or programmatically with `BackendVariant::Legacy`. We plan to 723 maintain the old backend for at least one more release and ensure it works on 724 CI. 725 [#2718](https://github.com/bytecodealliance/wasmtime/pull/2718) 726 727* Breaking: `Module::deserialize` has been removed in favor of `Module::new`. 728 729* Breaking: `Config::cranelift_clear_cpu_flags` was removed. Use `Config::target` 730 to clear the CPU flags for the host's target. 731 732* Breaking: `Config::cranelift_other_flag` was renamed to `Config::cranelift_flag_set`. 733 734* CLI changes: 735 * Wasmtime CLI options to enable WebAssembly features have been replaced with 736 a singular `--wasm-features` option. The previous options are still 737 supported, but are not displayed in help text. 738 * Breaking: the CLI option `--cranelift-flags` was changed to 739 `--cranelift-set`. 740 * Breaking: the CLI option `--enable-reference-types=false` has been changed 741 to `--wasm-features=-reference-types`. 742 * Breaking: the CLI option `--enable-multi-value=false` has been changed to 743 `--wasm-features=-multi-value`. 744 * Breaking: the CLI option `--enable-bulk-memory=false` has been changed to 745 `--wasm-features=-bulk-memory`. 746 747* Improved error-reporting in wiggle. 748 [#2760](https://github.com/bytecodealliance/wasmtime/pull/2760) 749 750* Make WASI sleeping fallible (some systems do not support sleep). 751 [#2756](https://github.com/bytecodealliance/wasmtime/pull/2756) 752 753* WASI: Support `poll_oneoff` with a sleep. 754 [#2753](https://github.com/bytecodealliance/wasmtime/pull/2753) 755 756* Allow a `StackMapSink` to be passed when defining functions with 757 `cranelift-module`. 758 [#2739](https://github.com/bytecodealliance/wasmtime/pull/2739) 759 760* Some refactoring in new x86-64 backend to prepare for VEX/EVEX (e.g., 761 AVX-512) instruction encodings to be supported. 762 [#2799](https://github.com/bytecodealliance/wasmtime/pull/2799) 763 764### Fixed 765 766* Fixed a corner case in `srem` (signed remainder) in the new x86-64 backend: 767 `INT_MIN % -1` should return `0`, rather than trapping. This only occurred 768 when `avoid_div_traps == false` was set by the embedding. 769 [#2763](https://github.com/bytecodealliance/wasmtime/pull/2763) 770 771* Fixed a memory leak of the `Store` when an instance traps. 772 [#2803](https://github.com/bytecodealliance/wasmtime/pull/2803) 773 774* Some fuzzing-related fixes. 775 [#2788](https://github.com/bytecodealliance/wasmtime/pull/2788), 776 [#2770](https://github.com/bytecodealliance/wasmtime/pull/2770) 777 778* Fixed memory-initialization bug in uffd allocator that could copy into the 779 wrong destination under certain conditions. Does not affect the default 780 wasmtime instance allocator. 781 [#2801](https://github.com/bytecodealliance/wasmtime/pull/2801) 782 783* Fix printing of float values from the Wasmtime CLI. 784 [#2797](https://github.com/bytecodealliance/wasmtime/pull/2797) 785 786* Remove the ability for the `Linker` to instantiate modules with duplicate 787 import strings of different types. 788 [#2789](https://github.com/bytecodealliance/wasmtime/pull/2789) 789 790## 0.25.0 791 792Released 2021-03-16. 793 794### Added 795 796* An implementation of a pooling instance allocator, optionally backed by 797 `userfaultfd` on Linux, was added to improve the performance of embeddings 798 that instantiate a large number of instances continuously. 799 [#2518](https://github.com/bytecodealliance/wasmtime/pull/2518) 800 801* Host functions can now be defined on `Config` to share the function across all 802 `Store` objects connected to an `Engine`. This can improve the time it takes 803 to instantiate instances in a short-lived `Store`. 804 [#2625](https://github.com/bytecodealliance/wasmtime/pull/2625) 805 806* The `Store` object now supports having typed values attached to it which can 807 be retrieved from host functions. 808 [#2625](https://github.com/bytecodealliance/wasmtime/pull/2625) 809 810* The `wiggle` code generator now supports `async` host functions. 811 [#2701](https://github.com/bytecodealliance/wasmtime/pull/2701) 812 813### Changed 814 815* The `Func::getN{,_async}` APIs have all been removed in favor of a new 816 `Func::typed` API which should be more compact in terms of API surface area as 817 well as more flexible in how it can be used. 818 [#2719](https://github.com/bytecodealliance/wasmtime/pull/2719) 819 820* `Engine::new` has been changed from returning `Engine` to returning 821 `anyhow::Result<Engine>`. Callers of `Engine::new` will need to be updated to 822 use the `?` operator on the return value or otherwise unwrap the result to get 823 the `Engine`. 824 825### Fixed 826 827* Interpretation of timestamps in `poll_oneoff` for WASI have been fixed to 828 correctly use nanoseconds instead of microseconds. 829 [#2717](https://github.com/bytecodealliance/wasmtime/pull/2717) 830 831## 0.24.0 832 833Released 2021-03-04. 834 835### Added 836 837* Implement support for `async` functions in Wasmtime 838 [#2434](https://github.com/bytecodealliance/wasmtime/pull/2434) 839 840### Fixed 841 842* Fix preservation of the sigaltstack on macOS 843 [#2676](https://github.com/bytecodealliance/wasmtime/pull/2676) 844* Fix incorrect semver dependencies involving fs-set-times. 845 [#2705](https://github.com/bytecodealliance/wasmtime/pull/2705) 846* Fix some `i128` shift-related bugs in x64 backend. 847 [#2682](https://github.com/bytecodealliance/wasmtime/pull/2682) 848* Fix incomplete trap metadata due to multiple traps at one address 849 [#2685](https://github.com/bytecodealliance/wasmtime/pull/2685) 850 851## 0.23.0 852 853Released 2021-02-16. 854 855### Added 856 857* Support for limiting WebAssembly execution with fuel was added, including 858 support in the C API. 859 [#2611](https://github.com/bytecodealliance/wasmtime/pull/2611) 860 [#2643](https://github.com/bytecodealliance/wasmtime/pull/2643) 861* Wasmtime now has more knobs for limiting memory and table allocations 862 [#2617](https://github.com/bytecodealliance/wasmtime/pull/2617) 863* Added a method to share `Config` across machines 864 [#2608](https://github.com/bytecodealliance/wasmtime/pull/2608) 865* Added a safe memory read/write API 866 [#2528](https://github.com/bytecodealliance/wasmtime/pull/2528) 867* Added support for the experimental wasi-crypto APIs 868 [#2597](https://github.com/bytecodealliance/wasmtime/pull/2597) 869* Added an instance limit to `Config` 870 [#2593](https://github.com/bytecodealliance/wasmtime/pull/2593) 871* Implemented module-linking's outer module aliases 872 [#2590](https://github.com/bytecodealliance/wasmtime/pull/2590) 873* Cranelift now supports 128-bit operations for the new x64 backend. 874 [#2539](https://github.com/bytecodealliance/wasmtime/pull/2539) 875* Cranelift now has detailed debug-info (DWARF) support in new backends (initially x64). 876 [#2565](https://github.com/bytecodealliance/wasmtime/pull/2565) 877* Cranelift now uses the `POPCNT`, `TZCNT`, and `LZCNT`, as well as SSE 4.1 878 rounding instructions on x64 when available. 879* Cranelift now uses the `CNT`, instruction on aarch64 when available. 880 881### Changed 882 883* A new WASI implementation built on the new 884 [`cap-std`](https://github.com/bytecodealliance/cap-std) crate was added, 885 replacing the previous implementation. This brings improved robustness, 886 portability, and performance. 887 888* `wasmtime_wasi::WasiCtxBuilder` moved to 889 `wasi_cap_std_sync::WasiCtxBuilder`. 890 891* The WebAssembly C API is updated, with a few minor API changes 892 [#2579](https://github.com/bytecodealliance/wasmtime/pull/2579) 893 894### Fixed 895 896* Fixed a panic in WASI `fd_readdir` on large directories 897 [#2620](https://github.com/bytecodealliance/wasmtime/pull/2620) 898* Fixed a memory leak with command modules 899 [#2017](https://github.com/bytecodealliance/wasmtime/pull/2017) 900 901-------------------------------------------------------------------------------- 902 903## 0.22.0 904 905Released 2021-01-07. 906 907### Added 908 909* Experimental support for [the module-linking 910 proposal](https://github.com/WebAssembly/module-linking) was 911 added. [#2094](https://github.com/bytecodealliance/wasmtime/pull/2094) 912 913* Added support for [the reference types 914 proposal](https://webassembly.github.io/reference-types) on the aarch64 915 architecture. [#2410](https://github.com/bytecodealliance/wasmtime/pull/2410) 916 917* Experimental support for [wasi-nn](https://github.com/WebAssembly/wasi-nn) was 918 added. [#2208](https://github.com/bytecodealliance/wasmtime/pull/2208) 919 920### Changed 921 922### Fixed 923 924* Fixed an issue where the `select` instruction didn't accept `v128` SIMD 925 operands. [#2391](https://github.com/bytecodealliance/wasmtime/pull/2391) 926 927* Fixed an issue where Wasmtime could potentially use the wrong stack map during 928 GCs, leading to a 929 panic. [#2396](https://github.com/bytecodealliance/wasmtime/pull/2396) 930 931* Fixed an issue where if a host-defined function erroneously returned a value 932 from a different store, that value would be 933 leaked. [#2424](https://github.com/bytecodealliance/wasmtime/pull/2424) 934 935* Fixed a bug where in certain cases if a module's instantiation failed, it 936 could leave trampolines in the store that referenced the no-longer-valid 937 instance. These trampolines could be reused in future instantiations, leading 938 to use after free bugs. 939 [#2408](https://github.com/bytecodealliance/wasmtime/pull/2408) 940 941* Fixed a miscompilation on aarch64 where certain instructions would read `SP` 942 instead of the zero register. This could only affect you if you explicitly 943 enabled the Wasm SIMD 944 proposal. [#2548](https://github.com/bytecodealliance/wasmtime/pull/2548) 945 946-------------------------------------------------------------------------------- 947 948## 0.21.0 949 950Released 2020-11-05. 951 952### Added 953 954* Experimental support for the multi-memory proposal was added. 955 [#2263](https://github.com/bytecodealliance/wasmtime/pull/2263) 956 957* The `Trap::trap_code` API enables learning what kind of trap was raised. 958 [#2309](https://github.com/bytecodealliance/wasmtime/pull/2309) 959 960### Changed 961 962* WebAssembly module validation is now parallelized. 963 [#2059](https://github.com/bytecodealliance/wasmtime/pull/2059) 964 965* Documentation is now available at docs.wasmtime.dev. 966 [#2317](https://github.com/bytecodealliance/wasmtime/pull/2317) 967 968* Windows now compiles like other platforms with a huge guard page instead of 969 having its own custom limit which made modules compile and run more slowly. 970 [#2326](https://github.com/bytecodealliance/wasmtime/pull/2326) 971 972* The size of the cache entry for serialized modules has been greatly reduced. 973 [#2321](https://github.com/bytecodealliance/wasmtime/pull/2321) 974 [#2322](https://github.com/bytecodealliance/wasmtime/pull/2322) 975 [#2324](https://github.com/bytecodealliance/wasmtime/pull/2324) 976 [#2325](https://github.com/bytecodealliance/wasmtime/pull/2325) 977 978* The `FuncType` API constructor and accessors are now iterator-based. 979 [#2365](https://github.com/bytecodealliance/wasmtime/pull/2365) 980 981### Fixed 982 983* A panic in compiling reference-types-using modules has been fixed. 984 [#2350](https://github.com/bytecodealliance/wasmtime/pull/2350) 985 986-------------------------------------------------------------------------------- 987 988## 0.20.0 989 990Released 2020-09-23. 991 992### Added 993 994* Support for explicitly serializing and deserializing compiled wasm modules has 995 been added. 996 [#2020](https://github.com/bytecodealliance/wasmtime/pull/2020) 997 998* A `wasmtime_store_gc` C API was added to run GC for `externref`. 999 [#2052](https://github.com/bytecodealliance/wasmtime/pull/2052) 1000 1001* Support for atomics in Cranelift has been added. Support is not fully 1002 implemented in Wasmtime at this time, however. 1003 [#2077](https://github.com/bytecodealliance/wasmtime/pull/2077) 1004 1005* The `Caller::get_export` function is now implemented for `Func` references as 1006 well. 1007 [#2108](https://github.com/bytecodealliance/wasmtime/pull/2108) 1008 1009### Fixed 1010 1011* Leaks in the C API have been fixed. 1012 [#2040](https://github.com/bytecodealliance/wasmtime/pull/2040) 1013 1014* The `wasm_val_copy` C API has been fixed for reference types. 1015 [#2041](https://github.com/bytecodealliance/wasmtime/pull/2041) 1016 1017* Fix a panic with `Func::new` and reference types when the store doesn't have 1018 reference types enabled. 1019 [#2039](https://github.com/bytecodealliance/wasmtime/pull/2039) 1020 1021-------------------------------------------------------------------------------- 1022 1023## 0.19.0 1024 1025Released 2020-07-14. 1026 1027### Added 1028 1029* The [WebAssembly reference-types proposal][reftypes] is now supported in 1030 Wasmtime and the C API. 1031 [#1832](https://github.com/bytecodealliance/wasmtime/pull/1832), 1032 [#1882](https://github.com/bytecodealliance/wasmtime/pull/1882), 1033 [#1894](https://github.com/bytecodealliance/wasmtime/pull/1894), 1034 [#1901](https://github.com/bytecodealliance/wasmtime/pull/1901), 1035 [#1923](https://github.com/bytecodealliance/wasmtime/pull/1923), 1036 [#1969](https://github.com/bytecodealliance/wasmtime/pull/1969), 1037 [#1973](https://github.com/bytecodealliance/wasmtime/pull/1973), 1038 [#1982](https://github.com/bytecodealliance/wasmtime/pull/1982), 1039 [#1984](https://github.com/bytecodealliance/wasmtime/pull/1984), 1040 [#1991](https://github.com/bytecodealliance/wasmtime/pull/1991), 1041 [#1996](https://github.com/bytecodealliance/wasmtime/pull/1996) 1042 1043* The [WebAssembly simd proposal's][simd] spec tests now pass in Wasmtime. 1044 [#1765](https://github.com/bytecodealliance/wasmtime/pull/1765), 1045 [#1876](https://github.com/bytecodealliance/wasmtime/pull/1876), 1046 [#1941](https://github.com/bytecodealliance/wasmtime/pull/1941), 1047 [#1957](https://github.com/bytecodealliance/wasmtime/pull/1957), 1048 [#1990](https://github.com/bytecodealliance/wasmtime/pull/1990), 1049 [#1994](https://github.com/bytecodealliance/wasmtime/pull/1994) 1050 1051* Wasmtime can now be compiled without the usage of threads for parallel 1052 compilation, although this is still enabled by default. 1053 [#1903](https://github.com/bytecodealliance/wasmtime/pull/1903) 1054 1055* The C API is [now 1056 documented](https://bytecodealliance.github.io/wasmtime/c-api/). 1057 [#1928](https://github.com/bytecodealliance/wasmtime/pull/1928), 1058 [#1959](https://github.com/bytecodealliance/wasmtime/pull/1959), 1059 [#1968](https://github.com/bytecodealliance/wasmtime/pull/1968) 1060 1061* A `wasmtime_linker_get_one_by_name` function was added to the C API. 1062 [#1897](https://github.com/bytecodealliance/wasmtime/pull/1897) 1063 1064* A `wasmtime_trap_exit_status` function was added to the C API. 1065 [#1912](https://github.com/bytecodealliance/wasmtime/pull/1912) 1066 1067* Compilation for the `aarch64-linux-android` target should now work, although 1068 keep in mind this platform is not fully tested still. 1069 [#2002](https://github.com/bytecodealliance/wasmtime/pull/2002) 1070 1071[reftypes]: https://github.com/WebAssembly/reference-types 1072 1073### Fixed 1074 1075* Runtime warnings when using Wasmtime on musl have been fixed. 1076 [#1914](https://github.com/bytecodealliance/wasmtime/pull/1914) 1077 1078* A bug affecting Windows unwind information with functions that have spilled 1079 floating point registers has been fixed. 1080 [#1983](https://github.com/bytecodealliance/wasmtime/pull/1983) 1081 1082### Changed 1083 1084* Wasmtime's default branch and development now happens on the `main` branch 1085 instead of `master`. 1086 [#1924](https://github.com/bytecodealliance/wasmtime/pull/1924) 1087 1088### Removed 1089 1090* The "host info" support in the C API has been removed since it was never fully 1091 or correctly implemented. 1092 [#1922](https://github.com/bytecodealliance/wasmtime/pull/1922) 1093 1094* Support for the `*_same` functions in the C API has been removed in the same 1095 vein as the host info APIs. 1096 [#1926](https://github.com/bytecodealliance/wasmtime/pull/1926) 1097 1098-------------------------------------------------------------------------------- 1099 1100## 0.18.0 1101 1102Release 2020-06-09. 1103 1104### Added 1105 1106The `WasmTy` trait is now implemented for `u32` and `u64`. 1107 1108 [#1808](https://github.com/bytecodealliance/wasmtime/pull/1808) 1109 1110-------------------------------------------------------------------------------- 1111 1112## 0.17.0 1113 1114Released 2020-06-01. 1115 1116### Added 1117 1118* The [Commands and Reactors ABI] is now supported in the Rust API. `Linker::module` 1119 loads a module and automatically handles Commands and Reactors semantics. 1120 1121 [#1565](https://github.com/bytecodealliance/wasmtime/pull/1565) 1122 1123[Commands and Reactors ABI]: https://github.com/WebAssembly/WASI/blob/master/design/application-abi.md#current-unstable-abi 1124 1125The `Table::grow` function now returns the previous table size, making it consistent 1126with the `table.grow` instruction. 1127 1128 [#1653](https://github.com/bytecodealliance/wasmtime/pull/1653) 1129 1130New Wasmtime-specific C APIs for working with tables were added which provide more 1131detailed error information and which make growing a table more consistent with the 1132`table.grow` instruction as well. 1133 1134 [#1654](https://github.com/bytecodealliance/wasmtime/pull/1654) 1135 1136The C API now includes support for enabling logging in Wasmtime. 1137 1138 [#1737](https://github.com/bytecodealliance/wasmtime/pull/1737) 1139 1140### Changed 1141 1142The WASI `proc_exit` function no longer exits the host process. It now unwinds the 1143callstack back to the wasm entrypoint, and the exit value is available from the 1144`Trap::i32_exit_status` method. 1145 1146 [#1646](https://github.com/bytecodealliance/wasmtime/pull/1646) 1147 1148The WebAssembly [multi-value](https://github.com/WebAssembly/multi-value/) proposal 1149is now enabled by default. 1150 1151 [#1667](https://github.com/bytecodealliance/wasmtime/pull/1667) 1152 1153The 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. 1154 1155 [#1761](https://github.com/bytecodealliance/wasmtime/pull/1761) 1156 1157-------------------------------------------------------------------------------- 1158 1159## 0.16.0 1160 1161Released 2020-04-29. 1162 1163### Added 1164 1165* The `Instance` struct has new accessors, `get_func`, `get_table`, 1166 `get_memory`, and `get_global` for quickly looking up exported 1167 functions, tables, memories, and globals by name. 1168 [#1524](https://github.com/bytecodealliance/wasmtime/pull/1524) 1169 1170* The C API has a number of new `wasmtime_*` functions which return error 1171 objects to get detailed error information when an API fails. 1172 [#1467](https://github.com/bytecodealliance/wasmtime/pull/1467) 1173 1174* Users now have fine-grained control over creation of instances of `Memory` 1175 with a new `MemoryCreator` trait. 1176 [#1400](https://github.com/bytecodealliance/wasmtime/pull/1400) 1177 1178* Go bindings for Wasmtime are [now available][go-bindings]. 1179 [#1481](https://github.com/bytecodealliance/wasmtime/pull/1481) 1180 1181* APIs for looking up values in a `Linker` have been added. 1182 [#1480](https://github.com/bytecodealliance/wasmtime/pull/1480) 1183 1184* Preliminary support for AArch64, also known as ARM64. 1185 [#1581](https://github.com/bytecodealliance/wasmtime/pull/1581) 1186 1187[go-bindings]: https://github.com/bytecodealliance/wasmtime-go 1188 1189### Changed 1190 1191* `Instance::exports` now returns `Export` objects which contain 1192 the `name`s of the exports in addition to their `Extern` definitions, 1193 so it's no longer necessary to use `Module::exports` to obtain the 1194 export names. 1195 [#1524](https://github.com/bytecodealliance/wasmtime/pull/1524) 1196 1197* The `Func::call` API has changed its error type from `Trap` to `anyhow::Error` 1198 to distinguish between wasm traps and runtime violations (like the wrong 1199 number of parameters). 1200 [#1467](https://github.com/bytecodealliance/wasmtime/pull/1467) 1201 1202* A number of `wasmtime_linker_*` and `wasmtime_config_*` C APIs have new type 1203 signatures which reflect returning errors. 1204 [#1467](https://github.com/bytecodealliance/wasmtime/pull/1467) 1205 1206* Bindings for .NET have moved to 1207 https://github.com/bytecodealliance/wasmtime-dotnet. 1208 [#1477](https://github.com/bytecodealliance/wasmtime/pull/1477) 1209 1210* Passing too many imports to `Instance::new` is now considered an error. 1211 [#1478](https://github.com/bytecodealliance/wasmtime/pull/1478) 1212 1213### Fixed 1214 1215* Spurious segfaults due to out-of-stack conditions when handling signals have 1216 been fixed. 1217 [#1315](https://github.com/bytecodealliance/wasmtime/pull/1315) 1218 1219-------------------------------------------------------------------------------- 1220 1221## 0.15.0 1222 1223Released 2020-03-31. 1224 1225### Fixed 1226 1227Full release produced for all artifacts to account for hiccups in 0.13.0 and 12280.14.0. 1229 1230-------------------------------------------------------------------------------- 1231 1232## 0.14.0 1233 1234*This version ended up not getting a full release* 1235 1236### Fixed 1237 1238Fix build errors in wasi-common on Windows. 1239 1240-------------------------------------------------------------------------------- 1241 1242## 0.13.0 1243 1244Released 2020-03-24. 1245 1246### Added 1247 1248* Lots of documentation of `wasmtime` has been updated. Be sure to check out the 1249 [book](https://bytecodealliance.github.io/wasmtime/) and [API 1250 documentation](https://bytecodealliance.github.io/wasmtime/api/wasmtime/)! 1251 1252* All wasmtime example programs are now in a top-level `examples` directory and 1253 are available in both C and Rust. 1254 [#1286](https://github.com/bytecodealliance/wasmtime/pull/1286) 1255 1256* A `wasmtime::Linker` type was added to conveniently link link wasm modules 1257 together and create instances that reference one another. 1258 [#1384](https://github.com/bytecodealliance/wasmtime/pull/1384) 1259 1260* Wasmtime now has "jitdump" support enabled by default which allows [profiling 1261 wasm code on linux][jitdump]. 1262 [#1310](https://github.com/bytecodealliance/wasmtime/pull/1310) 1263 1264* The `wasmtime::Caller` type now exists as a first-class way to access the 1265 caller's exports, namely memory, when implementing host APIs. This can be the 1266 first argument of functions defined with `Func::new` or `Func::wrap` which 1267 allows easily implementing methods which take a pointer into wasm memory. Note 1268 that this only works for accessing the caller's `Memory` for now and it must 1269 be exported. This will eventually be replaced with a more general-purpose 1270 mechanism like interface types. 1271 [#1290](https://github.com/bytecodealliance/wasmtime/pull/1290) 1272 1273* The bulk memory proposal has been fully implemented. 1274 [#1264](https://github.com/bytecodealliance/wasmtime/pull/1264) 1275 [#976](https://github.com/bytecodealliance/wasmtime/pull/976) 1276 1277* Virtual file support has been added to `wasi-common`. 1278 [#701](https://github.com/bytecodealliance/wasmtime/pull/701) 1279 1280* The C API has been enhanced with a Wasmtime-specific `wasmtime_wat2wasm` to 1281 parse `*.wat` files via the C API. 1282 [#1206](https://github.com/bytecodealliance/wasmtime/pull/1206) 1283 1284[jitdump]: https://bytecodealliance.github.io/wasmtime/examples-profiling.html 1285 1286### Changed 1287 1288* The `wast` and `wasm2obj` standalone binaries have been removed. They're 1289 available via the `wasmtime wast` and `wasmtime wasm2obj` subcommands. 1290 [#1372](https://github.com/bytecodealliance/wasmtime/pull/1372) 1291 1292* The `wasi-common` crate now uses the new `wiggle` crate to auto-generate a 1293 trait which is implemented for the current wasi snapshot. 1294 [#1202](https://github.com/bytecodealliance/wasmtime/pull/1202) 1295 1296* Wasmtime no longer has a dependency on a C++ compiler. 1297 [#1365](https://github.com/bytecodealliance/wasmtime/pull/1365) 1298 1299* The `Func::wrapN` APIs have been consolidated into one `Func::wrap` API. 1300 [#1363](https://github.com/bytecodealliance/wasmtime/pull/1363) 1301 1302* The `Callable` trait has been removed and now `Func::new` takes a closure 1303 directly. 1304 [#1363](https://github.com/bytecodealliance/wasmtime/pull/1363) 1305 1306* The Cranelift repository has been merged into the Wasmtime repository. 1307 1308* Support for interface types has been temporarily removed. 1309 [#1292](https://github.com/bytecodealliance/wasmtime/pull/1292) 1310 1311* The exit code of the `wasmtime` CLI has changed if the program traps. 1312 [#1274](https://github.com/bytecodealliance/wasmtime/pull/1274) 1313 1314* The `wasmtime` CLI now logs to stderr by default and the `-d` flag has been 1315 renamed to `--log-to-file`. 1316 [#1266](https://github.com/bytecodealliance/wasmtime/pull/1266) 1317 1318* Values cannot cross `Store` objects, meaning you can't instantiate a module 1319 with values from different stores nor pass values from different stores into 1320 methods. 1321 [#1016](https://github.com/bytecodealliance/wasmtime/pull/1016) 1322 1323-------------------------------------------------------------------------------- 1324 1325## 0.12.0 1326 1327Released 2020-02-26. 1328 1329### Added 1330 1331* Support for the [WebAssembly text annotations proposal][annotations-proposal] 1332 has been added. 1333 [#998](https://github.com/bytecodealliance/wasmtime/pull/998) 1334 1335* An initial C API for instantiating WASI modules has been added. 1336 [#977](https://github.com/bytecodealliance/wasmtime/pull/977) 1337 1338* A new suite of `Func::getN` functions have been added to the `wasmtime` API to 1339 call statically-known function signatures in a highly optimized fashion. 1340 [#955](https://github.com/bytecodealliance/wasmtime/pull/955) 1341 1342* Initial support for profiling JIT code through perf jitdump has been added. 1343 [#360](https://github.com/bytecodealliance/wasmtime/pull/360) 1344 1345* More CLI flags corresponding to proposed WebAssembly features have been added. 1346 [#917](https://github.com/bytecodealliance/wasmtime/pull/917) 1347 1348[annotations-proposal]: https://github.com/webassembly/annotations 1349 1350### Changed 1351 1352* The `wasmtime` CLI as well as embedding API will optimize WebAssembly code by 1353 default now. 1354 [#973](https://github.com/bytecodealliance/wasmtime/pull/973) 1355 [#988](https://github.com/bytecodealliance/wasmtime/pull/988) 1356 1357* The `verifier` pass in Cranelift is now no longer run by default when using 1358 the embedding API. 1359 [#882](https://github.com/bytecodealliance/wasmtime/pull/882) 1360 1361### Fixed 1362 1363* Code caching now accurately accounts for optimization levels, ensuring that if 1364 you ask for optimized code you're not accidentally handed unoptimized code 1365 from the cache. 1366 [#974](https://github.com/bytecodealliance/wasmtime/pull/974) 1367 1368* Automated releases for tags should be up and running again, along with 1369 automatic publication of the `wasmtime` Python package. 1370 [#971](https://github.com/bytecodealliance/wasmtime/pull/971) 1371