CASL Release v1.0.0-preview.23
Hello, and welcome to another CASL release!!
This one's a big deal. Like, actually big. Not "we bumped some deps and called it a day" big. We shipped cross-platform support for macOS and ARM64.

Remember, we are in preview!! So, breaking changes are expected and also encouraged. Preview releases are an opportunity to fix any issues and improve the API before the final release. It's better now than in a production release. ๐
We add all the breaking changes to the release notes for every release. So, if you are upgrading, check the CASL Release Notes for any breaking changes. You can also check out the project on GitHub. All issues and associated pull requests are labeled, documented, and organized into milestones. It is effortless to find what you are looking for.
So, let's get to it!!
CASL Is Now Fully Cross-Platform!! ๐โ
CASL now runs on Windows, macOS, AND Linux.
CASL started out Windows-only. That was fine at the time but, you know, it's 2026. Being single-platform kinda sucks.
Here's how we got here:
- pre-preview.21 โ Windows only. One platform.
- preview.21 โ Linux support landed. Two down.
- preview.23 โ macOS support is here. That's all three.
There was a bunch of platform-specific stuff baked into the codebase that needed untangling. Device specifiers that only made sense on Windows. Native library loading that didn't account for macOS conventions. Little things, but they add up.
Here's what went into macOS support (#433, #434):
- Added a launch config and build task for the macOS testing app so we could actually... you know, test things
- Fixed a null reference exception that would crash CASL on first run. Yeah, that was embarrassing
- OpenAL native libraries now copy on all platforms, including macOS
- The device specifier was reworked โ it was Windows-specific before, now it works everywhere
- The
Platformclass got updated to recognize macOS properly - Native library loader updated for macOS library resolution
- Library type definitions updated for macOS compatibility
It's the kind of work that sounds boring when you list it out, but it's the stuff that makes or breaks cross-platform support. And now it's done.
ARM64 Support (#425)โ
If you're on an Apple Silicon Mac โ or running ARM64 Windows or Linux โ we've got you. ARM64 is now an officially supported build target.
No more "it should work" or "try running it through Rosetta." Native ARM64 builds. Faster startup, less translation overhead.
This matters a lot now that macOS is in the mix. Apple Silicon is basically the default for Mac users at this point.
CI Now Runs Everywhere (#437, #439)โ
We didn't just add macOS support and call it good. The CI matrix now runs builds and tests across Windows, Linux, AND macOS on every commit.
If something breaks on one platform, we'll know immediately. No more "works on my machine" nonsense. It's the boring infrastructure stuff that nobody gets excited about, but it's what keeps the project from falling apart as it grows.
Security Improvements (#436, #440)โ
A couple security fixes landed in this release:
- GitHub Actions pinned to commit hashes โ No more floating version tags in our workflows. Everything's pinned to exact commit SHAs now, so a compromised tag can't sneak in.
- PowerShell expression interpolations moved to environment variables โ Prevents script injection attacks through workflow inputs. Small change, but it matters.
If you maintain GitHub Actions workflows, you should probably be doing both of these. ๐
Dependency Updatesโ
The usual dependency bumps:
- Infrastructure GitHub Action:
v14.3.0โv17.2.0โ Major bump. Twitter branding updated to X, new composite actions, Bluesky announcement support, telemetry control. - xunit.runner.visualstudio:
3.1.4โ3.1.5 - System.IO.Abstractions:
22.0.15โ22.1.1 - denoland/setup-deno:
v2.0.4โv2.0.5
What This Means for Velaptorโ
If you use Velaptor (our 2D game framework), this release is kind of a big deal for you.
Velaptor uses CASL for all audio and at the time of this blog post, is still using CASL v1.0.0-preview.22, which means Velaptor does not run on macOS yet. But that will change soon once we upgrade Velaptor to use CASL v1.0.0-preview.23+.
ARM64 support lines up with Velaptor's targets too. The whole KinsonDigital stack is moving toward proper cross-platform support, and this release is a big chunk of that.
Documentationโ
Small updates to the docs:
- A Bluesky link has been added to the README. Come say hi! ๐
- The demo video is still in progress โ we'll have something to show soon.
Quick Exampleโ
The API hasn't changed. Same code, now works on all three platforms:
// Works on Windows, macOS, AND Linux
var filePath = "/path/to/audio.mp3";
// Full buffering for short sound effects
var sfx = new Audio(filePath, BufferType.Full);
sfx.Play();
// Stream buffering for background music
var music = new Audio(filePath, BufferType.Stream);
music.Play();
No #if WINDOWS. No platform branches. Just write your audio code and it works.
Wrapping Upโ
Cross-platform has been a long time coming for CASL โ and for Velaptor and Carbonate too. It's been a lot of work across the whole ecosystem and honestly it feels good to finally get here.

As always โ try it out, break things, file issues. We're in preview; feedback actually matters right now. Hit us up on GitHub or find us on Bluesky.
That's it for this release!! Go make some noise!! ๐
