Skip to content

Latest commit

 

History

History
106 lines (84 loc) · 5.74 KB

CHANGELOG.md

File metadata and controls

106 lines (84 loc) · 5.74 KB

Changelog

All notable changes to easy-gl 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 minor release — see the pre-1.0 note in docs/releasing.md.

0.1.1 — 2026-10-10

Moves easy-gl onto meta-gl 0.4.1. No easy-gl source file or public API changed.

Changed

  • Built and tested against meta-gl v0.4.1 (dd3b30055d55fdc42240de7af248259338256992) instead of v0.4.0. meta-gl 0.4.1 keeps the 0.4.0 API; it stops an unoptimized shared Linux libmeta-gl.so from exporting libstdc++ template instantiations, and runs all of meta-gl's tests in CI. easy-gl builds meta-gl as a static library unless EASYGL_BUILD_SHARED=ON, so its default build is unaffected by that fix. As before, meta-gl is a sibling checkout (../meta-gl) that this tag does not select: check out meta-gl v0.4.1 next to easy-gl to reproduce this release.

Fixed

  • The 0.1.0 entry named meta-gl v0.4.0 as 4399a3ed. The v0.4.0 tag was moved on the meta-gl remote after easy-gl 0.1.0 was cut and now points at 1a7df71d, which adds only test and CI changes to 4399a3ed. The 0.1.0 entry now records both, so the hash it names is the one 0.1.0 was actually built against.

Verification

  • 5/5 CTest tests pass in a Debug build against meta-gl v0.4.1, and the library, the tests and the hello-triangle-sdl example build with 0 warnings.
  • Verified on Debian GNU/Linux 13 with GCC 14.2.0, CMake 3.31.6, Ninja and SDL3 3.4.0.

0.1.0 — 2026-10-10

First tagged release. easy-gl has been developed since 2026-04-14 and has declared 0.1.0 in project() from the start; this tag names a state of the tree rather than introducing new work, so the entries below describe what the release contains, not what changed since a previous tag.

Added

  • RAII resource classes over OpenGL / OpenGL ES objects, all non-copyable and movable, built on meta-gl's typed handles and enums: Buffer, Texture, Shader, Program, ProgramPipeline, VertexArray, Framebuffer, Renderbuffer, Sampler, Query, Sync and TransformFeedback; all but Sync share the detail::GenerationTracked base.
  • Device: initialization from a host-supplied GetProcAddress callback, render state, generic state getters, the draw-call family (arrays, elements, instanced, indirect, range, base-vertex), debug-message control, and the OpenGL ES 3.1/3.2 entry points.
  • Runtime capability detection: ContextInfo, Capabilities and Feature with Device::supports() / require(), reusing meta-gl's context and version detection, including WebGL 1/2 classification. A missing entry point raises UnsupportedFeatureException instead of calling a null function pointer.
  • Context loss and restore: ResourceRegistry, RecoverableResource and ResourceRegistration.
  • Helpers: ScopedBind, ScopedDebugGroup and UniformCache.
  • Emscripten / WebGL builds, with a selectable exception ABI (EASYGL_EMSCRIPTEN_EXCEPTION_MODEL, WASM or JS), and the default, release and emscripten CMake presets.
  • Release identity: easygl/Version.hpp is now generated by cmake/EasyGlVersion.cmake from project(easy-gl VERSION ...) and EASYGL_VERSION_PRERELEASE, replacing the hand-written header that repeated the number. The existing easygl::version_major/minor/patch constants keep their names; version_prerelease, version_string, version_is_prerelease and the preprocessor-testable EASYGL_VERSION_* macros are new. Covered by easy-gl-version-tests.
  • docs/releasing.md: where the version lives, the release checklist, and how the meta-gl revision is recorded.

Dependencies

  • meta-gl v0.4.0 as it stood when this release was cut: 4399a3edce7e1f06f805ebbc5609662d4d6dd6f4. The tag was later moved to 1a7df71d1346c09eb324d5fe58363a7fda74b661, which adds only test and CI changes, so the meta-gl library code is the same at both. easy-gl consumes meta-gl as a sibling checkout with add_subdirectory(../meta-gl), so this tag does not select it: check out meta-gl v0.4.0 next to easy-gl to reproduce this release.
  • SDL3 is optional and used only by the hello-triangle-sdl example, which is skipped when SDL3 is not found.

Known limitations

  • The tests use fake function-pointer loaders only; nothing runs against a real GL context or a real browser WebGL implementation.
  • There is no CMake package export, so find_package(easy-gl) is not supported; consume easy-gl with add_subdirectory (PLAN W3).
  • The build requires C++23 (CMake sets it, and meta-gl requires it), while README.md and CLAUDE.md still name C++20 (PLAN W1).
  • Only the default static library was verified; EASYGL_BUILD_SHARED=ON was not built for this release.

Verification

  • 5/5 CTest tests pass in a Debug build, where their assert() checks are active: easy-gl-smoke-tests, easy-gl-resource-smoke-tests, easy-gl-context-lifecycle-tests, easy-gl-webgl-tests and easy-gl-version-tests. The library, the tests and the hello-triangle-sdl example build with 0 warnings; the example was built but not run, because it needs a display.
  • Verified on Debian GNU/Linux 13 with GCC 14.2.0, CMake 3.31.6, Ninja and SDL3 3.4.0, against meta-gl v0.4.0.