Skip to content

Purism Core 1.1.0

Latest

Choose a tag to compare

@Ronsor Ronsor released this 21 Aug 22:52
1069334

What's Changed

  • Code style and identifier name updates in #1
  • Prepare for 1.1.0 release in #2

The Details

Harden the parser; add an error API; add web builds and a sample viewer; bump version to 1.1.0

That was quite a lot I've been dragging my feet on.

Security and memory safety:

  • Fix discovered memory-safety bugs: signed-overflow in the warp grid expansion, an out-of-bounds read on negative keyframe indices, NULL+0 pointer arithmetic when the blend-key table is empty, NULL derefs on empty art-mesh bindings and missing key_count reads at the blend-window boundary, and an index underflow in psm__valid_range.

  • Improved fuzzing verification: PSM_DEBUG_MALLOC build mode that uses malloc for every model field.

Public API:

  • Add per-model csmGetLastError / csmGetErrorString; record error codes in the MOC3 header's padding, and expose csmGetMocError so applications can receive detailed failure status.

  • Add csmGetExtendedVersionString() with embedded git hash to query the exact library build.

  • Misc. correctness fixes: propagate color to opacity-0 meshes and stop the v5.3 extended-modes bit masking constant-mode bits.

Style / housekeeping:

  • .clang-format for the library (BSD-KNF) and samples/viewer (raylib layout), a clang-format pre-commit hook, make format/format-check targets, and a CI check.

  • Line wrapping, standardizing on bool for all booleans, remove VLAs, rename many symbols for consistency, and more!

Sample viewer:

  • Implement a sample MOC3 viewer (both v5 and v6 ABI support) using Raylib. Supports all blend modes from v6.

WASM port:

  • Web/WASM drop-in Live2DCubismCore.js for both v5 and v6.

Build:

  • Makefile rewrite with per-OS shared rules and a proper platform matrix. WASM support also added.

  • Bundle now generated from a template (src/bundle.c.in) instead of manually by a script.

  • CMake build system added for cross-compilation. This should be easier to build on plain Windows.

CI:

  • Misc improvements: cross-build is skipped on v* tag pushes (the release job rebuilds the matrix itself), and the release job verifies the tag matches PSM_TRUE_VERSION in the header before building.

Full Changelog: v1.0.1...v1.1.0