Adapt the 1.5 fixes to master's discovery, alarms and conditions, session, and nodeset-loader architecture. Preserve master behavior and combine PubSub replay protection with authenticated key rollover. Enable allocation-failure regression coverage and retain both branches' relevant tests.
Enable allocator hooks in the alarms coverage configuration and cover history constructor and insertion failures. Include stdlib.h explicitly in tests that use EXIT_SUCCESS and EXIT_FAILURE so the allocator-enabled build compiles without transitive standard-library includes.
ci_server runs as PID 1 and only handles SIGINT. docker stop sent SIGTERM,
which PID 1 ignores without a handler, so the container was killed without
the shutdown delay.
Expose one file or directory backend through FileType and FileDirectoryType
Objects. Bind Objects to the driver lifetime, preserve reused application
nodes, and close session handles on stop or session cleanup.
Enforce file and directory access rights in Properties and Methods. Index
entries and handles with zip trees, reconcile storage changes, and retain
removed entries while their handles remain open. Include the reduced
namespace model and compile the driver with Method-call support in every
Namespace Zero configuration. Export the API unconditionally.
Co-authored-by: Julius Pfrommer <julius.pfrommer@o6-automation.com>
Fix misspellings found with codespell across headers, sources, examples,
tests and the documentation, including "propably" in the nodeset
compiler docs. Identifiers, companion spec names and generated code are
left untouched.
UA_MULTITHREADING=0 is supported and the default on targets that are neither UNIX nor WIN32,
but no job built it. Mirrors unit_tests_mt with a different value, on ubuntu-24.04 only to
keep the CI cost low.
The PubSub encryption and SKS jobs take the backend as argument and run
with OpenSSL as well. The release amalgamation build drops the removed
UA_ENABLE_PUBSUB_ENCRYPTION flag.
Run CTest with the network privileges required by the Ethernet suites rather
than attaching file capabilities to every sanitizer executable. Pass
TSAN_OPTIONS after sudo and preserve the configured Ethernet interface.
Retain race detection and the existing exception for the recursive-lock
ordering heuristic.
Enable multithreading and the normal unit-test feature set. Build all targets and run unfiltered
CTest sequentially, failing on race reports. Keep the existing lock-order heuristic exception for
recursive locks under the common EventLoop lock.
Compute the end year of the copyright range when the amalgamation is
generated instead of hardcoding it, so it cannot go stale again. Honor
SOURCE_DATE_EPOCH so that reproducible builds still get a stable header.
The header credited "the contributors as stated in the AUTHORS file", but
no AUTHORS file exists anywhere in the tree, and the year range stopped at
2021. Name the contributors directly and point at the per-file copyright
headers, which the amalgamation already reproduces in full.
* feat(core): make UA_DataTypeArray.types and UA_DataType.members const
Keep generated definitions read-only and populate dynamically allocated definitions through mutable pointers. Preserve self references when copying and registering runtime types.
* feat(nc): generate const DataType arrays for pinned namespace indices
NAMESPACE_MAP bakes in the indices; incomplete or invalid maps are rejected.
* test(nc): cover const DataType arrays and the namespace-order check
Pins DI at index 2 and asserts both outcomes of the generated runtime check.
* test(nodeset-loader): verify compatibility with const datatype arrays
Compare binary and XML encoding IDs with generated DI types. Verify that the in-tree loader reuses registered const types while adding runtime recursive types, including server cleanup.
* fix(nc): validate pinned namespaces independently of array names
Emit URI/index metadata for const type arrays and verify every contributing namespace before registering arrays or nodes. Support arrays spanning multiple namespaces and explicit TYPES_ARRAY names.
Keep datatype indices consecutive across namespaces and reject pins outside the UInt16 range. Add compiled regressions for matching, swapped, and individually shifted namespaces with conventional and independent nodeset names.
* fix(nc): reject conflicting pins for the same namespace
Move the Valgrind jobs into a dedicated workflow and shard the unit
test runs round-robin over six runners via CTEST_SHARDS/CTEST_SHARD.
Share the common Linux job setup through a composite action.
Upgrades Alpine base image, enables 'UA_ENABLE_DRIVER_GDS_RECEIVER' and 'UA_ENABLE_RBAC' in CMake, corrects Alpine library install path to '/usr/local/lib', and introduces 'entrypoint.sh' to dynamically provision SANs or load GDS-pushed certs on startup.
Add an opt-in server setting that materializes Method declarations for each Object instance instead of sharing the ObjectType Method node. Per-instance Method nodes can then carry independent runtime state while the default behavior remains compatible.