wasmtime-cli 0.28.0

Command-line interface for Wasmtime
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
# Wasmtime Releases

--------------------------------------------------------------------------------

## Unreleased

## 0.28.0

Released 2021-06-09.

### Changed

* Breaking: Wasmtime's embedding API has been redesigned, as specified in [RFC
  11]. Rust users can now enjoy easier times with `Send` and `Sync`, and all
  users can now more clearly manage memory, especially in the C API. Language
  embeddings have been updated to the new API as well.
  [#2897]https://github.com/bytecodealliance/wasmtime/pull/2897

[RFC 11]: https://github.com/bytecodealliance/rfcs/pull/11

### Added

* A new `InstancePre` type, created with `Linker::instantiate_pre`, has been
  added to perform type-checking of an instance once and reduce the work done
  for each instantiation of a module:
  [#2962]https://github.com/bytecodealliance/wasmtime/pull/2962

* Deserialization of a module can now optionally skip checking the wasmtime
  version string:
  [#2945]https://github.com/bytecodealliance/wasmtime/pull/2945

* A method has been exposed to frontload per-thread initialization costs if the
  latency of every last wasm call is important:
  [#2946]https://github.com/bytecodealliance/wasmtime/pull/2946

* Hooks have been added for entry/exit into wasm code to allow embeddings to
  track time and other properties about execution in a wasm environment:
  [#2952]https://github.com/bytecodealliance/wasmtime/pull/2952

* A [C++ embedding of Wasmtime has been written][cpp].

[RFC 11]: https://github.com/bytecodealliance/rfcs/pull/11
[cpp]: https://github.com/bytecodealliance/wasmtime-cpp

### Fixed

* Multiple returns on macOS AArch64 have been fixed:
  [#2956]https://github.com/bytecodealliance/wasmtime/pull/2956

## 0.27.0

Released 2021-05-21.

### Security Fixes

* Fixed a security issue in Cranelift's x64 backend that could result in a heap
  sandbox escape due to an incorrect sign-extension:
  [#2913]https://github.com/bytecodealliance/wasmtime/issues/2913.

### Added

* Support for IBM z/Archiecture (`s390x`) machines in Cranelift and Wasmtime:
  [#2836]https://github.com/bytecodealliance/wasmtime/pull/2836,
  [#2837]https://github.com/bytecodealliance/wasmtime/pull/2837,
  [#2838]https://github.com/bytecodealliance/wasmtime/pull/2838,
  [#2843]https://github.com/bytecodealliance/wasmtime/pull/2843,
  [#2854]https://github.com/bytecodealliance/wasmtime/pull/2854,
  [#2870]https://github.com/bytecodealliance/wasmtime/pull/2870,
  [#2871]https://github.com/bytecodealliance/wasmtime/pull/2871,
  [#2872]https://github.com/bytecodealliance/wasmtime/pull/2872,
  [#2874]https://github.com/bytecodealliance/wasmtime/pull/2874.

* Improved async support in wasi-common runtime:
  [#2832]https://github.com/bytecodealliance/wasmtime/pull/2832.

* Added `Store::with_limits`, `StoreLimits`, and `ResourceLimiter` to the
  Wasmtime API to help with enforcing resource limits at runtime. The
  `ResourceLimiter` trait can be implemented by custom resource limiters to
  decide if linear memories or tables can be grown.

* Added `allow-unknown-exports` option for the run command:
  [#2879]https://github.com/bytecodealliance/wasmtime/pull/2879.

* Added API to notify that a `Store` has moved to a new thread:
  [#2822]https://github.com/bytecodealliance/wasmtime/pull/2822.

* Documented guidance around using Wasmtime in multithreaded contexts:
  [#2812]https://github.com/bytecodealliance/wasmtime/pull/2812.
  In the future, the Wasmtime API will change to allow some of its core types
  to be Send/Sync; see the in-progress
  [#2897]https://github.com/bytecodealliance/wasmtime/pull/2897 for details.

* Support calls from native code to multiple-return-value functions:
  [#2806]https://github.com/bytecodealliance/wasmtime/pull/2806.

### Changed

* Breaking: `Memory::new` has been changed to return `Result` as creating a
  host memory object is now a fallible operation when the initial size of
  the memory exceeds the store limits.

### Fixed

* Many instruction selection improvements on x64 and aarch64:
  [#2819]https://github.com/bytecodealliance/wasmtime/pull/2819,
  [#2828]https://github.com/bytecodealliance/wasmtime/pull/2828,
  [#2823]https://github.com/bytecodealliance/wasmtime/pull/2823,
  [#2862]https://github.com/bytecodealliance/wasmtime/pull/2862,
  [#2886]https://github.com/bytecodealliance/wasmtime/pull/2886,
  [#2889]https://github.com/bytecodealliance/wasmtime/pull/2889,
  [#2905]https://github.com/bytecodealliance/wasmtime/pull/2905.

* Improved performance of Wasmtime runtime substantially:
  [#2811]https://github.com/bytecodealliance/wasmtime/pull/2811,
  [#2818]https://github.com/bytecodealliance/wasmtime/pull/2818,
  [#2821]https://github.com/bytecodealliance/wasmtime/pull/2821,
  [#2847]https://github.com/bytecodealliance/wasmtime/pull/2847,
  [#2900]https://github.com/bytecodealliance/wasmtime/pull/2900.

* Fixed WASI issue with file metadata on Windows:
  [#2884]https://github.com/bytecodealliance/wasmtime/pull/2884.

* Fixed an issue with debug info and an underflowing (trapping) offset:
  [#2866]https://github.com/bytecodealliance/wasmtime/pull/2866.

* Fixed an issue with unwind information in the old x86 backend:
  [#2845]https://github.com/bytecodealliance/wasmtime/pull/2845.

* Fixed i32 spilling in x64 backend:
  [#2840]https://github.com/bytecodealliance/wasmtime/pull/2840.

## 0.26.0

Released 2021-04-05.

### Added

* Added the `wasmtime compile` command to support AOT compilation of Wasm
  modules. This adds the `Engine::precompile_module` method. Also added the
  `Config::target` method to change the compilation target of the
  configuration. This can be used in conjunction with
  `Engine::precompile_module` to target a different host triple than the
  current one.
  [#2791]https://github.com/bytecodealliance/wasmtime/pull/2791

* Support for macOS on aarch64 (Apple M1 Silicon), including Apple-specific
  calling convention details and unwinding/exception handling using Mach ports.
  [#2742]https://github.com/bytecodealliance/wasmtime/pull/2742,
  [#2723]https://github.com/bytecodealliance/wasmtime/pull/2723

* A number of SIMD instruction implementations in the new x86-64 backend.
  [#2771]https://github.com/bytecodealliance/wasmtime/pull/2771

* Added the `Config::cranelift_flag_enable` method to enable setting Cranelift
  boolean flags or presets in a config.

* Added CLI option `--cranelift-enable` to enable boolean settings and ISA presets.

* Deduplicate function signatures in Wasm modules.
  [#2772]https://github.com/bytecodealliance/wasmtime/pull/2772

* Optimize overheads of calling into Wasm functions.
  [#2757]https://github.com/bytecodealliance/wasmtime/pull/2757,
  [#2759]https://github.com/bytecodealliance/wasmtime/pull/2759

* Improvements related to Module Linking: compile fewer trampolines;

  [#2774]https://github.com/bytecodealliance/wasmtime/pull/2774

* Re-export sibling crates from `wasmtime-wasi` to make embedding easier
  without needing to match crate versions.
  [#2776]https://github.com/bytecodealliance/wasmtime/pull/2776

### Changed

* Switched the default compiler backend on x86-64 to Cranelift's new backend.
  This should not have any user-visible effects other than possibly runtime
  performance improvements. The old backend is still available with the
  `old-x86-backend` feature flag to the `cranelift-codegen` or `wasmtime`
  crates, or programmatically with `BackendVariant::Legacy`. We plan to
  maintain the old backend for at least one more release and ensure it works on
  CI.
  [#2718]https://github.com/bytecodealliance/wasmtime/pull/2718

* Breaking: `Module::deserialize` has been removed in favor of `Module::new`.

* Breaking: `Config::cranelift_clear_cpu_flags` was removed. Use `Config::target`
  to clear the CPU flags for the host's target.

* Breaking: `Config::cranelift_other_flag` was renamed to `Config::cranelift_flag_set`.

* CLI changes:
  * Wasmtime CLI options to enable WebAssembly features have been replaced with
    a singular `--wasm-features` option. The previous options are still
    supported, but are not displayed in help text.
  * Breaking: the CLI option `--cranelift-flags` was changed to
    `--cranelift-set`.
  * Breaking: the CLI option `--enable-reference-types=false` has been changed
    to `--wasm-features=-reference-types`.
  * Breaking: the CLI option `--enable-multi-value=false` has been changed to
    `--wasm-features=-multi-value`.
  * Breaking: the CLI option `--enable-bulk-memory=false` has been changed to
    `--wasm-features=-bulk-memory`.

* Improved error-reporting in wiggle.
  [#2760]https://github.com/bytecodealliance/wasmtime/pull/2760

* Make WASI sleeping fallible (some systems do not support sleep).
  [#2756]https://github.com/bytecodealliance/wasmtime/pull/2756

* WASI: Support `poll_oneoff` with a sleep.
  [#2753]https://github.com/bytecodealliance/wasmtime/pull/2753

* Allow a `StackMapSink` to be passed when defining functions with
  `cranelift-module`.
  [#2739]https://github.com/bytecodealliance/wasmtime/pull/2739

* Some refactoring in new x86-64 backend to prepare for VEX/EVEX (e.g.,
  AVX-512) instruction encodings to be supported.
  [#2799]https://github.com/bytecodealliance/wasmtime/pull/2799

### Fixed

* Fixed a corner case in `srem` (signed remainder) in the new x86-64 backend:
  `INT_MIN % -1` should return `0`, rather than trapping. This only occurred
  when `avoid_div_traps == false` was set by the embedding.
  [#2763]https://github.com/bytecodealliance/wasmtime/pull/2763

* Fixed a memory leak of the `Store` when an instance traps.
  [#2803]https://github.com/bytecodealliance/wasmtime/pull/2803

* Some fuzzing-related fixes.
  [#2788]https://github.com/bytecodealliance/wasmtime/pull/2788,
  [#2770]https://github.com/bytecodealliance/wasmtime/pull/2770

* Fixed memory-initialization bug in uffd allocator that could copy into the
  wrong destination under certain conditions. Does not affect the default
  wasmtime instance allocator.
  [#2801]https://github.com/bytecodealliance/wasmtime/pull/2801

* Fix printing of float values from the Wasmtime CLI.
  [#2797]https://github.com/bytecodealliance/wasmtime/pull/2797

* Remove the ability for the `Linker` to instantiate modules with duplicate
  import strings of different types.
  [#2789]https://github.com/bytecodealliance/wasmtime/pull/2789

## 0.25.0

Released 2021-03-16.

### Added

* An implementation of a pooling instance allocator, optionally backed by
  `userfaultfd` on Linux, was added to improve the performance of embeddings
  that instantiate a large number of instances continuously.
  [#2518]https://github.com/bytecodealliance/wasmtime/pull/2518

* Host functions can now be defined on `Config` to share the function across all
  `Store` objects connected to an `Engine`. This can improve the time it takes
  to instantiate instances in a short-lived `Store`.
  [#2625]https://github.com/bytecodealliance/wasmtime/pull/2625

* The `Store` object now supports having typed values attached to it which can
  be retrieved from host functions.
  [#2625]https://github.com/bytecodealliance/wasmtime/pull/2625

* The `wiggle` code generator now supports `async` host functions.
  [#2701]https://github.com/bytecodealliance/wasmtime/pull/2701

### Changed

* The `Func::getN{,_async}` APIs have all been removed in favor of a new
  `Func::typed` API which should be more compact in terms of API surface area as
  well as more flexible in how it can be used.
  [#2719]https://github.com/bytecodealliance/wasmtime/pull/2719

* `Engine::new` has been changed from returning `Engine` to returning
  `anyhow::Result<Engine>`. Callers of `Engine::new` will need to be updated to
  use the `?` operator on the return value or otherwise unwrap the result to get
  the `Engine`.

### Fixed

* Interpretation of timestamps in `poll_oneoff` for WASI have been fixed to
  correctly use nanoseconds instead of microseconds.
  [#2717]https://github.com/bytecodealliance/wasmtime/pull/2717

## 0.24.0

Released 2021-03-04.

### Added

* Implement support for `async` functions in Wasmtime
  [#2434]https://github.com/bytecodealliance/wasmtime/pull/2434

### Fixed

* Fix preservation of the sigaltstack on macOS
  [#2676]https://github.com/bytecodealliance/wasmtime/pull/2676
* Fix incorrect semver dependencies involving fs-set-times.
  [#2705]https://github.com/bytecodealliance/wasmtime/pull/2705
* Fix some `i128` shift-related bugs in x64 backend.
  [#2682]https://github.com/bytecodealliance/wasmtime/pull/2682
* Fix incomplete trap metadata due to multiple traps at one address
  [#2685]https://github.com/bytecodealliance/wasmtime/pull/2685

## 0.23.0

Released 2021-02-16.

### Added

* Support for limiting WebAssembly execution with fuel was added, including
  support in the C API.
  [#2611]https://github.com/bytecodealliance/wasmtime/pull/2611
  [#2643]https://github.com/bytecodealliance/wasmtime/pull/2643
* Wasmtime now has more knobs for limiting memory and table allocations
  [#2617]https://github.com/bytecodealliance/wasmtime/pull/2617
* Added a method to share `Config` across machines
  [#2608]https://github.com/bytecodealliance/wasmtime/pull/2608
* Added a safe memory read/write API
  [#2528]https://github.com/bytecodealliance/wasmtime/pull/2528
* Added support for the experimental wasi-crypto APIs
  [#2597]https://github.com/bytecodealliance/wasmtime/pull/2597
* Added an instance limit to `Config`
  [#2593]https://github.com/bytecodealliance/wasmtime/pull/2593
* Implemented module-linking's outer module aliases
  [#2590]https://github.com/bytecodealliance/wasmtime/pull/2590
* Cranelift now supports 128-bit operations for the new x64 backend.
  [#2539]https://github.com/bytecodealliance/wasmtime/pull/2539
* Cranelift now has detailed debug-info (DWARF) support in new backends (initially x64).
  [#2565]https://github.com/bytecodealliance/wasmtime/pull/2565
* Cranelift now uses the `POPCNT`, `TZCNT`, and `LZCNT`, as well as SSE 4.1
  rounding instructions on x64 when available.
* Cranelift now uses the `CNT`, instruction on aarch64 when available.

### Changed

* A new WASI implementation built on the new
  [`cap-std`]https://github.com/bytecodealliance/cap-std crate was added,
  replacing the previous implementation. This brings improved robustness,
  portability, and performance.

* `wasmtime_wasi::WasiCtxBuilder` moved to
  `wasi_cap_std_sync::WasiCtxBuilder`.

* The WebAssembly C API is updated, with a few minor API changes
  [#2579]https://github.com/bytecodealliance/wasmtime/pull/2579

### Fixed

* Fixed a panic in WASI `fd_readdir` on large directories
  [#2620]https://github.com/bytecodealliance/wasmtime/pull/2620
* Fixed a memory leak with command modules
  [#2017]https://github.com/bytecodealliance/wasmtime/pull/2017

--------------------------------------------------------------------------------

## 0.22.0

Released 2021-01-07.

### Added

* Experimental support for [the module-linking
  proposal](https://github.com/WebAssembly/module-linking) was
  added. [#2094]https://github.com/bytecodealliance/wasmtime/pull/2094

* Added support for [the reference types
  proposal](https://webassembly.github.io/reference-types) on the aarch64
  architecture. [#2410]https://github.com/bytecodealliance/wasmtime/pull/2410

* Experimental support for [wasi-nn]https://github.com/WebAssembly/wasi-nn was
  added. [#2208]https://github.com/bytecodealliance/wasmtime/pull/2208

### Changed

### Fixed

* Fixed an issue where the `select` instruction didn't accept `v128` SIMD
  operands. [#2391]https://github.com/bytecodealliance/wasmtime/pull/2391

* Fixed an issue where Wasmtime could potentially use the wrong stack map during
  GCs, leading to a
  panic. [#2396]https://github.com/bytecodealliance/wasmtime/pull/2396

* Fixed an issue where if a host-defined function erroneously returned a value
  from a different store, that value would be
  leaked. [#2424]https://github.com/bytecodealliance/wasmtime/pull/2424

* Fixed a bug where in certain cases if a module's instantiation failed, it
  could leave trampolines in the store that referenced the no-longer-valid
  instance. These trampolines could be reused in future instantiations, leading
  to use after free bugs.
  [#2408]https://github.com/bytecodealliance/wasmtime/pull/2408

* Fixed a miscompilation on aarch64 where certain instructions would read `SP`
  instead of the zero register. This could only affect you if you explicitly
  enabled the Wasm SIMD
  proposal. [#2548]https://github.com/bytecodealliance/wasmtime/pull/2548

--------------------------------------------------------------------------------

## 0.21.0

Released 2020-11-05.

### Added

* Experimental support for the multi-memory proposal was added.
  [#2263]https://github.com/bytecodealliance/wasmtime/pull/2263

* The `Trap::trap_code` API enables learning what kind of trap was raised.
  [#2309]https://github.com/bytecodealliance/wasmtime/pull/2309

### Changed

* WebAssembly module validation is now parallelized.
  [#2059]https://github.com/bytecodealliance/wasmtime/pull/2059

* Documentation is now available at docs.wasmtime.dev.
  [#2317]https://github.com/bytecodealliance/wasmtime/pull/2317

* Windows now compiles like other platforms with a huge guard page instead of
  having its own custom limit which made modules compile and run more slowly.
  [#2326]https://github.com/bytecodealliance/wasmtime/pull/2326

* The size of the cache entry for serialized modules has been greatly reduced.
  [#2321]https://github.com/bytecodealliance/wasmtime/pull/2321
  [#2322]https://github.com/bytecodealliance/wasmtime/pull/2322
  [#2324]https://github.com/bytecodealliance/wasmtime/pull/2324
  [#2325]https://github.com/bytecodealliance/wasmtime/pull/2325

* The `FuncType` API constructor and accessors are now iterator-based.
  [#2365]https://github.com/bytecodealliance/wasmtime/pull/2365

### Fixed

* A panic in compiling reference-types-using modules has been fixed.
  [#2350]https://github.com/bytecodealliance/wasmtime/pull/2350

--------------------------------------------------------------------------------

## 0.20.0

Released 2020-09-23.

### Added

* Support for explicitly serializing and deserializing compiled wasm modules has
  been added.
  [#2020]https://github.com/bytecodealliance/wasmtime/pull/2020

* A `wasmtime_store_gc` C API was added to run GC for `externref`.
  [#2052]https://github.com/bytecodealliance/wasmtime/pull/2052

* Support for atomics in Cranelift has been added. Support is not fully
  implemented in Wasmtime at this time, however.
  [#2077]https://github.com/bytecodealliance/wasmtime/pull/2077

* The `Caller::get_export` function is now implemented for `Func` references as
  well.
  [#2108]https://github.com/bytecodealliance/wasmtime/pull/2108

### Fixed

* Leaks in the C API have been fixed.
  [#2040]https://github.com/bytecodealliance/wasmtime/pull/2040

* The `wasm_val_copy` C API has been fixed for reference types.
  [#2041]https://github.com/bytecodealliance/wasmtime/pull/2041

* Fix a panic with `Func::new` and reference types when the store doesn't have
  reference types enabled.
  [#2039]https://github.com/bytecodealliance/wasmtime/pull/2039

--------------------------------------------------------------------------------

## 0.19.0

Released 2020-07-14.

### Added

* The [WebAssembly reference-types proposal][reftypes] is now supported in
  Wasmtime and the C API.
  [#1832]https://github.com/bytecodealliance/wasmtime/pull/1832,
  [#1882]https://github.com/bytecodealliance/wasmtime/pull/1882,
  [#1894]https://github.com/bytecodealliance/wasmtime/pull/1894,
  [#1901]https://github.com/bytecodealliance/wasmtime/pull/1901,
  [#1923]https://github.com/bytecodealliance/wasmtime/pull/1923,
  [#1969]https://github.com/bytecodealliance/wasmtime/pull/1969,
  [#1973]https://github.com/bytecodealliance/wasmtime/pull/1973,
  [#1982]https://github.com/bytecodealliance/wasmtime/pull/1982,
  [#1984]https://github.com/bytecodealliance/wasmtime/pull/1984,
  [#1991]https://github.com/bytecodealliance/wasmtime/pull/1991,
  [#1996]https://github.com/bytecodealliance/wasmtime/pull/1996

* The [WebAssembly simd proposal's][simd] spec tests now pass in Wasmtime.
  [#1765]https://github.com/bytecodealliance/wasmtime/pull/1765,
  [#1876]https://github.com/bytecodealliance/wasmtime/pull/1876,
  [#1941]https://github.com/bytecodealliance/wasmtime/pull/1941,
  [#1957]https://github.com/bytecodealliance/wasmtime/pull/1957,
  [#1990]https://github.com/bytecodealliance/wasmtime/pull/1990,
  [#1994]https://github.com/bytecodealliance/wasmtime/pull/1994

* Wasmtime can now be compiled without the usage of threads for parallel
  compilation, although this is still enabled by default.
  [#1903]https://github.com/bytecodealliance/wasmtime/pull/1903

* The C API is [now
  documented](https://bytecodealliance.github.io/wasmtime/c-api/).
  [#1928]https://github.com/bytecodealliance/wasmtime/pull/1928,
  [#1959]https://github.com/bytecodealliance/wasmtime/pull/1959,
  [#1968]https://github.com/bytecodealliance/wasmtime/pull/1968

* A `wasmtime_linker_get_one_by_name` function was added to the C API.
  [#1897]https://github.com/bytecodealliance/wasmtime/pull/1897

* A `wasmtime_trap_exit_status` function was added to the C API.
  [#1912]https://github.com/bytecodealliance/wasmtime/pull/1912

* Compilation for the `aarch64-linux-android` target should now work, although
  keep in mind this platform is not fully tested still.
  [#2002]https://github.com/bytecodealliance/wasmtime/pull/2002

[reftypes]: https://github.com/WebAssembly/reference-types

### Fixed

* Runtime warnings when using Wasmtime on musl have been fixed.
  [#1914]https://github.com/bytecodealliance/wasmtime/pull/1914

* A bug affecting Windows unwind information with functions that have spilled
  floating point registers has been fixed.
  [#1983]https://github.com/bytecodealliance/wasmtime/pull/1983

### Changed

* Wasmtime's default branch and development now happens on the `main` branch
  instead of `master`.
  [#1924]https://github.com/bytecodealliance/wasmtime/pull/1924

### Removed

* The "host info" support in the C API has been removed since it was never fully
  or correctly implemented.
  [#1922]https://github.com/bytecodealliance/wasmtime/pull/1922

* Support for the `*_same` functions in the C API has been removed in the same
  vein as the host info APIs.
  [#1926]https://github.com/bytecodealliance/wasmtime/pull/1926

--------------------------------------------------------------------------------

## 0.18.0

Release 2020-06-09.

### Added

The `WasmTy` trait is now implemented for `u32` and `u64`.

  [#1808](https://github.com/bytecodealliance/wasmtime/pull/1808)

--------------------------------------------------------------------------------

## 0.17.0

Released 2020-06-01.

### Added

* The [Commands and Reactors ABI] is now supported in the Rust API. `Linker::module`
  loads a module and automatically handles Commands and Reactors semantics.

  [#1565]https://github.com/bytecodealliance/wasmtime/pull/1565

[Commands and Reactors ABI]: https://github.com/WebAssembly/WASI/blob/master/design/application-abi.md#current-unstable-abi

The `Table::grow` function now returns the previous table size, making it consistent
with the `table.grow` instruction.

  [#1653](https://github.com/bytecodealliance/wasmtime/pull/1653)

New Wasmtime-specific C APIs for working with tables were added which provide more
detailed error information and which make growing a table more consistent with the
`table.grow` instruction as well.

  [#1654](https://github.com/bytecodealliance/wasmtime/pull/1654)

The C API now includes support for enabling logging in Wasmtime.

  [#1737](https://github.com/bytecodealliance/wasmtime/pull/1737)

### Changed

The WASI `proc_exit` function no longer exits the host process. It now unwinds the
callstack back to the wasm entrypoint, and the exit value is available from the
`Trap::i32_exit_status` method.

  [#1646](https://github.com/bytecodealliance/wasmtime/pull/1646)

The WebAssembly [multi-value](https://github.com/WebAssembly/multi-value/) proposal
is now enabled by default.

  [#1667](https://github.com/bytecodealliance/wasmtime/pull/1667)

The 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.

  [#1761](https://github.com/bytecodealliance/wasmtime/pull/1761)

--------------------------------------------------------------------------------

## 0.16.0

Released 2020-04-29.

### Added

* The `Instance` struct has new accessors, `get_func`, `get_table`,
  `get_memory`, and `get_global` for quickly looking up exported
  functions, tables, memories, and globals by name.
  [#1524]https://github.com/bytecodealliance/wasmtime/pull/1524

* The C API has a number of new `wasmtime_*` functions which return error
  objects to get detailed error information when an API fails.
  [#1467]https://github.com/bytecodealliance/wasmtime/pull/1467

* Users now have fine-grained control over creation of instances of `Memory`
  with a new `MemoryCreator` trait.
  [#1400]https://github.com/bytecodealliance/wasmtime/pull/1400

* Go bindings for Wasmtime are [now available][go-bindings].
  [#1481]https://github.com/bytecodealliance/wasmtime/pull/1481

* APIs for looking up values in a `Linker` have been added.
  [#1480]https://github.com/bytecodealliance/wasmtime/pull/1480

* Preliminary support for AArch64, also known as ARM64.
  [#1581]https://github.com/bytecodealliance/wasmtime/pull/1581

[go-bindings]: https://github.com/bytecodealliance/wasmtime-go

### Changed

* `Instance::exports` now returns `Export` objects which contain
  the `name`s of the exports in addition to their `Extern` definitions,
  so it's no longer necessary to use `Module::exports` to obtain the
  export names.
  [#1524]https://github.com/bytecodealliance/wasmtime/pull/1524

* The `Func::call` API has changed its error type from `Trap` to `anyhow::Error`
  to distinguish between wasm traps and runtime violations (like the wrong
  number of parameters).
  [#1467]https://github.com/bytecodealliance/wasmtime/pull/1467

* A number of `wasmtime_linker_*` and `wasmtime_config_*` C APIs have new type
  signatures which reflect returning errors.
  [#1467]https://github.com/bytecodealliance/wasmtime/pull/1467

* Bindings for .NET have moved to
  https://github.com/bytecodealliance/wasmtime-dotnet.
  [#1477]https://github.com/bytecodealliance/wasmtime/pull/1477

* Passing too many imports to `Instance::new` is now considered an error.
  [#1478]https://github.com/bytecodealliance/wasmtime/pull/1478

### Fixed

* Spurious segfaults due to out-of-stack conditions when handling signals have
  been fixed.
  [#1315]https://github.com/bytecodealliance/wasmtime/pull/1315

--------------------------------------------------------------------------------

## 0.15.0

Released 2020-03-31.

### Fixed

Full release produced for all artifacts to account for hiccups in 0.13.0 and
0.14.0.

--------------------------------------------------------------------------------

## 0.14.0

*This version ended up not getting a full release*

### Fixed

Fix build errors in wasi-common on Windows.

--------------------------------------------------------------------------------

## 0.13.0

Released 2020-03-24.

### Added

* Lots of documentation of `wasmtime` has been updated. Be sure to check out the
  [book]https://bytecodealliance.github.io/wasmtime/ and [API
  documentation](https://bytecodealliance.github.io/wasmtime/api/wasmtime/)!

* All wasmtime example programs are now in a top-level `examples` directory and
  are available in both C and Rust.
  [#1286]https://github.com/bytecodealliance/wasmtime/pull/1286

* A `wasmtime::Linker` type was added to conveniently link link wasm modules
  together and create instances that reference one another.
  [#1384]https://github.com/bytecodealliance/wasmtime/pull/1384

* Wasmtime now has "jitdump" support enabled by default which allows [profiling
  wasm code on linux][jitdump].
  [#1310]https://github.com/bytecodealliance/wasmtime/pull/1310

* The `wasmtime::Caller` type now exists as a first-class way to access the
  caller's exports, namely memory, when implementing host APIs. This can be the
  first argument of functions defined with `Func::new` or `Func::wrap` which
  allows easily implementing methods which take a pointer into wasm memory. Note
  that this only works for accessing the caller's `Memory` for now and it must
  be exported. This will eventually be replaced with a more general-purpose
  mechanism like interface types.
  [#1290]https://github.com/bytecodealliance/wasmtime/pull/1290

* The bulk memory proposal has been fully implemented.
  [#1264]https://github.com/bytecodealliance/wasmtime/pull/1264
  [#976]https://github.com/bytecodealliance/wasmtime/pull/976

* Virtual file support has been added to `wasi-common`.
  [#701]https://github.com/bytecodealliance/wasmtime/pull/701

* The C API has been enhanced with a Wasmtime-specific `wasmtime_wat2wasm` to
  parse `*.wat` files via the C API.
  [#1206]https://github.com/bytecodealliance/wasmtime/pull/1206

[jitdump]: https://bytecodealliance.github.io/wasmtime/examples-profiling.html

### Changed

* The `wast` and `wasm2obj` standalone binaries have been removed. They're
  available via the `wasmtime wast` and `wasmtime wasm2obj` subcommands.
  [#1372]https://github.com/bytecodealliance/wasmtime/pull/1372

* The `wasi-common` crate now uses the new `wiggle` crate to auto-generate a
  trait which is implemented for the current wasi snapshot.
  [#1202]https://github.com/bytecodealliance/wasmtime/pull/1202

* Wasmtime no longer has a dependency on a C++ compiler.
  [#1365]https://github.com/bytecodealliance/wasmtime/pull/1365

* The `Func::wrapN` APIs have been consolidated into one `Func::wrap` API.
  [#1363]https://github.com/bytecodealliance/wasmtime/pull/1363

* The `Callable` trait has been removed and now `Func::new` takes a closure
  directly.
  [#1363]https://github.com/bytecodealliance/wasmtime/pull/1363

* The Cranelift repository has been merged into the Wasmtime repository.

* Support for interface types has been temporarily removed.
  [#1292]https://github.com/bytecodealliance/wasmtime/pull/1292

* The exit code of the `wasmtime` CLI has changed if the program traps.
  [#1274]https://github.com/bytecodealliance/wasmtime/pull/1274

* The `wasmtime` CLI now logs to stderr by default and the `-d` flag has been
  renamed to `--log-to-file`.
  [#1266]https://github.com/bytecodealliance/wasmtime/pull/1266

* Values cannot cross `Store` objects, meaning you can't instantiate a module
  with values from different stores nor pass values from different stores into
  methods.
  [#1016]https://github.com/bytecodealliance/wasmtime/pull/1016

--------------------------------------------------------------------------------

## 0.12.0

Released 2020-02-26.

### Added

* Support for the [WebAssembly text annotations proposal][annotations-proposal]
  has been added.
  [#998]https://github.com/bytecodealliance/wasmtime/pull/998

* An initial C API for instantiating WASI modules has been added.
  [#977]https://github.com/bytecodealliance/wasmtime/pull/977

* A new suite of `Func::getN` functions have been added to the `wasmtime` API to
  call statically-known function signatures in a highly optimized fashion.
  [#955]https://github.com/bytecodealliance/wasmtime/pull/955

* Initial support for profiling JIT code through perf jitdump has been added.
  [#360]https://github.com/bytecodealliance/wasmtime/pull/360

* More CLI flags corresponding to proposed WebAssembly features have been added.
  [#917]https://github.com/bytecodealliance/wasmtime/pull/917

[annotations-proposal]: https://github.com/webassembly/annotations

### Changed

* The `wasmtime` CLI as well as embedding API will optimize WebAssembly code by
  default now.
  [#973]https://github.com/bytecodealliance/wasmtime/pull/973
  [#988]https://github.com/bytecodealliance/wasmtime/pull/988

* The `verifier` pass in Cranelift is now no longer run by default when using
  the embedding API.
  [#882]https://github.com/bytecodealliance/wasmtime/pull/882

### Fixed

* Code caching now accurately accounts for optimization levels, ensuring that if
  you ask for optimized code you're not accidentally handed unoptimized code
  from the cache.
  [#974]https://github.com/bytecodealliance/wasmtime/pull/974

* Automated releases for tags should be up and running again, along with
  automatic publication of the `wasmtime` Python package.
  [#971]https://github.com/bytecodealliance/wasmtime/pull/971