AtlatestRepositorysigil-audio
sigil-audio / treeCHANGELOG.md
1
# Changelog3
All notable changes to this project will be documented in this file.5
The format is based on [Keep a Changelog](https://keepachangelog.com/),6
and this project adheres to [Semantic Versioning](https://semver.org/).8
## [0.12.0] - 2026-07-1010
### Added12
- `(sigil audio sink)`, a portable streaming audio-sink facade that selects13
its backend with `cond-expand`. The native arm re-exports the sokol SPSC14
ring from `(sigil audio)`; the WebAssembly arm imports `(sigil browser15
audio-sink)` from the sigil-wasm-audio bridge package, so the same source16
compiles and runs on both native and WebAssembly. The facade adds17
WebAudio-shaped context lifecycle ops (`audio-context-open`,18
`audio-context-resume`, `audio-context-sample-rate`, `audio-context-state`)19
and a portable `make-float-buffer` re-export. On native the context ops are20
thin shims over sokol's single always-running device.22
### Fixed24
- WebAssembly builds that depend on sigil-audio for the `(sigil audio sink)`25
facade no longer fail to compile. The native audio C (sokol_audio, vendored26
libogg/libvorbis) has no wasm32-wasi backend, so its C-compilation steps are27
now gated out of wasm/wasi targets with `skip-on-wasm`; on wasm the facade28
delegates to the WebAudio bridge, so none of that C is needed. Native builds29
are byte-identical (the guard is false).31
## [0.11.0] - 2026-06-2533
### Changed35
- Raised the toolchain requirement to Sigil 0.17. The package now36
declares `sigil: "^0.17"` and pins `sigil-stdlib` to `^0.17`. Sigil37
0.17 makes the package-level `sigil:` field mandatory and derives the38
native codegen runtime (`sigil-lib`) from it, so building under the39
0.17 compiler requires this bump. This is a minor release because40
consumers caret-pinning sigil-audio must move to the 0.17 line.42
### Requires44
- Sigil 0.17+ (`sigil-stdlib` / `sigil-lib` 0.17 line).46
## [0.10.2] - 2026-04-2448
### Fixed50
- `link-flags:` now uses `(lambda (ctx) (case (target-os ctx) ...))`51
instead of a host-based `(case (host-os) ...)` expression. The52
host-based form evaluated at package-load time on the host, so53
Linux link flags leaked into Windows cross-compile builds; a54
`sigil build --config windows-amd64` pass from a Linux host would55
inject `-lasound` into the final link and fail against zig's MinGW56
sysroot. The procedural form re-evaluates at link time with the57
target triple, so cross-compile configs now pick the right branch.58
The OS branches themselves are unchanged (`linux`: `-lasound`;59
`darwin`: `-framework AudioToolbox`; `windows`: `-lole32 -lwinmm60
-lksuser`).62
### Requires64
- `sigil-build` 0.14.0+ (for the `target-os` / `target-arch` helpers65
and the procedural-link-flags dispatch in `collect-native-link-flags`).67
## [0.10.0] - 2026-04-2469
### Added71
- Vendored libogg 1.3.6 + libvorbis 1.3.7 under `vendor/ogg/` and72
`vendor/vorbis/`. OGG Vorbis encoding/decoding is now73
self-contained: no external `-lvorbis` / `-lvorbisenc` / `-logg`74
link dependency, no system `libogg-dev` / `libvorbis-dev`75
packages needed on Linux or macOS.76
- Windows cross-compile target (`sigil build --config77
windows-amd64`) — uses zig with `x86_64-windows-gnu`. WASAPI78
backend links against `-lole32 -lwinmm -lksuser`. Verified by79
building libsigil-audio.a + test-linking a PE32+ Windows .exe.80
- Per-tree `vendor/ogg/README.md` and `vendor/vorbis/README.md`81
recording upstream version + tarball SHA256 + upgrade procedure.83
### Changed85
- `package.sgl` library `link-flags`: dropped86
`-lvorbis -lvorbisenc -logg` from every host branch; added a87
`(windows)` branch with WASAPI link flags.88
- `manifest.scm`: removed `libvorbis` / `libogg` system deps —89
vendored sources cover them.90
- Binary size grows by ~1 MB (libvorbis codebook tables dominate).91
Acceptable trade-off for the install-time ergonomics + cross-92
compile capability.94
## [0.9.0] - 2026-04-1896
### Added98
- Streaming audio sink: `open-audio-stream`, `push-audio-samples`,99
`audio-stream-room`, `audio-stream-depth`, `audio-stream-capacity`,100
`audio-stream-channels`, `audio-stream-underruns`,101
`audio-stream-closed?`, `close-audio-stream!`,102
`set-audio-stream-volume!`, `audio-stream?`. Lockless SPSC ring103
lets Sigil callers feed interleaved float32 PCM from any thread104
to sokol_audio's audio thread; coexists additively with105
`play-sound` / `play-music`. See106
`folio topics/sigil-audio-streaming-sink-architecture`.108
## [0.5.0] - 2026-02-17110
### Added112
- Added test harness generation and build support for packages with native dependencies. Improved native package handling, added c-flags field to library struct. Fixed stdlib inclusion in bundles with custom native runtimes, directory structure preservation in compile-c-sources, and absolute sigil-lib include path resolution.113
- Added test coverage.114
- Added test coverage.115
- Added test coverage for TCP/UDP/address operations and crypto primitives.116
- Added test coverage for TCP/UDP/address operations and crypto primitives.117
- Added test coverage.118
- Added test coverage.119
- Added test coverage.120
- Added test coverage.121
- Added test coverage.122
- Added test coverage.123
- Added opcode-level profiling with --profile flag. Added test harness support for packages with native dependencies. Build safety: warn when replacing the running binary, error on 0-byte output or missing target package. Fixed module cache clearing before running entry points, handling of missing sigil-lib in user-created packages.124
- Added test coverage.125
- Added test coverage.127
### Fixed129
- Fixed random seed initialization crash caused by flonum-to-bignum promotion in modulo. Fixed status command crash when displaying projected versions for packages without changes.130
- Fixed SSE and remove-after initialization on child elements. Added comprehensive test coverage for routing, middleware, cookies, security, SSE, and response helpers.131
- Fixed assq-ref to return values instead of aliasing assq, added assv-ref. Added async-aware process pipe I/O. Fixed REPL string-length error after exception recovery. Added comprehensive error path tests and GC stress tests for dicts.132
- Fixed Scheme module compilation in build task.133
- Fixed re-import of (sigil core) before calling entry main in bundled applications.135
### Other137
- New packages split from sigil-studio. Font and image modules moved to (sigil graphics *) namespace.138
- GC correctness: added write barriers to all heap mutation sites, enabled GC during compilation with full compiler rooting, and added GC stress testing infrastructure. Completed HAMT dict implementation (printing, equality, collision handling, structural removal). Added arbitrary-precision bignum type with full reader/VM/native/serializer integration. Performance: inline caching for module binding lookups, peephole optimizer with 8 superinstruction patterns. Improved error handling: replaced exit(1) with recoverable errors, fixed error propagation in vm_error_abort and OP_ABORT_TO_PROMPT. Added definition location tracking in stack traces. Implemented VFS/bundle directory listing. Fixed number->string precision for exact IEEE 754 roundtrip. Removed dead opcodes.139
- Configured custom mbedTLS for TLS 1.2 only. Added test coverage for connection predicates, failure paths, and error handling.140
- New packages split from sigil-studio. Font and image modules moved to (sigil graphics *) namespace.141
- New package split from sigil-studio. Added playlist support with wait-music-end and play-playlist. Fixed native exports in Scheme module.