<?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 global.rs</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><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/c-api/src/global.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/c-api/src/global.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>ae84e6ed - Enable `unsafe-attr-outside-unsafe` 2024 edition lint (#9964)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#ae84e6ed</link>
        <description>Enable `unsafe-attr-outside-unsafe` 2024 edition lint (#9964)* Enable `unsafe-attr-outside-unsafe` 2024 edition lintThis commit enables the `unsafe-attr-outside-unsafe` lint in rustc usedin transitioning to the 2024 edition. This requires that the`#[no_mangle]` attribute is replaced in favor of `#[unsafe(no_mangle)]`.This mostly affects the C API of wasmtime and most of the changes hereare a simple search/replace.* Another attribute update* Fix command adapter build

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Thu, 09 Jan 2025 21:05:55 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>9187f2d9 - c-api: Create `RootScope` where necessary (#8374)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#9187f2d9</link>
        <description>c-api: Create `RootScope` where necessary (#8374)* c-api: Create `RootScope` where necessaryThis commit changes the `wasmtime_val_t::{from_val, to_val}` methods totake a `RootScope` instead of any `AsContextMut`. This then required anumber of refactorings in callers to ensure that a `RootScope` wascreated for any function that needed one. This is required to ensurethat GC references in the C API aren&apos;t forced to live for the entirelifetime of the store.This additionally added `*_unrooted` variants which do the same thingbut don&apos;t require `RootScope`. This was needed for when the C API callsout to the embedder through a function call because a new `RootScope`wouldn&apos;t work for return values (they&apos;re bound to a scope within theclosure when we want them to outlive the closure). In these situationsthough we know a `RootScope` is already present at the entrypoint.Closes #8367* Review comments

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Mon, 15 Apr 2024 22:20:32 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>420fc3d1 - c-api: Better differentiate between `wasm.h` and `wasmtime.h` APIs (#8344)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#420fc3d1</link>
        <description>c-api: Better differentiate between `wasm.h` and `wasmtime.h` APIs (#8344)This renames some types and adds some type aliases to help us better distinguishbetween `wasm.h` APIs and `wasmtime.h` APIs, primarily for `Store`-relatedtypes. In general, `WasmFoo` is related to `wasm.h` and `WasmtimeFoo` is relatedto `wasmtime.h`.* `StoreRef` -&gt; `WasmStoreRef`* Introduce the `WasmStore[Data]` and `WasmStoreContext[Mut]` aliases* `StoreData` -&gt; `WasmtimeStoreData`* `CStoreContext[Mut]` -&gt; `WasmtimeStoreContext[Mut]`* Introduce the `Wasmtime{Store,Caller}` aliases

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Fri, 12 Apr 2024 14:35:48 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>bd2ea901 - Define garbage collection rooting APIs (#8011)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#bd2ea901</link>
        <description>Define garbage collection rooting APIs (#8011)* Define garbage collection rooting APIsRooting prevents GC objects from being collected while they are actively beingused.We have a few sometimes-conflicting goals with our GC rooting APIs:1. Safety: It should never be possible to get a use-after-free bug because the   user misused the rooting APIs, the collector &quot;mistakenly&quot; determined an   object was unreachable and collected it, and then the user tried to access   the object. This is our highest priority.2. Moving GC: Our rooting APIs should moving collectors (such as generational   and compacting collectors) where an object might get relocated after a   collection and we need to update the GC root&apos;s pointer to the moved   object. This means we either need cooperation and internal mutability from   individual GC roots as well as the ability to enumerate all GC roots on the   native Rust stack, or we need a level of indirection.3. Performance: Our rooting APIs should generally be as low-overhead as   possible. They definitely shouldn&apos;t require synchronization and locking to   create, access, and drop GC roots.4. Ergonomics: Our rooting APIs should be, if not a pleasure, then at least not   a burden for users. Additionally, the API&apos;s types should be `Sync` and `Send`   so that they work well with async Rust.For example, goals (3) and (4) are in conflict when we think about how tosupport (2). Ideally, for ergonomics, a root would automatically unroot itselfwhen dropped. But in the general case that requires holding a reference to thestore&apos;s root set, and that root set needs to be held simultaneously by all GCroots, and they each need to mutate the set to unroot themselves. That implies`Rc&lt;RefCell&lt;...&gt;&gt;` or `Arc&lt;Mutex&lt;...&gt;&gt;`! The former makes the store and GC roottypes not `Send` and not `Sync`. The latter imposes synchronization and lockingoverhead. So we instead make GC roots indirect and require passing in a storecontext explicitly to unroot in the general case. This trades worse ergonomicsfor better performance and support for moving GC and async Rust.Okay, with that out of the way, this module provides two flavors of rootingAPI. One for the common, scoped lifetime case, and another for the rare casewhere we really need a GC root with an arbitrary, non-LIFO/non-scoped lifetime:1. `RootScope` and `Rooted&lt;T&gt;`: These are used for temporarily rooting GC   objects for the duration of a scope. Upon exiting the scope, they are   automatically unrooted. The internal implementation takes advantage of the   LIFO property inherent in scopes, making creating and dropping `Rooted&lt;T&gt;`s   and `RootScope`s super fast and roughly equivalent to bump allocation.   This type is vaguely similar to V8&apos;s [`HandleScope`].   [`HandleScope`]: https://v8.github.io/api/head/classv8_1_1HandleScope.html   Note that `Rooted&lt;T&gt;` can&apos;t be statically tied to its context scope via a   lifetime parameter, unfortunately, as that would allow the creation and use   of only one `Rooted&lt;T&gt;` at a time, since the `Rooted&lt;T&gt;` would take a borrow   of the whole context.   This supports the common use case for rooting and provides good ergonomics.2. `ManuallyRooted&lt;T&gt;`: This is the fully general rooting API used for holding   onto non-LIFO GC roots with arbitrary lifetimes. However, users must manually   unroot them. Failure to manually unroot a `ManuallyRooted&lt;T&gt;` before it is   dropped will result in the GC object (and everything it transitively   references) leaking for the duration of the `Store`&apos;s lifetime.   This type is roughly similar to SpiderMonkey&apos;s [`PersistentRooted&lt;T&gt;`],   although they avoid the manual-unrooting with internal mutation and shared   references. (Our constraints mean we can&apos;t do those things, as mentioned   explained above.)   [`PersistentRooted&lt;T&gt;`]: http://devdoc.net/web/developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS::PersistentRooted.htmlAt the end of the day, both `Rooted&lt;T&gt;` and `ManuallyRooted&lt;T&gt;` are just taggedindices into the store&apos;s `RootSet`. This indirection allows working with Rust&apos;sborrowing discipline (we use `&amp;mut Store` to represent mutable access to the GCheap) while still allowing rooted references to be moved around without tying upthe whole store in borrows. Additionally, and crucially, this indirection allowsus to update the *actual* GC pointers in the `RootSet` and support moving GCs(again, as mentioned above).* Reorganize GC-related submodules in `wasmtime-runtime`* Reorganize GC-related submodules in `wasmtime`* Use `Into&lt;StoreContext[Mut]&lt;&apos;a, T&gt;` for `Externref::data[_mut]` methods* Run rooting tests under MIRI* Make `into_abi` take an `AutoAssertNoGc`* Don&apos;t use atomics to update externref ref counts anymore* Try to make lifetimes/safety more-obviously correctRemove some transmute methods, assert that `VMExternRef`s are the only valid`VMGcRef`, etc.* Update extenref constructor examples* Make `GcRefImpl::transmute_ref` a non-default trait method* Make inline fast paths for GC LIFO scopes* Make `RootSet::unroot_gc_ref` an `unsafe` function* Move Hash and Eq for Rooted, move to impl methods* Remove type parameter from `AutoAssertNoGc`Just wrap a `&amp;mut StoreOpaque` directly.* Make a bunch of internal `ExternRef` methods that deal with raw `VMGcRef`s take `AutoAssertNoGc` instead of `StoreOpaque`* Fix compile after rebase* rustfmt* revert unrelated egraph changes* Fix non-gc build* Mark `AutoAssertNoGc` methods inline* review feedback* Temporarily remove externref support from the C APIUntil we can add proper GC rooting.* Remove doxygen reference to temp deleted function* Remove need to `allow(private_interfaces)`* Fix call benchmark compilation

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Wed, 06 Mar 2024 00:40:02 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>7a1b7cdf - Implement RFC 11: Redesigning Wasmtime&apos;s APIs (#2897)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#7a1b7cdf</link>
        <description>Implement RFC 11: Redesigning Wasmtime&apos;s APIs (#2897)Implement Wasmtime&apos;s new API as designed by RFC 11. This is quite a large commit which has had lots of discussion externally, so for more information it&apos;s best to read the RFC thread and the PR thread.

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Thu, 03 Jun 2021 14:10:53 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>d07fdca7 - wasmtime-c-api: Use a safe helper for initializing `MaybeUninit` out pointers</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#d07fdca7</link>
        <description>wasmtime-c-api: Use a safe helper for initializing `MaybeUninit` out pointers

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Fri, 10 Jul 2020 18:33:26 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>4cdf8b7c - wasmtime-c-api: Add support for `externref` values</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#4cdf8b7c</link>
        <description>wasmtime-c-api: Add support for `externref` valuesThis required that `wasm_val_t` have a `Drop` implementation, an explicit`Clone` implementation, and no longer be `Copy`, which rippled out through thecrate a bit.Additionally, `wasm_func_call` and friends were creating references touninitialized data for its out pointers and assigning to them. As soon as`wasm_val_t` gained a `Drop` impl and tried to drop the old value of theassignment (which is uninitialized data), then things blew up. The fix is toproperly represent the out pointers with `MaybeUninit`, and use `ptr::write` toinitialize them without dropping the old data.Part of #929

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Wed, 08 Jul 2020 17:20:56 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>cca558cd - Remove `HostRef&lt;T&gt;` from the C API (#1926)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#cca558cd</link>
        <description>Remove `HostRef&lt;T&gt;` from the C API (#1926)This commit removes `HostRef&lt;T&gt;` from the C API which only served thepurpose now of converting each type to a `wasm_ref_t*`. Ourimplementation, however, does not guarantee that you&apos;ll get the same`wasm_ref_t*` for each actual underlying item (e.g. if you put a func ina table and then get the func as an export and from the table then`same` will report `false`). Additionally the fate of `wasm_ref_t*`seems somewhat unclear at this point.The change here is to make the `same` and cast functions all abortsaying they&apos;re unimplemented. (similar to the host info functions). Ifand when we get around to reimplementing these functions we can ensurethey&apos;re implemented uniformly and work well for all intended use cases.

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Fri, 26 Jun 2020 19:34:34 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>e40c039e - wasmtime: Rip out incomplete/incorrect externref &quot;host info&quot; support</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#e40c039e</link>
        <description>wasmtime: Rip out incomplete/incorrect externref &quot;host info&quot; supportBetter to be loud that we don&apos;t support attaching arbitrary host info to`externref`s than to limp along and pretend we do support it. Supporting itproperly won&apos;t reuse any of this code anyways.

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Thu, 25 Jun 2020 17:24:40 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>58b08b9d - Move `HostRef&lt;T&gt;` into the C API crate</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#58b08b9d</link>
        <description>Move `HostRef&lt;T&gt;` into the C API crateIt isn&apos;t used by anything except for the C API and all of our embedder-exposedAPIs are already internally `Rc`-based, so it doesn&apos;t make sense to use withthem.

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Mon, 01 Jun 2020 21:48:45 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a8ee0554 - wasmtime: Initial, partial support for `externref`</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#a8ee0554</link>
        <description>wasmtime: Initial, partial support for `externref`This is enough to get an `externref -&gt; externref` identity functionpassing.However, `externref`s that are dropped by compiled Wasm code are (safely)leaked. Follow up work will leverage cranelift&apos;s stack maps to resolve thisissue.

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Sat, 23 May 2020 00:12:45 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f28b3738 - Rename `anyref` to `externref` across the board</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#f28b3738</link>
        <description>Rename `anyref` to `externref` across the board

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Wed, 20 May 2020 18:55:30 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>9364eb1d - Refactor (#1524)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#9364eb1d</link>
        <description>Refactor (#1524)* Compute instance exports on demand.Instead having instances eagerly compute a Vec of Externs, and bumpingthe refcount for each Extern, compute Externs on demand.This also enables `Instance::get_export` to avoid doing a linear search.This also means that the closure returned by `get0` and friends nowholds an `InstanceHandle` to dynamically hold the instance live ratherthan being scoped to a lifetime.* Compute module imports and exports on demand too.And compute Extern::ty on demand too.* Add a utility function for computing an ExternType.* Add a utility function for looking up a function&apos;s signature.* Add a utility function for computing the ValType of a Global.* Rename wasmtime_environ::Export to EntityIndex.This helps differentiate it from other Export types in the tree, anddescribes what it is.* Fix a typo in a comment.* Simplify module imports and exports.* Make `Instance::exports` return the export names.This significantly simplifies the public API, as it&apos;s relatively commonto need the names, and this avoids the need to do a zip with`Module::exports`.This also changes `ImportType` and `ExportType` to have public membersinstead of private members and accessors, as I find that simplifies theusage particularly in cases where there are temporary instances.* Remove `Instance::module`.This doesn&apos;t quite remove `Instance`&apos;s `module` member, it gets a stepcloser.* Use a InstanceHandle utility function.* Don&apos;t consume self in the `Func::get*` methods.Instead, just create a closure containing the instance handle and theexport for them to call.* Use `ExactSizeIterator` to avoid needing separate `num_*` methods.* Rename `Extern::func()` etc. to `into_func()` etc.* Revise examples to avoid using `nth`.* Add convenience methods to instance for getting specific extern types.* Use the convenience functions in more tests and examples.* Avoid cloning strings for `ImportType` and `ExportType`.* Remove more obviated clone() calls.* Simplify `Func`&apos;s closure state.* Make wasmtime::Export&apos;s fields private.This makes them more consistent with ExportType.* Fix compilation error.* Make a lifetime parameter explicit, and use better lifetime names.Instead of &apos;me, use &apos;instance and &apos;module to make it clear what thelifetime is.* More lifetime cleanups.

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Mon, 20 Apr 2020 20:55:33 +0000</pubDate>
        <dc:creator>Dan Gohman &lt;sunfish@mozilla.com&gt;</dc:creator>
    </item>
<item>
        <title>bd374fd6 - Add Wasmtime-specific C API functions to return errors (#1467)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#bd374fd6</link>
        <description>Add Wasmtime-specific C API functions to return errors (#1467)* Add Wasmtime-specific C API functions to return errorsThis commit adds new `wasmtime_*` symbols to the C API, many of whichmirror the existing counterparts in the `wasm.h` header. These APIs areenhanced in a number of respects:* Detailed error information is now available through a  `wasmtime_error_t`. Currently this only exposes one function which is  to extract a string version of the error.* There is a distinction now between traps and errors during  instantiation and function calling. Traps only happen if wasm traps,  and errors can happen for things like runtime type errors when  interacting with the API.* APIs have improved safety with respect to embedders where the lengths  of arrays are now taken as explicit parameters rather than assumed  from other parameters.* Handle trap updates* Update C examples* Fix memory.c compile on MSVC* Update test assertions* Refactor C slightly* Bare-bones .NET update* Remove bogus nul handling

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Mon, 06 Apr 2020 20:13:06 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>6ef09359 - Refactor and fill out wasmtime&apos;s C API (#1415)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/c-api/src/global.rs#6ef09359</link>
        <description>Refactor and fill out wasmtime&apos;s C API (#1415)* Refactor and improve safety of C APIThis commit is intended to be a relatively large refactoring of the CAPI which is targeted at improving the safety of our C API definitions.Not all of the APIs have been updated yet but this is intended to be thestart.The goal here is to make as many functions safe as we can, expressinginputs/outputs as native Rust types rather than raw pointers whereverpossible. For example instead of `*const wasm_foo_t` we&apos;d take`&amp;wasm_foo_t`. Instead of returning `*mut wasm_foo_t` we&apos;d return`Box&lt;wasm_foo_t&gt;`. No ABI/API changes are intended from this commit,it&apos;s supposed to only change how we define all these functionsinternally.This commit also additionally implements a few more API bindings forexposed vector types by unifying everything into one macro.Finally, this commit moves many internal caches in the C API to the`OnceCell` type which provides a safe interface for one-timeinitialization.* Split apart monolithic C API `lib.rs`This commit splits the monolithic `src/lib.rs` in the C API crate intolots of smaller files. The goal here is to make this a bit more readableand digestable. Each module now contains only API bindings for aparticular type, roughly organized around the grouping in the wasm.hheader file already.A few more extensions were added, such as filling out `*_as_*`conversions with both const and non-const versions. Additionally manyAPIs were made safer in the same style as the previous commit, generallypreferring Rust types rather than raw pointer types.Overall no functional change is intended here, it should be mostly justcode movement and minor refactorings!* Make a few wasi C bindings saferUse safe Rust types where we can and touch up a few APIs here and there.* Implement `wasm_*type_as_externtype*` APIsThis commit restructures `wasm_externtype_t` to be similar to`wasm_extern_t` so type conversion between the `*_extern_*` variants tothe concrete variants are all simple casts. (checked in the case ofgeneral to concrete, of course).* Consistently imlpement host info functions in the APIThis commit adds a small macro crate which is then used to consistentlydefine the various host-info-related functions in the C API. The goalhere is to try to mirror what the `wasm.h` header provides to provide afull implementation of the header.

            List of files:
            /wasmtime-44.0.1/crates/c-api/src/global.rs</description>
        <pubDate>Fri, 27 Mar 2020 14:50:32 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
</channel>
</rss>
