Releases: giang17/wineasio
v1.5.0 - Robustness & Performance Overhaul
Summary
Major robustness and performance release with 14 fixes across all priority levels. Replaces the Sleep-polling architecture with event-driven signaling, eliminates mutex usage in the JACK realtime thread, and fixes multiple memory leaks and crash scenarios.
Tested: Reaper + Serum2 + Pianoteq9 at 64 samples / 48kHz — zero xruns in Docker with RT scheduling.
Critical
- Lock-free atomics in JACK realtime thread — replaces
pthread_mutexto eliminate priority inversion and xruns - eventfd-based signaling — replaces
Sleep(1)polling withpoll(eventfd), reducing latency jitter from ~1ms to microseconds and eliminating ~1000 unnecessary syscalls/sec - JACK shutdown callback — graceful handling when JACK server crashes instead of deadlocking
- Init loop fix — clear stale JACK activation flags in
asio_start()to prevent host reset loop
High
- Memory leak fix —
pe_audio_buffersfreed inDisposeBuffers()(leaked on every sample rate change) - Race condition fix —
host_driver_statemarked volatile for cross-thread visibility - Null-pointer guards — abort on
jack_port_register()failure instead of segfault in RT callback - Crash guard — safe path extraction in
configure_driver()for paths without extension/backslash - Init error leak fix —
jack_input/output_portsfreed in all callback registration error paths
Medium
- fork() safety — replaced
vfork()withfork()+SA_NOCLDWAITto prevent deadlocks and zombie processes - mlockall removed — eliminated
mlockall(MCL_FUTURE)that locked ~107MB for the entire process; JACK handles RT memory locking internally - 64-byte aligned buffers —
_aligned_malloc(64)matches JACK buffer alignment for optimal SSE/AVX memcpy
Low
- ASIO spec compliance — removed double buffer-switch priming in
Start()that violated the ASIO specification - 64-bit sample position — fixed
GetSamplePosition()high word (was hardcoded 0, overflowed after ~25h at 48kHz) - Thread creator mutex — protected global
jack_thread_creator_privatesagainst concurrent initialization
Docker Note
For RT audio in Docker, add ulimits to your docker-compose.yml:
ulimits:
rtprio:
soft: 95
hard: 95
memlock:
soft: -1
hard: -1v1.4.4 - Remove unused JACK MIDI infrastructure
Changes
Removed
- JACK MIDI ports - Removed non-functional
WineASIO:midi_inandWineASIO:midi_outJACK ports- These ports were placeholders not connected to the Windows MIDI API
- DAWs could not use them for MIDI routing
How to use MIDI with Wine
Wine's built-in winealsa.drv provides full MIDI support. Use a2jmidid -e to bridge ALSA MIDI devices to JACK:
# Start ALSA-to-JACK MIDI bridge
a2jmidid -e &
# Connect your MIDI device to Wine
jack_connect "a2j:Your Keyboard (capture)" "a2j:WINE midi driver (playback)"Full Changelog
https://github.com/giang17/wineasio/blob/master/CHANGELOG.md
v1.4.3 - Performance Fix
Changes
- FIX: Remove excessive debug traces that caused xruns
- FIX: Remove TRACE calls from real-time JACK callback path
- FIX: Remove high-frequency polling traces (~1000 calls/sec)
- CHANGE: Debug output disabled by default (enable with
-DWINEASIO_DEBUG) - DOCS: Document dynamic symbol loading approach for Wine 11 WoW64
- Restores
.defplaceholder files for compatibility
What's Fixed
This release significantly improves audio stability by eliminating debug logging from performance-critical paths. Previously, debug traces in the JACK real-time callback and the callback polling thread (running ~1000x/sec) could cause audio dropouts (xruns).
Upgrade Notes
If you experienced xruns or audio glitches with v1.4.2, this update should resolve those issues. Simply rebuild and reinstall:
make -f Makefile.wine11 clean
make -f Makefile.wine11 all
sudo make -f Makefile.wine11 installFor Developers
To enable debug traces during development, add -DWINEASIO_DEBUG to UNIX_CFLAGS in Makefile.wine11. Note that this will impact real-time performance.
v1.4.2 - Wine 11 WoW64 32-bit Fix
🎉 Wine 11 WoW64 32-bit Support - FULLY WORKING!
This release fixes a critical issue with 32-bit Windows applications on Wine 11 WoW64.
🔧 Critical Fix
Discovery: In Wine 11 WoW64, 32-bit PE DLLs use 64-bit Unix libraries!
32-bit PE (wineasio.dll) → WoW64 Thunking → 64-bit Unix (wineasio.so)
Changes
- Makefile.wine11: Unix
.sofor 32-bit PE now correctly built with-m64 - Installation:
wineasio.sonow installed tox86_64-unix/(noti386-unix/) - asio_pe.c: Audio buffers allocated on PE side for address space compatibility
- asio_unix.c: JACK callback uses PE-allocated buffers
✅ Tested Applications
| Application | Architecture | Status |
|---|---|---|
| REAPER 32-bit | 32-bit PE | ✅ Working |
| REAPER 64-bit | 64-bit PE | ✅ Working |
| Garritan CFX Lite | 32-bit PE | ✅ Working |
| FL Studio 2025 | 64-bit PE | ✅ Working |
📦 Installation
# Build
make -f Makefile.wine11 all
# Install
sudo make -f Makefile.wine11 install
# Register
wine regsvr32 wineasio.dll
wine regsvr32 wineasio64.dll📖 Documentation
- See
docs/WINE11_WOW64_32BIT_SOLUTION.mdfor detailed problem analysis - See
docs/WINE11_WOW64_ARCHITECTURE.mdfor architecture explanation
Full Changelog
See CHANGELOG.md
WineASIO v1.4.1 - Wine 11 Support (Documentation & Testing)
WineASIO v1.4.1 - Documentation & Testing Release
Release Date: January 21, 2026
This is a maintenance release after v1.4.0 with documentation improvements and comprehensive 32-bit testing verification.
🎉 Highlights
- ✅ Complete Wine 11 support with PE/Unix split architecture
- ✅ 32-bit fully verified - Extensive testing confirms it works correctly
- ✅ Diagnostic tool included -
test_asio_minimal.cfor troubleshooting - ✅ Comprehensive documentation - CHANGELOG, DEVELOPMENT guide, and more
📚 What's New in v1.4.1
Documentation
- 📖 CHANGELOG.md - Complete version history
- 📖 DEVELOPMENT.md - Comprehensive developer guide
- 📖 Enhanced README - Berkeley DB troubleshooting section
- 📖 Cleaned up temporary debug files
Testing & Verification
- ✅ 32-bit testing complete - No NULL pointer crashes
- ✅ test_asio_minimal.c - Minimal ASIO host for diagnostics
- ✅ Confirmed working - vtable, COM interface, all ASIO functions work
- 📝 Documented - Berkeley DB crashes are Wine bugs, not WineASIO
🔧 Installation
Same as v1.4.0 - see README.md
# Build
make -f Makefile.wine11 all
# Install
sudo make -f Makefile.wine11 install
# Register
make -f Makefile.wine11 register📖 Documentation
- CHANGELOG.md - Full version history
- README.md - Installation guide
- DEVELOPMENT.md - Developer documentation
- WINE11_PORTING.md - Technical details
- TEST-RESULTS.md - 32-bit testing analysis
🐛 Known Issues
Berkeley DB crashes in some 32-bit apps - This is a Wine/libdb compatibility issue, NOT a WineASIO bug. See README for workarounds.
✨ What's in Wine 11 Support (from v1.4.0)
- New PE/Unix split architecture - Separate Windows and Linux code
- JACK MIDI ports -
WineASIO:midi_inandWineASIO:midi_out - Settings GUI - Native Linux panel with PyQt5/PyQt6
- Full 32-bit and 64-bit support - Both architectures work correctly
📊 Compatibility
| Wine Version | Status |
|---|---|
| Wine 11.x | ✅ Fully supported |
| Wine 10.2+ | ✅ Fully supported |
| Wine 6.x-10.1 | ✅ Use legacy Makefile |
🙏 Credits
Thanks to the Wine development team and the Linux audio community!
Full Changelog: https://github.com/giang17/wineasio/blob/master/CHANGELOG.md
WineASIO 1.4.0 - Wine 11 Edition 🍷🎵
What's New
This is a major release bringing full Wine 11 compatibility with a complete rewrite of the build system and internal architecture.
✨ Highlights
- Wine 11 Support - New PE/Unix split architecture for Wine 10.2+/11
- Settings GUI - Launch settings directly from your DAW's ASIO control panel
- JACK MIDI - New
WineASIO:midi_inandWineASIO:midi_outports
📦 Downloads
| File | Description |
|---|---|
wineasio-1.4.0-source.tar.gz |
Complete source code |
wineasio-1.4.0-binaries.tar.gz |
Pre-built binaries (DLLs + SOs) |
🔧 Quick Install
# From source
tar -xzf wineasio-1.4.0-source.tar.gz
cd wineasio-1.4.0-source
make -f Makefile.wine11 all
sudo make -f Makefile.wine11 install
make -f Makefile.wine11 register
# From binaries
tar -xzf wineasio-1.4.0-binaries.tar.gz
cd wineasio-1.4.0-binaries
./install.sh