<?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 contributing-architecture.md</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>192f2fcd - Replace setjmp/longjmp usage in Wasmtime (#11592)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#192f2fcd</link>
        <description>Replace setjmp/longjmp usage in Wasmtime (#11592)Since Wasmtime&apos;s inception it&apos;s used the `setjmp` and `longjmp`functions in C to implement handling of traps. While this solution waseasy to implement, relatively portable, and performant enough, there area number of downsides that have evolved over time to make this anunattractive approach in the long run:* Using `setjmp` fundamentally requires using C because Rust does not  understand a function that returns twice. It&apos;s fundamentally unsound  to invoke `setjmp` in Rust meaning that Wasmtime has forever needed a  C compiler configured and set up to build. This notably means that  `cargo check` cannot check other targets easily.* Using `longjmp` means that Rust function frames are unwound on the  stack without running destructors. This is a dangerous operation of  which we get no protection from the compiler about. Both frames  entering wasm and frames exiting wasm are all skipped. Absolutely  minimizing this has been beneficial for portability to platforms such  as Pulley.* Currently the no_std implementation of Wasmtime requires embedders to  provide `wasmtime_{setjmp,longjmp}` which is a thorn in the side of  what is otherwise a mostly entirely independent implementation of  Wasmtime.* There is a performance floor to using `setjmp` and `longjmp`. Calling  `setjmp` requires using C but Wasmtime is otherwise written in Rust  meaning that there&apos;s a Rust-&gt;C-&gt;Rust-&gt;Wasm boundary which  fundamentally can&apos;t be inlined without cross-language LTO which is  difficult to configure.* With the implementation of the WebAssembly exceptions proposal  Wasmtime now has two means of unwinding the stack. Ideally Wasmtime  would only have one, and the more general one is the method of  exceptions.* Jumping out of a signal handler on Unix is tricky business. While  we&apos;ve made it work it&apos;s generally most robust of the signal handler  simply returns which it now does.With all of that in mind the purpose of this commit is to replace thesetjmp/longjmp mechanism of handling traps with the recently implementedsupport for exceptions in Cranelift. That is intended to resolve all ofthe above points in one swoop.One point in particular though that&apos;s nice about setjmp/longjmp is thatunwinding the stack on a trap is an O(1) operation. For situations suchas stack overflow that&apos;s a particularly nice property to have as we canguarantee embedders that traps are a constant time (albeit somewhatexpensive with signals) operation. Exceptions naively require unwindingthe entire stack, and although frame pointers mean we&apos;re just traversinga linked list I wanted to preserve the O(1) property here nonetheless.To achieve this a solution is implemented where the array-to-wasm(host-to-wasm) trampolines setup state in `VMStoreContext` so looking upthe current trap handler frame is an O(1) operation. Namely the sp/fp/pcvalues for a `Handler` are stored inline.Implementing this feature required supportingrelocations-to-offsets-in-functions which was not previously supportedby Wasmtime. This required Cranelift refactorings such as #11570, #11585,and #11576. This then additionally required some more refactoring inthis commit which was difficult to split out as it otherwise wouldn&apos;t betested.Apart from the relocation-related business much of this change is aboutupdating the platform signal handlers to use exceptions instead oflongjmp to return. For example on Unix this means updating the`ucontext_t` with register values that the handler specifies. Windowsinvolves updating similar contexts, and macOS mach ports ended up notneeding too many changes.In terms of overall performance the relevant benchmark from thisrepository, compared to before this commit, is:    sync/no-hook/core - host-to-wasm - typed - nop			    time:   [10.552 ns 10.561 ns 10.571 ns]			    change: [&#8722;7.5238% &#8722;7.4011% &#8722;7.2786%] (p = 0.00 &lt; 0.05)			    Performance has improved.Closes #3927cc #10923prtest:full

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Mon, 08 Sep 2025 14:33:31 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>c21353bd - Modernize architecture documentation on linear memory (#10364)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#c21353bd</link>
        <description>Modernize architecture documentation on linear memory (#10364)The previous docs had fallen a bit behind the times.

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Mon, 10 Mar 2025 22:48:06 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>72004aad - Turn the `wasmtime-runtime` crate into the `wasmtime::runtime::vm` module (#8501)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#72004aad</link>
        <description>Turn the `wasmtime-runtime` crate into the `wasmtime::runtime::vm` module (#8501)* Expose `wasmtime-runtime` as `crate::runtime::vm` internally for the `wasmtime` crate* Rewrite uses of `wasmtime_runtime` to `crate::runtime::vm`* Remove dep on `wasmtime-runtime` from `wasmtime-cli`* Move the `wasmtime-runtime` crate into the `wasmtime::runtime::vm` module* Update labeler for merged crates* Fix `publish verify`prtest:full

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Tue, 30 Apr 2024 18:52:45 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>2fcf41f0 - Remove `wasmtime-jit` (#7769)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#2fcf41f0</link>
        <description>Remove `wasmtime-jit` (#7769)* Move `jit` crate to `environ`Move the platform agnostic parts of the crate `wasmtime-jit` to`wasmtime-environ`. This is the first part of the refactoring discussedhere: https://github.com/bytecodealliance/wasmtime/issues/7652 and afollow up will move the remaining parts of `wasmtime-jit` so that thecrate can be deleted.* Move `jit` crate to `wasmtime`Move the remaining parts of `wasmtime-jit` to the `wasmtime` crate andremove `wasmtime-jit`. This is part of the refactoring discussed inhttps://github.com/bytecodealliance/wasmtime/issues/7652.* undo toml formatting* Trigger pipeline: prtest:full* Remove `jit` directory* move `ProfilingAgent` out of `profiling` feature* add links to ELF_NAME_DATA

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Tue, 16 Jan 2024 17:49:50 +0000</pubDate>
        <dc:creator>Adam Bratschi-Kaye &lt;adam.bratschikaye@dfinity.org&gt;</dc:creator>
    </item>
<item>
        <title>738d41ea - Correct grammar (#7224)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#738d41ea</link>
        <description>Correct grammar (#7224)* Update cli-install.mdCorrect grammar.* Update contributing-architecture.mdCorrect grammar.

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Thu, 12 Oct 2023 11:27:02 +0000</pubDate>
        <dc:creator>Kelly Thomas Kline &lt;kellytk@sw-e.org&gt;</dc:creator>
    </item>
<item>
        <title>ed634b29 - Update notes about 64-bit memory support (#6868)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#ed634b29</link>
        <description>Update notes about 64-bit memory support (#6868)Closes #6865

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Mon, 21 Aug 2023 15:52:08 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>317cc513 - Rename `VMCallerCheckedAnyfunc` to `VMCallerCheckedFuncRef` (#5738)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#317cc513</link>
        <description>Rename `VMCallerCheckedAnyfunc` to `VMCallerCheckedFuncRef` (#5738)At some point what is now `funcref` was called `anyfunc` and the spec changed,but we didn&apos;t update our internal names. This does that.Co-authored-by: Jamey Sharp &lt;jsharp@fastly.com&gt;

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Tue, 07 Feb 2023 22:09:02 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>59a9bd62 - Chore fix typo in docs/contributing-architecture.md (#3449)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#59a9bd62</link>
        <description>Chore fix typo in docs/contributing-architecture.md (#3449)

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Wed, 13 Oct 2021 14:56:56 +0000</pubDate>
        <dc:creator>Shinobu Hayashi &lt;PhilisPaxil@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>1ee2af00 - Remove the lightbeam backend (#3390)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#1ee2af00</link>
        <description>Remove the lightbeam backend (#3390)This commit removes the Lightbeam backend from Wasmtime as per [RFC 14].This backend hasn&apos;t received maintenance in quite some time, and as [RFC14] indicates this doesn&apos;t meet the threshold for keeping the codein-tree, so this commit removes it.A fast &quot;baseline&quot; compiler may still be added in the future. Theaddition of such a backend should be in line with [RFC 14], though, withthe principles we now have for stable releases of Wasmtime. I&apos;ll closeout Lightbeam-related issues once this is merged.[RFC 14]: https://github.com/bytecodealliance/rfcs/pull/14

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Mon, 27 Sep 2021 17:27:19 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>93b7cdd6 - Fix a few typos in the architecture doc (#3054)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#93b7cdd6</link>
        <description>Fix a few typos in the architecture doc (#3054)

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Fri, 02 Jul 2021 18:09:58 +0000</pubDate>
        <dc:creator>Benjamin Bouvier &lt;public@benj.me&gt;</dc:creator>
    </item>
<item>
        <title>aa5d8374 - Start a high-level architecture document for Wasmtime (#3019)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/docs/contributing-architecture.md#aa5d8374</link>
        <description>Start a high-level architecture document for Wasmtime (#3019)* Start a high-level architecture document for WasmtimeThis commit cleands up some existing documentation by removing a numberof &quot;noop README files&quot; and starting a high-level overview of thearchitecture of Wasmtime. I&apos;ve placed this documentation under thecontributing section of the book since it seems most useful for possiblecontributors.I&apos;ve surely left some things out in this pass, and am happy to add more!* Review comments* More rewording* typos

            List of files:
            /wasmtime-44.0.1/docs/contributing-architecture.md</description>
        <pubDate>Fri, 02 Jul 2021 14:02:26 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
</channel>
</rss>
