Skip to content

v0.21.0 — Motion, Twin & Tooling Closure

Latest

Choose a tag to compare

@lusipad lusipad released this 29 Jul 22:58
· 7 commits to main since this release
08d62b1

plcopen v0.21.0 — Motion, Twin & Tooling Closure

v0.21.0 is the published pre-1.0 release centered on the rewritten core/ runtime and the
software-complete motion, twin, tooling, and consumer-path closure batches. It remains
pre-1.0: no stable ABI, no PLCopen or Safety certification, no real-machine production
evidence, and no LTS commitment are implied.

This release remains source/header-only for C++ consumption. The C++ delivery is still GitHub
source archives plus CMake install/export; ConanCenter and vcpkg central registry assets remain
fixed at the published v0.20.0 line, and this release does not claim v0.21.0 registry
inclusion. Python package pyplcopen==0.21.0 is publicly available on PyPI with 20 wheels,
1 sdist, and Requires-Python >=3.10.

Install

C++ with FetchContent

include(FetchContent)
FetchContent_Declare(
  plcopen
  GIT_REPOSITORY https://github.com/lusipad/plcopen.git
  GIT_TAG v0.21.0)
FetchContent_MakeAvailable(plcopen)

target_link_libraries(my_controller PRIVATE plcopen::plcopen)

The exported target is header-only and requires C++17 and CMake 3.21 or newer.
Installed-package consumption through find_package(plcopen CONFIG REQUIRED)
remains the supported downstream path.

Python

pip install pyplcopen==0.21.0

Published package page: https://pypi.org/project/pyplcopen/0.21.0/.

What users get

  • H1 adds the 48-axis atomic {q_des,dq_des,tau_ff,kp,kd} stream contract, with direct / upsample,
    full precheck, keep-latest, local watchdog, group-wide drop handling, and command snapshots.
    tau_ff remains a data path only and still does not imply T18 or real-machine completion.
  • H2 adds the fixed-capacity kin::SerialChain for 1-8 revolute joints with standard/modified
    DH forward kinematics and deterministic numerical inverse-kinematics fallback.
  • H3 adds dyn::FixedBaseChain, a fixed-base inverse-dynamics path that returns pure tau_ff
    values only. Floating base, contact, whole-body coupling, and safety claims stay out of scope.
  • T2a adds the optional MuJoCo/Rerun closed loop for the existing twin path, and T2b extends it
    to the repository-owned seven-joint fixture without changing the default dependency surface.
  • D1 adds the ST Language Server and thin VS Code client for multi-POU documents; D3 adds the
    online commissioning Scope with threshold capture and PLCT/CSV/HTML export.
  • Z1-Z5 package the five-minute notebook, axis/group SI configuration, Python/C++/ST journeys,
    Conan/vcpkg consumer assets, structured diagnostics, and trace visualization into one consumer
    surface.
  • X5 gives a fixed-ABI Servo IPC contract with setpoint/feedback SPSC, state buffering, and
    explicit lifecycle checks.
  • Y4b, Y7b1, and Y7b2a close the remaining takeover and bridge gaps for linear, circular, and
    plain Cartesian LINE source handling without widening the kinematics ABI.

Compatibility and migration

  • v0.21.0 is still below 1.0. Public changes follow SemVer and are documented, but ABI
    stability is not promised yet.
  • plcopen::plcopen resolves to the rewritten core/ target. Enable the frozen implementation
    explicitly with PLCOPEN_BUILD_LEGACY=ON only when maintaining a migration or replay baseline.
  • Public C++ facades keep snake_case, function-block outputs stay grouped under outputs,
    and applications advance axis/group objects through explicit cyclic calls.
  • The repository keeps a local Conan recipe and a draft vcpkg manifest, but this release does
    not claim publication in ConanCenter or the vcpkg registry.

See the migration guide
for API and runtime-model changes.

Release artifacts

Channel Artifact
GitHub Published source .zip / .tar.gz release for the C++ header-only library, CMake install/export files, local Conan recipe, examples, and documentation: https://github.com/lusipad/plcopen/releases/tag/v0.21.0
PyPI Published pyplcopen==0.21.0 distribution with 20 wheels + 1 sdist, Requires-Python >=3.10: https://pypi.org/project/pyplcopen/0.21.0/

There are no standalone C++ platform installers or shared-library binaries in this release.
The C++ delivery remains source/header-only by design.

Verification snapshot

Final publication and verification are bound to the released assets and the completed CI gates:

Gate Status
Release title / URL Published as v0.21.0 — Motion, Twin & Tooling Closure: https://github.com/lusipad/plcopen/releases/tag/v0.21.0
Final annotated tag Tag object 9985312fd8c862ae435bec28adcd5f2943966288 -> target commit 08d62b1b16e841a88509284b4c8c75d778592efc
Candidate validation commit Candidate closure commit b4f2b87ea7a2cf5bdd0a9ee262dc5ddbcf1ca807
Final main gates Passed on the tag target: Windows 30480823667, Linux 30480823343, Language Tools 30480823421, Twin 30480823345, and Documentation 30480824589
Local build, install, and runtime verification Passed: MSVC Debug 102/102; Release/install/find_package/ST/FetchContent/Python 3/3; RT scan 32 files; replay 18 fixtures / 2409 samples; docs strict 27 paired pages; matrices 49/43/11
Windows CI Passed: run 30479093819
Linux CI Passed: run 30479093300
Language Tools Passed: run 30479093381
Twin integration Passed: run 30479093204
Documentation Passed: run 30479093304 plus local strict builds on 27 paired pages
Wheels candidate pipeline Passed: run 30479097551 (publish intentionally skipped in candidate lane)
Core Nightly Passed: run 30479101207
Coverage Gate Passed: run 30479104454; full-core line coverage 95.3%; motion branch coverage 10319/12138 = 85.014%; ST branch coverage 14811/17423 = 85.008%
Mutation Score Gate Passed: run 30479107617; 20/20 = 100%
Tag-triggered wheels / PyPI publish Passed: run 30496916708 (5/5 green)
GitHub Release Published from the verified annotated tag at https://github.com/lusipad/plcopen/releases/tag/v0.21.0
PyPI publication Published and not yanked: https://pypi.org/project/pyplcopen/0.21.0/
Public cold-user journey Passed: run 30497974380; public wheel notebook, C++ installed package, ST, and documentation entrypoints all green

Known limits

  • This is an embeddable kernel, not a complete PLC IDE or a complete IEC 61131-3 platform.
  • No PLCopen approval, Safety certification, SIL/PL claim, or official logo use is included.
  • No stable ABI, no real-machine 72-hour evidence, and no long-term hardware validation are
    claimed here.
  • H1 q/dq streaming is available, but tau_ff/kp/kd consumption and H3 output integration
    remain gated by T18; those data paths existing in the tree are not approval to consume them.
  • Cartesian Y7b2b remains a no-go; Cartesian ARC/chain/window and dynamic PCS/tracking stay
    separate contracts.
  • EtherCAT product integration and real-bus handshakes remain separate F-track and hardware work
    and are not part of this source/header-only release.
  • ConanCenter and vcpkg central registry publication remains fixed at the released v0.20.0
    line; v0.21.0 does not claim central registry assets yet.

Full engineering record