Repository navigation
Releases
2.0.2
Breaking changes
NodeManager lifetime redesign (#4982):
Adding, reloading and removing NodeManagers now goes through INodeManagerLifecycle.ApplyAsync(LifecycleChange…) / BeginAsync → PrepareAsync → CommitAsync. The old batch and replace members are [Obsolete].
Each request, MonitoredItem and continuation point is tied to one generation. BrowseNext returns BadContinuationPointInvalid once that generation is retired.
IBrowseContinuationDependencies / TryGetContinuationDependencies were removed.
Sensitive data in logs is classified (#4864). A plain ILoggerFactory now logs (null) for classified values; call EnableOpcUaRedaction() if you set up logging yourself. Redact, RedactionWrapper, IRedactionStrategy, RedactionStrategies and SimpleRedactionStrategy were removed.
Program state numbers follow the standard (#4789): Halted=11, Ready=12, Running=13, Suspended=14 (they were 4, 1, 2, 3).
Server no longer changes the process ThreadPool (#4917). It used to raise the minimum to MinRequestThreadCount. Hosts whose node managers block threads should set ThreadPool.SetMinThreads themselves. SharedOnly requests now run on concurrency permits (#4919).
Reconnect fails rather than changing security (#4809). If the original security mode/policy is no longer offered, SessionReconnectHandler and ManagedSession reject the endpoint instead of falling back to another one.
Request queue time counts against TimeoutHint, and a full queue sends retry-after (#4918).
Deprecations (still work, warning CS0618)
FastDataChangeCallback, FastEventCallback, FastKeepAliveCallback and ISession.DefaultSubscription are obsolete. Use ISubscriptionNotificationHandler with ISubscriptionManager.Add.
ISession.PublishSequenceNumbersToAcknowledge is obsolete. Use AcknowledgementMode.AfterConfirmation / ISubscriptionAcknowledgementProvider (#4899).
AddAutoIdToMachinery is obsolete; use AddAutoIdModel, part of the shared DI companion composition (#4915).
Major additions
Client:
Redundancy driven by ServiceLevel, including over Reverse Connect (#4884, #4885).
Managed recovery over reverse connections that the application supplies (#4883).
Session takeover (#4900).
Opt-in AllowUnencryptedUserNameTokens for legacy devices (#4910).
Server:
Async setters for condition and alarm states. Subclasses that customize a setter must also override its …Async counterpart (#4992).
OPC 10000-10 Programs (#4789).
OPC 10000-22 Base Network Model (#4990).
Performance: large throughput and allocation gains on the request, publish, event and data-change paths, on both server and client (#4742, #4748, #4782, #4812, #4845, #4859, #5009, #5015, among others).
New companion SDKs: AutoID, LADS, Pumps, MachineTool/WMTP/GMS/CranesHoists, Machine Vision, Recycling/PlasticsRubber, PA-DIM, ECM, AMB health, the Industrial Automation runtimes, and WoT runtime/binding.
Tooling: UaLens desktop workspace (#4822) and JWT login for the MCP server (#4933).
Tests moved to NUnit 5 (#4840; does not affect consumers).
What's Changed
- Advance master to 2.0.2-preview by @romanett in #4741
- Client/transport: one recv per small chunk, ManagedSession lock fast path, write coalescing by @romanett in #4737
- Complete each pooled service response at most once (#4729) by @romanett in #4736
- Fix concurrent session creation on a shared ClientChannelManager channel by @romanett in #4739
- Add Machine Vision Parts 1 and 2 by @marcschier in #4733
- Server: remove the server-wide locks from the request pipeline, bounded transport buffer pool by @romanett in #4742
- Server quick wins from the o6 benchmark gap analysis: admission sizing, sampling permission cache, routed Read dispatch by @romanett in #4743
- Fix managed-channel certificate ownership on early create failure by @marcschier in #4745
- Fix cache invalidation after accepted async indexed writes by @marcschier in #4746
- Server publish path: no deep clone per Publish, pooled notifications that are actually reused, ready list instead of an O(N) scan by @romanett in #4748
- Add complete method invocation results and resolved diagnostics by @marcschier in #4747
- Make request cancellation own exactly one terminal state by @marcschier in #4744
- Capture metadata images and generation-bound session clients by @marcschier in #4752
- Fix the Sessions LoadTest fixture and the server bottlenecks it exposed by @romanett in #4749
- Server: cheaper symmetric crypto path, FairRequestQueue without a queue-wide lock by @romanett in #4750
- Server: no server-wide or per-session locks in per-request session validation by @romanett in #4753
- CI: CTT regression runs, weekly and on PRs labelled 'ctt' by @romanett in #4760
- XRegistry: trusted logical-Resource federation identity by @marcschier in #4755
- XRegistry: registration lifecycle, identifier allocation, registrar roles and atomic Resource replace by @marcschier in #4756
- Tests: weighted FairRequestQueue test asserts the median of three windows by @romanett in #4763
- CTT reference server: faster alarm cycle in --ctt mode, MinSubscriptionLifetime 1000 ms by @romanett in #4766
- Add additional companion spec MCP tool profiles by @marcschier in #4731
- Server: remove per-request context copies and lock hot spots from the request path (−16 % allocation per Read) by @romanett in #4767
- Fix managed browse closed-channel and cancellation handling by @cristipogacean in #4774
- Restore monitoring for survivors of partial node deletion by @cristipogacean in #4776
- Preserve NodeVersion eligibility when deleting runtime nodes by @cristipogacean in #4777
- ManagedSession: skip redundant outer reconnect after channel-manager recovery (fixes BoundClientCannotRetryAcrossFaultedManagedEntryReplacementAsync flake) by @romanett in #4781
- Server: release the HTTPS listener's pinned TLS certificate when it fails to open by @romanett in #4775
- Quickstarts alarms: report one event per Enable instead of two by @romanett in #4780
- Channel send path: seal responses in the writer, lock-free gate, fewer locks and allocations per request by @romanett in #4782
- Complete model-change reporting for committed node deletions by @cristipogacean in #4778
- Remove experimental markers from type interfaces by @marcschier with @Copilot in #4785
- Add recycling simulator and plastics/rubber companion packages by @marcschier in #4772
- Server: make TrustList.ValidateNewTrustListAsync public by @wolfgangcolsman in #4799
- Implement OPC UA Part 10 Programs by @marcschier in #4789
- Client: make the UaFileInfo constructor public by @wolfgangcolsman in #4790
- Extract core/types fixes for schemas, replay, and source generation by @marcschier in #4801
- Server: confirm unchanged isolation classifications at dispatch without the full lookup by @romanett in #4787
- TCP listener: complete requests without an async state machine per request (R7) by @romanett in #4788
- PubSub server: organize PublishedDataSets under PublishSubscribe.PublishedDataSets by @wolfgangcolsman in #4793
- Server request path: no large struct copies, slim per-request system context, no string table per request (R2, R5) by @romanett in #4805
- Add MachineTool, WMTP, GMS and CranesHoists companions by @marcschier in #4765
- Client/server transfer, WSS, and hosting fixes by @marcschier in #4802
- PKCS#11 store: write and delete certificate objects on the token by @wolfgangcolsman in #4792
- Fail closed when reconnect cannot preserve endpoint security by @marcschier in #4809
- AMB: add bounded strict reads and configurable sample hosting by @marcschier...
OPC UA 1.05 Maintenance Update
Maintenance Release for fixing bugs found on the main378 development branch.
Released packages
OPCFoundation.NetStandard.Opc.Ua
OPCFoundation.NetStandard.Opc.Ua.Core
OPCFoundation.NetStandard.Opc.Ua.Security.Certificates
OPCFoundation.NetStandard.Opc.Ua.Configuration
OPCFoundation.NetStandard.Opc.Ua.Server
OPCFoundation.NetStandard.Opc.Ua.Client
OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes
OPCFoundation.NetStandard.Opc.Ua.Bindings.Https
OPCFoundation.NetStandard.Opc.Ua.PubSub
What's Changed
- [master378] Align session token, client channel policy check and identity token errors with the spec by @romanett in #4665
- [master378] Secure channel: never answer with an expired token; accept a just-expired one by @romanett in #4701
- [master378] [CTT] Fix application certificate renewal to use configured trust stores by @mrsuciu in #4678
- [master378] Complete each incoming request exactly once on server stop (#4729) by @romanett in #4738
- [master378] [CTT] Enforce session history continuationpoint limit by @mrsuciu in #4862
- [master378][CTT] History read: reject “read modified” requests that also ask for bounds by @mrsuciu in #4888
- [master378] CTT CI: trigger the private CTT run for the 1.5.378 line by @romanett in #4928
- [master378][CTT] Fix connection failure with Basic128Rsa15: session nonce too short by @mrsuciu in #4904
- [master378] Fix CTT Auditing Connections: event queueSize 0/1 (backport #4480) and OpenSecureChannel ClientAuditEntryId by @romanett in #4932
- [master378] Evict only the excess sent messages when the retransmission queue is full by @cdeom in #4920
- [master378] [CTT] Server: send RefreshRequired after an event queue overflow that lost Condition events by @mrsuciu in #4925
- [master378] Fix flaky GDS push and Server ResendData tests by @romanett in #4926
- [master378] Reference server: offer every user token type on every endpoint by @romanett in #4975
- [master378] Fix RequestQueue disposing resources still used by its workers by @romanett in #5012
- [master378] Prepare release by @mrsuciu in #5050
New Contributors
Full Changelog: 1.5.378.182...1.5.378.196
2.0.1
Breaking changes
SecureChannelContext certificates are now ByteString. ClientChannelCertificate, ServerChannelCertificate and ChannelThumbprint changed from byte[] to read-only ByteString views. Check .IsNull instead of comparing to null, and use .Span / .Memory.
Empty LocalizedText is null. Locale and Text return null instead of "", and new LocalizedText(string.Empty) is the null value. Code comparing Text == string.Empty needs a null-aware check (#4709).
Nullable reference types are on in every project (#4700). Public APIs now carry nullability annotations, so consumers who use nullable will see new warnings.
Stricter security:
A secure channel never answers with an expired token (#4698).
Anonymous requests without a session must use the channel security of CreateSession (#4689).
UADP DataSetMetaData announcements are refused on secured connections (#4712).
Major changes
ECC and AES-GCM/ChaCha20-Poly1305 security policies work on .NET Framework 4.8 through BouncyCastle (#4703, #4705). Under FipsOnly these policies are withheld on net48.
Servers can start in globalization-invariant mode (#4716).
Faster server request path and client (#4707, #4715, #4720): fewer lock conflicts and allocations, plus a new load harness.
What's Changed
- Update code-style agent guidance for CodeAnalysisTreatWarningsAsErrors=true by @romanett in #4690
- Number commit-id-only prerelease previews 0 so they never outrank a release by @romanett in #4692
- GDS: pin SecurityAdmin-only delivery of ApplicationRegistrationChangedAuditEvents; document CTT defect C57 by @romanett in #4693
- Cut CI runner minutes: duration-packed test batches, CodeQL on Linux/daily, cancellable branch packing by @romanett in #4694
- Server: hold anonymous session-less requests to the channel security of CreateSession by @biancode in #4689
- Release: stop retrying 404s in the feed gates; keep GitHub Release notes under the size limit by @romanett in #4696
- Fix CI test flakes: WotCon end-to-end timeout and HTTPS listener port race by @romanett in #4697
- Secure channel: never answer with an expired token; accept a just-expired one (+ labelled soak/stress CI) by @romanett in #4698
- WebApi: apply the REST auth opt-ins to the opcua+openapi WebSocket upgrade by @romanett in #4699
- Enable nullable reference types centrally; migrate all unset and annotations-only projects by @romanett in #4700
- Aggregates: TreatUncertainAsBad never applies to bounding values; DurationGood/Bad count Good/Bad regions only by @romanett in #4702
- Enable ECC security policies on net48 via a BouncyCastle raw-ECDH polyfill by @romanett in #4703
- Redundancy.Server session mirroring: fix fast reconnect lifecycle (#4627) by @romanett in #4704
- WoT: move GeneratesEvent off Object instances (OPC 10000-3 §7.15) by @romanett in #4706
- Enable AES-GCM and ChaCha20-Poly1305 policies on net48 via BouncyCastle (stacked on #4703) by @romanett in #4705
- Tests: scope MeterListeners to the meter under test (fix flaky ClientBaseTests metrics test) by @romanett in #4708
- Server: cut request-path lock contention and allocation; add load harness by @romanett in #4707
- Avoid boxing and per-value copies on encoder, enum and server hot paths by @romanett in #4715
- Update the guides and the MCP server docs for the 2.0.0 release by @marcschier in #4713
- Use a 4-byte KeyNonce in the reference PubSub sample by @marcschier in #4710
- Let servers start in globalization-invariant mode by @marcschier in #4716
- Send UDP multicast on the network interface the transport joins by @marcschier in #4711
- Reset the push coordinator after each PushComplianceRegressionTests test by @marcschier in #4719
- Secure the UADP DataSetMetaData announcement on secured connections by @marcschier in #4712
- Dispose the certificate leaked by PushComplianceTests by @marcschier in #4721
- Make the encoder stack-depth tests hold on a reused thread stack by @marcschier in #4722
- Fix scoped certificate-store resolution in GDS push operations by @cristipogacean in #4726
- Fail CI when a test fixture's setup or teardown fails by @marcschier in #4723
- Fix empty LocalizedText binary field encoding by @cristipogacean in #4709
- Fix stress Contract/Integration failures and run them in stress-test.yml by @romanett in #4718
- Client: cut per-request allocation and CPU in the channel and session; measure the client in the load harness by @romanett in #4720
- Test that a secured connection refuses its JSON metadata announcement by @marcschier in #4724
- Add README status badges for scheduled CI workflows by @romanett with @Copilot in #4734
- Merge master into release/2.0 and set version 2.0.1 by @romanett in #4740
Full Changelog: 2.0.0...2.0.1
OPC UA 2.0.0
See WhatsNewIn2.0.md
What's Changed
- Immutable built in types and code generation by @marcschier in #3534
- Replace all use of object in code and API with Variant by @marcschier in #3550
- [Server] Implement Client Lockout by @romanett in #3549
- Use Interfaces Introduced with 1.5.378 by @romanett in #3551
- Add possibility for Sub-CA to be revoked, Removed auto-creation of empty crl for revokecertificate call with CA by @KircMax in #3547
- fix: Subscription diagnostic nodes not deleted when disabling diagnostics by @RicoSuter in #3559
- Fix TcpTransportListener resource leak in ServerBase.StopAsync by @RicoSuter in #3561
- [Server] Refactor CoreNodeManager to be based on CustomNodeManager2 by @romanett in #3558
- Fix memory leaks in server disposal by @RicoSuter in #3560
- [Server] Add INodeManager3 with role permission validation. Improve MonitoredNode Datastructures & Locks by @romanett in #3553
- [Server] Implement AsyncCustomNodeManager by @romanett in #3563
- Move version to 1.6 and enable preview build by @marcschier in #3575
- Use InternalsVisibleTo in csproj instead of attribute in assmbly.cs to support signing. by @marcschier in #3577
- [Server] Optimize NodeState.ReadAttributes & base ReferenceNodeManager on AsyncCustomNodeManager by @romanett in #3574
- [Server] Implement smaller Performance improvements found when profiling by @romanett in #3584
- [Server] Implement event-driven RolePermissionsValidation caching in MonitoredNode2 by @romanett with @Copilot in #3583
- [Client] Fixed freezing of Subscription with sequential publishing by @AnatolyKochnev in #3565
- Refactor MonitoredItem.ValueChanged & cert validation for better perf & scalability by @romanett in #3592
- [GDS] Allow Global Discovery Server to Work with Custom Certificate Groups by @romanett with @Copilot in #3589
- fix client session error code for Endpoint does not support usertoken - BadIdentityTokenInvalid instead of rejected by @KircMax in #3591
- Add Testcase for EncodeDataValueWithoutValueProperty by @KircMax in #3579
- Fix non enumerable generic type info construction by @JMolenkamp in #3597
- [Server] Implement DiagnosticsNodeManager using AsyncCustomNodemanager by @romanett in #3595
- reuse usertokenpolicy used in connect for Reconnect / "ReactivateSession" by @KircMax in #3581
- [Server] Use HiResClock for time interval calculations to avoid system clock sensitivity by @romanett with @Copilot in #3594
- Fix numeric range equality by @JMolenkamp in #3600
- Update build configuration to latest by @marcschier in #3607
- Fix memory leak from undisposed sockets and event handler retention during server restart by @RicoSuter in #3608
- New Json decoder/encoders, array/matrix abstractions, ByteString, and more. by @marcschier in #3619
- fix(SubscriptionManager): replace List with ConcurrentDictionary for abandoned subscriptions (#3617) by @cristipogacean in #3618
- Code cleanup and modernization of test assertions to comply with project standards. by @marcschier in #3631
- Fix missing FactoryBuilder.Commit() in dictionary-based complex type loading paths by @marcschier with @Copilot in #3630
- [Server] Improve Request Queue, fix Event handling, add Tests by @romanett in #3611
- Add support for certificate based MQTT authentication by @jnsjll in #3610
- Consider WriterGroups in MQTT KeepAlive calculation by @jnsjll in #3616
- Use the cancelation token in frameworks where available by @gailjkm in #3636
- Bump NUnit3TestAdapter from 6.1.0 to 6.2.0 by @dependabot[bot] in #3634
- [Server] Introduce RequestLifetime for request handling and cancellation by @romanett in #3643
- Bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #3645
- Add unit tests for Server Subscription and Session handling by @romanett with @Copilot in #3639
- Add tests for ServerBase with multiple IP addresses on the same port & improve CI Stability by @romanett with @Copilot in #3650
- [Server] Assign TrustedApplication role automatically per OPC UA Part 3 4.9 Roles by @romanett with @Copilot in #3652
- Enhance role-based access control and add permission tests by @romanett in #3653
- Improve runtime of Client Tests via fixture-level parallelization and fix parallel test isolation by @romanett with @Copilot in #3655
- Add support to publish OPC UA applications as Native AOT by @marcschier in #3633
- Increase code coverage across solution by @marcschier in #3662
- docs: document three approaches for decoding ComplexTypes from OPC UA servers by @marcschier with @Copilot in #3664
- Support UANodeset export / import under AOT by @marcschier in #3667
- Fixed timer leaks in ChannelAsyncOperation.EndAsync by @KarenKrill in #3669
- Secure channel enhancements 2025 11 (Take 3) by @marcschier in #3665
- Enable dispose analyzers CA2000 and CA2213 and fix all issues by @marcschier in #3670
- Add structure-backed OptionSet DataType support in ComplexTypeSystem by @marcschier in #3672
- Fix source generator generated structures with optional fields by @marcschier in #3674
- Replace session state encoder with IEncodable generation using source generators by @marcschier in #3673
- Remove duplicate GDS type registration commit in server startup path by @marcschier with @Copilot in #3676
- XmlDecoder/XmlParser: throw BadDecodingError for empty/non-element enumerated arrays by @marcschier with @Copilot in #3677
- Fix boolean default should be false instead of true by @marcschier in #3679
- Update SourceGenerator dependencies resolution mechanism. by @randy-armstrong in #3680
- [Server/Client] Support RSAEncryptedSecret format and unify EncryptedSecret RSA/ECC API with legacy .NET and test compatibility by @marcschier with @Copilot in #3678
- Fix: Cannot call method within the ObjectType of the objectId by @romanett with @Copilot in #3692
- Generate type safe (method) proxies for ObjectTypes inside models by @marcschier in #3685
- [PubSub] Fix exceptions logged on graceful MqttPubSubConnection stop by @romanett with @Copilot in #3691
- Model dependency annotations using source generator + flaky test fixes by @marcschier in #3687
- Add a fluent api for server, a sample and generate node managers to use with it. by @marcschier in #3684
- Add tests to check cp is empty and is empty behave the same by @marcschier in #3703
- Add a MCP server that enables LLM/Copilot to be a OPC UA client by @marcschier in https://github.com/OPCFoundation/U...
OPC UA 1.05 Maintenance Update
Maintenance Release for fixing bugs found on the main378 development branch.
Released packages
OPCFoundation.NetStandard.Opc.Ua
OPCFoundation.NetStandard.Opc.Ua.Core
OPCFoundation.NetStandard.Opc.Ua.Security.Certificates
OPCFoundation.NetStandard.Opc.Ua.Configuration
OPCFoundation.NetStandard.Opc.Ua.Server
OPCFoundation.NetStandard.Opc.Ua.Client
OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes
OPCFoundation.NetStandard.Opc.Ua.Bindings.Https
OPCFoundation.NetStandard.Opc.Ua.PubSub
What's Changed
- Remove unused fields from ReferenceNodeManager by @mrsuciu in #4472
- Master378 fix incomplete message buffering by @mrsuciu in #4550
- Fix ServerConfiguration URI values for CTT push-management checks by @mrsuciu in #4592
- Bound nested array preallocation, XML depth and inbound PubSub metadata by @romanett in #4603
- Fix queued data delivery after durable subscription transfer by @mrsuciu in #4622
- Fix GDS client deadlock after a failed keep-alive by @romanett in #4623
- merge Master378 to release by @romanett in #4628
Full Changelog: 1.5.378.176...1.5.378.182
OPC UA 1.05 Maintenance Update
Maintenance Release for fixing bugs found on the main378 development branch.
Released packages
OPCFoundation.NetStandard.Opc.Ua
OPCFoundation.NetStandard.Opc.Ua.Core
OPCFoundation.NetStandard.Opc.Ua.Security.Certificates
OPCFoundation.NetStandard.Opc.Ua.Configuration
OPCFoundation.NetStandard.Opc.Ua.Server
OPCFoundation.NetStandard.Opc.Ua.Client
OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes
OPCFoundation.NetStandard.Opc.Ua.Bindings.Https
OPCFoundation.NetStandard.Opc.Ua.PubSub
What's Changed
- Fix publish queue lost wake-up by @marcschier in #4017
- Obsolete legacy TraceConfiguration in favor of ITelemetryContext by @marcschier with @Copilot in #4090
- Preserve publish queue timestamp ordering by @marcschier with @Copilot in #4084
- Fix BadContinuationPointInvalid caused by empty continuation point in Browser.BrowseAsync by @marcschier in #4168
- Add documentation for custom NodeSet2 authoring workflow by @romanett with @Copilot in #4170
- Fixed timer leaks in ChannelAsyncOperation.EndAsync (#3669) by @KarenKrill in #4166
- Treat zero MaxNotificationsPerPublish as unlimited (OPC 10000-4) by @romanett in #4263
- fix(server): enforce browse continuation point limit at capacity (#4036) by @romanett in #4270
- Fix unordered server endpoint validation (#4029) [backport to master378] by @romanett in #4269
- fix: don't return continuation points on BadNoContinuationPoints (#4022) [backport to master378] by @romanett in #4268
- fix: scope Cancel request matching to the current session (#4023) by @romanett in #4267
- Set ContinuationPoint to null when browse is finished (port of #4057) by @romanett in #4266
- Default TransportQuotas in ApplicationConfiguration.ValidateAsync to prevent server-start NullReferenceException (backport to master378) by @romanett in #4264
- Fix ServerTimestamp update on read of stored/static nodes (#4257) by @romanett in #4260
- Fix reverse connect hold time when several Servers share one listener by @romanett in #4341
- [master378] Fix Publish with maximum TimeoutHint by @mrsuciu in #4373
- [master378] Send the filtered retain trailing event with a client specific Retain = false by @romanett in #4454
- Master378 backport ctt changes by @mrsuciu in #4326
- Update Microsoft.SourceLink.GitHub and Microsoft.SourceLink.AzureRepos.Git from 10.0.102 to 10.0.111 by @mrsuciu in #4465
Full Changelog: 1.5.378.156...1.5.378.176
V2.0 Preview 2
Changes:
- b7df9e8 Merge branch 'master' of https://github.com/OPCFoundation/UA-.NETStandard into release/2.0.0
- 4a3a288 Setting version to 2.0.0-preview.height
- 06ae192 Fix CI failures tracked by #4299 (#4308) [ #4301, #4305, #4306, #4300, #4302, #4303, #4304 ]
- 2e80751 Setting version to 2.0.0-preview
- 8ea319d Fix macOS ARM64 NativeAOT linker failure in aot-macos-latest (#4298)
- de3476d Remove HTTPS binding dependency from server packages (#4297) [ #4296 ]
- afbd10e Expose runtime capability probes to fix TFM-skew test failures (#4282) (#4295)
- 4d71669 Stabilize macOS Redundancy sample failover tests by isolating demo UDP endpoint (#4292)
- d525bc3 Bound reconnect cleanup and organize samples by domain (#4276) [ #4273 ]
- b7331a1 Fix macOS unicast loopback UDP PubSub transport failures (#4285) (#4290)
See More
- 2a4da11 Fix SourceGeneration tests to probe actual Opc.Ua.Server TFM output folder (#4293) [ #4283 ]
- 2b06b63 Fix MissingMethodException on Crdt init setters for netstandard2.1 build (#4294) [ #4284 ]
- ef667a1 fix(aot): remove deprecated -ld_classic linker flag causing macOS NativeAOT build crash (#4291)
- a3e95de Fix UDP multicast discovery announcements failing in restricted network environments (macOS CI) (#4279)
- 4ac6084 Fix aot-macos-latest CI: resolve "too many large addends" linker assertion on macOS ARM64 (#4278)
- cde1b85 Fix failing test-macOS-latest-Redundancy.Samples: add HA_INSECURE=true to FastDemo environment (#4280)
- c57f31e Fix three flaky tests (Robotics, Client, Di) (#4289) [ #4286, #4287, #4288 ]
- 91cbf9c Fix PollingWotSubscription: loop stops after correct number of failures when MaxAttempts is set (#4281)
- 659d3c2 Fix "Build, sign, pack, publish" CI failure: register new Aas NuGet packages (#4277)
- bf9696e Fix the classic engine's publish pipeline: refill after keep-alive recovery, and bound every producer (#4274) [ #4232 ]
- 397db60 Add OPC UA for Asset Administration Shell: the published OPC 30270 and v3 draft (#4244) [ marcschier/opcua-drafts#75 ]
- 8634a18 Simplify server shutdown teardown (#4262)
- e193215 Harden server subscription deletion/transfer race (#4261)
- 333de83 Add kitchen-sink coverage NodeSet2 with three load pipelines (#4251) (#4272)
- aad8350 Pluggable symmetric cryptography, an awaitable asymmetric path, registrable security policies, and PubSub crypto offboarding (#4206, #4207, #4208, #4210) (#4232) [ #4192, #4242, #4250 ]
- d547747 Generate ReferenceNodeManager address space from a NodeSet2 model (#4220) [ #4204 ]
- aad9e9b Document Opc.Ua.Core.Diagnostics trim/AOT exclusion and suppress reflection IL2075 warnings (#4249) [ #4236 ]
- a7d11db Enable fluent subscription option configuration (#4248) [ #4245 ]
- 8d2d363 Add MultiState Discrete write validation (#4255)
- aef86ba Add SelectionListType write validation (#4254) [ #4220 ]
- 6e0ed89 Make UANodeSetSerializers.g.cs generation deterministic (#4252) [ #4220 ]
- 34fe1a1 Emit WriteMask from the model in the source generator (#4253) [ #4220 ]
- cc4791e Import NodeSet2 Views as standalone top-level nodes in the source generator (#4259) [ #4220 ]
- 2c2bfa7 Fix off-by-one ValueRank in the NodeState source generator (#4258) [ #4220 ]
- a7c776e Align the WoT implementation with spec: type binding, removed vocabulary, Alarms and Conditions (#4225) [ #19 ]
- 64d2834 Confine capture artifact paths to the configured base folder (#4247)
- fac30c4 Add MinSupportedSamplingInterval configuration and honor it when revising sampling intervals (#4243) [ #4194, #4191 ]
- a9a3e02 Fix VirtualFileSystem compiler crashes under memory pressure (#4246) [ #4233 ]
- 6795073 Mount OpenUSD representations with HasAddIn (#4239)
- 80db326 Fix MCP diagnostics tool contracts and capture failures (#4241) [ #4238 ]
- 1cca744 Retire the last exposed locks: node, browser, server diagnostics and application properties (#4222) [ #4201, #4202, #4203, #4215, #4216, #4188, #4221, #4193, #4234 ]
- 466c5cb Robot intent follow-ups: multi-controller executors, spec fixes, and an MCP tool library (#4195) [ #4165, #4196, #4198, #4228, #4227, #4229, #4226, marcschier/opcua-drafts#60 ]
- 0edfe23 Bound in-memory historian retention (#4234)
- 5bc8a9d Reduce ISession: type the continuation points, delete the obsolete validate overload (#4199) [ #4197, #4188, #4193, #4217, #4187, #4203, #4222 ]
- 9375a24 Retire the IServerInternal bind mutators and freeze the bind phase (#4197) [ #4193, #4188, #4184 ]
- 4e0b82a Add IServerContext and move server startup tasks onto it (#4193) [ #4188, #4184, #4165 ]
- 4cbcec6 Update NuGet dependencies to latest and version ASP.NET Core per target framework (#4223) [ #4195, #4224 ]
- 404517c [MigrationAnalyzer] Generate public collection shims to unblock incremental 1.5.378 → 2.0 migration (#4214) [ #4205 ]
- e05a820 Removal of the exposed diagnostics and node locks (#4188) [ #4183, #4187, #4216, #4215 ]
- b17007b Stop the encoder tests flooding the VSTest channel with per-test output (#4219) [ #4213 ]
- 0315239 Register the PKCS#11 package in the expected package set (#4218) [ #4192 ]
- f23b30e Own the certificates the TLS validation callbacks inspect (#4196)
- 0612a43 Pluggable cryptography and hardware-held private keys (#4192) [ #4190 ]
- d8aca69 Remove unused MinMetadataSamplingInterval configuration option (#4194) [ #4191 ]
- 5a6bbcc Add session and subscription ids to client and server request logging (#4189) [ #4711, #31 ]
- 2b44fca Robot intent: a task-level command API with a Part 10 lifecycle (#4165) [ #4127, marcschier/opcua-drafts#47, #4160, #4158, #4162, #3827 ]
- fb80bfd [WotCon] Track WoT Connectivity/Binding 1.1 and add projections (Section 12) (#4182) [ #4128, #8 ]
- ca89ac8 Add a Generators companion-spec sample and compose servers at a site level (#4180) [ #3 ]
- 416d619 Split the CI matrix across both systems, split the required test gate from the advisory coverage check, and give background work an owner (#4158) [ #4128, #4122 ]
- e73e711 [WotCon] Add OPC UA WoT Connectivity 1.1 with the Types, source generation, Server and xRegistry work it builds on (#4128) [ #4093, #4131, #4132, #4134, #4147, #4150, #4130, #4139, #4140, #4144, #4146, #4142, #4154, #4171, #4156, #4172 ]
- 5a690c5 Address WSS discovery review feedback and follow-up tests (#4178) [ #4179 ]
- 0066440 Ship the OPC Foundation license file from every package and fix the NU5033 pack failure (#4174)
- 74e272e Use application certificate validation during WSS discovery (#4136)
- da3358d Jpfr/fix wss session discovery (#4135)
- a6a5275 Add a PumpX-2000 datasheet and diagrams to the pump sample (#4138) [ #4117 ]
- 81d726b Coordinate the robot cell, and make the twin show what it is actually doing (#4162) [ #4161 ]
- 724ae71 Make NodeId assignment during a node copy explicit (#4157) [ #4137, #4123 ]
- 168b3de Replace the RequestManager AsyncLocal guard with an explicit operation context (#4163) [ #4093, #4149 ]
- 0f257c0 OpenUSD scene: replace object in the USD value model with a UsdValue union (#4160) [ #4151 ]
- baab5a9 Watch datasets that appear after the PubSub application starts (#4164) [ #4152 ]
- 3713641 Throttle client publish worker on undeliverable publish responses (+ CodeQL OOM fix) (#4121)
- ae241b6 Robotics: the OPC 40010 companion SDK, its client and the robot sample (#4127) [ #4126, #4096, #3827, #4123, #4124, #4125 ]
- fb160a8 OpenUSD: the OPC UA to OpenUSD binding, scene materialization and connector (#4126) [ #4125, #4096, #4123, #4124...
OPC UA 1.05 Maintenance Update
Maintenance Release for fixing bugs found on the main378 development branch.
Released packages
OPCFoundation.NetStandard.Opc.Ua
OPCFoundation.NetStandard.Opc.Ua.Core
OPCFoundation.NetStandard.Opc.Ua.Security.Certificates
OPCFoundation.NetStandard.Opc.Ua.Configuration
OPCFoundation.NetStandard.Opc.Ua.Server
OPCFoundation.NetStandard.Opc.Ua.Client
OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes
OPCFoundation.NetStandard.Opc.Ua.Bindings.Https
OPCFoundation.NetStandard.Opc.Ua.PubSub
What's Changed
- Fix memory leak: dispose linked CancellationTokenSource in ChannelAsyncOperation.EndAsync by @romanett with @Copilot in #3812
- Fix Race condition in OnPublishComplete by @markuswallen in #3837
- [master378] Use request.SessionId instead of request.Session.Id in the ReportAuditCancelEvent call from CancelRequests. by @mrsuciu in #3853
- [Server] Fix NRE in ActivateSession if Session times out before activation completes by @romanett in #3844
- [Server] Fix #3896: send full certificate chain when CA is in the issuer store (1.5.x) by @marcschier in #3898
- Synchronize ConditionState branch collection access by @marcschier with @Copilot in #3895
- Fix GDS Push UpdateCertificate ignoring configured SecurityConfiguration policy (master378) by @marcschier with @Copilot in #3936
- Validate issuer/CA certificate KeyUsage (keyCertSign, cRLSign) [master378 backport] by @marcschier in #3948
- Fix macOS CI: avoid empty-KeyUsage test cert by @marcschier in #3953
- Revert "Prune extra decoded children that should stay on the type defnition only. (#3843)" by @mrsuciu in #3976
- Prepare 1.5378 maintenance release by @mrsuciu in #3982
Full Changelog: 1.5.378.145...1.5.378.156
OPC UA 1.05 Maintenance Update
Maintenance Release for fixing bugs found on the main374 development branch + new 1.5.07 Nodesets + generated code.
Released packages
OPCFoundation.NetStandard.Opc.Ua
OPCFoundation.NetStandard.Opc.Ua.Core
OPCFoundation.NetStandard.Opc.Ua.Security.Certificates
OPCFoundation.NetStandard.Opc.Ua.Configuration
OPCFoundation.NetStandard.Opc.Ua.Server
OPCFoundation.NetStandard.Opc.Ua.Client
OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes
OPCFoundation.NetStandard.Opc.Ua.Bindings.Https
OPCFoundation.NetStandard.Opc.Ua.PubSub
What's Changed
- Fix a bug where a Task.Delay is left over infinitely. by @gailjkm in #3690
- 1.05.07 release final by @randy-armstrong in #3689
- Fix for crash when processing invalid eventFilter: WhereClause does not contain operand on master378 by @mrsuciu in #3715
- Add opc ua mit license text to nugets instead of license expression (… by @marcschier in #3725
- [Client] Fixed excessive tasks spawning during session connection loss (cherry pick PR #3707) by @AnatolyKochnev in #3738
- Port two targeted fixes from master to master378: Filter certificate validation StatusCodes and Fix 'moreNotifications' handling by @mrsuciu in #3742
- Remove OptionalPlaceHolders on NodeState Instances by @mrsuciu in #3573
- Hot fix 1.05.07 2026 05 01 by @opcfoundation-org in #3773
- Prepare 1.5.378 release by @mrsuciu in #3792
Full Changelog: 1.5.378.134...1.5.378.145
OPC UA 1.05 Maintenance Update
Maintenance Release for fixing bugs found on the main374 development branch.
Released packages
OPCFoundation.NetStandard.Opc.Ua
OPCFoundation.NetStandard.Opc.Ua.Core
OPCFoundation.NetStandard.Opc.Ua.Security.Certificates
OPCFoundation.NetStandard.Opc.Ua.Configuration
OPCFoundation.NetStandard.Opc.Ua.Server
OPCFoundation.NetStandard.Opc.Ua.Client
OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes
OPCFoundation.NetStandard.Opc.Ua.Bindings.Https
OPCFoundation.NetStandard.Opc.Ua.PubSub
What's Changed
- Respect configured RSA minimum certificate key size when creating RSA app certificates by @mrsuciu in #3513
- Improve logging and fix UserNameIdentityToken to return BadIdentityTokenInvalid for failed verification by @romanett in #3514
- fix minor xml docs copy error by @richterr in #3518
- Ignore 0 references in data dictionary and provide better logging. by @marcschier in #3521
- Hook lookup of symbol in types project and set hook in opc ua core on assembly loading by @marcschier in #3520
- Code clean up and improvements by @marcschier in #3532
- [CTT / ConsoleReferenceServer] Enforce numeric DataTypes for AnalogItem variables. by @romanett in #3530
- add FindIssuerCAByKeyIdentifierAsync by @KircMax in #3535
- add throwing serviceresultexception with stacktrace by @KircMax in #3539
- [Server] Fix generation of UserTokenPolicyIDs by @raserle in #3525
- Cherry pick Bugfixes from 1.6 to 1.5.378 by @romanett in #3572
- Backport changes from master to master378 by @mrsuciu in #3632
- Backport reconnect user token policy reuse to master378 by @mrsuciu in #3640
- Prepare release 1.5.378 from master378 by @mrsuciu in #3638
New Contributors
Full Changelog: 1.5.378.134...1.5.378.134