Skip to content

Latest commit

 

History

History
71 lines (56 loc) · 4.03 KB

File metadata and controls

71 lines (56 loc) · 4.03 KB

Changelog

All notable changes to CNA are documented in this file.

The format follows Keep a Changelog, and this project adheres to Semantic Versioning. While the major version is 0, the public API may change in any release — see the pre-1.0 note in docs/releasing.md.

0.1.0-alpha.1 — 2026-08-20

First tagged release. CNA has been developed continuously since 2025-02-22; this tag names a state of develop rather than introducing new work, so the entries below describe what the release contains, not what changed since a previous tag.

Added

  • XNA 4.0 API surface. 227 of the 245 public FNA types are present (Graphics, Audio, Input/Touch and Storage complete); Content and Media are the known gaps. See docs/xna-4-api-coverage.md.
  • Graphics. Every one of the ~26 major Microsoft::Xna::Framework::Graphics classes is implemented and test-covered, at a qualified ~90% XNA/FNA behavioural compatibility.
  • 49 renderer identities selected at compile time through CNA_GRAPHICS_RENDERER, plus the opt-in multi-renderer build that chooses between several at runtime (docs/runtime-renderer-selection.md). VULKAN, BGFX, FNA3D, OPENGL4 and the EasyGL-backed GL family (OPENGLES3, OPENGL33, WEBGL1, WEBGL2, OPENGLES2) are the mature ones; WEBGPU, SKIA, SOKOL, DILIGENT, IGL, PIXIJS and the legacy DirectX identities carry documented, narrower capability boundaries.
  • Platform abstraction. CNA::Platform::IPlatform with SDL3, SDL2, HEADLESS and TERMINAL implementations, on independent CMake axes from the renderer and audio choices (docs/platform-abstraction.md).
  • Audio, input, media, storage, networking and device extensions as physical modules under modules/ (docs/physical-modules.md).
  • Compiled XNA effects — XNB EffectReader and Direct3D 9 Effect Framework bytecode execution on the FNA3D renderer.
  • Experimental native C ABI (CNA_BUILD_C_API, ABI version 0.7.0), versioned independently of this product version.
  • CNA/Version.hpp — the release identity generated from the build's single source of truth, exposing CNA::getVersionString() and the CNA_VERSION_* macros.

Dependency pins

Third-party dependencies are pinned by this repository: the submodules (third_party/SDL cbe3fbe9f, third_party/SDL_image fcb9d0b15, third_party/SDL_mixer 3075d3eda, third_party/draco 8786740086, vendor/googletest 7e2c425db) through their gitlinks, and the FetchContent dependencies through the GIT_TAG values in cmake/ThirdParty*.cmake and cmake/RendererSelection.cmake. Checking out this tag therefore selects them.

sharp-runtime is the exception and is not pinned by the build. It is a sibling checkout consumed with add_subdirectory from ../sharp-runtime (overridable with -DCNA_SHARP_RUNTIME_ROOT), so a build takes whatever revision that checkout happens to be on. This release was developed and verified against:

sharp-runtime  625476d5b5fff5fa89f392c3c9af8638ff237692  (develop, 2026-08-19)
https://github.com/openeggbert/sharp-runtime

Recording the revision here is a stopgap — it documents the pin without enforcing it. A real mechanism (a configure-time check against a recorded pin, or a submodule) is planned.

Known limitations

  • Pre-release quality: interfaces are expected to change before 1.0, and renderer coverage is uneven by design — each renderer's boundary is documented in docs/<renderer>-renderer.md.
  • Per-renderer bugs and gaps that are known and tracked are listed in NEXT.md §5.
  • Content has no general .xnb reader by design, and 14 of the Media types are shells.