PackageTrack
Sign in Get early access

github.com/gopcua/opcua

v0.9.1 #2108 most downloaded on Go modules gopcua/opcua

What this package is like to depend on

Last release 14 days ago

09 Aug 2026

Release timing varies

gaps range from 9 days to 3 months

Most releases are documented

notes for 38 of 56 stable releases

3 versions withdrawn

withdrawn after publishing

7 years old

274 releases · first in 2019

14 releases in the last 12 months

see the full history below

Release timeline

274 releases · Apr 2019 to Aug 2026
2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 274
  1. v0.9.1 09 Aug 2026
    Release notes

    Thank you to the contributors in this release: @stefan-kolb, @arpitjain099, @istyf, @jackchenjc, @skartikey, @mschm, and @jminardi.

    go get github.com/gopcua/[email protected]
    

    gopcua ships both a client and a server. Each item is tagged (client) or (server) for which side it affects, and items that only matter to developers building against the library API carry API. If you consume gopcua through Telegraf or benthos-umh, the plain (client) items are the runtime behavior you get automatically; (server) items only matter if you build a server on gopcua.

    No breaking changes in this release.

    Security

    • A malformed message can no longer make the decoder allocate far more memory than the message itself. The declared element count of an array is now checked against the bytes actually remaining before the slice is allocated, so a 4-byte body claiming 100 million elements fails immediately instead of allocating roughly 800 MB first; counts near MaxInt32 could push a process into multi-GB allocation and out-of-memory. Reachable on both sides, by a server decoding a client request and by a client decoding a server or man-in-the-middle response (#884) (client + server)

    New

    • PKCS#8 private keys (BEGIN PRIVATE KEY) are now accepted wherever a private key is loaded. These are the default output of OpenSSL 3.x, Java and .NET, and previously failed with Failed to decode PEM block with private key; only PKCS#1 (BEGIN RSA PRIVATE KEY) worked (#871) (client + server)
    • Certificate and key loading now detects PEM or DER from the file contents rather than the extension, accepts a full chain of leaf plus intermediates, and reports a PKCS#1/PKCS#8 mismatch as a named error instead of a generic decode failure (#872) (client + server)
    • A gopcua server now supports Browse continuation points and BrowseNext, so a client can page through a node that has more references than fit in one response instead of silently receiving a truncated list (#865) (server)

    Fixes

    • Subscriptions now recover after a reconnect when one of them cannot be restored. Previously the client reported itself Connected with no live subscription and a dead publish loop, delivered no data again, and never retried; it now rebuilds the session and retries, waiting between attempts instead of hammering the server (#877) (client)
    • A subscription being restored after a reconnect no longer loses every monitored item because the server rejected one of them. A node that disappeared during the outage is dropped on its own and logged, and the items the server accepted keep delivering data (#887) (client)
    • Monitoring a batch of nodes no longer gives every item in the batch the same client handle, which could deliver a node's values under the wrong node's identity (#881) (client)
    • A server node that denies current-read is browsable again. AccessLevel governs the Value attribute only, so BrowseName, NodeClass, DisplayName and the rest are readable; previously such a node answered Bad_UserAccessDenied for every attribute and could not be described at all (#878) (server)
    • A server no longer panics when a client writes the DataType attribute in the ordinary NodeId form. The attribute is spec-typed NodeId, but the server asserted ExpandedNodeId without checking, so a conformant write crashed the process on the next browse that resolved a reference to that node (#867) (server)
    • RegisterNodes now returns the node IDs it was given, which is the required behaviour for a server that performs no node-access optimization, and UnregisterNodes ignores IDs it does not know instead of failing (#867) (server)
    • The UserAccessLevel attribute is stored with the type the read path expects, so reading it works (#875) (server)

    Full Changelog: v0.9.0...v0.9.1

    Open source →
    Release notes

    v0.9.1 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  2. v0.9.1-0.20260804120158-5e0f02670476 04 Aug 2026 pre-release

    Nothing published for this version

  3. v0.9.1-0.20260731142746-6ab50ba30615 31 Jul 2026 pre-release

    Nothing published for this version

  4. v0.9.1-0.20260623151144-6d0139447b46 23 Jun 2026 pre-release

    Nothing published for this version

  5. v0.9.0 19 Jun 2026
    Release notes

    Thank you to all the contributors in this release: @jminardi, @diericd, @istyf, @semihbkgr, @skartikey, @sruehl, @mvandergrift, @oliverpool, @skaldesh, @bostroemc, @kung-foo, @mschm, and @led0nk for reviews. It was a difficult year since we switched the core maintainer, and it took us some time to get into a good working mode. This release is our summarized work from the past year.

    go get github.com/gopcua/[email protected]
    

    gopcua ships both a client and a server. Each item is tagged (client) or (server) for which side it affects, and items that only matter to developers building against the library API carry API. If you consume gopcua through Telegraf or benthos-umh, the plain (client) items are the runtime behavior you get automatically; (client, API) items only matter if you write Go code against gopcua; (server) items only matter if you build a server on gopcua.

    Breaking change (API): Node operations now run against a Client interface instead of the concrete *Client type (#847). If you construct nodes against the concrete client type, update those call sites. See the "List of Breaking Changes" in the README.

    New

    • Basic256Sha256 channels now complete a handshake end to end in both Sign and SignAndEncrypt mode between a gopcua client and server, so you can run signed and encrypted connections (client + server)
    • A StateChangedFunc callback lets a client run your own code on every connection-state change (Connected, Connecting, Disconnected, Reconnecting), for example to log drops, update health, or trigger reconnect-aware logic (client, API)

    Improvements

    • Monitoring a batch of nodes now succeeds for the valid ones instead of failing the whole batch when one node ID is bad; each rejected node is reported individually as a monitor.ItemError you can read with errors.As (client)
    • Node operations now run against a client interface, so you can inject a mocked client when unit-testing code that calls node methods; if you construct nodes against the concrete client type, review those call sites (client, API)

    Fixes

    • Reading or subscribing to large sets of nodes (roughly a thousand or more) over an encrypted connection no longer drops the connection with an EOF; smaller requests and unencrypted connections were not affected (client + server)
    • Subscriptions now survive a reconnect: after a network interruption the client no longer loses its subscriptions and stops receiving data until it is restarted (client)
    • Recovering missed data after a reconnect no longer hangs in an endless retry loop or silently drops the recovered notifications (client)
    • Connecting to servers that present their certificate as a chain of leaf plus intermediate certificates, such as Siemens WinCC Unified Runtime, now works (client)
    • Browsing now returns a usable node ID for references typed as ExpandedNodeID instead of nil, which previously caused a panic (client)
    • Calling Close on a client that never established a session no longer panics (client)
    • expvar counters (read, send, dial, subscription) render again under /debug/vars on Go 1.23, where nested stats had shown as empty objects (client, API)
    • A server no longer crashes when a client writes to a node in a namespace that does not exist; it returns Bad_NodeIdUnknown (server)
    • Server writes to non-Value attributes such as Description or DisplayName now report success instead of a false bad-attribute error (server)
    • Server responses larger than the negotiated chunk size, such as browsing a folder with many nodes, are now split across multiple chunks instead of dropping the connection (server)
    • A server now returns a valid, non-zero session timeout, so strict clients such as UaExpert no longer fail to connect with BadTimeout (server)
    • Creating a folder node in a server address space no longer panics (server)

    The server now also sets the ReceiverCertificateThumbprint on its handshake response, so strict clients (Prosys, UaExpert) accept encrypted channels against a gopcua server (server).

    Full Changelog: v0.8.0...v0.9.0

    Open source →
    Release notes

    v0.9.0

    Compare

    Choose a tag to compare

    Open source →
  6. v0.9.0-rc1 18 Jun 2026 pre-release
    Release notes

    Thank you to all the contributors in this release: @jminardi, @diericd, @istyf, @semihbkgr, @skartikey, @sruehl, @mvandergrift, @oliverpool, @skaldesh, @bostroemc, @kung-foo, @mschm, and @led0nk for reviews. It was a difficult year since we switched the core maintainer, and it took us some time to get into a good working mode. This release is our summarized work from the past year.

    This is a pre-release for testing. Please try it against your servers and report issues before the final v0.9.0. It installs only on explicit opt-in:

    go get github.com/gopcua/[email protected]
    

    gopcua ships both a client and a server. Each item is tagged (client) or (server) for which side it affects, and items that only matter to developers building against the library API carry API. If you consume gopcua through Telegraf or benthos-umh, the plain (client) items are the runtime behavior you get automatically; (client, API) items only matter if you write Go code against gopcua; (server) items only matter if you build a server on gopcua.

    New

    • Basic256Sha256 channels now complete a handshake end to end in both Sign and SignAndEncrypt mode between a gopcua client and server, so you can run signed and encrypted connections (client + server)
    • A StateChangedFunc callback lets a client run your own code on every connection-state change (Connected, Connecting, Disconnected, Reconnecting), for example to log drops, update health, or trigger reconnect-aware logic (client, API)

    Improvements

    • Monitoring a batch of nodes now succeeds for the valid ones instead of failing the whole batch when one node ID is bad; each rejected node is reported individually as a monitor.ItemError you can read with errors.As (client)
    • Node operations now run against a client interface, so you can inject a mocked client when unit-testing code that calls node methods; if you construct nodes against the concrete client type, review those call sites (client, API)

    Fixes

    • Reading or subscribing to large sets of nodes (roughly a thousand or more) over an encrypted connection no longer drops the connection with an EOF; smaller requests and unencrypted connections were not affected (client + server)
    • Subscriptions now survive a reconnect: after a network interruption the client no longer loses its subscriptions and stops receiving data until it is restarted (client)
    • Recovering missed data after a reconnect no longer hangs in an endless retry loop or silently drops the recovered notifications (client)
    • Connecting to servers that present their certificate as a chain of leaf plus intermediate certificates, such as Siemens WinCC Unified Runtime, now works (client)
    • Browsing now returns a usable node ID for references typed as ExpandedNodeID instead of nil, which previously caused a panic (client)
    • Calling Close on a client that never established a session no longer panics (client)
    • expvar counters (read, send, dial, subscription) render again under /debug/vars on Go 1.23, where nested stats had shown as empty objects (client, API)
    • A server no longer crashes when a client writes to a node in a namespace that does not exist; it returns Bad_NodeIdUnknown (server)
    • Server writes to non-Value attributes such as Description or DisplayName now report success instead of a false bad-attribute error (server)
    • Server responses larger than the negotiated chunk size, such as browsing a folder with many nodes, are now split across multiple chunks instead of dropping the connection (server)
    • A server now returns a valid, non-zero session timeout, so strict clients such as UaExpert no longer fail to connect with BadTimeout (server)
    • Creating a folder node in a server address space no longer panics (server)

    The server now also sets the ReceiverCertificateThumbprint on its handshake response, so strict clients (Prosys, UaExpert) accept encrypted channels against a gopcua server (server).

    Full Changelog: v0.8.0...v0.9.0-rc1

    Open source →
    Release notes

    v0.9.0-rc1 Pre-release

    Pre-release

    Compare

    Choose a tag to compare

    Open source →
  7. v0.8.1-0.20260528125848-add34eeb01b2 28 May 2026 pre-release

    Nothing published for this version

  8. v0.8.1-0.20260512065707-91256c66863e 12 May 2026 pre-release

    Nothing published for this version

  9. v0.8.1-0.20260428135617-424229efcd00 28 Apr 2026 pre-release

    Nothing published for this version

  10. v0.8.1-0.20260409141135-a1e2f8d3d5b6 09 Apr 2026 pre-release

    Nothing published for this version

  11. v0.8.1-0.20260115150801-591343f5ff07 15 Jan 2026 pre-release

    Nothing published for this version

  12. v0.8.1-0.20251006072825-0d83d1cc736a 06 Oct 2025 pre-release

    Nothing published for this version

  13. v0.8.1-0.20250818130220-96ac1a9bec48 18 Aug 2025 pre-release

    Nothing published for this version

  14. v0.8.1-0.20250806102219-ea80211814cc 06 Aug 2025 pre-release

    Nothing published for this version

  15. v0.8.1-0.20250806101741-c3f6eb989d08 06 Aug 2025 pre-release

    Nothing published for this version

  16. v0.8.1-0.20250805150348-f696f89062b6 05 Aug 2025 pre-release

    Nothing published for this version

  17. v0.8.1-0.20250804133939-c69f8f5c3490 04 Aug 2025 pre-release

    Nothing published for this version

  18. v0.8.1-0.20250714102220-689af7331359 14 Jul 2025 pre-release

    Nothing published for this version

  19. v0.8.1-0.20250521143126-7c1a19ffd3b2 21 May 2025 pre-release

    Nothing published for this version

  20. v0.8.1-0.20250506091142-359b38a5ff73 06 May 2025 pre-release

    Nothing published for this version

  21. v0.8.1-0.20250429150218-f432decd4fc1 29 Apr 2025 pre-release

    Nothing published for this version

  22. v0.8.1-0.20250424152744-d37cd3308ca1 24 Apr 2025 pre-release

    Nothing published for this version

  23. v0.8.0 24 Apr 2025
    Release notes

    Changelog

    Open source →
    Release notes
    • add DialTimeout and cleanup ResolveEndpoint (#372)
    Open source →
    Release notes

    v0.8.0

    Compare

    Choose a tag to compare

    Open source →
  24. v0.7.5 23 Apr 2025
    Release notes

    Changelog

    • a7aa972 Ignore trailing slashes when checking matching endpoints.
    • f8b3589 Merge pull request #770 from gopcua/issue-768-call-method-no-input-args
    • 0069fd1 Merge pull request #788 from gopcua/issue-783-trailing-slash
    • 22fce09 github: auto-close stale issues/prs
    • f7b9bfb tests/python: add test for issue #768
    • 7128e13 tests/python: allow setting of fields in constructor
    • a095727 tests/python: fix typo
    • f70e838 tests/python: use ua.CallMethodResult
    • 9288bb2 update README
    • 8924493 update README
    Open source →
    Release notes
    • Add test for method call with no inputs and an array of extobjs as output (#770)
    • Server: Ignore trailing slashes when checking matching endpoints (#788)
    Open source →
    Release notes

    v0.7.5

    Compare

    Choose a tag to compare

    Open source →
  25. v0.7.5-0.20250423151138-9288bb2f7098 23 Apr 2025 pre-release

    Nothing published for this version

  26. v0.7.5-0.20250415073505-ec4344199905 15 Apr 2025 pre-release

    Nothing published for this version

  27. v0.7.5-0.20250411051745-0069fd17eece 11 Apr 2025 pre-release

    Nothing published for this version

  28. v0.7.5-0.20250408095759-22fce098e869 08 Apr 2025 pre-release

    Nothing published for this version

  29. v0.7.5-0.20250407113035-892449359619 07 Apr 2025 pre-release

    Nothing published for this version

  30. v0.7.4 07 Apr 2025
    Release notes

    Changelog

    • 2137c45 - added security mode check when creating the channel to ensure proper securityMode is provided - removed overwrite in readChunk since it will not reach without valid securityMode
    • 4470d9b Check if node value is a func() *Datavalue and don't wrap if it is.
    • db5fdbf Merge pull request #778 from gopcua/server_accesslevels
    • ad9aac9 Merge pull request #780 from ioansiran/main
    • 985a6f0 Removed hardcoded SecurityMode in SecureChannel readChunk method.
    • 4b38728 add Access() check function to Node
    • e95b012 add access level integration tests
    • b210bf4 add betterexamples of access levels in the server
    • 3012e9f added default value when it gets a bad security mode
    • 326bc4a handle int type passed into DataValueFromValue
    • 5d04457 implement linter fixes
    • cabb348 make datavaluefromvalue better encode the value
    • 1b47c9f re-run tests
    • 4f48815 retract v0.7.2
    • f23711f start checking node attribute access rules
    • 090ef6c update CHANGELOG
    Open source →
    Release notes
    • Removed hardcoded SecurityMode in SecureChannel readChunk method (#780)
    • Obey access levels in the server (#778, #776)
    Open source →
    Release notes

    v0.7.4

    Compare

    Choose a tag to compare

    Open source →
  31. v0.7.3 07 Apr 2025
    Release notes

    Changelog

    • 808cd22 Add unit test for security auth policy uri fallback.
    • ef1c8c8 Merge pull request #767 from gopcua/issue-741-state-change-channel
    • c25f030 Merge pull request #771 from piggito/write-deadline
    • ccecc84 Merge pull request #779 from gopcua/pr-706-fallback-auth-policy-uri
    • 8c72b97 Merge pull request #785 from oliverpool/prevent-panic-ctx-cancel
    • 2943efa Prevent panic on context cancellation
    • e9c20e0 Remove auth policy check in client.
    • fae2506 Set conn write deadline for sendAsyncWithTimeout
    • 454da9c add error check, extend test
    • dcf5e89 add fmt option
    • 4a2e53b adjust error message
    • 65c1388 bump to go1.23
    • f44bb63 client: add connState channel
    • 1b1adfb config.go: setting session.AuthPolicyURI from endpoint when identityToken does not provide it
    • 96f3cb8 fix integration test
    • 07d192e gofmt
    • 4fc3aa8 started test for unset useridentitytoken
    • e4335a9 using Username seciruty ID
    Open source →
    Release notes

    v0.7.2 changes

    • server: Prevent panic on context cancellation (#785)
    • Add Fallback to set session.AuthPolicyURI (#706, #779)
    • client: send events con connection changes (#741, #767)
    • uasc: Set conn write deadline for sendAsyncWithTimeout (#771)

    v0.7.3 changes

    • uasc: Removed hardcoded SecurityMode in SecureChannel reacDhunk method (#780)
    • server: obay access levels in the server (#778)
    Open source →
    Release notes

    v0.7.3

    Compare

    Choose a tag to compare

    Open source →
  32. v0.7.2 07 Apr 2025 withdrawn

    Version retracted: tagged the wrong branch

    Release notes

    Retracted since I've tagged the wrong branch

    Only the tag and the CHANGELOG are on the wrong branch. The code is on main.

    Open source →
  33. v0.7.2-0.20250407094807-8c72b9718eb5 07 Apr 2025 pre-release

    Nothing published for this version

  34. v0.7.2-0.20250317055944-ccecc847f5b7 17 Mar 2025 pre-release

    Nothing published for this version

  35. v0.7.2-0.20250307151824-d12a77ca6b19 07 Mar 2025 pre-release

    Nothing published for this version

  36. v0.7.1 27 Feb 2025
    Release notes

    Changelog

    • 578c8e5 Merge pull request #775 from gopcua/issue-774-read-failed
    • 8f6df6d bump go to 1.23/1.24
    • c58424a client: use nil-checked secure channel
    • a5114da update CHANGELOG
    Open source →
    Release notes
    • client: use nil-checked secure channel (#775)
    Open source →
    Release notes

    v0.7.1

    Compare

    Choose a tag to compare

    Open source →
  37. v0.7.0 06 Feb 2025
    Release notes

    Changelog

    • 3652fd6 Mark datavalue's as having values.
    • f4f7fae Merge pull request #766 from gopcua/server_UseDVs
    • 4a70b13 Migrate attributes to use DataValues instead of Variants.
    • 8a8675f Update CHANGELOG
    • 768858f Update LICENSE
    • 4476e95 Update README
    • 00d3eff remove test example
    Open source →
    Release notes
    • server: use DataValue instead of Variant for node attributes (#766)
    Open source →
    Release notes

    v0.7.0

    Compare

    Choose a tag to compare

    Open source →
  38. v0.6.6-0.20250201143603-768858fa138e 01 Feb 2025 pre-release

    Nothing published for this version

  39. v0.6.6-0.20250130224610-13fb32dfa512 30 Jan 2025 pre-release

    Nothing published for this version

  40. v0.6.5 22 Jan 2025
    Release notes

    Changelog

    • d948bf8 Address review comment
    • f89c7b6 Merge pull request #764 from jackchenjc/issue-710
    • cdb7218 monitor: add modification functionality
    • 6b1ec73 update CHANGELOG
    Open source →
    Release notes
    • monitor: add modification functionality (#764)
    Open source →
    Release notes

    v0.6.5

    Compare

    Choose a tag to compare

    Open source →
  41. v0.6.4 14 Jan 2025
    Release notes
    • subscription: add ModifySubscription functionality (#714)
    Open source →
  42. v0.6.3 11 Jan 2025
    Release notes
    • Remove calls to log.Fatal (#762,#763)
    Open source →
  43. v0.6.2 28 Dec 2024
    Release notes
    • uasc: remove debug log (#761,#760)
    • Test with stretchr/verify (#757,#758)
    • fix: regression in examples introduced by #753 (#759)
    Open source →
  44. v0.6.2-0.20241228135002-a958e31a4d26 28 Dec 2024 pre-release

    Nothing published for this version

  45. v0.6.2-0.20241220194724-ce63abd5c2b5 20 Dec 2024 pre-release

    Nothing published for this version

  46. v0.6.2-0.20241216124851-74c8438b6c82 16 Dec 2024 pre-release

    Nothing published for this version

  47. v0.6.2-0.20241211095946-520ee74de36a 11 Dec 2024 pre-release

    Nothing published for this version

  48. v0.6.1 11 Dec 2024
    Release notes
    • Fix Variant to handle nil slices (#755,#678)
    • Set DataValue.Value to Variant(nil) for no value (#756,#722)
    • Split id_gen.go into smaller files (#680,#679)
    Open source →
  49. v0.6.1-0.20241210120643-cfd62f36c45a 10 Dec 2024 pre-release

    Nothing published for this version

  50. v0.6.1-0.20241205110100-e74223a231fa 05 Dec 2024 pre-release

    Nothing published for this version

  51. v0.6.0 05 Dec 2024
    Release notes
    • Add Wolfram Manufacturing to README (#707)
    • example/crypto: add auth-mode in error message (#720)
    • Connection refused with valid security options (#718)
    • subscription: add SetMonitoringMode functionality (#711,#712)
    • docs: add more targets to README (#725)
    • remove pkg dependency (#723,#731)
    • add IOTech to README (#747)
    • Add server implementation (#737)
    • use maps and slices from stdlib (#754)
    • Add error return to SelectEndpoint function (#753)
    Open source →
  52. v0.5.4-0.20241205102459-faba17e59446 05 Dec 2024 pre-release

    Nothing published for this version

  53. v0.5.4-0.20241203193328-2c61e332da41 03 Dec 2024 pre-release

    Nothing published for this version

  54. v0.5.4-0.20241107201114-234d7e99fd8e 07 Nov 2024 pre-release

    Nothing published for this version

  55. v0.5.4-0.20240703154006-81653506ce2a 03 Jul 2024 pre-release

    Nothing published for this version

  56. v0.5.4-0.20240620233553-414c66b2a0b8 20 Jun 2024 pre-release

    Nothing published for this version

  57. v0.5.4-0.20240613125015-708f669296f5 13 Jun 2024 pre-release

    Nothing published for this version

  58. v0.5.4-0.20240507085302-1ffb7f979521 07 May 2024 pre-release

    Nothing published for this version

  59. v0.5.4-0.20240424195356-652e7bd7fcfd 24 Apr 2024 pre-release

    Nothing published for this version

  60. v0.5.4-0.20240423135915-45950428a5b0 23 Apr 2024 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive