All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.2.0 - 2025-11-16
- RISC-V platform support
riscv64- RISC-V 64-bit (LP64D ABI with hardware double-precision floating point)
- Platform detection for RISC-V in
platforms/platform.husing__riscvand__riscv_xlenmacros - Assembly implementation in
platforms/switch_riscv64_gcc.S- Full register preservation (s0-s11, fs0-fs11, ra)
- 16-byte stack alignment per RISC-V ABI
- Both
stackman_switchandstackman_callfunctions
- RISC-V build job in CI workflow with qemu-riscv64 emulation
- RISC-V library included in release archives
- Release archives now contain 10 platform libraries (was 9)
1.1.0 - 2025-11-16
- macOS platform support
darwin_x86_64- macOS on Intel (x86_64)darwin_arm64- macOS on Apple Silicon (ARM64)
- Platform detection for macOS in
platforms/platform.husing__APPLE__and__aarch64__macros - Mach-O assembly compatibility for both x86_64 and ARM64
- Conditional assembly macros for ELF vs Mach-O object formats
- Disabled CFI directives on macOS (different semantics than Linux)
- Symbol name mangling with leading underscore for Mach-O
- macOS build jobs in CI workflow (macos-15-intel and macos-latest runners)
- macOS libraries included in release archives
- Assembly files (
switch_x86_64_gcc.S,switch_aarch64_gcc.S) now support both Linux (ELF) and macOS (Mach-O) Makefiledetects Darwin and disables-staticflag (not supported on macOS)tools/abiname.shimproved to handle stale temp files on macOS- Release archives now contain 9 platform libraries (was 7)
- CFI macro definitions in
switch_aarch64_gcc.Sfor Linux builds
1.0.1 - 2025-11-16
- Disabled automatic library commits to repository
- Pre-built libraries now available exclusively via GitHub Releases
- Added
lib/README.mddocumenting deprecation timeline
lib/directory in repository - will be removed in v2.0.0- Committing binary library files to git (causes bloat and merge conflicts)
1.0.0 - 2025-11-16
- Version macros in
stackman.h:STACKMAN_VERSION_MAJOR,STACKMAN_VERSION_MINOR,STACKMAN_VERSION_PATCH,STACKMAN_VERSION,STACKMAN_VERSION_NUMBER - Automated release workflow for tagged versions
- Updated GitHub Actions to v4 (from v2)
- README updated with complete platform list, CI information, and release documentation
- BREAKING: Dropped Windows ARM32 (win_arm) support
- Microsoft Windows SDK 10.0.26100.0+ no longer supports 32-bit ARM development
- Last SDK version supporting ARM32 was Windows SDK 10.0.22621 (Windows 11 SDK, version 22H2)
- ARM32 Windows devices (Windows RT) are obsolete
- ARM64 Windows remains fully supported
- Fixed typos in documentation and source files
- Corrected "callee-stored" → "callee-saved" terminology
0.2 - 2024-2025
- Updated to VS2022 project files
- Updated GitHub Actions dependencies
- Automated library builds committed to repository
0.1 - 2020-05-18
- Core stack manipulation API:
stackman_switch()andstackman_call() - Support for 8 platforms:
- Linux: sysv_amd64, sysv_i386, arm32 (AAPCS), aarch64 (AAPCS64)
- Windows: win_x86, win_x64, win_arm (32-bit ARM), win_arm64
- Compiler support: GCC, Clang, MSVC (VS2017, VS2019, VS2022)
- Pre-built libraries for all supported platforms
- Inline assembly and separate assembly file options
- Cross-compilation support for Linux (x86, ARM32, ARM64)
- QEMU-based testing for ARM platforms in CI
- Comprehensive test suite (test.c, test_cc.cc, test_static.c, test_asm.c)
- GitHub Actions CI for automated building and testing
- Visual Studio project files (VS2017, VS2019, VS2022)