Releases: open62541/open62541
v1.5.4
This open62541 release v1.5.4 is the fourth maintenance release of the 1.5 release series.
open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
Important changes compared to the previous v1.5.3 release include:
- core: Fix the case where the last chunk may exceed the max message size
- core: Fix QualifiedName_parse when name contains a semicolon
- core: Harden JSON parsing with error and max recursion checks
- core: Allow UA_DateTime_parse without zero termination of the input string
- core: Fix handling some empty elements (e.g. ) in the XML decoding
- core: Handle array length == 0 and calloc returns NULL
- server: Use un/lockServer() for the server-mutex in ua_server_async.c
- server: Always return the correct method call status codes
- server: Avoid stack-use-after-scope in removeCertificate (GDS push)
- server: Check for writing null to non-nullable variable node
- server: Fix missing values below Server object
- server: Always set missing attribute timestamps
- server: Always Add missing but required certificate to endpoints
- server: Re-add MaxMonitoredItemsQueueSize
- server: Mask all detailed certificate validation failures for identity tokens
- server: Reset serverOnNetworkHash hash entry pointer to null to avoid stale references
- server: Increase the number of default MaxContinuationPoints per session to 32
- server: allow removal of CA certificates without valid CRL
- server: Check size of uploaded TrustList in writeTrustList
- server: Correct range check in UA_CAST_SIGNED macro
- server: Allow reading values with uncertain status in readWithReadValue
- server: Return BadWaitingForInitialData for empty non-nullable variables
- server: Correctly guard anonymous-only TransferSubscription path
- server: Allow anonymous subscription transfer on secure channels with matching ApplicationUri
- server: Detach subscriptions on session timeout instead of deleting
- server: Return Bad_WriteNotSupported for StatusWrite/TimestampWrite violations
- server: Enforce AccessLevel StatusWrite and TimestampWrite bits
- client: Add the UA_Client_runUntilInterrupt convenience function
- client: Delete nsMapping on allocation failures during responseReadNamespacesArray
- client: _getRemoteDataTypes() resolves in-call datatype dependencies
- pubsub: Prevent potential double-free in NS0 type destructors
- pubsub: Timeout when disabling all PubSub components
- pubsub: Warn when structure fields with nested strings use RawData encoding
- pubsub: Prevent null pointer dereference in removeGroupAction
- el: Align the lwip EventLoop mutex to the POSIX EventLoop behavior
- el: Improve batching scalability for large numbers of timers
- el: Fix data races in timer implementation
- el: Return on interface being NULL while opening an ethernet connection for POSIX
- deps: Update ua-nodeset submodule to 257db9a
- build: Include missing client symbols in amalgamation without discovery
- build: Fix missing clock implementation in Win32/POSIX compatible amalgamation
- docs: Add documentation of %Q specifier for UA_String_format
- plugins: Add missing ECC security policies
- plugins: Register an InterruptManager by default in the client EventLoop
Diff stat: 141 files changed, 18713 insertions(+), 1307 deletions(-)
Diff stat in /include and /src: 43 files changed, 849 insertions(+), 220 deletions(-)
New features and major changes compared to the previous 1.4 release series include:
- core: JSON de/encoding according to the OPC UA 1.05 specification
- core: XML de/encoding of Variants (also with multi-dimensional arrays) and structure-types
- core: UA_String_format with shorthands to print OPC UA builtin types
- arch: Support for FreeRTOS (using the lwip EventLoop)
- arch: Support for QNX
- arch: Support for Zephyr
- server: Support for "local" Event-MonitoredItems
- server: Extended async operations (read/write/call)
- server: Improved value source API for VariableNodes
- server: Implement CertificateGroup handling
- server: Support for GDS push operations
- client: Transparent mapping between local and remote namespace-indices
- client: Automatically read the NamespaceArray during connect (add to the namespace mapping)
- client: Support for Event-MonitoredItems
- client: All async service APIs are typed
- client: Load DataTypeDefinitions from the server at runtime
- pubsub: Support for manual de/encoding of PubSub messages
- pubsub: Custom state machine for PubSubComponents to integrate communication backends
- pubsub: Public API to compute offset tables for fixed Network-/DataSetMessages
- pubsub: Improved loading of PubSub configurations from a (binary) file
- pubsub: Initial support for SKS
- nodeset-compiler: Use the native XML decoding to parse attributes at runtime
- util: Query language (and parser) for EventFilter, RelativePath, etc.
- util: Convert DataTypeDefinition into UA_DataType (internal representation)
- eventloop: EventLoop can be cancelled to immediately return from a "poll-sleep"
- eventloop: Option to limit the number of sockets open at the same time
- eventloop: Support for lwip-based EventLoop
- plugins: Crypto PKI/SecurityGroup with a file-system storage backend
- plugins: Support for ECC-based SecurityPolicies (OpenSSL only)
- tools: "Shell mode" for the ua-cli terminal client
v1.5.3
This open62541 release v1.5.3 is the third maintenance release of the 1.5 release series.
open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
Important changes compared to the previous v1.5.2 release include:
- core: Support custom datatype namespaces in generate_datatypes.py
- core: Correct UA_WRITEMASK_ARRRAYDIMENSIONS typo to UA_WRITEMASK_ARRAYDIMENSIONS
- arch: Avoid modulo-by-zero in timer batching
- arch: Enable ip_mreqn for IPv4 multicast interface selection on Linux
- server: Handle null-pointer case in processRequest
- server: skip client certificate validation in CreateSession for SecurityPolicy None
- server: Allow Event field names in the kv-map to be not in "normal form"
- server: Don't check the event field existence in the EventType for BaseEventType
- server: Event-fields are looked up as SimpleAttributeOperand without the IndexRange
- server: Support 60+ companion spec models in nodeset injector
- server: Skip HasSubtype check for abstract types in AddNodes
- server: Use correct event field index in notifyMonitoredItem
- server: If the SecureChannel is not encrypted, allow the X509 authentication to be signed without the ApplicationInstanceCertificate in the signing-data
- pubsub: Explicit "injection" of a missing payload-header after decoding the NetworkMessage headers
- client: Fix inverted condition in UA_Client_getNamespaceUri
- client: Enable reception of notifications before CreateMonitoredItems returns
- client: Return the public certificate from the SecurityPolicy as the ApplicationInstanceCertificate
- util: Allow the definition of a default NamespaceIndex when parsing RelativePaths
- nc: Support scalar-to-array wrapping and IRDI types
- plugins: Avoid double fclose in writeByteStringToFile
- plugins: Hide UA_HistoryDatabase when UA_ENABLE_HISTORIZING is disabled
- plugins: Enable parsing Alternative Subject Names for newer mbedtls
- deps: Update ua-nodeset submodule
Diff stat: 124 files changed, 31949 insertions(+), 1043 deletions(-)
Diff stat without unit tests: 58 files changed, 2130 insertions(+), 990 deletions(-)
New features and major changes compared to the previous 1.4 release series include:
- core: JSON de/encoding according to the OPC UA 1.05 specification
- core: XML de/encoding of Variants (also with multi-dimensional arrays) and structure-types
- core: UA_String_format with shorthands to print OPC UA builtin types
- arch: Support for FreeRTOS (using the lwip EventLoop)
- arch: Support for QNX
- arch: Support for Zephyr
- server: Support for "local" Event-MonitoredItems
- server: Extended async operations (read/write/call)
- server: Improved value source API for VariableNodes
- server: Implement CertificateGroup handling
- server: Support for GDS push operations
- client: Transparent mapping between local and remote namespace-indices
- client: Automatically read the NamespaceArray during connect (add to the namespace mapping)
- client: Support for Event-MonitoredItems
- client: All async service APIs are typed
- client: Load DataTypeDefinitions from the server at runtime
- pubsub: Support for manual de/encoding of PubSub messages
- pubsub: Custom state machine for PubSubComponents to integrate communication backends
- pubsub: Public API to compute offset tables for fixed Network-/DataSetMessages
- pubsub: Improved loading of PubSub configurations from a (binary) file
- pubsub: Initial support for SKS
- nodeset-compiler: Use the native XML decoding to parse attributes at runtime
- util: Query language (and parser) for EventFilter, RelativePath, etc.
- util: Convert DataTypeDefinition into UA_DataType (internal representation)
- eventloop: EventLoop can be cancelled to immediately return from a "poll-sleep"
- eventloop: Option to limit the number of sockets open at the same time
- eventloop: Support for lwip-based EventLoop
- plugins: Crypto PKI/SecurityGroup with a file-system storage backend
- plugins: Support for ECC-based SecurityPolicies (OpenSSL only)
- tools: "Shell mode" for the ua-cli terminal client
v1.5.2
This open62541 release v1.5.2 is the second maintenance release of the 1.5 release series.
open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
Important changes compared to the previous v1.5.1 release include:
- server: Don't require the client to send an ApplicationCertificate to decrypt the authentication token
- server: Use the SecurityPolicy of the SecureChannel also for the UserIdentityToken (if not #None)
- deps: Update ua-nodeset submodule to UA-1.05.06-2025-11-08
Diff stat: 40 files changed, 384 insertions(+), 219 deletions(-)
New features and major changes compared to the previous 1.4 release series include:
- core: JSON de/encoding according to the OPC UA 1.05 specification
- core: XML de/encoding of Variants (also with multi-dimensional arrays) and structure-types
- core: UA_String_format with shorthands to print OPC UA builtin types
- arch: Support for FreeRTOS (using the lwip EventLoop)
- arch: Support for QNX
- arch: Support for Zephyr
- server: Support for "local" Event-MonitoredItems
- server: Extended async operations (read/write/call)
- server: Improved value source API for VariableNodes
- server: Implement CertificateGroup handling
- server: Support for GDS push operations
- client: Transparent mapping between local and remote namespace-indices
- client: Automatically read the NamespaceArray during connect (add to the namespace mapping)
- client: Support for Event-MonitoredItems
- client: All async service APIs are typed
- client: Load DataTypeDefinitions from the server at runtime
- pubsub: Support for manual de/encoding of PubSub messages
- pubsub: Custom state machine for PubSubComponents to integrate communication backends
- pubsub: Public API to compute offset tables for fixed Network-/DataSetMessages
- pubsub: Improved loading of PubSub configurations from a (binary) file
- pubsub: Initial support for SKS
- nodeset-compiler: Use the native XML decoding to parse attributes at runtime
- util: Query language (and parser) for EventFilter, RelativePath, etc.
- util: Convert DataTypeDefinition into UA_DataType (internal representation)
- eventloop: EventLoop can be cancelled to immediately return from a "poll-sleep"
- eventloop: Option to limit the number of sockets open at the same time
- eventloop: Support for lwip-based EventLoop
- plugins: Crypto PKI/SecurityGroup with a file-system storage backend
- plugins: Support for ECC-based SecurityPolicies (OpenSSL only)
- tools: "Shell mode" for the ua-cli terminal client
v1.5.1
This open62541 release v1.5.1 is the first maintenance release of the 1.5 release series.
open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
Important changes compared to the previous v1.5.0 release include:
- core: Force nonce generation of at least 32 byte in the SecureChannel
- core: Initialize memory to zero in UA_ByteString_allocMemory
- core: Optimize bitfield size in UA_DataType
- arch: Check return value of getsockname in UDP_registerListenSocket (#7720)
- client: Don't close the SecureChannel when the servers sends a late response
- client: Create a dedicated "UserTokenPolicy" SecurityPolicy instance for authentication
- client: Only allow the config->authSecurityPolicies for certificate-based authentication
- server: Workaround clients using a nonce that is too short but still >= 32 byte
- server: Block transfer subscription between anonymous users
- server: Workaround for clients who don't set the encryption algorithm URI in the UserIdentityToken
- server: Track transferred subscriptions for correct diagnostics counter update
- server: Use constant-time string compare for username/password
- server: For x509 authentication, validate with the "sessionPKI" before going into the AccessControl plugin
- nodeset-compiler: use proper valuerank default if not set
- plugins: Check for correct RSA/ECC local certificate type when initializing the SecurityPolicies
Diff stat: 66 files changed, 1672 insertions(+), 989 deletions(-)
New features and major changes compared to the previous 1.4 release series include:
- core: JSON de/encoding according to the OPC UA 1.05 specification
- core: XML de/encoding of Variants (also with multi-dimensional arrays) and structure-types
- core: UA_String_format with shorthands to print OPC UA builtin types
- arch: Support for FreeRTOS (using the lwip EventLoop)
- arch: Support for QNX
- arch: Support for Zephyr
- server: Support for "local" Event-MonitoredItems
- server: Extended async operations (read/write/call)
- server: Improved value source API for VariableNodes
- server: Implement CertificateGroup handling
- server: Support for GDS push operations
- client: Transparent mapping between local and remote namespace-indices
- client: Automatically read the NamespaceArray during connect (add to the namespace mapping)
- client: Support for Event-MonitoredItems
- client: All async service APIs are typed
- client: Load DataTypeDefinitions from the server at runtime
- pubsub: Support for manual de/encoding of PubSub messages
- pubsub: Custom state machine for PubSubComponents to integrate communication backends
- pubsub: Public API to compute offset tables for fixed Network-/DataSetMessages
- pubsub: Improved loading of PubSub configurations from a (binary) file
- pubsub: Initial support for SKS
- nodeset-compiler: Use the native XML decoding to parse attributes at runtime
- util: Query language (and parser) for EventFilter, RelativePath, etc.
- util: Convert DataTypeDefinition into UA_DataType (internal representation)
- eventloop: EventLoop can be cancelled to immediately return from a "poll-sleep"
- eventloop: Option to limit the number of sockets open at the same time
- eventloop: Support for lwip-based EventLoop
- plugins: Crypto PKI/SecurityGroup with a file-system storage backend
- plugins: Support for ECC-based SecurityPolicies (OpenSSL only)
- tools: "Shell mode" for the ua-cli terminal client
v1.4.16
This is the sixtienth patch release v1.4.16 of the 1.4 release series of open62541.
open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
The important changes compared to the previous release v1.4.15 are:
- server: Block transfer of subscriptions between anonymous users
- server: Track transferred subscriptions for correct diagnostics counter update
- client: Don't close the SecureChannel when the servers sends a late async response
- pubsub: Add null check after UA_Array_new in addDataSetReaderConfig
- pubsub: Prevent NULL dereference in UA_DataSetMessage_decodeBinary
- pubsub: Initialize value in UA_NetworkMessage_decodePayload to avoid undefined behavior
New features and major changes compared to the previous release series 1.3 include:
- core: Switch to an EventLoop model for the control flow
- core: Support for OpenSSL 3.0
- core: Add the Aes256-Sha256-RsaPss security policy
- core: Automatically unwrap ExtensionObject arrays inside UA_Variant
- core: txtime feature for time-based sending of Ethernet packets (Linux only)
- client/server/pubsub: Server, Client and PubSub API are thread-safe with internal locks
- client/server: Private key password protection with a userland callback (client and server)
- client/server: Authentication with x509 certificates (client and server)
- client/server: Support for session-specific server locales (nodes can have localized Description and DisplayName)
- client: Make connection properties in the client accessible via the API
- client: Allow setting a custom SessionName in the client config
- client: Consider the request timeoutHint in synchronous service calls of the client
- server: Implementation of the TransferSubscription and Cancel Service
- server: File-based server configuration using a JSON5 configuration file
- server: Make Session properties in the server accessible via the API
- server: Use an encrypted SecureChannel for registering at a Discovery Server
- server: MonitoredItems with negative sampling interval (linked to the publish interval of the Subscription)
- server: Integration with the NodesetLoader project for runtime parsing and integration of Nodeset XML files
- server: Session and Subscription Diagnostics as part of the server object
- server: Support for the AccessLevelEx attribute
- server: Support for EventFilters
- server: ReverseConnect for the Server
- server: Use config->shutdownDelay delay for the server shutdown
- server: Use dedicate PKI for SecureChannel and Session certificates
- pubsub: Support for the PubSub SKS (Security Key Service)
- pubsub: Support for PubSub UDP Unicast
- pubsub: PubSub StandaloneSubscribedDataSets information model representation
v1.5.0
This release v1.5.0 is the first of the 1.5 release series of open62541.
open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
Important changes compared to the previous v1.5.0-rc2 release candidate include:
- server: Internal getNodeType returns node with only selected attributes and references
- server: Auto-switch from reference arrays to reference trees
- server: Move UA_Node_insertOrUpdateDisplayName/Description into the public Nodestore API
- server: Improve logging of the AddNodes service
- server: The server can load custom datatypes "internally" at runtime
- server: Keep dedicated authentication SecurityPolicy to the Session
- server: Use the session PKI (CertificateGroup) to re-validate the client certificate during CreateSession
- server: use UA_ByteString_memZero to wipe private key
- server: The static rx/tx buffer size from the EventLoop is used for the ConnectionConfig
- client: Use the ApplicationCertificate during CreateSession from the SecurityPolicy that will be used to authenticate in ActivateSession
- deps: Update the nodeset loader to the upstream master
- deps: Fix incorrect padding handling in deps/base64.c
- nodeset-compiler: Generate members array for enum types
- tests: Add fuzzing of PubSub binary NetworkMessage decoding
- tests: Add fuzzing of PubSub JSON NetworkMessage decoding
- build: Enable win32 and posix compatible amalgamation with UA_ARCHITECTURE=none
Diff stat against the previous v1.5.0-rc2: 93 files changed, 3328 insertions(+), 1885 deletions(-)
New features and major changes compared to the previous 1.4 release series include:
- core: JSON de/encoding according to the OPC UA 1.05 specification
- core: XML de/encoding of Variants (also with multi-dimensional arrays) and structure-types
- core: UA_String_format with shorthands to print OPC UA builtin types
- arch: Support for FreeRTOS (using the lwip EventLoop)
- arch: Support for QNX
- arch: Support for Zephyr
- server: Support for "local" Event-MonitoredItems
- server: Extended async operations (read/write/call)
- server: Improved value source API for VariableNodes
- server: Implement CertificateGroup handling
- server: Support for GDS push operations
- client: Transparent mapping between local and remote namespace-indices
- client: Automatically read the NamespaceArray during connect (add to the namespace mapping)
- client: Support for Event-MonitoredItems
- client: All async service APIs are typed
- client: Load DataTypeDefinitions from the server at runtime
- pubsub: Support for manual de/encoding of PubSub messages
- pubsub: Custom state machine for PubSubComponents to integrate communication backends
- pubsub: Public API to compute offset tables for fixed Network-/DataSetMessages
- pubsub: Improved loading of PubSub configurations from a (binary) file
- pubsub: Initial support for SKS
- nodeset-compiler: Use the native XML decoding to parse attributes at runtime
- util: Query language (and parser) for EventFilter, RelativePath, etc.
- util: Convert DataTypeDefinition into UA_DataType (internal representation)
- eventloop: EventLoop can be cancelled to immediately return from a "poll-sleep"
- eventloop: Option to limit the number of sockets open at the same time
- eventloop: Support for lwip-based EventLoop
- plugins: Crypto PKI/SecurityGroup with a file-system storage backend
- plugins: Support for ECC-based SecurityPolicies (OpenSSL only)
- tools: "Shell mode" for the ua-cli terminal client
v1.4.15
This is the fiftienth patch release v1.4.15 of the 1.4 release series of open62541.
open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
The important changes compared to the previous release v1.4.14 are:
- core: Remove usage of the "enc() | enc()" pattern as the order of bitwise ORed method calls is undefined in C
- server: Avoid comparing a scalar value and a null-array when detecting deadband value changes
- client: Add workaround for PEM certificates
- pubsub: Prevent NULL dereference in UA_PubSubDataSetField_sampleValue (#7632)
- plugins: Extend expiresInDays range for OpenSSL cert creation on 32 bit
- nc: Reorder parsing of LocalizedText fields
- build: List private dependencies in .pc file
New features and major changes compared to the previous release series 1.3 include:
- core: Switch to an EventLoop model for the control flow
- core: Support for OpenSSL 3.0
- core: Add the Aes256-Sha256-RsaPss security policy
- core: Automatically unwrap ExtensionObject arrays inside UA_Variant
- core: txtime feature for time-based sending of Ethernet packets (Linux only)
- client/server/pubsub: Server, Client and PubSub API are thread-safe with internal locks
- client/server: Private key password protection with a userland callback (client and server)
- client/server: Authentication with x509 certificates (client and server)
- client/server: Support for session-specific server locales (nodes can have localized Description and DisplayName)
- client: Make connection properties in the client accessible via the API
- client: Allow setting a custom SessionName in the client config
- client: Consider the request timeoutHint in synchronous service calls of the client
- server: Implementation of the TransferSubscription and Cancel Service
- server: File-based server configuration using a JSON5 configuration file
- server: Make Session properties in the server accessible via the API
- server: Use an encrypted SecureChannel for registering at a Discovery Server
- server: MonitoredItems with negative sampling interval (linked to the publish interval of the Subscription)
- server: Integration with the NodesetLoader project for runtime parsing and integration of Nodeset XML files
- server: Session and Subscription Diagnostics as part of the server object
- server: Support for the AccessLevelEx attribute
- server: Support for EventFilters
- server: ReverseConnect for the Server
- server: Use config->shutdownDelay delay for the server shutdown
- server: Use dedicate PKI for SecureChannel and Session certificates
- pubsub: Support for the PubSub SKS (Security Key Service)
- pubsub: Support for PubSub UDP Unicast
- pubsub: PubSub StandaloneSubscribedDataSets information model representation
v1.3.17
This is the seventienth patch release for the 1.3 release family of open62541.
The notable changes in this patch release are:
- fix(server): Avoid comparing a scalar value and a null-array when detecting deadband value changes
- fix(plugins): Use the session parameters feature instead of storing data in the SessionContext
- fix(plugin): fix namelist allocated from scandir not freed
open62541 (http://open62541.org/) is an open source and free implementation of OPC UA (OPC Unified Architecture) written in the common subset of the C99 and C++98 languages. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent. All platform-specific functionality is implemented via exchangeable plugins. Plugin implementations are provided for the major operating systems.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed as part of proprietary software. Only changes to the files of the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
New features compared to the previous release series 1.2 include:
- Support for OPC UA PubSub encryption (also TPM-based key handling)
- Session authentication with x509 certificates (server-side)
- Support for Event Filters
- Support for Server Diagnostics
- Binary/JSON encoding as a stable public API
- Handling of Subscriptions with different priority
- Greatly improved Nodeset Compiler, including support for structure values
- Added UA_order function for all data types (equality test / absolute ordering for binary search trees, etc.)
- Support for TLS-encrypted MQTT-based PubSub
- Internally generate temporary self-signed certificates
Besides the major functional additions, many small features, fixes and general improvements went into this release. Particularly, the memory consumption of the information model was reduced by about 1/3 compared to the 1.2 release series.
Note that the v1.3 release family contains new features compared to v1.0. These have not been part of the certification that was achieved for the example server based on the v1.0 release.
v1.5.0-rc2
This is the second release candidate v1.5.0-rc2 of the 1.5 release series of open62541.
open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
Important changes compared to the previous v1.5.0-rc1 release candidate include:
- core: Add support for C11 thread-local variables
- core: Remove UA_ENABLE_PARSING config; always enable parsing features
- core: Detect more cpu-architectures for fast iee754 decoding
- core: UA_DataType_fromStructureDefinition generates padding faithful to the corresponding C-structures
- arch: Fix IEEE 802.1Q VLAN TCI Creation/Parsing
- server: Identify the SecurityPolicy by the postfix in the UserTokenPolicy
- server: Add UA_NAMESPACE_ZERO=NONE option to support pre-filled Nodestore plugins
- server: Application notification about changes to Sessions / SecureChannels / Subscriptions / MonitoredItems
- client: Cleanup/reorder the client config definition
- client: Add the allowNonePolicyPassword config flag
- util: Provide human-readable names of the SecurityModes and use for logging
- plugins: Modify the SecurityPolicy API to always forward the policy-pointer and the channel context (needed for ECC cleanup)
Diff stat against the previous v1.5.0-rc1: 181 files changed, 9819 insertions(+), 8289 deletions(-)
New features and major changes compared to the previous 1.4 release series include:
- core: JSON de/encoding according to the OPC UA 1.05 specification
- core: XML de/encoding of Variants (also with multi-dimensional arrays) and structure-types
- core: UA_String_format with shorthands to print OPC UA builtin types
- arch: Support for FreeRTOS (using the lwip EventLoop)
- arch: Support for QNX
- arch: Support for Zephyr
- server: Support for "local" Event-MonitoredItems
- server: Extended async operations (read/write/call)
- server: Improved value source API for VariableNodes
- server: Implement CertificateGroup handling
- server: Support for GDS push operations
- client: Transparent mapping between local and remote namespace-indices
- client: Automatically read the NamespaceArray during connect (add to the namespace mapping)
- client: Support for Event-MonitoredItems
- client: All async service APIs are typed
- client: Load DataTypeDefinitions from the server at runtime
- pubsub: Support for manual de/encoding of PubSub messages
- pubsub: Custom state machine for PubSubComponents to integrate communication backends
- pubsub: Public API to compute offset tables for fixed Network-/DataSetMessages
- pubsub: Improved loading of PubSub configurations from a (binary) file
- pubsub: Initial support for SKS
- nodeset-compiler: Use the native XML decoding to parse attributes at runtime
- util: Query language (and parser) for EventFilter, RelativePath, etc.
- util: Convert DataTypeDefinition into UA_DataType (internal representation)
- eventloop: EventLoop can be cancelled to immediately return from a "poll-sleep"
- eventloop: Option to limit the number of sockets open at the same time
- eventloop: Support for lwip-based EventLoop
- plugins: Crypto PKI/SecurityGroup with a file-system storage backend
- plugins: Support for ECC-based SecurityPolicies (OpenSSL only)
- tools: "Shell mode" for the ua-cli terminal client
v1.4.14
This is the fourtienth patch release v1.4.14 of the 1.4 release series of open62541.
open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
The important changes compared to the previous release v1.4.13 are:
- core: Ensure that only quiet NAN are used for float/double
- server: Check access rights for async method execution
- server: Check the NodeClass before processing an async method
- client: Remove memleak in async processing
- client: use after free in client asyncServiceCalls
New features and major changes compared to the previous release series 1.3 include:
- core: Switch to an EventLoop model for the control flow
- core: Support for OpenSSL 3.0
- core: Add the Aes256-Sha256-RsaPss security policy
- core: Automatically unwrap ExtensionObject arrays inside UA_Variant
- core: txtime feature for time-based sending of Ethernet packets (Linux only)
- client/server/pubsub: Server, Client and PubSub API are thread-safe with internal locks
- client/server: Private key password protection with a userland callback (client and server)
- client/server: Authentication with x509 certificates (client and server)
- client/server: Support for session-specific server locales (nodes can have localized Description and DisplayName)
- client: Make connection properties in the client accessible via the API
- client: Allow setting a custom SessionName in the client config
- client: Consider the request timeoutHint in synchronous service calls of the client
- server: Implementation of the TransferSubscription and Cancel Service
- server: File-based server configuration using a JSON5 configuration file
- server: Make Session properties in the server accessible via the API
- server: Use an encrypted SecureChannel for registering at a Discovery Server
- server: MonitoredItems with negative sampling interval (linked to the publish interval of the Subscription)
- server: Integration with the NodesetLoader project for runtime parsing and integration of Nodeset XML files
- server: Session and Subscription Diagnostics as part of the server object
- server: Support for the AccessLevelEx attribute
- server: Support for EventFilters
- server: ReverseConnect for the Server
- server: Use config->shutdownDelay delay for the server shutdown
- server: Use dedicate PKI for SecureChannel and Session certificates
- pubsub: Support for the PubSub SKS (Security Key Service)
- pubsub: Support for PubSub UDP Unicast
- pubsub: PubSub StandaloneSubscribedDataSets information model representation