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