Skip to content

SpliX 3.0.0: C++23 modernization, CMake, hardening, and tests - #22

Open
dutch2005 wants to merge 1 commit into
OpenPrinting:masterfrom
dutch2005:master
Open

dutch2005 wants to merge 1 commit into
OpenPrinting:masterfrom
dutch2005:master

Conversation

@dutch2005

@dutch2005 dutch2005 commented Apr 24, 2026 •

Copy link
Copy Markdown

Summary

This is a single-commit SpliX 3.0.0 modernization proposal, rebased directly onto current OpenPrinting master (4854286). The previous multi-commit development history has been intentionally squashed so maintainers can review and test one coherent change.

Review map

  • Build and packaging: replaces the legacy Makefiles with modular CMake 3.25 configuration, C++23 feature probing, CPack, Docker support, and Debian packaging for amd64, arm64, armhf, i386, and riscv64.
  • Core modernization: introduces explicit result/error handling, modern ownership, portable synchronization, safer integer and buffer handling, and modular implementation units without removing printer-driver behavior.
  • Protocol and reliability hardening: preserves SPL/QPDL output through characterization tests, fixes cache-controller synchronization and page ordering, and rejects new compiler diagnostics as errors.
  • Tests and CI: adds sanitizer, compression, protocol, functional, concurrency, package-identity, and feature-probe coverage plus multi-architecture hosted builds.
  • Documentation and attribution: identifies the proposal consistently as 3.0.0 and updates AUTHORS, README, BUILDING, CHANGELOG, architecture notes, security guidance, and release notes.

Commit structure

PR #22 intentionally contains exactly one commit:

8966ce3 feat: modernize SpliX for C++23 and 3.0.0

Author: Michael Maertzdorf (dutch2005) using the GitHub-linked email address.

Verification

  • Exact final head: 8966ce338d9aef9f1023c4b6c69221b87d0a58f4
  • OpenPrinting base: 4854286334346059e7fec6f5f2328a23fa5fa774
  • Full hosted CI: https://github.com/dutch2005/splix/actions/runs/33100275214
  • CodeQL C/C++ and Actions: https://github.com/dutch2005/splix/actions/runs/33100274586
  • ASan/UBSan: 21/21 tests passed
  • Compiler diagnostics: zero warning/error lines across the hosted matrix
  • Packages: amd64, arm64, armhf, i386, and riscv64 artifacts produced from the exact final head
  • LXC 9100 Docker (Debian stable): ASan/UBSan 21/21, no-thread 19/19, no-JBIG 20/20, and release amd64 .deb packaging passed on the identical final tree
  • C++23 feature probe passed; the C++20 probe was rejected as required
  • Package identity: 248 canonical PPDs at version 3.0.0
  • GitHub merge analysis: clean, with no unresolved review threads

Physical-printer testing remains recommended before tagging the release. The legacy CUPS PPD deprecation remains documented migration debt rather than being hidden by unrelated warning suppression.

Fixes #15

@dutch2005 dutch2005 left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok

@dutch2005
dutch2005 force-pushed the master branch 2 times, most recently from 2f8701f to b664fd1 Compare May 13, 2026 09:38
@dutch2005 dutch2005 changed the title Modernization: C++23 Core Refactor, CMake Build System, and Security Hardening SpliX 3.0.0: C++23 modernization, CMake, hardening, and tests Aug 27, 2026
@dutch2005

Copy link
Copy Markdown
Author

The rebase is complete in one branch update. GitHub reports this exact head (e2741a2) as MERGEABLE against current OpenPrinting/master, with no unresolved review threads.

Exact-head preflight is green with zero annotations: https://github.com/dutch2005/splix/actions/runs/33083553070

Maintainer note: the workflow currently present on the base branch still invokes the legacy Makefile path that this PR replaces, so it cannot validate the new CMake tree. The linked fork run executes the proposed workflow and covers ASan/UBSan plus amd64, arm64, armhf, i386, and riscv64 packages. Physical-printer testing and independent maintainer review remain the final release gates.

Replace the legacy build with modular CMake and multi-architecture packaging, modernize ownership and error handling, preserve protocol behavior through characterization tests, harden cache concurrency, add sanitizer and functional coverage, and document the 3.0.0 proposal and contributor attribution.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Multi-threading issues

1 participant