Skip to content

Releases: redpanda-cpp/mingw-lite

next-17-20260517-r0

18 May 09:38

Choose a tag to compare

next-17-20260517-r0 Pre-release
Pre-release
bump gcc to 17-20260517, 16-20260516

current-16-20260516-r0

18 May 10:25

Choose a tag to compare

Pre-release
bump gcc to 17-20260517, 16-20260516

16.1.0-r0

30 Apr 21:34

Choose a tag to compare

16.1.0-r0 Pre-release
Pre-release

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.

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 -A APIs with thunks that do UTF-8 ↔ UTF-16 conversion and call -W APIs.
    • 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.
  • 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

25 Apr 05:23

Choose a tag to compare

16.1.0-RC-20260424-r0 Pre-release
Pre-release

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 -A APIs with thunks that do UTF-8 ↔ UTF-16 conversion and call -W APIs.
    • 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.
  • GCC now use Windows native TLS.

15.2.0-r8

25 Apr 05:09

Choose a tag to compare

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.

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).
  • 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.

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).
  • 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 *_winnt40 are now migrated to *_win98.
  • 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_win2000 is now deprecated. It will be kept in current release branches (15, 14, 13) until EOL, and instantly removed in branch 16.

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).

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

25 Apr 05:26

Choose a tag to compare

release 15.2.0-r8, 14.3.0-r7, 13.4.0-r7

13.4.0-r7

25 Apr 04:47

Choose a tag to compare

release 15.2.0-r8, 14.3.0-r7, 13.4.0-r7

16.1.0-RC-20260423-r0

24 Apr 03:04

Choose a tag to compare

16.1.0-RC-20260423-r0 Pre-release
Pre-release

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 -A APIs with thunks that do UTF-8 ↔ UTF-16 conversion and call -W APIs.
    • 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.
  • GCC now use Windows native TLS.

16-20260405-r0

11 Apr 03:47

Choose a tag to compare

16-20260405-r0 Pre-release
Pre-release

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 -A APIs with thunks that do UTF-8 ↔ UTF-16 conversion and call -W APIs.
    • 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.
  • GCC now use Windows native TLS.

16-20260222-r0

27 Feb 01:19

Choose a tag to compare

16-20260222-r0 Pre-release
Pre-release

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 -A APIs with thunks that do UTF-8 ↔ UTF-16 conversion and call -W APIs.
    • 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.