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