Skip to content

p8-platform 2.2.0 — the final release

Latest

Choose a tag to compare

@opdenkamp opdenkamp released this 16 Jul 20:18

The first release since 2016, and the last one planned.

This library is now in maintenance mode

p8-platform was written before C++11, to provide threading, atomics, timers and string
helpers that the standard library didn't have yet. It does now. std::mutex,
std::condition_variable, std::thread, std::chrono and std::atomic cover
essentially everything in here, and cover it better.

libCEC — the only actively developed user left — is moving to std:: directly. The Kodi
PVR addons already did, some years ago.

So this is the last planned release. Maintenance mode, not abandoned: the repository
stays open, and fixes are still welcome and will still be merged. Nothing installed today
stops working. There is simply no further development planned, and no reason to start a
new project against it.

No ABI or API break

Verified rather than assumed, against p8-platform-2.1.0.1:

  • exported symbols: identical, 59 before and 59 after — none added, none removed
  • no class layout, virtual, or signature changed in any public header
  • soname stays libp8-platform.so.2

The minor bump is for new functionality (chiefly Windows ARM64), not for a break.
Existing consumers can move to 2.2.0 without recompiling.

Note for packagers

2.1.0.1 no longer builds on a current system — it fails to configure under CMake 4
and needs -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to get through. That's fixed here, along
with the -DCMAKE_INSTALL_LIBDIR bug that sent the library and the .pc file into the
build tree instead of the prefix. If you carry patches for either, you can drop them.

The installed CMake config also reports the full major.minor.patch now, so
find_package(p8-platform 2.2.0) works — previously every release looked like "2.1".

Changes since 2.1.0.1

cmake

  • use GNUInstallDirs instead of a hand-rolled UseMultiArch.cmake. Fixes a relative
    -DCMAKE_INSTALL_LIBDIR being made absolute, which sent the library and the .pc file
    into the build tree (#41)
  • make the installed config relocatable, so it stops silently resolving to a different
    p8-platform found on the default search path (#38) — thanks @bachp
  • export a static build as STATIC, so a C project can link it (#35, open since 2018)
  • report the patch level in the config version, so find_package() can ask for a version
    with a given fix in it
  • require cmake 3.12, which also fixes the build under cmake 4 (#52) — thanks @bkuhls
  • require C++11 as the minimum standard — thanks @lrusak
  • fix building as a submodule — thanks @garbear
  • fix the ARM64/WIN64 symbol checks on Windows (#51) — thanks @fuzzard

threads

  • PreventCopy: block copies with = delete, and allow moves (#33) — thanks @MatthewLundberg
  • fixed -Wunused-value for every consumer that includes mutex.h
  • fix CEvent auto-reset behaviour on a broadcast signal — thanks @srg70

util

  • StringUtils: fix the build with -std=c++17 — thanks @lrusak

windows

  • added VS2022 and ARM64 support

docs

  • bring the README's build instructions up to date (#43) — thanks @heitbaum, @xXP4trickXx
  • added a .gitignore for the build dir — thanks @Vavassor
  • added LICENSE.md

Thanks

To everyone who filed an issue or sent a patch here, several of whom waited years for an
answer: @bachp, @bkuhls, @lrusak, @garbear, @fuzzard, @srg70, @heitbaum, @xXP4trickXx,
@Vavassor, @MatthewLundberg, @candrews, @pullmoll, @Memphiz, @rbalint, @SeppSTA,
@yann-morin-1998, @zcsizmadia, @Tryum, @Hedda, @ddscentral. Sorry it took a while.