Skip to content

v0.20.0 — New Core & Deterministic ST Runtime

Latest

Choose a tag to compare

@lusipad lusipad released this 20 Jul 01:34
7788a85

plcopen v0.20.0

v0.20.0 is the first formal pre-1.0 checkpoint built around the rewritten
core/ runtime. It packages the C++17 header-only motion kernel, the
motion-oriented IEC 61131-3 ST runtime, and the Python simulation facade as one
versioned release for evaluation, integration, and simulation.

This is still a pre-1.0 release. It does not claim a stable ABI, PLCopen or
Safety certification, or production validation on real machinery.

Install

C++ with FetchContent

include(FetchContent)
FetchContent_Declare(
  plcopen
  GIT_REPOSITORY https://github.com/lusipad/plcopen.git
  GIT_TAG v0.20.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)
is also supported.

Python

pip install pyplcopen==0.20.0

Published wheels cover CPython 3.10-3.13 on Windows, manylinux x86_64, and
macOS x86_64/arm64. An sdist is provided for other supported source-build
environments.

What users get

  • A C++17 header-only motion-control kernel with deterministic cyclic
    execution, jerk-limited online trajectory generation, fixed-time solving,
    blending/look-ahead, gear/cam, Cartesian motion, coordinate systems,
    kinematics, and trajectory streaming.
  • The rewritten core/ tree as the default plcopen::plcopen consumer target.
    The previous src/ implementation remains available only as an opt-in,
    P0-only migration and replay baseline.
  • PLCopen-style software surfaces covering Part 1 single-axis motion, 68/68
    Part 4 same-name facades, and 11/11 Part 5 homing and online-reference
    function blocks. Unsupported modes and formal declaration gaps remain
    explicit instead of silently degrading.
  • A deterministic, motion-oriented IEC 61131-3 ST compiler and bytecode VM.
    The declared L0-L7 and L-all feature set contains 134 standard function
    blocks and 1,476 pins with no pending native-adapter entries.
  • pyplcopen simulations for single-axis motion, trajectory streams,
    PoseArmSim, cam-table generation, and SI-unit cycle configuration.
  • A reference planning-to-committed-trajectory-to-RT executor, replay fixtures,
    cycle traces, RT-safety checks, diagnostics, and production integration
    guides.

Compatibility and migration

  • v0.20.0 remains below 1.0. Public changes follow SemVer and are documented,
    but ABI stability is not promised yet.
  • plcopen::plcopen now resolves to the new header-only core/ target. Enable
    the frozen implementation explicitly with PLCOPEN_BUILD_LEGACY=ON only
    when maintaining a migration or replay baseline.
  • Public fields in the new C++ facades use snake_case, function-block outputs
    are grouped under outputs, and applications advance axis/group objects with
    explicit cyclic calls.
  • The repository contains 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 Automatically generated source .zip and .tar.gz containing the C++ header-only library, CMake install/export files, local Conan recipe, examples, and documentation
PyPI CPython 3.10-3.13 wheels for Windows and manylinux x86_64
PyPI CPython 3.10-3.13 macOS wheels for x86_64 and arm64
PyPI pyplcopen-0.20.0 source distribution

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

Verification snapshot

The release candidate was frozen and verified on commit
5a5cf81.
The later release-documentation changes do not modify the runtime, package
version, or build contract.

Gate Result
Windows CI Passed
Linux GCC, Clang, and ARM64 CI Passed
Windows, Linux, macOS wheels and sdist Passed; publish step intentionally skipped on the non-tag candidate run
Core Nightly 7/7 jobs passed, including fuzz and sanitizer/TSAN lanes
Coverage Full-core line 95.5%; production motion-stack branch 85.0%; ST branch 85.1%
Mutation score 20/20 registered mutations killed
Documentation Strict build and deployment passed
Local release gate 91/91 CTest entries, 27-file RT scan, and 18 replay fixtures / 2,409 samples passed

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.
  • EtherCAT product integration, real-machine 72-hour evidence, and long-term
    hardware validation remain open work.
  • The Feetech adapter is a protocol layer and simulator without production IO;
    dynamic units and some status bits still require official-source and
    real-device validation.
  • vcpkg/ConanCenter registry publication and stable ABI/LTS commitments remain
    out of scope for this checkpoint.

Full engineering record