<?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 func_refs.rs</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>d2dee5dd - Handle OOM in `{Func,Memory,Table,Global}::new` and when calling an instance&apos;s exported function (#12855)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#d2dee5dd</link>
        <description>Handle OOM in `{Func,Memory,Table,Global}::new` and when calling an instance&apos;s exported function (#12855)* Use `try_new` for `Box&lt;dyn RuntimeLinearMemory&gt;` in `DefaultMemoryCreator`* Use `TryPrimaryMap` for `host_globals` in `Store`* Add `Func::try_wrap` and use `try_new` for `Box&lt;HostFunc&gt;`Add `Func::try_wrap` as a fallible version of `Func::wrap` that returns an erroron out-of-memory instead of panicking. `Func::wrap` now delegates to `try_wrap`.Also use `try_new::&lt;Box&lt;_&gt;&gt;` instead of `Box::new` for `HostFunc`.* Use `bumpalo`&apos;s `try_alloc` for `FuncRefs`* Use `try_new` for `Arc&lt;Module&gt;` in &quot;trampoline&quot; code* Test that we handle OOM in `{Func,Memory,Table,Global}::new` and when calling an instance&apos;s exported function* cargo fmt

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Fri, 27 Mar 2026 16:54:22 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>66ef086d - Use `TryVec` in the store&apos;s `FuncRefs` structure (#12845)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#66ef086d</link>
        <description>Use `TryVec` in the store&apos;s `FuncRefs` structure (#12845)

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Thu, 26 Mar 2026 14:27:05 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>183891f0 - Rename our OOM-handling `Vec` to `TryVec` (#12721)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#183891f0</link>
        <description>Rename our OOM-handling `Vec` to `TryVec` (#12721)* Rename our OOM-handling `Vec` to `TryVec`* fix tests that got mangled by the LSP server* fix more tests mangled by LSP

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Thu, 05 Mar 2026 00:03:12 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>0f280583 - Handle OOM in `Linker::instantiate_pre` (#12683)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#0f280583</link>
        <description>Handle OOM in `Linker::instantiate_pre` (#12683)

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Thu, 26 Feb 2026 23:40:29 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f828ce08 - Add a helper always-`Sync` utility to Wasmtime (#11453)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#f828ce08</link>
        <description>Add a helper always-`Sync` utility to Wasmtime (#11453)* Add a helper always-`Sync` utility to WasmtimeThis commit adds a newtype wrapper to Wasmtime, `AlwaysMut`, which isunconditionally `Sync` if the stored type is `Send`. This is similar toa `Mutex&lt;T&gt;` where it promotes a `Send` bound to a `Sync` bound, butit&apos;s unlike `Mutex&lt;T&gt;` in that `AlwaysMut&lt;T&gt;` has no synchronization.The reason that this is safe is that `AlwaysMut&lt;T&gt;` completely disallowsaccess to the underlying data through `&amp;self` and requires `&amp;mut self`.This is similar to how `Mutex::get_mut` is safe, for example.This type cleans up a preexisting `unsafe impl Sync` block in funcrefmanagement around `SendSyncBump` (`bumpalo::Bump` is `Send`, not `Sync`,but we only access it through `&amp;mut self`). This then additionallyremoves `unsafe impl Sync for StoreFiber` which, upon reflection, is notsound because we don&apos;t ever constraint the store&apos;s `T` type to `Sync`,only `Send`. This is effectively no change throughout Wasmtime, however,as fibers are only accessed with `&amp;mut`.Overall this is mostly just internal refactoring to reduce the amount of`unsafe` inside of Wasmtime and to add a new utility to use in thefuture too.* Fix configured build* Review comments* Fix configured build

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Mon, 18 Aug 2025 22:08:54 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>0f457fad - Raise `unsafe_op_in_unsafe_fn` further in Wasmtime (#11322)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#0f457fad</link>
        <description>Raise `unsafe_op_in_unsafe_fn` further in Wasmtime (#11322)* Raise `unsafe_op_in_unsafe_fn` further in WasmtimeNow it&apos;s at `wasmtime::runtime`, not just `wasmtime::runtime::vm`.* Review comments

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Fri, 25 Jul 2025 18:22:03 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>4fcfe17a - Refactor the representation of `Func` (#10897)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#4fcfe17a</link>
        <description>Refactor the representation of `Func` (#10897)* Refactor the representation of `Func`This commit rewrites the internals of `wasmtime::Func`. The `Stored`type is no longer used meaning that it&apos;s now free to create a`wasmtime::Func` at any time. It is effectively a store-tagged`NonNull&lt;VMFuncRef&gt;`. This required a few internal changes to howfunctions are passed around:* Previously the insertion of a `wasm_call`-less `VMFuncRef` was  deferred until the raw pointer was loaded. Now the insertion happens  immediately as soon as the function is placed within a store. This is  done to ensure that a `Func` corresponds to one exact `VMFuncRef` and  that&apos;s it, and lazily filled in versions within the store are still  lazily filled in but they&apos;re more eagerly allocated. This isn&apos;t  expected to have much of an impact perf-wise since all these lazily  allocated functions were already almost guaranteed to get lazily  allocated anyway.* Filling in &quot;holes&quot; in `VMFuncRef`, notably the `wasm_call` field, no  longer happens lazily when the `VMFuncRef` is demanded. Instead during  instantiation a pass is made to fill in holes with the new module  being instantiated (after registration). Additionally when a  lazily-allocated `VMFuncRef` is created the module registry is checked  immediately. This means that all store-local `VMFuncRef` values are  either filled in immediately or filled in during instantiation. This  notably means that the previous logic in `Func::vmimport` is now  &quot;just&quot; an `.unwrap()` with a lot of comments saying why the unwrap  shouldn&apos;t panic.* To implement this commit a previous optimization for the `Func` API was  removed as well, namely `Func::call` will become slower after this  commit. The `Func::call` API is a dynamically-typed API which requires  run-time type-checking of arguments. Previously a `FuncType` was loaded  into a cache once-per-`Func` which helped amortize the cost of using  `Func::call` repeatedly. Now, though, there&apos;s no natural place to put  such a cache since `Func` no longer has dedicated storage within a  `Store`. Historically this optimization was added for the C API before  the `*_call_unchecked` APIs existed, but nowadays the `*_call_unchecked`  APIs should suffice for performance-critical applications where needed.  In the future it might also be possible to have a hash map in the  `Store` of a `VMSharedTypeIndex` to `FuncType` which is lazily populated  based on calls to `Func::call`, but that feels a bit overkill nowadays  for a possibly rarely-used map.* The no-longer-necessary `RootedHostFunc` type is now gone as its  unsafety and various contracts are subsumed by other preexisting  `unsafe` blocks.* The specific drop order between `StoreOpaque::store_data` and  `StoreOpaque::rooted_host_funcs` is removed. The `rooted_host_funcs`  field now lives in the `func_refs` field and the `FuncKind` type,  where the destructors came from before, is no more.* The `func_refs` field has grown storage locations for a variety of  &quot;keep this thing alive as long as the store&quot; related to functions and  such.Closes #10868* Remove mutability from locations that no longer need it* Update crates/wasmtime/src/runtime/func.rsCo-authored-by: Nick Fitzgerald &lt;fitzgen@gmail.com&gt;* Update crates/wasmtime/src/runtime/store/func_refs.rsCo-authored-by: Nick Fitzgerald &lt;fitzgen@gmail.com&gt;---------Co-authored-by: Nick Fitzgerald &lt;fitzgen@gmail.com&gt;

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Mon, 02 Jun 2025 23:55:52 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>b86b9682 - Provenance preparation for Pulley  (#10043)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#b86b9682</link>
        <description>Provenance preparation for Pulley  (#10043)* Provenance preparation for PulleyThis commit is an internal refactoring of Wasmtime&apos;s runtime to prepareto execute Pulley in MIRI. Currently today this is not possible becausePulley does not properly respect either strict or permissive provenancemodels. The goal of this refactoring is to enable fixing this in afuture commit that doesn&apos;t touch everything in the codebase. Insteadeverything is touched here in this commit.The basic problem with Pulley is that it is incompatible with the strictprovenance model of Rust which means that we&apos;ll be using &quot;exposedprovenance&quot; APIs to satisfy Rust&apos;s soundness requirements. In this modelwe must explicitly call `ptr.expose_provenance()` on any pointerswhich are exposed to compiled code. Arguably we should also be alreadydoing this for natively-compiled code but I am not certain about howstrictly this is required.Currently in Wasmtime today we call `ptr.expose_provenance()` nowhere.It also turns out, though, that we share quite a few pointers in quite afew places with compiled code. This creates a bit of a problem! Thesolution settled on in this commit looks like:* A new marker trait, `VmSafe`, is introduced. This trait is used to  represent &quot;safe to share with compiled code&quot; types and enumerates some  properties such as defined ABIs, primitives wrappers match primitive  ABIs, and notably &quot;does not contain a pointer&quot;.* A new type, `VmPtr&lt;T&gt;`, is added to represent pointers shared with  compiled code. Internally for now this is just `SendSyncPtr&lt;T&gt;` but in  the future it will be `usize`. By using `SendSyncPtr&lt;T&gt;` it shouldn&apos;t  actually really change anything today other than requiring a lot of  refactoring to get the types to line up.* The core `vmctx_plus_offset*` methods are updated to require  `T: VmSafe`. Previously they allowed any `T` which is relatively  dangerous to store any possible Rust type in Cranelift-accessible  areas.These three fundamental changes were introduced in this commit. Allfurther changes were refactoring necessary to get everything workingafter these changes. For example many types in `vmcontext.rs`, such as`VMFuncRef`, have changed to using `VmPtr&lt;T&gt;` instead of `NonNull&lt;T&gt;` or`*mut T`. This is a pretty expansive change which resulted in touching alot of places.One premise of `VmPtr&lt;T&gt;` is that it&apos;s non-null. This was anadditional refactoring that updated a lot of places where previously`*mut T` was used and now either `VmPtr&lt;T&gt;` or `NonNull&lt;T&gt;` is used.In the end the intention is that `VmPtr&lt;T&gt;` is used whenever pointersare store in memory that can be accessed from Cranelift. When operatinginside of the runtime `NonNull&lt;T&gt;` or `SendSyncPtr&lt;T&gt;` is preferredinstead.As a final note, no provenance changes have actually happened yet. Forexample this doesn&apos;t fix Pulley in MIRI. What it does enable, though, isthat the future commit to fix Pulley in MIRI will be much smaller withthis having already landed.* Run the full test suite in PR CIprtest:full* Minor CI issues* Fix no_std build* Fix miri build* Don&apos;t use `VmPtr` in FFI function signaturesUse `NonNull` or `*mut u8` as appropriate for function signaturesinstead. It shouldn&apos;t be required to use `VmPtr` during the handoff tocompiled code as we&apos;ve already annotated the pointer going out.* Fix rebase conflict* Review comments

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Thu, 23 Jan 2025 20:55:28 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>1d11b265 - Remove the native ABI calling convention from Wasmtime (#8629)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#1d11b265</link>
        <description>Remove the native ABI calling convention from Wasmtime (#8629)* Remove the native ABI calling convention from WasmtimeThis commit proposes removing the &quot;native abi&quot; calling convention usedin Wasmtime. For background this ABI dates back to the origins ofWasmtime. Originally Wasmtime only had `Func::call` and eventually Iadded `TypedFunc` with `TypedFunc::call` and `Func::wrap` for a fasterpath. At the time given the state of trampolines it was easiest to callWebAssembly code directly without any trampolines using the native ABIthat wasm used at the time. This is the original source of the nativeABI and it&apos;s persisted over time under the assumption that it&apos;s fasterthan the array ABI due to keeping arguments in registers rather thanspilling them to the stack.Over time, however, this design decision of using the native ABI has notaged well. Trampolines have changed quite a lot in the meantime and it&apos;sno longer possible for the host to call wasm without a trampoline, forexample. Compilations nowadays maintain both native and arraytrampolines for wasm functions in addition to host functions. There&apos;s alarge split between `Func::new` and `Func::wrap`. Overall, there&apos;s quitea lot of weight that we&apos;re pulling for the design decision of using thenative ABI.Functionally this hasn&apos;t ever really been the end of the world.Trampolines aren&apos;t a known issue in terms of performance or code size.There&apos;s no known faster way to invoke WebAssembly from the host (orvice-versa). One major downside of this design, however, is that`Func::new` requires Cranelift as a backend to exist. This is due to thefact that it needs to synthesize various entries in the matrix of ABIswe have that aren&apos;t available at any other time. While this is itselfnot the worst of issues it means that the C API cannot be built withouta compiler because the C API does not have access to `Func::wrap`.Overall I&apos;d like to reevaluate given where Wasmtime is today whether itmakes sense to keep the native ABI trampolines. Sure they&apos;re supposed tobe fast, but are they really that much faster than the array-call ABI asan alternative? This commit is intended to measure this.This commit removes the native ABI calling convention entirely. Forexample `VMFuncRef` is now one pointer smaller. All of `TypedFunc` nowuses `*mut ValRaw` for loads/stores rather than dealing with ABIbusiness. The benchmarks with this PR are:* `sync/no-hook/core - host-to-wasm - typed - nop` - 5% faster* `sync/no-hook/core - host-to-wasm - typed - nop-params-and-results` - 10% slower* `sync/no-hook/core - wasm-to-host - typed - nop` - no change* `sync/no-hook/core - wasm-to-host - typed - nop-params-and-results` - 7% fasterThese numbers are a bit surprising as I would have suspected no changein both &quot;nop&quot; benchmarks as well as both being slower in theparams-and-results benchmarks. Regardless it is apparent that this isnot a major change in terms of performance given Wasmtime&apos;s currentstate. In general my hunch is that there are more expensive sources ofoverhead than reads/writes from the stack when dealing with wasm values(e.g. trap handling, store management, etc).Overall this commit feels like a large simplification of what wecurrently do in `TypedFunc`:* The number of ABIs that Wasmtime deals with is reduced by one. ABIs  are pretty much always tricky and having fewer moving parts should  help improve the understandability of the system.* All of the `WasmTy` trait methods and `TypedFunc` infrastructure is  simplified. Traits now work with simple `load`/`store` methods rather  than various other flavors of conversion.* The multi-return-value handling of the native ABI is all gone now  which gave rise to significant complexity within Wasmtime&apos;s Cranelift  translation layer in addition to the `TypedFunc` backing traits.* This aligns components and core wasm where components always use the  array ABI and now core wasm additionally will always use the array ABI  when communicating with the host.I&apos;ll note that this still leaves a major ABI &quot;complexity&quot; with respectto native functions do not have a wasm ABI function pointer untilthey&apos;re &quot;attached&quot; to a `Store` with a `Module`. That&apos;s required toavoid needing Cranelift for creating host functions and that property isstill true today. This is a bit simpler to understand though now that`Func::new` and `Func::wrap` are treated uniformly rather than one beingspecial-cased.* Fix miri unsafetyprtest:full

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Fri, 17 May 2024 04:28:11 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>81a89169 - Add support for `#![no_std]` to the `wasmtime` crate (#8533)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#81a89169</link>
        <description>Add support for `#![no_std]` to the `wasmtime` crate (#8533)* Always fall back to custom platform for WasmtimeThis commit updates Wasmtime&apos;s platform support to no longer require anopt-in `RUSTFLAGS` `--cfg` flag to be specified. With `no_std` becomingofficially supported this should provide a better onboarding experiencewhere the fallback custom platform is used. This will cause linkererrors if the symbols aren&apos;t implemented and searching/googling shouldlead back to our docs/repo (eventually, hopefully).* Change Wasmtime&apos;s TLS state to a single pointerThis commit updates the management of TLS to rely on just a singlepointer rather than a pair of a pointer and a `bool`. Additionallymanagement of the TLS state is pushed into platform-specific modules toenable different means of managing it, namely the &quot;custom&quot; platform nowhas a C function required to implement TLS state for Wasmtime.* Delay conversion to `Instant` in atomic intrinsicsThe `Duration` type is available in `no_std` but the `Instant` type isnot. The intention is to only support the `threads` proposal if `std` isactive but to assist with this split push the `Duration` further intoWasmtime to avoid using a type that can&apos;t be mentioned in `no_std`.* Gate more parts of Wasmtime on the `profiling` featureMove `serde_json` to an optional dependency and gate the guest profilerentirely on the `profiling` feature.* Refactor conversion to `anyhow::Error` in `wasmtime-environ`Have a dedicated trait for consuming `self` in addition to a`Result`-friendly trait.* Gate `gimli` in Wasmtime on `addr2line`Cut down the dependency list if `addr2line` isn&apos;t enabled since thenthe dependency is not used. While here additionally lift the versionrequirement for `addr2line` up to the workspace level.* Update `bindgen!` to have `no_std`-compatible outputPull most types from Wasmtime&apos;s `__internal` module as the source oftruth.* Use an `Option` for `gc_store` instead of `OnceCell`No need for synchronization here when mutability is already available inthe necessary contexts.* Enable embedder-defined host feature detection* Add `#![no_std]` support to the `wasmtime` crateThis commit enables compiling the `runtime`, `gc`, and `component-model`features of the `wasmtime` crate on targets that do not have `std`. Thistags the crate as `#![no_std]` and then updates everything internally toimport from `core` or `alloc` and adapt for the various idioms. Thisended up requiring some relatively extensive changes, but nothing tootoo bad in the grand scheme of things.* Require `std` for the perfmap profiling agentprtest:full* Fix build on wasm* Fix windows build* Remove unused import* Fix Windows/Unix build without `std` feature* Fix some doc links* Remove unused import* Fix build of wasi-common in isolation* Fix no_std build on macos* Re-fix build* Fix standalone build of wasmtime-cli-flags* Resolve a merge conflict* Review comments* Remove unused import

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Sat, 04 May 2024 22:02:26 +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/crates/wasmtime/src/runtime/store/func_refs.rs#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/crates/wasmtime/src/runtime/store/func_refs.rs</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>d4242001 - Support compilation-only build by adding a `runtime` feature (#7766)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs#d4242001</link>
        <description>Support compilation-only build by adding a `runtime` feature (#7766)* Add `runtime` feature to `wasmtime` crateThis feature can be disabled to build `wasmtime` only for compilation.This can be useful when cross-compiling, especially on a target thatcan&apos;t run wasmtime itself (e.g. `wasm32`).* prtest:full* don&apos;t round pages without runtime feature* fix async assertions* move profiling into runtime* enable runtime for wasmtime-wasi* enable runtime for c-api* fix build_artifacts in non-cache case* fix miri extensions* enable runtime for wast* enable runtime for explorer* support cranelift all-arch on wasm32* add doc links for `WeakEngine`* simplify lib runtime cfgs* move limits and resources to runtime* move stack to runtime* move coredump and debug to runtime* add runtime to coredump and async features* add wasm32 build job* combine engine modules* single compile mod* remove allow for macro paths* add comments

            List of files:
            /wasmtime-44.0.1/crates/wasmtime/src/runtime/store/func_refs.rs</description>
        <pubDate>Mon, 29 Jan 2024 15:51:43 +0000</pubDate>
        <dc:creator>Adam Bratschi-Kaye &lt;adam.bratschikaye@dfinity.org&gt;</dc:creator>
    </item>
</channel>
</rss>
