@@ -4,8 +4,169 @@ Unreleased.
44
55### Added
66
7+ * Initial work has begun to support WebAssembly-level debugging natively in
8+ Wasmtime. This is intended to complement today's preexisting DWARF-level
9+ debugging, but this work will be portable and operate at the WebAssembly level
10+ of abstraction rather than the machine-level. Note that this work is not yet
11+ complete at this time but is expected to get filled out over the coming
12+ releases.
13+ [ #11768 ] ( https://github.com/bytecodealliance/wasmtime/pull/11768 )
14+ [ #11769 ] ( https://github.com/bytecodealliance/wasmtime/pull/11769 )
15+ [ #11873 ] ( https://github.com/bytecodealliance/wasmtime/pull/11873 )
16+ [ #11892 ] ( https://github.com/bytecodealliance/wasmtime/pull/11892 )
17+ [ #11895 ] ( https://github.com/bytecodealliance/wasmtime/pull/11895 )
18+
19+ * The pooling allocator now exposes more metrics about unused slots.
20+ [ #11789 ] ( https://github.com/bytecodealliance/wasmtime/pull/11789 )
21+
22+ * The [ Wizer] and [ component-init] projects have been merged into Wasmtime under
23+ a new ` wasmtime wizer ` CLI subcommand and ` wasmtime-wizer ` crate. This is
24+ mostly a drop-in replacement for both with a minor caveat that the
25+ initialization function is now called ` wizer-initialize ` instead of
26+ ` wizer.initialize ` to be compatible with components.
27+ [ #11805 ] ( https://github.com/bytecodealliance/wasmtime/pull/11805 )
28+ [ #11851 ] ( https://github.com/bytecodealliance/wasmtime/pull/11851 )
29+ [ #11853 ] ( https://github.com/bytecodealliance/wasmtime/pull/11853 )
30+ [ #11855 ] ( https://github.com/bytecodealliance/wasmtime/pull/11855 )
31+ [ #11857 ] ( https://github.com/bytecodealliance/wasmtime/pull/11857 )
32+ [ #11863 ] ( https://github.com/bytecodealliance/wasmtime/pull/11863 )
33+ [ #11866 ] ( https://github.com/bytecodealliance/wasmtime/pull/11866 )
34+ [ #11867 ] ( https://github.com/bytecodealliance/wasmtime/pull/11867 )
35+ [ #11877 ] ( https://github.com/bytecodealliance/wasmtime/pull/11877 )
36+ [ #11876 ] ( https://github.com/bytecodealliance/wasmtime/pull/11876 )
37+ [ #11878 ] ( https://github.com/bytecodealliance/wasmtime/pull/11878 )
38+ [ #11891 ] ( https://github.com/bytecodealliance/wasmtime/pull/11891 )
39+ [ #11897 ] ( https://github.com/bytecodealliance/wasmtime/pull/11897 )
40+ [ #11898 ] ( https://github.com/bytecodealliance/wasmtime/pull/11898 )
41+
42+ [ Wizer ] : https://github.com/bytecodealliance/wizer
43+ [ component-init ] : https://github.com/dicej/component-init
44+
45+ * The ` Config::wasm_feature ` method is now public.
46+ [ #11812 ] ( https://github.com/bytecodealliance/wasmtime/pull/11812 )
47+
48+ * Enabling the wasm exceptions proposal is now exposed in the C API.
49+ [ #11861 ] ( https://github.com/bytecodealliance/wasmtime/pull/11861 )
50+
51+ * The ` wasmtime ` crate now has a ` custom-sync-primitives ` Cargo feature which
52+ enables using custom synchronization primitives defined by the embedder. This
53+ is useful in ` no_std ` targets where the default panic-on-contention primitives
54+ are not appropriate.
55+ [ #11836 ] ( https://github.com/bytecodealliance/wasmtime/pull/11836 )
56+
57+ * Wasmtime now supports unsafe intrinsics to be used for compile-time builtins.
58+ This can be used to provide give low-level access to host APIs/memory to a
59+ guest program in a controlled fashion.
60+ [ #11825 ] ( https://github.com/bytecodealliance/wasmtime/pull/11825 )
61+ [ #11918 ] ( https://github.com/bytecodealliance/wasmtime/pull/11918 )
62+
63+ * The ` signals_based_traps ` configuration option is now exposed in the C API.
64+ [ #11879 ] ( https://github.com/bytecodealliance/wasmtime/pull/11879 )
65+
66+ * A new ` EqRef::from_i31 ` function has been added.
67+ [ #11884 ] ( https://github.com/bytecodealliance/wasmtime/pull/11884 )
68+
69+ * The ` wasmtime serve ` subcommand will, by default, now reuse instances when
70+ used with WASIp3 components. This increases throughput and additionally
71+ showcases the concurrent features of WASIp3. This can be opted-out-of on the
72+ CLI as well.
73+ [ #11807 ] ( https://github.com/bytecodealliance/wasmtime/pull/11807 )
74+
75+ * The C++ API for components has been filled out and implemented.
76+ [ #11880 ] ( https://github.com/bytecodealliance/wasmtime/pull/11880 )
77+ [ #11889 ] ( https://github.com/bytecodealliance/wasmtime/pull/11889 )
78+ [ #11988 ] ( https://github.com/bytecodealliance/wasmtime/pull/11988 )
79+
80+ * A new ` ResourceDynamic ` type, similar to ` Resource<T> ` , has been added to
81+ support host resources that have a dynamic tag at runtime rather than a
82+ statically known tag at compile time. This is then used to implement resources
83+ in the C/C++ API as well.
84+ [ #11885 ] ( https://github.com/bytecodealliance/wasmtime/pull/11885 )
85+ [ #11920 ] ( https://github.com/bytecodealliance/wasmtime/pull/11920 )
86+
87+ * The C/C++ API of Wasmtime now supports the custom-page-sizes wasm proposal.
88+ [ #11890 ] ( https://github.com/bytecodealliance/wasmtime/pull/11890 )
89+
90+ * Initial support has been added for the cooperative multithreading component
91+ model proposal in Wasmtime, built on async primitives.
92+ [ #11751 ] ( https://github.com/bytecodealliance/wasmtime/pull/11751 )
93+
94+ * The ` epoch_deadline_callback ` Rust API has been bound in C++.
95+ [ #11945 ] ( https://github.com/bytecodealliance/wasmtime/pull/11945 )
96+
97+ * A new ` Request::into_http ` helper has been added to the WASIp3 implementation
98+ of ` wasi:http ` .
99+ [ #11843 ] ( https://github.com/bytecodealliance/wasmtime/pull/11843 )
100+
101+ * A ` define_unknown_imports_as_traps ` function has been added to the C API.
102+ [ #11962 ] ( https://github.com/bytecodealliance/wasmtime/pull/11962 )
103+
104+ * A callback-based implementation of ` stdout ` and ` stderr ` has been added to the
105+ C API for WASI configuration.
106+ [ #11965 ] ( https://github.com/bytecodealliance/wasmtime/pull/11965 )
107+
7108### Changed
8109
110+ * Running async functions in the component model now operates at the
111+ ` Store ` -level of abstraction rather than an ` Instance ` .
112+ [ #11796 ] ( https://github.com/bytecodealliance/wasmtime/pull/11796 )
113+
114+ * The ` wasmtime serve ` subcommand no longer mistakenly spawns an epoch thread
115+ per-request and instead uses a single epoch thread.
116+ [ #11817 ] ( https://github.com/bytecodealliance/wasmtime/pull/11817 )
117+
118+ * The ` component-model-async ` Cargo feature is now on-by-default. Note that it
119+ is still gated at runtime by default. Also note that Wasmtime 39 does not include
120+ [ #12031 ] ( https://github.com/bytecodealliance/wasmtime/pull/12031 ) which means
121+ that components using async produced with the latest ` wasm-tools ` will not run
122+ in Wasmtime 39. To run async components it's recommended to pin to a
123+ historical version of ` wasm-tools ` and guest toolchains for now.
124+ [ #11822 ] ( https://github.com/bytecodealliance/wasmtime/pull/11822 )
125+
126+ * Bindings generated by ` wiggle ` no longer use ` async_trait ` .
127+ [ #11839 ] ( https://github.com/bytecodealliance/wasmtime/pull/11839 )
128+
129+ * Wasmtime's documentation now has an example of a plugin system using Wasmtime.
130+ [ #11848 ] ( https://github.com/bytecodealliance/wasmtime/pull/11848 )
131+
132+ * Profiling with perfmap or jitdump now uses ` O_APPEND ` to be more amenable to
133+ other engines in the same process also using perfmap/jitdump.
134+ [ #11865 ] ( https://github.com/bytecodealliance/wasmtime/pull/11865 )
135+
136+ * The ` wasmtime-wasi-http ` crate now uses ` UnsyncBoxBody ` to clarify that ` Sync `
137+ is not required.
138+ [ #11941 ] ( https://github.com/bytecodealliance/wasmtime/pull/11941 )
139+
140+ * A ` . ` character is now used instead of ` / ` int he ` bindgen! ` macro to separate
141+ interface members.
142+ [ #11947 ] ( https://github.com/bytecodealliance/wasmtime/pull/11947 )
143+
144+ * The ` func_new ` function for component linkers now provides the type to the
145+ callee so it knows the type that the component that imported it is using.
146+ [ #11944 ] ( https://github.com/bytecodealliance/wasmtime/pull/11944 )
147+
148+ * The ` component::Func ` type now has a type accessor and the old params/result
149+ accessors were deleted.
150+ [ #11943 ] ( https://github.com/bytecodealliance/wasmtime/pull/11943 )
151+
152+ * Wasmtime now requires Rust 1.89.0 or later to compile.
153+ [ #11959 ] ( https://github.com/bytecodealliance/wasmtime/pull/11959 )
154+
155+ ### Fixed
156+
157+ * Some panics handling shapes of components with resources in various locations
158+ has been fixed.
159+ [ #11798 ] ( https://github.com/bytecodealliance/wasmtime/pull/11798 )
160+
161+ * Bitwise float operations in Cranelift have been fixed on aarch64.
162+ [ #11811 ] ( https://github.com/bytecodealliance/wasmtime/pull/11811 )
163+
164+ * An off-by-one in the bounds check of wasm atomic operations has been fixed.
165+ [ #11977 ] ( https://github.com/bytecodealliance/wasmtime/pull/11977 )
166+
167+ * Bounds-check elision now happens again with 4 GiB guard pages.
168+ [ #11973 ] ( https://github.com/bytecodealliance/wasmtime/pull/11973 )
169+
9170--------------------------------------------------------------------------------
10171
11172Release notes for previous releases of Wasmtime can be found on the respective
0 commit comments