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.0Published 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 defaultplcopen::plcopenconsumer target.
The previoussrc/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. pyplcopensimulations 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.0remains below 1.0. Public changes follow SemVer and are documented,
but ABI stability is not promised yet.plcopen::plcopennow resolves to the new header-onlycore/target. Enable
the frozen implementation explicitly withPLCOPEN_BUILD_LEGACY=ONonly
when maintaining a migration or replay baseline.- Public fields in the new C++ facades use
snake_case, function-block outputs
are grouped underoutputs, 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.