AtlatestRepositorysigil-graphics
sigil-graphics / 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.11.0] - 2026-06-2510
### Changed12
- Raised the toolchain requirement to Sigil 0.17. The package now13
declares `sigil: "^0.17"` (was `^0.15`). Sigil 0.17 makes the14
package-level `sigil:` field mandatory and derives the native codegen15
runtime (`sigil-lib`) from it, so building under the 0.17 compiler16
requires this bump. This is a minor release because consumers17
caret-pinning sigil-graphics must move to the 0.17 line.18
- Bumped the `sigil-app` dependency to `^0.9.0` (the 0.17-line release19
of sigil-app), since the whole native stack must derive the same20
0.17 `sigil-lib`.22
### Requires24
- Sigil 0.17+ and sigil-app 0.9.0+.26
## [0.9.3] - 2026-04-2428
### Fixed30
- `link-flags:` now uses `(lambda (ctx) (case (target-os ctx) ...))`31
instead of a host-based `(case (host-os) ...)` expression. The32
host-based form evaluated at package-load time on the host, so33
`-lGL` leaked into Windows cross-compile builds and caused the34
final link to fail against zig's MinGW sysroot (which has no35
matching GL import library). The procedural form re-evaluates at36
link time with the target triple. Branches themselves are37
unchanged (`linux`: `-lGL`; `darwin`: `-framework OpenGL38
-framework Metal -framework MetalKit`; `windows`: `'()`, since39
sokol_gfx's GL backend dynamically loads `opengl32.dll`).41
### Requires43
- `sigil-build` 0.14.0+ (for the `target-os` / `target-arch` helpers44
and the procedural-link-flags dispatch in `collect-native-link-flags`).46
## [0.9.0] - 2026-04-1848
> Note: skips 0.8.0. The `v0.8.0` git tag was used on 2026-03-29 for the49
> initial standalone-repo extraction, but `package.sgl` was never bumped50
> past 0.7.0 then. To avoid rewriting a published tag, this minor release51
> jumps to 0.9.0.53
### Added55
- `draw-filled-circle x y radius [segments]` — filled circle primitive56
rendered as a triangle fan via sokol_gp. `segments` defaults to 16 and57
is clamped to `[3, 128]`. For tiny shapes (radius 4–6 px), 12–1658
segments is plenty; larger circles benefit from more. Draw cost scales59
linearly with `segments`, so use the smallest count that still looks60
round at the target radius — bullet/particle code on hot paths should61
pick a fixed low count rather than letting it default. Colour comes62
from the currently bound `set-color`.63
- `set-blend-mode mode` and `reset-blend-mode` — Sigil-level blend mode64
control. `mode` is one of `'normal` (alpha blend), `'additive`, or65
`'none` (no blending). The Sigil wrapper shadows the mode in module66
state so `with-blend-mode` can restore the previous value.67
- `with-blend-mode mode body ...` — scoped form that sets `mode`, runs68
`body`, then restores the previous mode. `with-additive-blend body69
...` is the recommended convenience wrapper for particle / bullet70
halo rendering — it avoids forgotten restores that would leak the71
blend state into other draws.72
- `current-blend-mode` — accessor for the Sigil-tracked blend mode.74
### Notes76
- Only `'normal`, `'additive`, and `'none` are exposed. sokol_gp also77
supports premultiplied-alpha, modulate, and multiply modes; those can78
be added when something needs them. Adding a new mode is a one-line79
change in `blend_mode_from_value` (`src/c/graphics.c`).80
- See `examples/circles-blend/` for a side-by-side normal-vs-additive81
demo. Note: the demo binary build currently fails in the transitive82
`sigil-lib` rebuild on a missing `minicoro.h` include path — this is83
a pre-existing build-infra bug, not in this package.85
## [0.5.0] - 2026-02-1787
### Added89
- 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.90
- Added test coverage.91
- Added test coverage.92
- Added test coverage for TCP/UDP/address operations and crypto primitives.94
### Fixed96
- 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.97
- Fixed SSE and remove-after initialization on child elements. Added comprehensive test coverage for routing, middleware, cookies, security, SSE, and response helpers.99
### Other101
- New packages split from sigil-studio. Font and image modules moved to (sigil graphics *) namespace.102
- 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.103
- Configured custom mbedTLS for TLS 1.2 only. Added test coverage for connection predicates, failure paths, and error handling.104
- New packages split from sigil-studio. Font and image modules moved to (sigil graphics *) namespace.