public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: hydai <hydai@hyd.ai>
To: git-commits@fedoraproject.org
Subject: [rpms/wasmedge] epel9: Release 0.17.0
Date: Tue, 02 Jun 2026 07:54:33 GMT [thread overview]
Message-ID: <178038687351.1.6727435362024858314.rpms-wasmedge-541592170b74@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/wasmedge
Branch : epel9
Commit : 541592170b7484f8b374b8689e7b143de4c0ea6a
Author : hydai <hydai@hyd.ai>
Date : 2026-06-02T07:49:39+00:00
Stats : +80/-271 in 8 file(s)
URL : https://src.fedoraproject.org/rpms/wasmedge/c/541592170b7484f8b374b8689e7b143de4c0ea6a?branch=epel9
Log:
Release 0.17.0
Signed-off-by: hydai <hydai@hyd.ai>
---
diff --git a/.gitignore b/.gitignore
index c2b8f64..f3840fc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@
/WasmEdge-0.13.4-src.tar.gz
/WasmEdge-0.13.5-src.tar.gz
/WasmEdge-0.14.0-src.tar.gz
+/WasmEdge-0.17.0-src.tar.gz
diff --git a/0001-Build-with-fmt-8-and-older-spdlog.patch b/0001-Build-with-fmt-8-and-older-spdlog.patch
new file mode 100644
index 0000000..eac4752
--- /dev/null
+++ b/0001-Build-with-fmt-8-and-older-spdlog.patch
@@ -0,0 +1,55 @@
+diff --git a/include/common/int128.h b/include/common/int128.h
+index 40f49e727..d26ad3011 100644
+--- a/include/common/int128.h
++++ b/include/common/int128.h
+@@ -555,6 +555,7 @@ using uint128_t = uint128;
+ #include <fmt/format.h>
+
+ FMT_BEGIN_NAMESPACE
++#if FMT_VERSION >= 90000
+ namespace detail {
+ inline constexpr bool operator>=(detail::uint128_fallback LHS,
+ unsigned int RHS) {
+@@ -668,6 +669,7 @@ FMT_CONSTEXPR20 inline int count_digits(detail::uint128_fallback N) {
+ }
+
+ } // namespace detail
++#endif
+
+ template <typename Char> struct formatter<WasmEdge::uint128, Char> {
+ private:
+diff --git a/lib/common/spdlog.cpp b/lib/common/spdlog.cpp
+index 39ba477bb..39f6a7ff8 100644
+--- a/lib/common/spdlog.cpp
++++ b/lib/common/spdlog.cpp
+@@ -9,7 +9,30 @@
+ // https://github.com/gabime/spdlog/pull/3198
+ #pragma clang diagnostic ignored "-Wextra-semi"
+ #endif
++#if __has_include(<spdlog/sinks/callback_sink.h>)
+ #include <spdlog/sinks/callback_sink.h>
++#else
++// Fallback for spdlog without callback_sink.h (e.g. RHEL 9 / EPEL 9 spdlog 1.10).
++#include <spdlog/sinks/base_sink.h>
++#include <functional>
++#include <mutex>
++namespace spdlog::sinks {
++template <typename Mutex> class callback_sink final : public base_sink<Mutex> {
++public:
++ explicit callback_sink(
++ std::function<void(const details::log_msg &)> Callback)
++ : Cb(std::move(Callback)) {}
++
++protected:
++ void sink_it_(const details::log_msg &Msg) override { Cb(Msg); }
++ void flush_() override {}
++
++private:
++ std::function<void(const details::log_msg &)> Cb;
++};
++using callback_sink_mt = callback_sink<std::mutex>;
++} // namespace spdlog::sinks
++#endif
+ #if defined(__clang_major__) && __clang_major__ >= 10
+ #pragma clang diagnostic pop
+ #endif
diff --git a/0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch b/0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch
deleted file mode 100644
index 5a95793..0000000
--- a/0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From b63e201d46452453ee7c2acf07967cd292d7e3da Mon Sep 17 00:00:00 2001
-From: hydai <hydai@secondstate.io>
-Date: Wed, 19 Mar 2025 12:57:06 +0800
-Subject: [PATCH] [LLVM] LLVMX86_MMXTypeKind is removed in LLVM20 (#4064)
-
-Signed-off-by: hydai <z54981220@gmail.com>
----
- lib/llvm/llvm.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/lib/llvm/llvm.h b/lib/llvm/llvm.h
-index 9b08d97b..7b0bb53e 100644
---- a/lib/llvm/llvm.h
-+++ b/lib/llvm/llvm.h
-@@ -556,8 +556,10 @@ public:
- return 128;
- case LLVMPPC_FP128TypeKind:
- return 128;
-+#if LLVM_VERSION_MAJOR < 20
- case LLVMX86_MMXTypeKind:
- return 64;
-+#endif
- case LLVMIntegerTypeKind:
- return getIntegerBitWidth();
- case LLVMVectorTypeKind:
---
-2.43.0
-
diff --git a/0001-LLVM-Support-LLVM-19-3809.patch b/0001-LLVM-Support-LLVM-19-3809.patch
deleted file mode 100644
index 6c937a5..0000000
--- a/0001-LLVM-Support-LLVM-19-3809.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 0ada5daa015f9d4de831b84526693dbd1b7a1951 Mon Sep 17 00:00:00 2001
-From: "Shen-Ta Hsieh(BestSteve)" <ibmibmibm.tw@gmail.com>
-Date: Tue, 1 Oct 2024 16:05:58 +0800
-Subject: [PATCH] [LLVM] Support LLVM 19 (#3809)
-
-* Remove unused and deprecated llvm-c functions
-
-Signed-off-by: Shen-Ta Hsieh <beststeve@secondstate.io>
-(cherry picked from commit 4e0f9f1118e278b41e9a02b0e7f42735955815f4)
----
- lib/llvm/llvm.h | 6 ------
- 1 file changed, 6 deletions(-)
-
-diff --git a/lib/llvm/llvm.h b/lib/llvm/llvm.h
-index 31ac95d4..5b278849 100644
---- a/lib/llvm/llvm.h
-+++ b/lib/llvm/llvm.h
-@@ -1228,12 +1228,6 @@ public:
- Value createNeg(Value V, const char *Name = "") noexcept {
- return LLVMBuildNeg(Ref, V.unwrap(), Name);
- }
-- Value createNSWNeg(Value V, const char *Name = "") noexcept {
-- return LLVMBuildNSWNeg(Ref, V.unwrap(), Name);
-- }
-- Value createNUWNeg(Value V, const char *Name = "") noexcept {
-- return LLVMBuildNUWNeg(Ref, V.unwrap(), Name);
-- }
- Value createFNeg(Value V, const char *Name = "") noexcept {
- return LLVMBuildFNeg(Ref, V.unwrap(), Name);
- }
---
-2.50.1
-
diff --git a/0001-feat-aot-add-support-for-llvm-21-4361.patch b/0001-feat-aot-add-support-for-llvm-21-4361.patch
deleted file mode 100644
index 0dc039f..0000000
--- a/0001-feat-aot-add-support-for-llvm-21-4361.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From b11791e4312445e3fd2d6c56acc9c2e36e12ef34 Mon Sep 17 00:00:00 2001
-From: "Shen-Ta Hsieh(BestSteve)" <ibmibmibm.tw@gmail.com>
-Date: Thu, 11 Sep 2025 18:58:16 +0800
-Subject: [PATCH] feat(aot): add support for llvm 21 (#4361)
-
-Signed-off-by: Shen-Ta Hsieh <ibmibmibm.tw@gmail.com>
----
- lib/llvm/codegen.cpp | 2 +-
- lib/llvm/compiler.cpp | 2 +-
- lib/llvm/data.h | 15 +++++++++++++--
- lib/llvm/jit.cpp | 4 ++--
- lib/llvm/llvm.h | 15 +++++++++++----
- 5 files changed, 28 insertions(+), 10 deletions(-)
-
-diff --git a/lib/llvm/codegen.cpp b/lib/llvm/codegen.cpp
-index 43b33cc7..2de0bdab 100644
---- a/lib/llvm/codegen.cpp
-+++ b/lib/llvm/codegen.cpp
-@@ -505,7 +505,7 @@ namespace WasmEdge::LLVM {
-
- Expect<void> CodeGen::codegen(Span<const Byte> WasmData, Data D,
- std::filesystem::path OutputPath) noexcept {
-- auto LLContext = D.extract().LLContext();
-+ auto LLContext = D.extract().getLLContext();
- auto &LLModule = D.extract().LLModule;
- auto &TM = D.extract().TM;
- std::filesystem::path LLPath(OutputPath);
-diff --git a/lib/llvm/compiler.cpp b/lib/llvm/compiler.cpp
-index ff564ff3..2441c8df 100644
---- a/lib/llvm/compiler.cpp
-+++ b/lib/llvm/compiler.cpp
-@@ -5826,7 +5826,7 @@ Expect<Data> Compiler::compile(const AST::Module &Module) noexcept {
- LLVM::Core::init();
-
- LLVM::Data D;
-- auto LLContext = D.extract().LLContext();
-+ auto LLContext = D.extract().getLLContext();
- auto &LLModule = D.extract().LLModule;
- LLModule.setTarget(LLVM::getDefaultTargetTriple().unwrap());
- LLModule.addFlag(LLVMModuleFlagBehaviorError, "PIC Level"sv, 2);
-diff --git a/lib/llvm/data.h b/lib/llvm/data.h
-index 9ab1a525..c79585c0 100644
---- a/lib/llvm/data.h
-+++ b/lib/llvm/data.h
-@@ -6,9 +6,20 @@
- #include "llvm/data.h"
-
- struct WasmEdge::LLVM::Data::DataContext {
-+#if LLVM_VERSION_MAJOR >= 21
-+ LLVM::Context LLContext = LLVM::Context::create();
-+ LLVM::Context getLLContext() noexcept { return LLContext; }
-+ LLVM::OrcThreadSafeContext getTSContext() noexcept {
-+ return LLVM::OrcThreadSafeContext(LLContext);
-+ }
-+#else
- LLVM::OrcThreadSafeContext TSContext;
-+ LLVM::Context getLLContext() noexcept { return TSContext.getContext(); }
-+ LLVM::OrcThreadSafeContext getTSContext() noexcept {
-+ return std::move(TSContext);
-+ }
-+#endif
- LLVM::Module LLModule;
- LLVM::TargetMachine TM;
-- DataContext() noexcept : TSContext(), LLModule(LLContext(), "wasm") {}
-- LLVM::Context LLContext() noexcept { return TSContext.getContext(); }
-+ DataContext() noexcept : LLModule(getLLContext(), "wasm") {}
- };
-diff --git a/lib/llvm/jit.cpp b/lib/llvm/jit.cpp
-index 9add6b51..4bf3cc80 100644
---- a/lib/llvm/jit.cpp
-+++ b/lib/llvm/jit.cpp
-@@ -73,6 +73,7 @@ Expect<std::shared_ptr<Executable>> JIT::load(Data D) noexcept {
- }
-
- auto &LLModule = D.extract().LLModule;
-+ auto TSContext = D.extract().getTSContext();
-
- if (Conf.getCompilerConfigure().isDumpIR()) {
- if (auto ErrorMessage = LLModule.printModuleToFile("wasm-jit.ll")) {
-@@ -82,8 +83,7 @@ Expect<std::shared_ptr<Executable>> JIT::load(Data D) noexcept {
-
- auto MainJD = J.getMainJITDylib();
- if (auto Err = J.addLLVMIRModule(
-- MainJD,
-- OrcThreadSafeModule(LLModule.release(), D.extract().TSContext))) {
-+ MainJD, OrcThreadSafeModule(LLModule.release(), TSContext))) {
- spdlog::error("{}"sv, Err.message().string_view());
- return Unexpect(ErrCode::Value::HostFuncError);
- }
-diff --git a/lib/llvm/llvm.h b/lib/llvm/llvm.h
-index a327b850..9498a22f 100644
---- a/lib/llvm/llvm.h
-+++ b/lib/llvm/llvm.h
-@@ -266,9 +266,12 @@ public:
- Context(const Context &) = default;
- Context &operator=(const Context &) = default;
-
-+ static Context create() noexcept { return Context(LLVMContextCreate()); }
-+
- constexpr operator bool() const noexcept { return Ref != nullptr; }
- constexpr auto &unwrap() const noexcept { return Ref; }
- constexpr auto &unwrap() noexcept { return Ref; }
-+ LLVMContextRef release() noexcept { return std::exchange(Ref, nullptr); }
- friend void swap(Context &LHS, Context &RHS) noexcept {
- using std::swap;
- swap(LHS.Ref, RHS.Ref);
-@@ -2062,6 +2065,14 @@ public:
- swap(*this, B);
- return *this;
- }
-+#if LLVM_VERSION_MAJOR >= 21
-+ OrcThreadSafeContext(Context &C) noexcept
-+ : Ref(LLVMOrcCreateNewThreadSafeContextFromLLVMContext(C.release())) {}
-+#else
-+ Context getContext() noexcept {
-+ return LLVMOrcThreadSafeContextGetContext(Ref);
-+ }
-+#endif
-
- OrcThreadSafeContext() noexcept : Ref(LLVMOrcCreateNewThreadSafeContext()) {}
- ~OrcThreadSafeContext() noexcept { LLVMOrcDisposeThreadSafeContext(Ref); }
-@@ -2078,10 +2089,6 @@ public:
- swap(LHS.Ref, RHS.Ref);
- }
-
-- Context getContext() noexcept {
-- return LLVMOrcThreadSafeContextGetContext(Ref);
-- }
--
- private:
- LLVMOrcThreadSafeContextRef Ref = nullptr;
- };
---
-2.43.0
-
diff --git a/0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch b/0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch
deleted file mode 100644
index c332c3e..0000000
--- a/0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 37cc9fa19bd23edbbdaa9252059b17f191fa4d17 Mon Sep 17 00:00:00 2001
-From: YiYing He <yiying@secondstate.io>
-Date: Wed, 17 Dec 2025 20:27:38 +0800
-Subject: [PATCH] fix(runtime): refine the overflow detection when wrapping
- memory instance
-
-Signed-off-by: YiYing He <yiying@secondstate.io>
----
- include/runtime/instance/memory.h | 24 +++++++++++++++++++-----
- 1 file changed, 19 insertions(+), 5 deletions(-)
-
-diff --git a/include/runtime/instance/memory.h b/include/runtime/instance/memory.h
-index ce511a7b..9d849598 100644
---- a/include/runtime/instance/memory.h
-+++ b/include/runtime/instance/memory.h
-@@ -241,14 +241,28 @@ public:
- return reinterpret_cast<T>(&DataPtr[Offset]);
- }
-
-- /// Get array of object at specific offset of memory.
-+ /// Get array of object with count at specific offset of memory.
- template <typename T>
-- Span<T> getSpan(uint32_t Offset, uint32_t Size) const noexcept {
-- uint32_t ByteSize = static_cast<uint32_t>(sizeof(T) * Size);
-- if (unlikely(!checkAccessBound(Offset, ByteSize))) {
-+ Span<T> getSpan(uint32_t Offset, uint32_t Count) const noexcept {
-+ uint32_t Size;
-+#if defined(_MSC_VER) && !defined(__clang__) // MSVC
-+ // Should extend for memory64 proposal.
-+ uint64_t Num =
-+ static_cast<uint64_t>(sizeof(T)) * static_cast<uint64_t>(Count);
-+ if ((Num >> 32) != 0) {
-+ return Span<T>();
-+ }
-+ Size = static_cast<uint32_t>(Num);
-+#else
-+ if (unlikely(__builtin_mul_overflow(static_cast<uint32_t>(sizeof(T)), Count,
-+ &Size))) {
-+ return Span<T>();
-+ }
-+#endif
-+ if (unlikely(!checkAccessBound(Offset, Size))) {
- return Span<T>();
- }
-- return Span<T>(reinterpret_cast<T *>(&DataPtr[Offset]), Size);
-+ return Span<T>(reinterpret_cast<T *>(&DataPtr[Offset]), Count);
- }
-
- /// Get array of object at specific offset of memory.
---
-2.43.0
-
diff --git a/sources b/sources
index b22ae72..8bce1f5 100644
--- a/sources
+++ b/sources
@@ -1,12 +1 @@
-SHA512 (WasmEdge-0.10.1-src.tar.gz) = 56375a1198e9dd20a66e4baffd2932afbd125e652bb761bf2c4de31be7edfbdc50a6aad5f6cc9b83dc5838841e60d51e7420310d366d6fb860a0c32c97ecc3d3
-SHA512 (WasmEdge-0.11.0-src.tar.gz) = 4baadceca1f522123e1e8e1cb48657e4f39ccda6cc50731c8774bea833947bc6503b787c271498e604555ca261e01b933f27e257d7b0c94c258e371cc0171e66
-SHA512 (WasmEdge-0.11.1-src.tar.gz) = d5bf0d9b906adf0f8b6bb4bb0128b896552ce62b26f6c3ef351308f7f63c1e082acfe8c056b2013957a7a1e24959ce546c40ecb593a0a0d40df03f53e17b4570
-SHA512 (WasmEdge-0.11.2-src.tar.gz) = ebe10f564fdb142075fb39eea3b6e4e784db62d1a2bfdb84158036cb044510c20b77051f1f4279d5d220146a69dc97350da9799a57a06c6aa0b8e00d8714b685
-SHA512 (WasmEdge-0.12.0-src.tar.gz) = 23a87617a9c528f3639a6ccb51a8fce4e7ba4659591559ed7bba5350eb9270cae3adcad19e547c5699d74cbed2c55ad28ab684bbd5e759d782e431e9dd93ff8e
-SHA512 (WasmEdge-0.12.1-src.tar.gz) = c81ddbe9925e8ea144381f3d999f8b19bfcfae91aa63328beeee1f3c5b002ce47157eee28d5323d3a7303806975417856d5ec497d1e60f59312f9dc47756c533
-SHA512 (WasmEdge-0.13.1-src.tar.gz) = 66739e02ffb9669b2545765bcbcf49845afa4e1b9f6d11d011363c11febb0aff4465a774dddd7b513568ff99c80490d76611b74d4d8bd510df7209a73f3abcb0
-SHA512 (WasmEdge-0.13.2-src.tar.gz) = 68038e39487fca9845da77e0ced3af5e36160a0aa458ddd0540d4dbb5d47e0e8f4e12582e9b1c57b371ba13218dcceef6bc44cbd2b76aab7626b0ada963cdba4
-SHA512 (WasmEdge-0.13.3-src.tar.gz) = b8b2e1974fd2ca5bfa0b10311812b69a2a0d2b9864c3d316e3134a08e0a08392cad2b83867e20cd7feeead2afabfa8be19079e690ded7ae9e9bdef41223fd7bd
-SHA512 (WasmEdge-0.13.4-src.tar.gz) = ec9b7d1d5eddeb263e4fd00b11e0cac8e11e73a00db0a53ef01ade13518841823274d5ad85be005a82cf8c58a5bec7a8ad6e54358abe4a784439692afbe43fcf
-SHA512 (WasmEdge-0.13.5-src.tar.gz) = 9d3ece45897d2c9bb3848662fc4ab36c2e0f178450b00f7ea7d183b7162d150d1306e1781b2542463993bab2ec6732def8d63be20ec192b18d93d98c537fb48a
-SHA512 (WasmEdge-0.14.0-src.tar.gz) = fa9ab14f1c477e1909efe88d760a2ab9212687328a885054f0830284bc71d559ab5263eefbbc564d88280b3907d5e3145ffeff87830eb13ad1f3fc4a599e4340
+SHA512 (WasmEdge-0.17.0-src.tar.gz) = 3e0f9739c7cd5af4ad1e54ed009719c8e4d3d4bfc821103bd954f5bc662381278f97078b4d177f4fae599b3a199b55b6e1fd81ce75ab7711921779db2e89d567
diff --git a/wasmedge.spec b/wasmedge.spec
index bbf3131..8817fca 100644
--- a/wasmedge.spec
+++ b/wasmedge.spec
@@ -1,24 +1,18 @@
-%global version 0.14.0
+%global version 0.17.0
%global reponame WasmEdge
%global capi_soname 0
-%global capi_version 0.1.0
+%global capi_version 0.1.1
Name: wasmedge
Version: %{version}
-Release: 4%{?dist}
+Release: 1%{?dist}
Summary: High performance WebAssembly Virtual Machine
# The entire source code is ASL 2.0 except LICENSE.spdx which is CC0
License: ASL 2.0 and CC0
URL: https://github.com/%{reponame}/%{reponame}
Source0: %{url}/releases/download/%{version}/%{reponame}-%{version}-src.tar.gz
-# https://github.com/WasmEdge/WasmEdge/pull/3809
-Patch0: 0001-LLVM-Support-LLVM-19-3809.patch
-# Patch from https://github.com/WasmEdge/WasmEdge/commit/b63e201d46452453ee7c2acf07967cd292d7e3da
-Patch1: 0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch
-# Patch from https://github.com/WasmEdge/WasmEdge/commit/b11791e4312445e3fd2d6c56acc9c2e36e12ef34
-Patch2: 0001-feat-aot-add-support-for-llvm-21-4361.patch
-# Patch from https://github.com/WasmEdge/WasmEdge/commit/37cc9fa19bd23edbbdaa9252059b17f191fa4d17
-Patch3: 0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch
+# Downstream: build against RHEL 9 fmt 8 / spdlog 1.10 (no callback_sink)
+Patch0: 0001-Build-with-fmt-8-and-older-spdlog.patch
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: git
@@ -109,9 +103,27 @@ cd ..
%{_includedir}/%{name}/int128.h
%{_includedir}/%{name}/version.h
%{_includedir}/%{name}/wasmedge.h
+%{_includedir}/%{name}/wasmedge_ast.h
+%{_includedir}/%{name}/wasmedge_basic.h
+%{_includedir}/%{name}/wasmedge_compiler.h
+%{_includedir}/%{name}/wasmedge_configure.h
+%{_includedir}/%{name}/wasmedge_context.h
+%{_includedir}/%{name}/wasmedge_deprecated.h
+%{_includedir}/%{name}/wasmedge_execution.h
+%{_includedir}/%{name}/wasmedge_experimental.h
+%{_includedir}/%{name}/wasmedge_instance.h
+%{_includedir}/%{name}/wasmedge_plugin.h
+%{_includedir}/%{name}/wasmedge_tools.h
+%{_includedir}/%{name}/wasmedge_value.h
+%{_includedir}/%{name}/wasmedge_vm.h
%{_libdir}/lib%{name}.so
%changelog
+* Tue Jun 02 2026 hydai <hydai@hyd.ai> - 0.17.0-1
+- Update to 0.17.0
+- Drop downstream LLVM 19/20/21 and overflow patches (merged upstream)
+- Add downstream patch to build against RHEL 9 fmt 8 / spdlog 1.10
+
* Mon Jan 05 2026 dm4 <dm4@secondstate.io> - 0.14.0-4
- Backport fix for CVE-2025-22921
reply other threads:[~2026-06-02 7:54 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178038687351.1.6727435362024858314.rpms-wasmedge-541592170b74@fedoraproject.org \
--to=hydai@hyd.ai \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox