Releases: webos21/crt
Release list
CRT v0.4.0-preview.1
CRT v0.4.0-preview.1
First public developer preview of the CRT Graphics/Media SDK stage
(04-gfx-media). Pre-1.0: interfaces may change, and this is not a
production-ready release.
CRT is a Bionic-compatible cross-platform C runtime and Platform Adaptation
Layer (PAL). You rebuild Linux/BSD/Android-style native C/C++ source with your
own Clang/LLD toolchain against a CRT sysroot, and get native Linux, Windows,
and macOS executables. No VM, no container, and no compiler bundled in the SDK.
Demo (Windows, the media-player example decoding a clip with FFmpeg into a
native window):
Windows-demo-MediaPlayer.mp4
In this preview, media-player decodes in software on every platform.
The packaged crtmedia_player_demo does not request hardware decode, so it
always uses the software path -- on Windows, macOS, and Linux alike --
regardless of what that host's FFmpeg build supports. Hardware H.264 decode
itself is real and verified on all three platforms (see the table below);
its evidence is each platform's own crtmedia_hw_decode_test, not this demo.
The demo will request hardware decode by default starting with the next
preview.
What is in this preview
04-gfx-media is the current public SDK milestone. The SDK stages are
cumulative, so the 04-gfx-media archive already contains everything below it.
| Stage | Adds |
|---|---|
01-c |
libc, libm, libdl, startup objects, shell, mksh, toybox, awk, make |
02-cxx |
imported libc++, libc++abi, and libunwind |
03-gfx-simple |
native window, keyboard and mouse input, software framebuffer |
04-gfx-media |
Skia CPU and GPU rendering, GPU presentation, FreeType text, FFmpeg software media, native audio output, opt-in hardware H.264 decode |
Bundled third-party payload in 04-gfx-media: Skia m148, FreeType 2.14.3, and
a narrow LGPL FFmpeg 8.1.2 build (MOV/MP4/M4A, WAV, MP3 demux; H.264, AAC, MP3,
and PCM software decode). Each SDK's manifest.json lists these, plus the
external prerequisites CRT does not bundle.
Packaged examples: gfx-simple, gfx-gpu, gfx-skia, and media-player,
each with its own CMakeLists.txt that rebuilds it against the SDK, plus
ready-made programs under examples\bin.
Real upstream software rebuilt through the CRT sysroot with its own
configure/make (or GN) flow: zlib, libpng, SQLite, bzip2, xz, PCRE2,
mbedTLS, libcurl (real HTTP and HTTPS round trips), libffi, expat, FreeType,
FFmpeg, and Skia. Recipes and per-host results are in
docs/porting_status.md.
What has been verified
State on each host, not a promise. "Partial" means a gap stated below.
| Capability | Linux | Windows | macOS |
|---|---|---|---|
| libc / libm / libdl, libc++ runtime, pthread, sockets, mmap, TLS | Verified (libdl: partial) | Verified | Verified |
| Native window and input | Verified (Wayland) | Verified (Win32) | Verified (Cocoa) |
| Skia CPU raster and text | Verified | Verified | Verified |
| Skia GPU (Ganesh) presentation | Verified (Vulkan, physical GPU) | Verified (D3D12) | Verified (Metal) |
| FFmpeg software media | Verified | Verified | Verified |
| Native audio output | Partial | Verified (WASAPI) | Verified (CoreAudio) |
| Hardware H.264 decode, frames delivered to the CPU | Verified (VA-API, physical GPU) | Verified (D3D11VA) | Verified (VideoToolbox) |
The last full ctest runs were 149/149 on Windows/x64, 121/121 on
Linux/x86_64 under WSL2 (two TTY-dependent termios tests excluded from that
non-interactive run), 132/132 on a native Linux/x86_64 desktop with
CRTMEDIA_ENABLE_FFMPEG=ON and VA-API enabled, and 132/132 on macOS/arm64. The
Linux/aarch64 results come from its recorded acceptance runs. Per-host details
and dates are in
STATUS.md.
For this release specifically (Windows/x64): the SDKs were built with
CRT_RELEASE_TAG=v0.4.0-preview.1 from commit fd01d7c. The 04-gfx-media SDK
was built from the extracted 03-gfx-simple archive with empty caches in about
50 minutes, and passed its 8 stage tests, rebuilding and running the installed
gfx-gpu, gfx-skia (D3D12, with resize and pixel checks), and media-player
examples, and verify_dist.py. The published archive was then extracted into a
path containing a space, its prebuilt demos ran, and the quick start below was
run from it.
For the macOS/arm64 assets, which were added after the release was first
published: they are built from commit 972d913, not from the tag commit
fd01d7c (see the note under Downloads for why). The SDKs were built with
CRT_RELEASE_TAG=v0.4.0-preview.1 from a fresh clone on macOS 26.6.2 with
Apple clang 21.0.0. The 04-gfx-media SDK was built from the extracted
03-gfx-simple archive with empty caches in about 7.5 minutes, and passed its 8
stage tests, rebuilding and running the installed gfx-gpu, gfx-skia (Metal,
with resize and pixel checks), and media-player examples, and
verify_dist.py. The archive was then extracted into a path containing a space,
its prebuilt media-player and Metal demos ran, and the macOS quick start below
was run from it.
For the Linux/x86_64 assets, added the same day as the Linux VA-API hardware-
decode tranche closed: they are built from commit a90bf10, not from the
tag commit fd01d7c (see the note under Downloads for why). The SDKs were
built with CRT_RELEASE_TAG=v0.4.0-preview.1 from a fresh clone on a native
(non-VM, non-WSL) Ubuntu desktop with a physical Intel GPU, Clang 21.1.8, and
CMake 4.2.3. The 04-gfx-media SDK was built from the extracted
03-gfx-simple archive with empty caches in about 14 minutes (FreeType and
FFmpeg about 11 minutes, Skia about 3), and passed its 8 stage tests,
rebuilding and running the installed gfx-gpu, gfx-skia (Vulkan, with resize
and pixel checks), and media-player examples, and verify_dist.py. Both
03-gfx-simple and 04-gfx-media archives were then extracted into a path
containing a space: 03-gfx-simple's ready-made and freshly rebuilt
crtgfx_window_demo/crtgfx_window_example both presented 60 frames,
04-gfx-media's prebuilt crtmedia_player_demo presented 25 frames (software
decode -- this demo does not request hardware decode, so it decodes in
software on every host; the real hardware-decode evidence is
crtmedia_hw_decode_test, not this demo), and its prebuilt
crtgfx_skia_gpu_window_demo presented 5 real-Vulkan frames with a pixel
check passing, and the Linux quick start below was run from it.
Downloads
This release attaches Windows/x64, macOS/arm64, and Linux/x86_64 assets.
Windows/x64
| Asset | Size | SHA-256 |
|---|---|---|
crt-v0.4.0-preview.1-windows-x86_64-04-gfx-media.zip |
160.8 MB | 66db007480300efbf69c45bacb53e2c019afafafbb802a0ccda26952a4893e6c |
crt-v0.4.0-preview.1-windows-x86_64-03-gfx-simple.zip |
122.9 MB | aa3b8b150e3bb2f3069564fb85a747c13e93fbbd0cca503263cb2e740c4fd874 |
crt-v0.4.0-preview.1-windows-x86_64-02-cxx.zip |
122.6 MB | bdf345814a9141bb608496fe181bc55047e3af3818c9e724125317253757be65 |
crt-v0.4.0-preview.1-windows-x86_64-01-c.zip |
113.7 MB | abd63b55e91fca2eaf0506ac9a75d7d691f6ad7e353bbd47cee51d35cacde64a |
crt-v0.4.0-preview.1-windows-04-gfx-media-source.tar.xz |
18.2 MB | 15e34bae5d8d86982a92b09a505311426f123238a64b9157209b7f40ea400c24 |
crt-v0.4.0-preview.1-windows-03-gfx-simple-source.tar.xz |
0.1 MB | c2bc57e28a698acbf5a093bf46c9dbd4200f92691b189e84a1d0037d529e0ce2 |
crt-v0.4.0-preview.1-windows-02-cxx-source.tar.xz |
8.2 MB | f7a79cbec9a7c2684182f26286098cb66e9230748fc1676c223ef554bc87b38e |
Most people need only the 04-gfx-media archive. The smaller stages are for
products that stop at C, C++, or the simple framebuffer. The *-source.tar.xz
files are the stage-source assets that the packaged stage recipes download
(pinned by size and SHA-256); you do not need them to use an SDK.
SHA256SUMS-windows-x86_64 lists every checksum above, and
release-manifest-windows-x86_64.json records the version, source commit, and
per-asset size and SHA-256.
macOS/arm64 (Apple Silicon)
| Asset | Size | SHA-256 |
|---|---|---|
crt-v0.4.0-preview.1-macos-aarch64-04-gfx-media.tar.xz |
14.1 MB | 802422edfbb3b6798b6d10ec85089b4e9b173e3da9042f52942bdfdf274b14bd |
crt-v0.4.0-preview.1-macos-aarch64-03-gfx-simple.tar.xz |
4.9 MB | f1ec8058a5c93f838186a27d95eea863d8c372e0a8edb621112da894070d313b |
crt-v0.4.0-preview.1-macos-aarch64-02-cxx.tar.xz |
4.9 MB | 09c2dab341d6ae9a7ca0e1fe3e895d22479dc2157ad2a1e4a223d5127ce5ea1c |
crt-v0.4.0-preview.1-macos-aarch64-01-c.tar.xz |
1.8 MB | 83876183f0aa24fec1e451144b0b53510741d5f6c42188ea41f71aee64a06c2e |
crt-v0.4.0-preview.1-macos-04-gfx-media-source.tar.xz |
18.2 MB | 4bf38b0d864358cce6a8e7d6d0551fe8ce7546dfd4e34faf37aa0188a966fb41 |
crt-v0.4.0-preview.1-macos-03-gfx-simple-source.tar.xz |
0.1 MB | 1cc81949ef052fabcd4a44c5a6fdf8c2b949bd47d093faa9745aefff897ec9aa |
crt-v0.4.0-preview.1-macos-02-cxx-source.tar.xz |
8.0 MB | 1ebb577af42a60c6408eeaacae6b3dba93244bd254441c5e4d82a86bc0d2ec59 |
The same guidance applies: most people need only the 04-gfx-media archive, and
the *-source.tar.xz files are the stage-source assets the packaged recipes
download. SHA256SUMS-macos-aarch64 lists every checksum above, and
release-manifest-macos-aarch64.json records the version, source commit, and
per-asset size and SHA-256.
The macOS assets were built from a later commit than the tag. The tag
v0.4.0-preview.1 points at fd01d7c, which is what the Windows assets record.
The macOS manifest records 972d913, which is later than the tag (the two fixes
bel...