Releases: redpanda-cpp/mingw-lite
next-17-20260517-r0
bump gcc to 17-20260517, 16-20260516
current-16-20260516-r0
bump gcc to 17-20260517, 16-20260516
16.1.0-r0
TL;DR
For most cases, you can use mingw64-ucrt-16.1.0-r0.tar.zst or .7z.
To enable shared runtime libraries, copy $prefix/lib/shared/* or $prefix/lib/shared-unstable/* to $prefix/.
To build apps for Windows 11, which forces x86-64-v2 micro architecture level, you can use mingw64_v2-ucrt-16.1.0-r0.tar.zst or .7z for better performance.
Archives
mingw<profile>-<version>.tar.zst,.7z: native compiler.- These are what you need.
x-mingw<profile>-<version>.tar.zst: cross compiler.- Running on Ubuntu 20.04 x86-64.
- For internal use and downstream integration.
xmake-mingw<profile>-<version>.7z: Xmake.- Upstream releases recommended for Windows NT ≥ 6.0.
Profiles
Main profiles:
| Profile | Arch | CRT | Thread | Exception | Min. OS |
|---|---|---|---|---|---|
| 64-mcf | x86-64 | ucrt | mcf | seh | NT 6.1 (7) |
| 64-win32 | x86-64 | ucrt | win32 | seh | NT 6.0 (Vista) |
| 64-ucrt | x86-64 | ucrt | posix | seh | NT 5.2 (2003) |
| 64-msvcrt | x86-64 | msvcrt | posix | seh | NT 5.2 (2003) |
| 32-mcf | pentium4 | ucrt | mcf | dwarf | NT 6.1 (7) |
| 32-win32 | pentium4 | ucrt | win32 | dwarf | NT 6.0 (Vista) |
| 32-ucrt | pentium4 | ucrt | posix | dwarf | NT 5.1 (XP) |
| 32-msvcrt | pentium4 | msvcrt | posix | dwarf | NT 5.1 (XP) |
Profile variants for better performance:
| Profile variant | Arch | CRT | Thread | Exception | Min. OS |
|---|---|---|---|---|---|
| 64_v2-mcf | x86-64-v2 | ucrt | mcf | seh | NT 6.1 (7) |
| 64_v2-win32 | x86-64-v2 | ucrt | win32 | seh | NT 6.0 (Vista) |
| 64_v2-ucrt | x86-64-v2 | ucrt | posix | seh | NT 5.2 (2003) |
| 64_v2-msvcrt | x86-64-v2 | msvcrt | posix | seh | NT 5.2 (2003) |
Profile variant for earlier Windows versions:
| Profile variant | Arch | CRT | Thread | Exception | Min. OS |
|---|---|---|---|---|---|
| 32_686-msvcrt_win98 | i686 | msvcrt | posix | dwarf | NT 4.0, 4.10 (98) |
| 32_486-msvcrt_win98 | i486 | msvcrt | posix | dwarf | NT 4.0, 4.10 (98) |
Component Versions
- Binutils: 2.46.0
- GCC: 16.1.0
- GDB: 17.1
- GNU Make: 4.4.1
- MCF Gthread: 2.3-ga.1
- MinGW-w64: 14.0.0
- pkgconf: 2.5.1
Changes Compared with 15.x
BREAKING changes:
- A new mechanism is introduced to enable UTF-8 on all Windows versions.
- Technical detail: replacing Win32 and CRT
-AAPIs with thunks that do UTF-8 ↔ UTF-16 conversion and call-WAPIs. - The tools are UTF-8, without UTF-8 manifest injection!
- IDE integration: if a tool’s import table contains one of the following functions, it’s UTF-8.
kernel32!GetCommandLineW,msvcrt!__wgetmainargs,api-ms-win-crt-runtime-l1-1-0!_configure_wide_argv.
- Technical detail: replacing Win32 and CRT
- GCC now use Windows native TLS.
- Win32 and CRT import library now in mixed format: long format for aliases, short format for other symbols.
- Reduce overall size by ~90 MiB.
- The linker produce modules that have 2 entries for some dll in their import directory table. These modules work well on all Windows version. But if you are parsing their import table, you need to take care of this.
Other changes
- Profile 32-msvcrt_win2000 is removed.
- All profiles are not optimized for speed (-O2).
16.1.0-RC-20260424-r0
BREAKING Changes Compared with 15.x
- A new mechanism is introduced to enable UTF-8 on all Windows versions.
- Technical detail: replacing Win32 and CRT
-AAPIs with thunks that do UTF-8 ↔ UTF-16 conversion and call-WAPIs. - The tools are UTF-8, without UTF-8 manifest injection!
- IDE integration: if a tool’s import table contains one of the following functions, it’s UTF-8.
kernel32!GetCommandLineW,msvcrt!__wgetmainargs,api-ms-win-crt-runtime-l1-1-0!_configure_wide_argv.
- Technical detail: replacing Win32 and CRT
- GCC now use Windows native TLS.
15.2.0-r8
TL;DR
For most cases, you can use mingw64-ucrt-15.2.0-r8.tar.zst or .7z.
To enable shared runtime libraries, copy $prefix/lib/shared/* or $prefix/lib/shared-unstable/* to $prefix/.
To build apps for Windows 11, which forces x86-64-v2 micro architecture level, you can use mingw64_v2-ucrt-15.2.0-r8.tar.zst or .7z for better performance.
Archives
mingw<profile>-<version>.tar.zst,.7z: native compiler.- These are what you need.
x-mingw<profile>-<version>.tar.zst: cross compiler.- Running on Ubuntu 20.04 x86-64.
- For internal use and downstream integration.
xmake-mingw<profile>-<version>.7z: Xmake.- Upstream releases recommended for Windows NT ≥ 6.0.
Profiles
Main profiles:
| Profile | Arch | CRT | Thread | Exception | Min. OS |
|---|---|---|---|---|---|
| 64-mcf | x86-64 | ucrt | mcf | seh | NT 6.1 (7) |
| 64-win32 | x86-64 | ucrt | win32 | seh | NT 6.0 (Vista) |
| 64-ucrt | x86-64 | ucrt | posix | seh | NT 5.2 (2003) |
| 64-msvcrt | x86-64 | msvcrt | posix | seh | NT 5.2 (2003) |
| 32-mcf | pentium4 | ucrt | mcf | dwarf | NT 6.1 (7) |
| 32-win32 | pentium4 | ucrt | win32 | dwarf | NT 6.0 (Vista) |
| 32-ucrt | pentium4 | ucrt | posix | dwarf | NT 5.1 (XP) |
| 32-msvcrt | pentium4 | msvcrt | posix | dwarf | NT 5.1 (XP) |
Profile variants for better performance:
| Profile variant | Arch | CRT | Thread | Exception | Min. OS |
|---|---|---|---|---|---|
| 64_v2-mcf | x86-64-v2 | ucrt | mcf | seh | NT 6.1 (7) |
| 64_v2-win32 | x86-64-v2 | ucrt | win32 | seh | NT 6.0 (Vista) |
| 64_v2-ucrt | x86-64-v2 | ucrt | posix | seh | NT 5.2 (2003) |
| 64_v2-msvcrt | x86-64-v2 | msvcrt | posix | seh | NT 5.2 (2003) |
Profile variant for earlier Windows versions:
| Profile variant | Arch | CRT | Thread | Exception | Min. OS |
|---|---|---|---|---|---|
| 32-msvcrt_win2000 (deprecated) | pentium4 | msvcrt | posix | dwarf | NT 5.0 (2000) |
| 32_686-msvcrt_win98 | i686 | msvcrt | posix | dwarf | NT 4.0, 4.10 (98) |
| 32_486-msvcrt_win98 | i486 | msvcrt | posix | dwarf | NT 4.0, 4.10 (98) |
Component Versions
- Binutils: 2.45.1
- GCC: 15.2.0
- GDB: 17.1
- GNU Make: 4.4.1
- MCF Gthread: 2.1-ga.1
- MinGW-w64: 13.0.0
- pkgconf: 2.5.1
Changes Since 15.1.0-r0
15.2.0-r8
Older branches: 14.3.0-r7, 13.4.0-r7.
BREAKING changes:
- C++ standard library module (
import std) is no longer tested on older Windows versions.- Because the semi-automated test archives now contain non-ASCII paths for our UTF-8 migration in branch 16+.
Other changes:
- Fix GDB remote connection failure caused by gdbserver name resolution latency on Windows without IPv6 support (≤ 2000).
- Workaround for older releases:
set remotetimeout 5(in gdb).
- Workaround for older releases:
- Cross compiler package now contains target libraries.
- See README.md for usage.
- Shared runtime libraries are enabled on all profiles.
- But marked “unstable” for profiles that target Windows NT < 5.1. NEVER MIX shared runtime libraries from different releases of those profiles.
- Cross compiler is now built on Ubuntu 20.04, downgraded from 24.04.
- Fix include directive encoding.
- Now you can
#include "你好.h"on Windows 7. - And even crazier,
#include __FILE__.
- Now you can
15.2.0-r7
- Fix GDB 17.1 regression in
skip gfile.
15.2.0-r6
Older branches: 14.3.0-r6, 13.4.0-r6.
- Upgrade GDB to 17.1.
- Fix the build logic that causes GCC still links static libgcc when shared libraries exist.
- Fix GCC’s tooldir for finding Binutils.
- Previously, invoking GCC without prepending it to PATH would fail (cannot find Binutils); or even worse, “succeeded” with wrong Binutils (from other toolchain in PATH).
15.2.0-r5
Older branches: 14.3.0-r5, 13.4.0-r5.
BREAKING changes:
- The
__FILE__macro is now expanded to UTF-8 encoded string.- This fixes
__FILE__with-fexec-charset=<whatever>. - This MAY break plain
printf("%s", __FILE__)without specifying execution charset, which accidentally works without UTF-8 manifest support (i.e. Windows 7).
- This fixes
- The UTF-8 manifest is now conforming.
- It is compatible with all Windows versions, and thus is applied to all profiles.
- This MAY break IDEs that determine the encoding by inspecting the manifest.
Other changes:
- Restore Windows 9x support.
- Profile variants
*_winnt40are now migrated to*_win98.
- Profile variants
- Upgrade Binutils to 2.45.1.
- Workaround GDB step over failure in
ostream::operator<<by disabling tail call optimization in affected functions. - Add shared runtime libraries (to profiles that target Windows NT ≥ 5.1).
- The toolchains are kept static by default.
- To enable shared runtime libraries, copy
$prefix/lib/shared/*to$prefix/.
- Workaround CRT bugs in “double translation” that causes sanity-draining console output (e.g. “版本” → “苞纡柄菌”).
- With the fix of UTF-8 manifest conformance, the main profiles are now extended to support Windows NT 5.2 (2003) and 5.1 (XP).
- The profile variant
32-msvcrt_win2000is now deprecated. It will be kept in current release branches (15, 14, 13) until EOL, and instantly removed in branch 16.
- The profile variant
15.2.0-r4
Older branches: 14.3.0-r4, 13.4.0-r4.
- Fix GDB XML support.
- Fix gdbserver listening port display on Windows 2000 or earlier.
- Fix Binutils error when loading bfd plugins.
- Fix duplicated files when extracting zstd-compressed tarball with 7z.
15.2.0-r3
Older branches: 14.3.0-r3, 13.4.0-r3.
- Make pkgconf default to static link.
15.2.0-r2
Older branches: 14.3.0-r2, 13.4.0-r2.
- Add pkgconf (for upcoming library packages).
15.2.0-r1
Older branches: 14.3.0-r1, 13.4.0-r1.
- Enable OpenMP.
15.2.0-r0
Older branches: 14.3.0-r0, 13.4.0-r0.
- Upgrade GCC to 15.2.0.
- Upgrade Binutils to 2.45.
- Enable Fortran support in cross compiler.
- Reorganize micro architecture.
- “mingw64_v2” profiles added with
-march=x86-64-v2(sse4.2, 2008) and-O2(instead of-Os). - “mingw32” profiles now built with
-march=pentium4(sse2, 2000) and-mfpmath=sse. - “mingw32_686” and “mingw32_486” profiles added with
-march=i686(cmov, 1995) and-march=i486(atomic, 1989) respectively (legacy OS only).
- “mingw64_v2” profiles added with
15.1.0-r3
- Fix libintl auto-detection failure in Binutils and GNU Make.
- Upgrade MinGW-w64 to 13.0.0.
15.1.0-r2
- Restore Windows NT 4.0 support.
- Fix libintl cache invalidation bug.
- Xmake is now moved to a separate package.
15.1.0-r1
- Upgrade MCF Gthread to 2.1-ga.1.
- Rewrite libintl for Windows to enable NLS for Binutils and GNU Make.
- The cross compiler is now organized by package.
- 7z archives are added back.
- The UTF-8 manifest is added to all executables (that target Windows Vista or later).
- Xmake is now moved away from the default prefix to
lib/xmake. (It will be moved to a separate package in the future.)
14.3.0-r7
release 15.2.0-r8, 14.3.0-r7, 13.4.0-r7
13.4.0-r7
release 15.2.0-r8, 14.3.0-r7, 13.4.0-r7
16.1.0-RC-20260423-r0
BREAKING Changes Compared with 15.x
- A new mechanism is introduced to enable UTF-8 on all Windows versions.
- Technical detail: replacing Win32 and CRT
-AAPIs with thunks that do UTF-8 ↔ UTF-16 conversion and call-WAPIs. - The tools are UTF-8, without UTF-8 manifest injection!
- IDE integration: if a tool’s import table contains one of the following functions, it’s UTF-8.
kernel32!GetCommandLineW,msvcrt!__wgetmainargs,api-ms-win-crt-runtime-l1-1-0!_configure_wide_argv.
- Technical detail: replacing Win32 and CRT
- GCC now use Windows native TLS.
16-20260405-r0
BREAKING Changes Compared with 15.x
- A new mechanism is introduced to enable UTF-8 on all Windows versions.
- Technical detail: replacing Win32 and CRT
-AAPIs with thunks that do UTF-8 ↔ UTF-16 conversion and call-WAPIs. - The tools are UTF-8, without UTF-8 manifest injection!
- IDE integration: if a tool’s import table contains one of the following functions, it’s UTF-8.
kernel32!GetCommandLineW,msvcrt!__wgetmainargs,api-ms-win-crt-runtime-l1-1-0!_configure_wide_argv.
- Technical detail: replacing Win32 and CRT
- GCC now use Windows native TLS.
16-20260222-r0
BREAKING Changes Compared with 15.x
- A new mechanism is introduced to enable UTF-8 on all Windows versions.
- Technical detail: replacing Win32 and CRT
-AAPIs with thunks that do UTF-8 ↔ UTF-16 conversion and call-WAPIs. - The tools are UTF-8, without UTF-8 manifest injection!
- IDE integration: if a tool’s import table contains one of the following functions, it’s UTF-8.
kernel32!GetCommandLineW,msvcrt!__wgetmainargs,api-ms-win-crt-runtime-l1-1-0!_configure_wide_argv.
- Technical detail: replacing Win32 and CRT