Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2175 commits
Select commit Hold shift + click to select a range
13211f4
Always reset nonce on RandomX dataset change
SChernykh Aug 14, 2024
9236bda
Duplicate share fix
MoneroOcean Aug 14, 2024
17a52fb
Always reset nonce on RandomX dataset change
SChernykh Aug 14, 2024
56baec7
Merge pull request #3531 from SChernykh/dev
xmrig Aug 14, 2024
20d5556
Fixed threads auto-config on Zen5
SChernykh Aug 16, 2024
01bd0d4
Merge pull request #3534 from SChernykh/dev
xmrig Aug 16, 2024
a411ee3
RandomX: tweaks for Zen5
SChernykh Aug 19, 2024
26f4936
Merge pull request #3535 from SChernykh/dev
xmrig Aug 19, 2024
29f9c8c
Added Zen5 to randomx_boost.sh
SChernykh Aug 28, 2024
e0af8f0
Merge pull request #3539 from SChernykh/dev
xmrig Aug 28, 2024
bc1c835
Detect AMD engineering samples in randomx_boost.sh
SChernykh Aug 29, 2024
e1ae367
Merge pull request #3540 from SChernykh/dev
xmrig Aug 29, 2024
e32731b
Update deps
xmrig Oct 20, 2024
8a4792f
Update hwloc for MSVC.
xmrig Oct 21, 2024
a32f9b5
Fixed --version output on ARM.
xmrig Oct 21, 2024
5cf2422
Update CHANGELOG.md
xmrig Oct 22, 2024
1f75d19
Merge branch 'dev'
xmrig Oct 23, 2024
ee65b3d
v6.22.1
xmrig Oct 23, 2024
21c206f
Merge branch 'master' into dev
xmrig Oct 23, 2024
56c447e
v6.22.2-dev
xmrig Oct 23, 2024
40949f2
Fix: don't use NaN in hashrate calculations
SChernykh Oct 23, 2024
8b03750
Merge pull request #3569 from SChernykh/dev
xmrig Oct 23, 2024
928e16e
Merge xmrig v6.22.1 into master
MoneroOcean Oct 23, 2024
834e9be
Fixed artifact upload
MoneroOcean Oct 23, 2024
542e2ac
Fixed CI
MoneroOcean Oct 23, 2024
2816ef9
Fixed CI
MoneroOcean Oct 23, 2024
b2bb3d7
Fixed CI
MoneroOcean Oct 23, 2024
5b98357
Fixed CI
MoneroOcean Oct 23, 2024
672390c
Fixed CI
MoneroOcean Oct 23, 2024
75c9d6d
Fixed CI
MoneroOcean Oct 23, 2024
0a373fc
Fixed CI
MoneroOcean Oct 23, 2024
73f10e6
Fixed CI
MoneroOcean Oct 23, 2024
ab52533
Fixed CI
MoneroOcean Oct 23, 2024
7e46e7a
Fixed CI
MoneroOcean Oct 23, 2024
227eeae
Fixed CI
MoneroOcean Oct 23, 2024
b749ee9
Fixed CI
MoneroOcean Oct 23, 2024
589024f
Fixed CI
MoneroOcean Oct 23, 2024
49aa71d
Fixed CI
MoneroOcean Oct 23, 2024
d6e95f2
Fixed CI
MoneroOcean Oct 23, 2024
cefcda4
Fixed CI
MoneroOcean Oct 23, 2024
d7fdf54
Fixed CI
MoneroOcean Oct 23, 2024
5e6e3e4
Fixed CI
MoneroOcean Oct 23, 2024
77c14c8
Fix number of threads on the new Intel Core Ultra CPUs
SChernykh Oct 25, 2024
c5d8b82
Merge pull request #3571 from SChernykh/dev
xmrig Oct 25, 2024
4234b20
Update CHANGELOG.md
xmrig Nov 3, 2024
200f23b
Merge branch 'dev'
xmrig Nov 3, 2024
f9e990d
v6.22.2
xmrig Nov 3, 2024
cf86a1e
Merge branch 'master' into dev
xmrig Nov 3, 2024
e8bbd13
v6.22.3-dev
xmrig Nov 3, 2024
5aa20c5
Merge xmrig v6.22.2 into master
MoneroOcean Nov 4, 2024
a81b3cc
Merge fix
MoneroOcean Nov 4, 2024
6d866cb
Merge fix
MoneroOcean Nov 4, 2024
064cd3e
Fixed and simplified OpenCL GPU type detection.
xmrig Nov 8, 2024
cd2fd9d
Simplified getting PCI topology for the OpenCL backend.
xmrig Nov 8, 2024
4a13a8a
CUDA backend: update RandomX dataset when it changes
SChernykh Dec 18, 2024
0229c65
Merge pull request #3605 from SChernykh/dev
xmrig Dec 18, 2024
16ecb8f
Allow use of the previous CUDA plugin version with a warning.
xmrig Dec 23, 2024
6cfc02d
Optimized autoconfig for AMD CPUs with < 2 MB L3 cache per thread
SChernykh Mar 22, 2025
36fdfa2
Merge pull request #3646 from SChernykh/dev
xmrig Mar 22, 2025
d24e13e
Fixed HttpsClient::flush logic
SChernykh Apr 17, 2025
0d9af33
Merge pull request #3652 from SChernykh/dev
xmrig Apr 17, 2025
46572dc
Fix type of `keccak_f800`
ybh1998 May 29, 2025
77009bd
Merge pull request #3662 from ybh1998/keccak_f800
xmrig May 29, 2025
3362349
Allow run `generate_cl.js` from the `scripts` directory.
xmrig May 29, 2025
35b334d
Fixed compile warning.
xmrig May 30, 2025
a32b688
Update CHANGELOG.md
xmrig Jun 3, 2025
f499155
Merge branch 'dev'
xmrig Jun 4, 2025
6184224
v6.22.3
xmrig Jun 4, 2025
e33334f
Merge branch 'master' into dev
xmrig Jun 4, 2025
0c52d78
v6.22.4-dev
xmrig Jun 4, 2025
2599d54
Merge xmrig v6.22.3
MoneroOcean Jun 4, 2025
184d610
Update rapidjson
xmrig Jun 4, 2025
682834b
Universal fix for NaN and Infinity in JSON output
xmrig Jun 6, 2025
a6a0f80
Fix header path.
xmrig Jun 6, 2025
a7dcbb1
Bump minimum CMake version to 3.10
xmrig Jun 8, 2025
9a71190
Update llhttp to 9.3.0
xmrig Jun 8, 2025
d4e57d9
Fix LLHTTP_EXPORT
xmrig Jun 9, 2025
e4c30eb
Tweaked autoconfig for AMD CPUs with < 2 MB L3 cache per thread
SChernykh Jun 11, 2025
2ab7f85
Merge pull request #3665 from SChernykh/dev
xmrig Jun 11, 2025
064a619
Update deps scripts.
xmrig Jun 11, 2025
650d794
Initial Windows ARM64 support via MSYS2.
xmrig Jun 12, 2025
34b4448
Split BasicCpuInfo_arm.
xmrig Jun 12, 2025
57a4998
Fix Linux build.
xmrig Jun 12, 2025
9e7cf69
Detect CPU name and AES instructions on Windows ARM64.
xmrig Jun 13, 2025
faa3d55
Remove deprecated -Ofast for Clang.
xmrig Jun 13, 2025
3ff41f7
Fixed UTF-8 paths support for the config file with Clang compiler on …
xmrig Jun 14, 2025
dba336a
Update hwloc for MSVC.
xmrig Jun 14, 2025
bcc5581
Better detection of aligned malloc functions
SChernykh Jun 14, 2025
a18fa26
Merge pull request #3666 from SChernykh/dev
xmrig Jun 14, 2025
9c7468d
Fixed user agent string.
xmrig Jun 14, 2025
3b863cf
Fixed __umul128 for MSVC ARM64.
xmrig Jun 14, 2025
d58061c
Add detection for _aligned_malloc.
xmrig Jun 15, 2025
9138690
v6.23.0-dev
xmrig Jun 15, 2025
fc395a5
Update ARM CPUs database.
xmrig Jun 16, 2025
5ed8d79
Update CHANGELOG.md
xmrig Jun 16, 2025
f354b85
Merge branch 'dev'
xmrig Jun 16, 2025
e5a7a69
v6.23.0
xmrig Jun 16, 2025
6bbbcc7
Merge branch 'master' into dev
xmrig Jun 16, 2025
9f3591a
v6.23.1-dev
xmrig Jun 16, 2025
3e84e50
Merged xmrig v6.23.0
MoneroOcean Jun 17, 2025
0d17cad
Updated Windows version
MoneroOcean Jun 17, 2025
ebb7d1c
Updated Windows version
MoneroOcean Jun 17, 2025
e240dc7
Updated build
MoneroOcean Jun 17, 2025
85ff717
Updated build
MoneroOcean Jun 17, 2025
1b14707
Updated build
MoneroOcean Jun 17, 2025
3f821b3
Updated build
MoneroOcean Jun 17, 2025
8966a11
Updated build
MoneroOcean Jun 17, 2025
2d4ab4c
Updated build
MoneroOcean Jun 17, 2025
c37f284
Updated build
MoneroOcean Jun 17, 2025
05ffca7
Updated build
MoneroOcean Jun 17, 2025
60895cc
Updated build
MoneroOcean Jun 17, 2025
c13d0d7
Updated build
MoneroOcean Jun 17, 2025
9716f6e
Updated build
MoneroOcean Jun 17, 2025
b373f48
Updated build
MoneroOcean Jun 17, 2025
b26c36c
Updated build
MoneroOcean Jun 17, 2025
383ae92
Merged xmrig v6.23.0
MoneroOcean Jun 17, 2025
ecadfc4
Merged xmrig v6.23.0
MoneroOcean Jun 17, 2025
1f8562f
Merged xmrig v6.23.0
MoneroOcean Jun 17, 2025
5d4e5e4
Merged xmrig v6.23.0
MoneroOcean Jun 17, 2025
b1035eb
Merged xmrig v6.23.0
MoneroOcean Jun 17, 2025
d125d22
Hwloc: fixed detection of L2 cache size for some complex NUMA topologies
SChernykh Jun 17, 2025
48faf0a
Merge pull request #3671 from SChernykh/dev
xmrig Jun 17, 2025
762c435
cflags: Add lax-vector-conversions on ARMv7
benthetechguy Jun 18, 2025
bf44ed5
Merge pull request #3674 from benthetechguy/armhf
xmrig Jun 18, 2025
aba1ad8
Tweaked autoconfig for AMD CPUs with < 2 MB L3 cache per thread, agai…
SChernykh Jun 19, 2025
e28d663
Merge pull request #3677 from SChernykh/dev
xmrig Jun 19, 2025
ec286c7
Improved IPv6 support.
xmrig Jun 20, 2025
9fa66d3
Merge pull request #3678 from xmrig/dns_ip_version
xmrig Jun 20, 2025
545aef0
v6.24.0-dev
xmrig Jun 20, 2025
6a690ba
More DNS cleanup.
xmrig Jun 20, 2025
c69e30c
Update CHANGELOG.md
xmrig Jun 22, 2025
273133a
Merge branch 'dev'
xmrig Jun 23, 2025
6e4a5a6
v6.24.0
xmrig Jun 23, 2025
1676da1
Merge branch 'master' into dev
xmrig Jun 23, 2025
d2363ba
v6.24.1-dev
xmrig Jun 23, 2025
c83a2f6
Merged xmrig v6.24.0
MoneroOcean Jun 23, 2025
1161f23
Add armv8l to list of 32 bit ARM targets
benthetechguy Jun 24, 2025
2619131
Merge pull request #3680 from benthetechguy/armhf
xmrig Jun 24, 2025
a1ee2fd
Improved LibreSSL support.
xmrig Jun 29, 2025
dd6671b
Merge branch 'dev' of github.com:xmrig/xmrig into dev
xmrig Jun 29, 2025
93f5067
minor Aarch64 JIT changes (better instruction selection, don't emit i…
xtophyr Sep 17, 2025
eeec5ec
undo this change
xtophyr Sep 20, 2025
7abf17c
adjust instruction/register suffixes to compile with gcc-based assemb…
xtophyr Sep 21, 2025
878e83b
Merge branch 'master' of https://github.com/xtophyr/xmrig into xtophy…
xmrig Sep 22, 2025
255565b
Merge branch 'xtophyr-master' into dev
xmrig Sep 22, 2025
da683d8
Solo mining: added support for FCMP++ hardfork
SChernykh Oct 5, 2025
20acfd0
Merge pull request #3718 from SChernykh/dev
xmrig Oct 5, 2025
a659397
Fix: correct FCMP++ version number
SChernykh Oct 5, 2025
6cc4819
Merge pull request #3719 from SChernykh/dev
xmrig Oct 5, 2025
da5a567
Added Zen4 (Hawk Point) CPUs detection
SChernykh Oct 15, 2025
116ba18
Merge pull request #3722 from SChernykh/dev
xmrig Oct 15, 2025
643b65f
RISC-V Intergration
Slayingripper Oct 22, 2025
75b63dd
RISC-V JIT compiler
SChernykh Oct 22, 2025
985fe06
RISC-V: test for instruction extensions
SChernykh Oct 22, 2025
27c8e60
Removed unused files
SChernykh Oct 22, 2025
3ecacf0
Merge pull request #3725 from SChernykh/dev
xmrig Oct 23, 2025
ea83289
Fixed macOS build.
xmrig Oct 23, 2025
a44b21c
Cleanup
xmrig Oct 27, 2025
b02519b
feat: initial support for haiku
Nov 4, 2025
4cdc35f
Merge pull request #3731 from user0-07161/dev-haiku-os-support
xmrig Nov 5, 2025
5115597
Improved compatibility for automatically enabling huge pages on Linux…
xmrig Nov 6, 2025
e88009d
add detection for MSVC/2026
void-512 Nov 12, 2025
db5c6d9
Merge pull request #3733 from void-512/master
xmrig Nov 13, 2025
7ef5142
RISC-V: added vectorized dataset init (activated by setting `init-avx…
SChernykh Nov 30, 2025
7981e4a
Merge pull request #3736 from SChernykh/dev
xmrig Dec 1, 2025
23da1a9
RISC-V: added vectorized soft AES
SChernykh Dec 5, 2025
856813c
Merge pull request #3740 from SChernykh/dev
xmrig Dec 6, 2025
482a1f0
Linux: added support for transparent huge pages
SChernykh Dec 11, 2025
e0564b5
Merge pull request #3743 from SChernykh/dev
xmrig Dec 11, 2025
290a0de
v6.25.0-dev
xmrig Dec 23, 2025
712a5a5
Merge branch 'dev'
xmrig Dec 23, 2025
753859c
v6.25.0
xmrig Dec 23, 2025
5fb0321
Merge branch 'master' into dev
xmrig Dec 23, 2025
9948875
v6.25.1-dev
xmrig Dec 23, 2025
f661e1e
RISC-V: vectorized RandomX main loop
SChernykh Dec 26, 2025
e3d0135
Merge pull request #3746 from SChernykh/dev
xmrig Dec 27, 2025
e1efd3d
RISC-V: auto-detect and use vector code for all RandomX AES functions
SChernykh Dec 27, 2025
eb49237
Merge pull request #3748 from SChernykh/dev
xmrig Dec 28, 2025
d3a84c4
RISC-V: detect and use hardware AES
SChernykh Dec 29, 2025
30ffb9c
Merge pull request #3749 from SChernykh/dev
xmrig Dec 30, 2025
8ccf7de
RISC-V: use vector hardware AES instead of scalar
SChernykh Dec 31, 2025
1bd5912
Merge pull request #3750 from SChernykh/dev
xmrig Jan 1, 2026
eada630
Merge xmrig v6.25.0
MoneroOcean Jan 6, 2026
fad57ae
Merge xmrig v6.25.0
MoneroOcean Jan 6, 2026
e41b28e
Improved RISC-V code
SChernykh Jan 15, 2026
9e5492e
Merge pull request #3757 from SChernykh/dev
xmrig Jan 15, 2026
ed80a8a
RandomX: added VAES-512 support for Zen5
SChernykh Jan 16, 2026
f4845cb
Merge pull request #3758 from SChernykh/dev
xmrig Jan 16, 2026
45d0a15
Optimized VAES code
SChernykh Jan 16, 2026
f35f9d7
Merge pull request #3759 from SChernykh/dev
xmrig Jan 17, 2026
6e6eab1
Fix keepalive timer logic
HashVault Jan 20, 2026
cb75115
fix: cross typos detail below:
oxyzenQ Jan 21, 2026
5feb764
Merge branch 'fix-keepalive-timer' of https://github.com/HashVault/vl…
xmrig Jan 21, 2026
1a04bf2
Merge branch 'pr3762' into dev
xmrig Jan 21, 2026
5ca4828
feat: stability improvements, see detail below
oxyzenQ Jan 21, 2026
c1e3d38
Merge branch 'master' of https://github.com/oxyzenQ/xmrig into pr3764
xmrig Jan 21, 2026
0d9a372
Merge branch 'pr3764' into dev
xmrig Jan 21, 2026
db24bf5
Revert "Merge branch 'pr3764' into dev"
xmrig Jan 21, 2026
67cc6cf
fix: cross typos detail below:
oxyzenQ Jan 21, 2026
5a80c65
Merge pull request #3765 from oxyzenQ/dev-typos
xmrig Jan 22, 2026
9d71358
RandomX v2 + commitments
SChernykh Jan 29, 2026
f16a06e
Merge pull request #3769 from SChernykh/dev
xmrig Jan 30, 2026
cb60019
RandomX v2 (ARM64)
SChernykh Jan 31, 2026
a189d84
Merge pull request #3772 from SChernykh/dev
xmrig Jan 31, 2026
d82d7f3
RandomX v2 (RISC-V)
SChernykh Jan 31, 2026
c2c8080
Merge pull request #3774 from SChernykh/dev
xmrig Feb 1, 2026
42c943c
RandomX v2: added `commitment` field to stratum submit message
SChernykh Feb 1, 2026
316a367
Merge pull request #3775 from SChernykh/dev
xmrig Feb 1, 2026
05dd6dc
Sync changes with xmrig-proxy
SChernykh Feb 2, 2026
d9b39e8
Merge pull request #3776 from SChernykh/dev
xmrig Feb 2, 2026
26ee1cd
ARM64 fixes
SChernykh Feb 3, 2026
8464d47
Merge pull request #3778 from SChernykh/dev
xmrig Feb 4, 2026
6454a0a
Removed unused -P command line option.
xmrig Feb 9, 2026
48b29fd
RandomX v2: don't update dataset when switching to/from it
SChernykh Feb 13, 2026
17aa97e
Merge pull request #3782 from SChernykh/dev
xmrig Feb 15, 2026
976a08e
Fixed initial dataset prefetch for RandomX v2
SChernykh Feb 15, 2026
a935641
Merge pull request #3783 from SChernykh/dev
xmrig Feb 15, 2026
14dcd36
Fix OpenCL address-space mismatch in keccak_f800_round
Willie169 Feb 26, 2026
d7f7094
Apply uint32_t st[25] in keccak_f800
Willie169 Feb 26, 2026
c534c66
Merge pull request #3784 from Willie169/master
xmrig Feb 27, 2026
8b33d24
Don't reset nonce during donation rounds (possible fix for #3669)
SChernykh Feb 27, 2026
3b4e38b
Merge pull request #3785 from SChernykh/dev
xmrig Feb 27, 2026
9d296c7
Fixed clang arm64 builds
SChernykh Mar 3, 2026
27d535d
Merge pull request #3789 from SChernykh/dev
xmrig Mar 3, 2026
84352c7
Fix arm64 builds (attempt number 2)
SChernykh Mar 3, 2026
806cfc3
Merge pull request #3790 from SChernykh/dev
xmrig Mar 3, 2026
4f58a7a
v6.26.0-dev
xmrig Mar 25, 2026
92705f2
Merge branch 'dev'
xmrig Mar 28, 2026
b2ca724
v6.26.0
xmrig Mar 28, 2026
5beba46
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
7565729
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
52dd76a
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
75602a3
Revert "Merge xmrig v6.26.0"
MoneroOcean Mar 29, 2026
d2ef4e3
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
a1251e7
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
724be46
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
46ef84f
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
cbf79e6
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
3632933
Revert "Merge xmrig v6.26.0"
MoneroOcean Mar 29, 2026
57282be
Revert "Merge xmrig v6.26.0"
MoneroOcean Mar 29, 2026
bcdd0d6
Revert "Merge xmrig v6.26.0"
MoneroOcean Mar 29, 2026
23e3592
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
e10dd6a
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
e4cd13c
Merge xmrig v6.26.0
MoneroOcean Mar 29, 2026
4721129
Panthera algo fix
MoneroOcean Apr 8, 2026
3f4a732
Restore upstream XMRig v6.26.0
MoneroOcean May 7, 2026
6b37976
Reapply MoneroOcean integration hooks
MoneroOcean May 7, 2026
6ef8295
Regenerate OpenCL embedded kernel sources
MoneroOcean May 7, 2026
a0438ea
Release v6.26.0-mo3
MoneroOcean May 8, 2026
4e5366b
Unify release artifact names
MoneroOcean May 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[codespell]
skip = ./src/3rdparty,./src/crypto/ghostrider,./src/crypto/randomx/blake2,./src/crypto/cn/sse2neon.h,./src/backend/opencl/cl/cn/groestl256.cl,./src/backend/opencl/cl/cn/jh.cl
ignore-words-list = Carmel,vor
28 changes: 28 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: Bug report
about: Report a reproducible miner or algorithm issue
title: '[Bug] '
labels: bug
assignees: ''
---

**Describe the bug**
What happened, and which algorithm/backend was active when it happened?

**To Reproduce**
Steps to reproduce the behavior, including the pool/job mode if relevant.

**Expected behavior**
What did you expect to happen instead?

**Required data**
- MoneroOcean XMRig version or commit hash.
- Exact command lines used to build XMRig, if built from source.
- Miner log as text, including startup CPU/GPU feature detection and the failing job.
- Config file or command line, with wallet addresses, tokens, and secrets redacted.
- OS and architecture, for example `Ubuntu 24.04 x86_64` or `Windows 11 arm64`.
- CPU model and enabled CPU features, if this is a CPU mining issue.
- GPU model, driver version, and backend (`OpenCL` or `CUDA`), if this is a GPU issue.

**Additional context**
Add any other context, recent config changes, or the last known working commit.
349 changes: 349 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,349 @@
name: Create release and build artifacts

on:
push:
tags:
- 'v*'

permissions:
contents: write

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false

env:
VERSION: ${{ github.ref_name }}

jobs:
windows:
name: Build Windows artifacts
runs-on: windows-2025-vs2026
timeout-minutes: 75

defaults:
run:
shell: msys2 {0}

steps:
- name: Checkout code
uses: actions/checkout@v5

- name: Setup MSYS2 UCRT64
uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
update: true
cache: true
install: >-
base-devel
git
mingw-w64-ucrt-x86_64-7zip
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-ninja
mingw-w64-ucrt-x86_64-nodejs

- name: Checkout XMRig deps
run: git clone --depth 1 https://github.com/xmrig/xmrig-deps.git

- name: Configure
run: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DXMRIG_DEPS="$PWD/xmrig-deps/gcc/x64"

- name: Build
run: cmake --build build --parallel 2

- name: Run safe test subset
run: BUILD_PARALLEL=2 node run_tests.js --safe --build-dir build --cmake-generator Ninja

- name: Package
run: |
mkdir -p package
cp build/xmrig.exe package/
cp src/config.json package/
cp bin/WinRing0/WinRing0x64.sys package/
(cd package && 7z a -tzip -mx=9 "../xmrig-${VERSION}-win.zip" xmrig.exe config.json WinRing0x64.sys)

- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: win
path: xmrig-${{ env.VERSION }}-win.zip
retention-days: 7
if-no-files-found: error

ubuntu:
name: Build Ubuntu artifacts
runs-on: ubuntu-24.04
timeout-minutes: 60

steps:
- name: Checkout code
uses: actions/checkout@v5

- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
libhwloc-dev \
libssl-dev \
libuv1-dev

- name: Configure
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release

- name: Build
run: cmake --build build --parallel "$(nproc)"

- name: Run safe test subset
run: node run_tests.js --safe --build-dir build

# Full local suite: node run_tests.js

- name: Package
run: |
mkdir -p package
cp build/xmrig package/
cp src/config.json package/
tar -C package -czf "xmrig-${VERSION}-lin.tar.gz" xmrig config.json

- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: lin
path: xmrig-${{ env.VERSION }}-lin.tar.gz
retention-days: 7
if-no-files-found: error

macos:
name: Build macOS ${{ matrix.suffix }} artifacts
runs-on: ${{ matrix.runner }}
timeout-minutes: 90

strategy:
fail-fast: false
matrix:
include:
- runner: macos-15
suffix: mac
uname: arm64
- runner: macos-15-intel
suffix: mac-intel
uname: x86_64

steps:
- name: Checkout code
uses: actions/checkout@v5

- name: Verify runner architecture
run: test "$(uname -m)" = "${{ matrix.uname }}"

- name: Install build dependencies
run: |
missing=()
for formula in autoconf automake cmake libtool libuv openssl@3; do
brew list --formula "$formula" >/dev/null 2>&1 || missing+=("$formula")
done
if ((${#missing[@]})); then
brew install "${missing[@]}"
fi

- name: Build static hwloc
run: |
HWLOC_VERSION=2.12.1
curl -fsSLO "https://download.open-mpi.org/release/hwloc/v2.12/hwloc-${HWLOC_VERSION}.tar.gz"
tar xzf "hwloc-${HWLOC_VERSION}.tar.gz"
cd "hwloc-${HWLOC_VERSION}"
./configure --disable-shared --enable-static --disable-io --disable-libudev --disable-libxml2
make -j"$(sysctl -n hw.logicalcpu)"

- name: Configure
run: |
OPENSSL_ROOT="$(brew --prefix openssl@3)"
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DOPENSSL_ROOT_DIR="$OPENSSL_ROOT" \
-DHWLOC_INCLUDE_DIR="$PWD/hwloc-2.12.1/include" \
-DHWLOC_LIBRARY="$PWD/hwloc-2.12.1/hwloc/.libs/libhwloc.a"

- name: Build
run: cmake --build build --parallel "$(sysctl -n hw.logicalcpu)"

- name: Run safe test subset
run: node run_tests.js --safe --build-dir build

# Full local suite: node run_tests.js

- name: Package
run: |
mkdir -p package
cp build/xmrig package/
cp src/config.json package/
tar -C package -czf "xmrig-${VERSION}-${{ matrix.suffix }}.tar.gz" xmrig config.json

- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: ${{ matrix.suffix }}
path: xmrig-${{ env.VERSION }}-${{ matrix.suffix }}.tar.gz
retention-days: 7
if-no-files-found: error

ubuntu-compat:
name: Build glibc 2.12 compatible artifacts
runs-on: ubuntu-24.04
timeout-minutes: 180

steps:
- name: Checkout code
uses: actions/checkout@v5

- name: Prepare source archive
run: tar --exclude=.git -czf /tmp/xmrig-source.tar.gz .

- name: Run build inside manylinux2010
run: |
mkdir -p /tmp/xmrig-docker
cp /tmp/xmrig-source.tar.gz /tmp/xmrig-docker/source.tar.gz
cat >/tmp/xmrig-docker/build.sh <<'EOF'
set -eux

export PATH="/opt/rh/devtoolset-8/root/usr/bin:${PATH}"
export CC=gcc
export CXX=g++
JOBS="$(nproc)"

gcc --version
g++ --version
ldd --version | head -n 1
if ! command -v wget >/dev/null 2>&1; then
cat >/usr/local/bin/wget <<'EOS'
#!/bin/sh
if [ "$2" = "-O" ] && [ -n "$3" ]; then
exec curl -fsSL "$1" -o "$3"
fi
exec curl -fsSLO "$1"
EOS
chmod +x /usr/local/bin/wget
fi

curl -fsSL https://cmake.org/files/v3.16/cmake-3.16.9.tar.gz | tar -xzC /tmp
(cd /tmp/cmake-3.16.9 && ./bootstrap --parallel="${JOBS}" -- -DCMAKE_USE_OPENSSL=OFF && make -j"${JOBS}" && make install)

mkdir -p /tmp/xmrig
tar -xzf /tmp/xmrig-docker/source.tar.gz -C /tmp/xmrig
cd /tmp/xmrig
(cd scripts && ./build.uv.sh && ./build.hwloc1.sh && ./build.openssl.sh)
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DXMRIG_DEPS=scripts/deps
cmake --build build --parallel "${JOBS}"
cmake -S tests/hash -B build/hash-tests -DCMAKE_BUILD_TYPE=Release
cmake --build build/hash-tests --target hash-tests --parallel "${JOBS}"
cmake --build build/hash-tests --target check-hashes --parallel "${JOBS}"

if readelf --version-info build/xmrig | grep -E 'Name: GLIBC_2\.(1[3-9]|[2-9][0-9])'; then
echo "compat binary requires a newer glibc than 2.12"
exit 1
fi

if readelf --version-info build/xmrig | grep -E 'Name: (GLIBCXX_|CXXABI_)'; then
echo "compat binary must not depend on dynamic libstdc++"
exit 1
fi

mkdir -p /tmp/package
cp build/xmrig /tmp/package/
cp src/config.json /tmp/package/
cp build/xmrig /tmp/xmrig-docker/xmrig-compat
cp build/hash-tests/hash-tests /tmp/xmrig-docker/hash-tests-compat
tar -C /tmp/package -czf "/tmp/xmrig-docker/xmrig-${VERSION}-lin-compat.tar.gz" xmrig config.json
EOF
chmod +x /tmp/xmrig-docker/build.sh
docker run --rm \
-e VERSION="${VERSION}" \
-v /tmp/xmrig-docker:/tmp/xmrig-docker \
quay.io/pypa/manylinux2010_x86_64 \
/bin/bash /tmp/xmrig-docker/build.sh

- name: Run compat artifact test suite
run: node run_tests.js --safe --skip-build --hash-binary /tmp/xmrig-docker/hash-tests-compat --binary /tmp/xmrig-docker/xmrig-compat

- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: lin-compat
path: /tmp/xmrig-docker/xmrig-${{ env.VERSION }}-lin-compat.tar.gz
retention-days: 7
if-no-files-found: error

release:
name: Create release and publish artifacts
runs-on: ubuntu-24.04
needs:
- windows
- ubuntu
- macos
- ubuntu-compat

steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true

- name: Create release
uses: softprops/action-gh-release@v2
with:
files: dist/*
fail_on_unmatched_files: true

- name: Install packaging tools
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends unzip zip

- name: Update xmrig_setup repo
env:
SETUP_TOKEN: ${{ secrets.xmrig_setup_key }}
run: |
if [ -z "${SETUP_TOKEN}" ]; then
echo "xmrig_setup_key is not configured; skipping xmrig_setup update."
exit 0
fi

git clone "https://x-access-token:${SETUP_TOKEN}@github.com/MoneroOcean/xmrig_setup.git"
cd xmrig_setup
git config user.name MoneroOcean
git config user.email support@moneroocean.stream
cp "../dist/xmrig-${VERSION}-lin-compat.tar.gz" xmrig.tar.gz
cp "../dist/xmrig-${VERSION}-win.zip" xmrig.zip
unzip -o xmrig.zip
zip -u offline_miner_setup.zip xmrig.exe config.json WinRing0x64.sys
git add xmrig.tar.gz xmrig.zip offline_miner_setup.zip
git commit -m "xmrig ${VERSION} based release" || exit 0
git push

- name: Update hiveos repo
env:
SETUP_TOKEN: ${{ secrets.xmrig_setup_key }}
run: |
if [ -z "${SETUP_TOKEN}" ]; then
echo "xmrig_setup_key is not configured; skipping hiveos update."
exit 0
fi

git clone "https://x-access-token:${SETUP_TOKEN}@github.com/MoneroOcean/hiveos.git"
cd hiveos
git config user.name MoneroOcean
git config user.email support@moneroocean.stream
tar xf "../dist/xmrig-${VERSION}-lin-compat.tar.gz"
mv xmrig mo_xmrig/xmrig
mv config.json mo_xmrig/config_global.json
VER="${VERSION//-/_}"
tar -zcvf "mo_xmrig-${VER}.tar.gz" mo_xmrig
git add "mo_xmrig-${VER}.tar.gz" mo_xmrig/xmrig mo_xmrig/config_global.json
git commit -m "xmrig ${VERSION} based release" || exit 0
git push
Loading