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