<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in diff_v8.rs</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>93d22fcd - Migrate fuzzing to `wasmtime::error` (#12263)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#93d22fcd</link>
        <description>Migrate fuzzing to `wasmtime::error` (#12263)* Migrate fuzzing to `wasmtime::error`* fix

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Wed, 07 Jan 2026 21:51:23 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a631d20a - cranelift: stack-switching support (#11003)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#a631d20a</link>
        <description>cranelift: stack-switching support (#11003)* cranelift: stack-switching supportThis initial commit represents the &quot;pr2&quot; base commit withminimal merge conflicts resolved.  Due to OOB conflicts, thiscommit is not functional as-is, but using it as a base inorder to allow for easier reviewing of the delta fromthis commit to what will be used for the PR against upstream.Co-authored-by: Daniel Hillerstr&#246;m &lt;daniel.hillerstrom@ed.ac.uk&gt;Co-authored-by: Paul Osborne &lt;paul.osborne@fastly.com&gt;* cranelift: stack-switching updates pass 1This first set of changes updates the base pr in order tocompiled and pass basic checks (compile, clippy, fmt) withthe biggest part of the change being to eliminate injectionof tracing/assertions in JIT&apos;ed code.* cranelift: stack-switching: restore original visibility for a few func_environ members* cranelift: stack-switching conditional compilationAt this point, the only bit we really branch on is what wedo in order to avoid problems tying into wasmtime_environ.This is basd on the approach and macro used by the gc code forconverting presence/absence of the cranelift feature flag tocranelift compile time.  This is a bit of a half-measure for nowas we still compile most stack-switching code in cranelift, butthis does enough to avoid causing problems with missing definitionsin wasmtime_environ.* cranelift: avoid &quot;as&quot; casts in stack-switchingReplace either with infallible From or fallible, panicingTryFrom alternatives where required.* cranelift: cleanup stack-switching control_effect signaturesAfter removing emission of runtime trace logging and assertions,there were several unused parameters.  Remove those from theControlEffect signatures completely.* cranelift: rename stack-switching VMArray to VMHostArrayThis matches a change to the mirrored runtime type inthe upstream changes.* stack-switching: fix typoCo-authored-by: Daniel Hillerstr&#246;m &lt;daniel.hillerstrom@ed.ac.uk&gt;* stack-switching: used Index impl for get_stack_slot_data* stack-switching: use smallvec over vec in several cases* stack-switching: avoid resumetable naming confusion* stack-switching: cleanup unused params from unchecked_get_continuationThe extra parameters here used to be used for emitting runtimeassertions, but with those gone we just had unused paramsand lifetimes, clean those out.* stack_switching: simplify store_data_entries assertion* stack-switching: simplify translate_table_{grow,fill} control flow* stack-switching: remove translate_resume_throw stubThere&apos;s already a stub elsewhere and this is not called, whenexceptions are added and it is time to revisit, this methodcan be restored.* stack-switching: compute control_context_size based on target triple* stack-switching: VMHostArrayRef updatesRename VMHostArray -&gt; VMHostArrayRefChange impl to compute address with offset upfront rather thanon each load.* stack-switching: move cranelift code to live under func_environThis matches the directory structure for gc and aids in visibilityfor a few members required by stack-switching code in cranelift.* stack-switching: formatting fix* stack-switching: reduce visibility on a few additional items* stack-switching: simplify contobj fatptr con/de-struction* stack-switching: add disas tests to cover new instructions* stack-switching: fix layout of VMContObjIn the course of the various runtime updates, the layout of theruntime VMContObj got switched around.  This resulted in failureswhen doing certain table operations on continuations.This change fixes that layout problem and adds some tests withoffsets to avoid the problem.  Due to the way that we interactwith the VMContObj in cranelift, we don&apos;t use these offsets outsideof the tests.* Fix formatting of merge conflict resolution* cranelift: remove ir::function::get_stack_slot_dataThis method isn&apos;t required as sized_stack_slots is already pub.* stack-switching: reduce visibility of a couple func_environ methods* stack-switching: define VMContObj as two wordsThis change migrates VMContObj and its usages in cranelift and runtimeto work with the VMContObj fat pointer as two words in order to bettertarget different architectures (still gated to x86_64 for now).To support this, a size type was plumbed into the builtins functionsignature types (as is done for component types) that maps tousize.* fixup! stack-switching: define VMContObj as two words* stack-switching: add stub Val::ContRefThis type is not fully complete until continuation/gc integrationis revisited (#10248) but without these changes, test cases arenow failing on panics as we need some representation ofcontinuation references in the runtime Val enumeration.Runtime errors with TODO notes are added for the stubbedcode paths to revisit later.* fixup! stack-switching: add stub Val::ContRef* fixup! stack-switching: add stub Val::ContRef* fixup! stack-switching: define VMContObj as two wordsprtest:full* stack-switching: don&apos;t conflate host and target pointer sizesDisas tests were failing on i686 targeting x86_64 as the size of thehost pointer was leaking into what we were using to do codegenin a few paths.  This patch is a bit of a hack as it seems likeusing a generic &lt;T&gt; for T: *mut u8 (as an example) is a bitquestionable.  To keep things small, I do a hacky typecheck to mappointers to the target pointer size here.* stack-switching: VMHostArray entry sizes based off env PtrSizeRevisiting the previous commit with an approach that should beless brittle.---------Co-authored-by: Frank Emrich &lt;git@emrich.io&gt;Co-authored-by: Daniel Hillerstr&#246;m &lt;daniel.hillerstrom@ed.ac.uk&gt;

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Thu, 04 Sep 2025 21:58:01 +0000</pubDate>
        <dc:creator>Paul Osborne &lt;paul.osborne@fastly.com&gt;</dc:creator>
    </item>
<item>
        <title>eaa4632e - Implement exception objects. (#11230)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#eaa4632e</link>
        <description>Implement exception objects. (#11230)* WIP: Working exception objects* Clean build with gc disabled (`cargo check -p wasmtime --no-default-features --features runtime`).* Review feedback.* Stub out C-API support.* Fix Clippy complaints.* Fix dead-code warning in c-api build.* Actually fix 27-&gt;26 reserved bit rename and test.* Fix exnref doc-test.* fix fuzzing build* fix feature-flagging on Instance::id* Bless disas test diff due to reserved-bits change.* Review feedback.

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Tue, 15 Jul 2025 17:15:35 +0000</pubDate>
        <dc:creator>Chris Fallin &lt;chris@cfallin.org&gt;</dc:creator>
    </item>
<item>
        <title>2bac6574 - Update the `log` dependency (#11197)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#2bac6574</link>
        <description>Update the `log` dependency (#11197)* Update the `log` dependencyThis enables getting warnings about formatting strings in the `log`crate directives which are then additionally fixed here as well.* Update dependency directive in `Cargo.toml`

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Mon, 07 Jul 2025 23:25:45 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>90ac295e - Update Wasmtime to the 2024 Rust Edition (#10806)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#90ac295e</link>
        <description>Update Wasmtime to the 2024 Rust Edition (#10806)* Update Wasmtime to the 2024 Rust EditionNow that our MSRV supports the 2024 edition it&apos;s possible to make thisswitch. This commit moves Wasmtime to the 2024 Edition to keepup-to-date with Rust idioms and access many of the edition featuresexclusive to the 2024 edition.prtest:full* Reformat with the 2024 edition

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Mon, 19 May 2025 16:40:55 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>5b9e8765 - Enable the GC proposal during general fuzzing (#10332)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#5b9e8765</link>
        <description>Enable the GC proposal during general fuzzing (#10332)* Enable the GC proposal during general fuzzingThis allows us to fuzz Wasm GC in our fuzz targets that use the commonconfig-generation infrastructure, such as the differential fuzz target.Fixes #10328* Make handling of non-deterministic errors more robust in differential fuzzer* remove logging from functions that can be called from signal handlers

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Wed, 12 Mar 2025 18:35:54 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>b3b50943 - Improve some logging in the differential fuzzer (#9982)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#b3b50943</link>
        <description>Improve some logging in the differential fuzzer (#9982)Clearly show &quot;lhs&quot; and &quot;rhs&quot; more often and then also swap the order ofthe arguments in `assert_error_match` to match the &quot;lhs&quot; and &quot;rhs&quot;terminology of the original execution.

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Mon, 13 Jan 2025 17:54:31 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>edad0bbc - Add general fuzzing support for custom page sizes (#9462)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#edad0bbc</link>
        <description>Add general fuzzing support for custom page sizes (#9462)* Add general fuzzing support for custom page sizes* Add custom-page-sizes as an expected feature for module generation

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Wed, 16 Oct 2024 19:04:06 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>72ded108 - Implement the wide-arithmetic proposal (#9403)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#72ded108</link>
        <description>Implement the wide-arithmetic proposal (#9403)This commit implements the [wide-arithmetic] proposal in Wasmtime. Thisis a pretty easy proposal to implement due to Cranelift already havingsupport for all the various instructions. The features implemented hereare:* Cranelift support for the four new instructions.* A new `Config::wasm_wide_arithmetic` option.* A new `-Wwide-arithmetic` CLI flag.* A new `wasmtime_config_wasm_wide_arithmetic_set` C API function.* Support for fuzzing this proposal  * Generation is implemented in `wasm-smith` .  * While it&apos;s off-by-default in `wasm-smith` it&apos;s enabled-by-default here.  * Differential execution is only possible against Wasmtime right now.  * Single-instruction module support was added for these new instructions.* Tests for some simple cases plus randomly-generated tests.* Example disassemblies for new instructions on Cranelift architectures.[wide-arithmetic]: https://github.com/WebAssembly/wide-arithmetic

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Tue, 08 Oct 2024 21:51:40 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>4687d70a - Update v8 used during fuzzing (#9346)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#4687d70a</link>
        <description>Update v8 used during fuzzing (#9346)Been awhile since the last update. I&apos;d hoped that this fixed the localsegfault I&apos;ve been seeing but alas it did not. Nevertheless seems like areasonable idea to update.

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Tue, 01 Oct 2024 16:17:49 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>a0442ea0 - Enforce `uninlined_format_args` for the workspace (#9065)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#a0442ea0</link>
        <description>Enforce `uninlined_format_args` for the workspace (#9065)* Enforce `uninlined_format_args` for the workspace* fix: failing `Monolith Checks` job* fix: formatting

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Mon, 05 Aug 2024 09:59:59 +0000</pubDate>
        <dc:creator>Hamir Mahal &lt;hamirmahal@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>ef3f82af - V8 differential fuzzing: add new table out-of-bounds error message to expectations list. (#8564)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#ef3f82af</link>
        <description>V8 differential fuzzing: add new table out-of-bounds error message to expectations list. (#8564)Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68735.That fuzzbug bisected to the call-indirect caching changes, but thisturned out to be a red herring (the options added in that PR mean thatthe fuzzbug config deserializes differently prior to the commit). Inany case, it&apos;s an easy fix -- it appears that V8 added a new errormessage, so we need to add it to the allowlist of messages that weexpect for a table out-of-bounds condition.

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Mon, 06 May 2024 23:42:10 +0000</pubDate>
        <dc:creator>Chris Fallin &lt;chris@cfallin.org&gt;</dc:creator>
    </item>
<item>
        <title>0fa13013 - Add `GcRuntime` and `GcCompiler` traits; `i31ref` support (#8196)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#0fa13013</link>
        <description>Add `GcRuntime` and `GcCompiler` traits; `i31ref` support (#8196)\### The `GcRuntime` and `GcCompiler` TraitsThis commit factors out the details of the garbage collector away from the restof the runtime and the compiler. It does this by introducing two new traits,very similar to a subset of [those proposed in the Wasm GC RFC], although notall equivalent functionality has been added yet because Wasmtime doesn&apos;tsupport, for example, GC structs yet:[those proposed in the Wasm GC RFC]: https://github.com/bytecodealliance/rfcs/blob/main/accepted/wasm-gc.md#defining-the-pluggable-gc-interface1. The `GcRuntime` trait: This trait defines how to create new GC heaps, run   collections within them, and execute the various GC barriers the collector   requires.   Rather than monomorphize all of Wasmtime on this trait, we use it   as a dynamic trait object. This does imply some virtual call overhead and   missing some inlining (and resulting post-inlining) optimization   opportunities. However, it is *much* less disruptive to the existing embedder   API, results in a cleaner embedder API anyways, and we don&apos;t believe that VM   runtime/embedder code is on the hot path for working with the GC at this time   anyways (that would be the actual Wasm code, which has inlined GC barriers   and direct calls and all of that). In the future, once we have optimized   enough of the GC that such code is ever hot, we have options we can   investigate at that time to avoid these dynamic virtual calls, like only   enabling one single collector at build time and then creating a static type   alias like `type TheOneGcImpl = ...;` based on the compile time   configuration, and using this type alias in the runtime rather than a dynamic   trait object.   The `GcRuntime` trait additionally defines a method to reset a GC heap, for   use by the pooling allocator. This allows reuse of GC heaps across different   stores. This integration is very rudimentary at the moment, and is missing   all kinds of configuration knobs that we should have before deploying Wasm GC   in production. This commit is large enough as it is already! Ideally, in the   future, I&apos;d like to make it so that GC heaps receive their memory region,   rather than allocate/reserve it themselves, and let each slot in the pooling   allocator&apos;s memory pool be *either* a linear memory or a GC heap. This would   unask various capacity planning questions such as &quot;what percent of memory   capacity should we dedicate to linear memories vs GC heaps?&quot;. It also seems   like basically all the same configuration knobs we have for linear memories   apply equally to GC heaps (see also the &quot;Indexed Heaps&quot; section below).2. The `GcCompiler` trait: This trait defines how to emit CLIF that implements   GC barriers for various operations on GC-managed references. The Rust code   calls into this trait dynamically via a trait object, but since it is   customizing the CLIF that is generated for Wasm code, the Wasm code itself is   not making dynamic, indirect calls for GC barriers. The `GcCompiler`   implementation can inline the parts of GC barrier that it believes should be   inline, and leave out-of-line calls to rare slow paths.All that said, there is still only a single implementation of each of thesetraits: the existing deferred reference-counting (DRC) collector. So there is abunch of code motion in this commit as the DRC collector was further isolatedfrom the rest of the runtime and moved to its own submodule. That said, this wasnot *purely* code motion (see &quot;Indexed Heaps&quot; below) so it is worth not simplyskipping over the DRC collector&apos;s code in review.\### Indexed HeapsThis commit does bake in a couple assumptions that must be shared across allcollector implementations, such as a shared `VMGcHeader` that all objectsallocated within a GC heap must begin with, but the most notable andfar-reaching of these assumptions is that all collectors will use &quot;indexedheaps&quot;.What we are calling indexed heaps are basically the three following invariants:1. All GC heaps will be a single contiguous region of memory, and all GC objects   will be allocated within this region of memory. The collector may ask the   system allocator for additional memory, e.g. to maintain its free lists, but   GC objects themselves will never be allocated via `malloc`.2. A pointer to a GC-managed object (i.e. a `VMGcRef`) is a 32-bit offset into   the GC heap&apos;s contiguous region of memory. We never hold raw pointers to GC   objects (although, of course, we have to compute them and use them   temporarily when actually accessing objects). This means that deref&apos;ing GC   pointers is equivalent to deref&apos;ing linear memory pointers: we need to add a   base and we also check that the GC pointer/index is within the bounds of the   GC heap. Furthermore, compressing 64-bit pointers into 32 bits is a fairly   common technique among high-performance GC   implementations[^compressed-oops][^v8-ptr-compression] so we are in good   company.3. Anything stored inside the GC heap is untrusted. Even each GC reference that   is an element of an `(array (ref any))` is untrusted, and bounds checked on   access. This means that, for example, we do not store the raw pointer to an   `externref`&apos;s host object inside the GC heap. Instead an `externref` now   stores an ID that can be used to index into a side table in the store that   holds the actual `Box&lt;dyn Any&gt;` host object, and accessing that side table is   always checked.[^compressed-oops]: See [&quot;Compressed OOPs&quot; in    OpenJDK.](https://wiki.openjdk.org/display/HotSpot/CompressedOops)[^v8-ptr-compression]: See [V8&apos;s pointer    compression](https://v8.dev/blog/pointer-compression).The good news with regards to all the bounds checking that this scheme impliesis that we can use all the same virtual memory tricks that linear memories useto omit explicit bounds checks. Additionally, (2) means that the sizes of GCobjects is that much smaller (and therefore that much more cache friendly)because they are only holding onto 32-bit, rather than 64-bit, references toother GC objects. (We can, in the future, support GC heaps up to 16GiB in sizewithout losing 32-bit GC pointers by taking advantage of `VMGcHeader` alignmentand storing aligned indices rather than byte indices, while still leaving thebottom bit available for tagging as an `i31ref` discriminant. Should we everneed to support even larger GC heap capacities, we could go to full 64-bitreferences, but we would need explicit bounds checks.)The biggest benefit of indexed heaps is that, because we are (explicitly orimplicitly) bounds checking GC heap accesses, and because we are not otherwisetrusting any data from inside the GC heap, we greatly reduce how badly thingscan go wrong in the face of collector bugs and GC heap corruption. We areessentially sandboxing the GC heap region, the same way that linear memory is asandbox. GC bugs could lead to the guest program accessing the wrong GC object,or getting garbage data from within the GC heap. But only garbage data fromwithin the GC heap, never outside it. The worse that could happen would be if wedecided not to zero out GC heaps between reuse across stores (which is a validtrade off to make, since zeroing a GC heap is a defense-in-depth techniquesimilar to zeroing a Wasm stack and not semantically visible in the absence ofGC bugs) and then a GC bug would allow the current Wasm guest to read old GCdata from the old Wasm guest that previously used this GC heap. But again, itcould never access host data.Taken altogether, this allows for collector implementations that are nearly freefrom `unsafe` code, and unsafety can otherwise be targeted and limited in scope,such as interactions with JIT code. Most importantly, we do not have to maintaincritical invariants across the whole system -- invariants which can&apos;t be nicelyencapsulated or abstracted -- to preserve memory safety. Such holisticinvariants that refuse encapsulation are otherwise generally a huge safetyproblem with GC implementations.\### `VMGcRef` is *NOT* `Clone` or `Copy` Anymore`VMGcRef` used to be `Clone` and `Copy`. It is not anymore. The motivation herewas to be sure that I was actually calling GC barriers at all the correctplaces. I couldn&apos;t be sure before. Now, you can still explicitly copy a raw GCreference without running GC barriers if you need to and understand why that&apos;sokay (aka you are implementing the collector), but that is something you have toopt into explicitly by calling `unchecked_copy`. The default now is that youcan&apos;t just copy the reference, and instead call an explicit `clone` method (not*the* `Clone` trait, because we need to pass in the GC heap context to run theGC barriers) and it is hard to forget to do that accidentally. This resulted ina pretty big amount of churn, but I am wayyyyyy more confident that the correctGC barriers are called at the correct times now than I was before.\### `i31ref`I started this commit by trying to add `i31ref` support. And it grew into thewhole traits interface because I found that I needed to abstract GC barriersinto helpers anyways to avoid running them for `i31ref`s, so I figured that Imight as well add the whole traits interface. In comparison, `i31ref` support ismuch easier and smaller than that other part! But it was also difficult to pullapart from this commit, sorry about that!---------------------Overall, I know this is a very large commit. I am super happy to have somesynchronous meetings to walk through this all, give an overview of thearchitecture, answer questions directly, etc... to make review easier!prtest:full

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Thu, 04 Apr 2024 00:24:50 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>593f18b9 - Adjust an error message expectation for v8 (#8154)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#593f18b9</link>
        <description>Adjust an error message expectation for v8 (#8154)Looks like the new error message has a data segment index in it so matcha more general error here.

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Sat, 16 Mar 2024 00:03:35 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>5856590f - Configure workspace lints, enable running some Clippy lints on CI (#7561)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#5856590f</link>
        <description>Configure workspace lints, enable running some Clippy lints on CI (#7561)* Configure Rust lints at the workspace levelThis commit adds necessary configuration knobs to have lints configuredat the workspace level in Wasmtime rather than the crate level. Thisuses a feature of Cargo first released with 1.74.0 (last week) of the`[workspace.lints]` table. This should help create a more consistent setof lints applied across all crates in our workspace in addition topossibly running select clippy lints on CI as well.* Move `unused_extern_crates` to the workspace levelThis commit configures a `deny` lint level for the`unused_extern_crates` lint to the workspace level rather than theprevious configuration at the individual crate level.* Move `trivial_numeric_casts` to workspace level* Change workspace lint levels to `warn`CI will ensure that these don&apos;t get checked into the codebase andotherwise provide fewer speed bumps for in-process development.* Move `unstable_features` lint to workspace level* Move `unused_import_braces` lint to workspace level* Start running Clippy on CIThis commit configures our CI to run `cargo clippy --workspace` for allmerged PRs. Historically this hasn&apos;t been all the feasible due to theamount of configuration required to control the number of warnings onCI, but with Cargo&apos;s new `[lint]` table it&apos;s possible to have aone-liner to silence all lints from Clippy by default. This commit bydefault sets the `all` lint in Clippy to `allow` to by-default disablewarnings from Clippy. The goal of this PR is to enable selective accessto Clippy lints for Wasmtime on CI.* Selectively enable `clippy::cast_sign_loss`This would have fixed #7558 so try to head off future issues with thatby warning against this situation in a few crates. This lint is stillquite noisy though for Cranelift for example so it&apos;s not worthwhile atthis time to enable it for the whole workspace.* Fix CI errorprtest:full

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Mon, 20 Nov 2023 23:23:41 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>2afaac51 - Return `anyhow::Error` from host functions instead of `Trap`, redesign `Trap` (#5149)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#2afaac51</link>
        <description>Return `anyhow::Error` from host functions instead of `Trap`, redesign `Trap` (#5149)* Return `anyhow::Error` from host functions instead of `Trap`This commit refactors how errors are modeled when returned from hostfunctions and additionally refactors how custom errors work with `Trap`.At a high level functions in Wasmtime that previously worked with`Result&lt;T, Trap&gt;` now work with `Result&lt;T&gt;` instead where the error is`anyhow::Error`. This includes functions such as:* Host-defined functions in a `Linker&lt;T&gt;`* `TypedFunc::call`* Host-related callbacks like call hooksErrors are now modeled primarily as `anyhow::Error` throughout Wasmtime.This subsequently removes the need for `Trap` to have the ability torepresent all host-defined errors as it previously did. Consequently the`From` implementations for any error into a `Trap` have been removedhere and the only embedder-defined way to create a `Trap` is to use`Trap::new` with a custom string.After this commit the distinction between a `Trap` and a host error isthe wasm backtrace that it contains. Previously all errors in hostfunctions would flow through a `Trap` and get a wasm backtrace attachedto them, but now this only happens if a `Trap` itself is created meaningthat arbitrary host-defined errors flowing from a host import to theother side won&apos;t get backtraces attached. Some internals of Wasmtimeitself were updated or preserved to use `Trap::new` to capture abacktrace where it seemed useful, such as when fuel runs out.The main motivation for this commit is that it now enables hosts tothread a concrete error type from a host function all the way through towhere a wasm function was invoked. Previously this could not be donesince the host error was wrapped in a `Trap` that didn&apos;t provide theability to get at the internals.A consequence of this commit is that when a host error is returned thatisn&apos;t a `Trap` we&apos;ll capture a backtrace and then won&apos;t have a `Trap` toattach it to. To avoid losing the contextual information this commituses the `Error::context` method to attach the backtrace as contextualinformation to ensure that the backtrace is itself not lost.This is a breaking change for likely all users of Wasmtime, but it&apos;shoped to be a relatively minor change to workaround. Most use cases canlikely change `-&gt; Result&lt;T, Trap&gt;` to `-&gt; Result&lt;T&gt;` and otherwiseexplicit creation of a `Trap` is largely no longer necessary.* Fix some doc links* add some tests and make a backtrace type public (#55)* Trap: avoid a trailing newline in the Display implwhich in turn ends up with three newlines between the end of thebacktrace and the `Caused by` in the anyhow Debug impl* make BacktraceContext pub, and add tests showing downcasting behavior of anyhow::Error to traps or backtraces* Remove now-unnecesary `Trap` downcasts in `Linker::module`* Fix test output expectations* Remove `Trap::i32_exit`This commit removes special-handling in the `wasmtime::Trap` type forthe i32 exit code required by WASI. This is now instead modeled as aspecific `I32Exit` error type in the `wasmtime-wasi` crate which isreturned by the `proc_exit` hostcall. Embedders which previously testedfor i32 exits now downcast to the `I32Exit` value.* Remove the `Trap::new` constructorThis commit removes the ability to create a trap with an arbitrary errormessage. The purpose of this commit is to continue the prior trend ofleaning into the `anyhow::Error` type instead of trying to recreate itwith `Trap`. A subsequent simplification to `Trap` after this commit isthat `Trap` will simply be an `enum` of trap codes with no extrainformation. This commit is doubly-motivated by the desire to always usethe new `BacktraceContext` type instead of sometimes using that andsometimes using `Trap`.Most of the changes here were around updating `Trap::new` calls to`bail!` calls instead. Tests which assert particular error messagesadditionally often needed to use the `:?` formatter instead of the `{}`formatter because the prior formats the whole `anyhow::Error` and thelatter only formats the top-most error, which now contains thebacktrace.* Merge `Trap` and `TrapCode`With prior refactorings there&apos;s no more need for `Trap` to be opaque orotherwise contain a backtrace. This commit parse down `Trap` to simplyan `enum` which was the old `TrapCode`. All various tests and such wereupdated to handle this.The main consequence of this commit is that all errors have a`BacktraceContext` context attached to them. This unfortunately meansthat the backtrace is printed first before the error message or trapcode, but given all the prior simplifications that seems worth it atthis time.* Rename `BacktraceContext` to `WasmBacktrace`This feels like a better name given how this has turned out, andadditionally this commit removes having both `WasmBacktrace` and`BacktraceContext`.* Soup up documentation for errors and traps* Fix build of the C APICo-authored-by: Pat Hickey &lt;pat@moreproductive.org&gt;

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Wed, 02 Nov 2022 16:29:31 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>543a4879 - Throw out fewer fuzz inputs with differential fuzzer (#4859)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#543a4879</link>
        <description>Throw out fewer fuzz inputs with differential fuzzer (#4859)* Throw out fewer fuzz inputs with differential fuzzerPrior to this commit the differential fuzzer would generate a module andthen select an engine to execute the module against Wasmtime. Thismeant, however, that the candidate list of engines were filtered againstthe configuration used to generate the module to ensure that theselected engine could run the generated module.This commit inverts this logic and instead selects an engine first,allowing the engine to then tweak the module configuration to ensurethat the generated module is compatible with the engine selected. Thismeans that fewer fuzz inputs are discarded because every fuzz input willresult in an engine being executed.Internally the engine constructors have all been updated to update theconfiguration to work instead of filtering the configuration. Some otherfixes were applied for the spec interpreter as well to work around #4852* Fix tests

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Tue, 06 Sep 2022 17:41:23 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>10dbb199 - Various improvements to differential fuzzing (#4845)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#10dbb199</link>
        <description>Various improvements to differential fuzzing (#4845)* Improve wasmi differential fuzzer* Support modules with a `start` function* Implement trap-matching to ensure that wasmi and Wasmtime both report  the same flavor of trap.* Support differential fuzzing where no engines matchLocally I was attempting to run against just one wasm engine with`ALLOWED_ENGINES=wasmi` but the fuzzer quickly panicked because thegenerated test case didn&apos;t match wasmi&apos;s configuration. This commitupdates engine-selection in the differential fuzzer to return `None` ifno engine is applicable, throwing out the test case. This won&apos;t be hitat all with oss-fuzz-based runs but for local runs it&apos;ll be useful tohave.* Improve proposal support in differential fuzzer* De-prioritize unstable wasm proposals such as multi-memory and  memory64 by making them more unlikely with `Unstructured::ratio`.* Allow fuzzing multi-table (reference types) and multi-memory by  avoiding setting their maximums to 1 in `set_differential_config`.* Update selection of the pooling strategy to unconditionally support  the selected module config rather than the other way around.* Improve handling of traps in differential fuzzingThis commit fixes an issue found via local fuzzing where engines werereporting different results but the underlying reason for this was thatone engine was hitting stack overflow before the other. To fix theunderlying issue I updated the execution to check for stack overflowand, if hit, it discards the entire fuzz test case from then on.The rationale behind this is that each engine can have unique limits forstack overflow. One test case I was looking at for example would stackoverflow at less than 1000 frames with epoch interruption enabled butwould stack overflow at more than 1000 frames with it disabled. Thismeans that the state after the trap started to diverge and it lookedlike the engines produced different results.While I was at it I also improved the &quot;function call returned a trap&quot;case to compare traps to make sure the same trap reason popped out.* Fix fuzzer tests

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Fri, 02 Sep 2022 19:16:02 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>fd98814b - Port v8 fuzzer to the new framework (#4739)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs#fd98814b</link>
        <description>Port v8 fuzzer to the new framework (#4739)* Port v8 fuzzer to the new frameworkThis commit aims to improve the support for the new &quot;meta&quot; differentialfuzzer added in #4515 by ensuring that all existing differential fuzzingis migrated to this new fuzzer. This PR includes features such as:* The V8 differential execution is migrated to the new framework.* `Config::set_differential_config` no longer force-disables wasm  features, instead allowing them to be enabled as per the fuzz input.* `DiffInstance::{hash, hash}` was replaced with  `DiffInstance::get_{memory,global}` to allow more fine-grained  assertions.* Support for `FuncRef` and `ExternRef` have been added to `DiffValue`  and `DiffValueType`. For now though generating an arbitrary  `ExternRef` and `FuncRef` simply generates a null value.* Arbitrary `DiffValue::{F32,F64}` values are guaranteed to use  canonical NaN representations to fix an issue with v8 where with the  v8 engine we can&apos;t communicate non-canonical NaN values through JS.* `DiffEngine::evaluate` allows &quot;successful failure&quot; for cases where  engines can&apos;t support that particular invocation, for example v8 can&apos;t  support `v128` arguments or return values.* Smoke tests were added for each engine to ensure that a simple wasm  module works at PR-time.* Statistics printed from the main fuzzer now include percentage-rates  for chosen engines as well as percentage rates for styles-of-module.There&apos;s also a few small refactorings here and there but mostly justthings I saw along the way.* Update the fuzzing README

            List of files:
            /wasmtime-44.0.1/crates/fuzzing/src/oracles/diff_v8.rs</description>
        <pubDate>Fri, 19 Aug 2022 19:19:00 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
</channel>
</rss>
