This file lists changes for the GoVPP releases.
13 November 2025
- Add VPP 25.10 (#318)
- Update ControlPing/Reply in core (#291)
- buffered events and notifications channel (#310)
- optimize Unsubscribe with the latest element in msgSubscriptions (#321)
- Upgrade tablewriter and fix API changes (#298)
- Fix stats connection panic (#309)
- statsclient: fix race between reconnect() and access (#305)
- do not build debug logger entries until necessary (#301)
14 May 2025
- Add VPP 25.02 (#282)
- Add binapi benchmarks (#269)
- Docker image and release improvements (#242)
- Enhance logging and optimize some usage (#281)
- Send
vl_api_sockclnt_delete_tmessage on disconnect (#248)
19 September 2024
- Minor changes (#223)
- Add well-known reply timeout error (#234)
- Gomemif improvemets (#228)
- Improves gomemif library (#216)
- Add Release workflow with goreleaser (#202)
- Add Login to ghcr step to release Workflow (#212)
- Extras integration testing (#233)
- lint: check markdown files (#238)
03 April 2024
- Add missing VPPApiError (#183)
- Trace refactored (#116)
- Fix stream timer leak (#182)
- Memory leaks in govpp core (#184)
04 January 2024
- Update run_integration.sh (#151, #154)
- Add VPP 23.10 to CI (#175)
- Improvements GoVPP CLI (#156)
- Fix running integration tests outside of GitHub (#168)
- Add check for stats vector length (#172)
- gomemif: Packet sent on Tx queue is received back on Rx queue of sender (#165)
18 July 2023
- Add VPP 23.06 to CI (#136)
- Improvements for GoVPP CLI (#135)
- Skip running CI tests for docs updates (#137)
- binapigen: initial support for counters and paths (#121)
- Refactor resolving VPP API input (#130)
- Update Dockerfile.integration (#134)
- Add README for examples (#128)
- Invalidate msgTable map during reconnect (#127)
- Add more GoVPP CLI features (#117)
- Update README.md (#115)
- Generate message comments (#109)
- Add User Guide (#110)
- Enhancements for binapigen (#93)
- Update Go and test if binapi is up-to-date (#105)
- Create RELEASE document (#89)
- Fix returning message reply on retval errors (#147)
- Fix memory leak for timers (#138)
- Fix channel pool (#131)
- Fix race in statsclient during reconnect (#126)
- Fix memory leak with reply timers (#124)
- Fix for Dockerfile smell DL3008 (#123)
- Fix disconnect for AsyncConnect case (#106)
- Fix binapi generation if old binapi files are not present (#73)
- Fix memif abstract socket support (#119)
- Handle EINTR error (#99)
29 November 2022
- Switch to using a generic pool for channels in Connection (#39)
- feat: Disable default reply timeout (#45)
- gomemif: migrate from vpp repository (#65)
- Run golangci-lint in CI (#69)
- Add GoVPP logo to README (#79)
- Introduce VPP integration tests (#75)
- docs: Add troubleshooting guide (#70)
- Add support of watching events to Connection (#80)
- Fix format of package comment (#44)
- Fixes for staticcheck (#27)
- Prevent data race on msgMapByPath map (#50)
- Fix panic on the pool put/get operations (#54)
- Fix endless loop in Reset (#57)
- Fix generate RPC client for stream with reply (#72)
- Fix endless Stream's reply waiting on vpp disconnect (#77)
- Fix WaitReady if directory does not exist (#84)
- Added GitHub CI
- Remove deprecated vppapiclient
- Remove unused Travis CI
- Remove gerrit remains
09 September 2022
- Added GitHub CI
- Remove deprecated vppapiclient
- Remove unused Travis CI
- Remove gerrit remains
- Call munmap when failed to check stat segment version (#34)
28 July 2022
- Also generate APIName/APIVersion/CrcVersion constants for the types packages
- Stat segment client fixes & improvements
- Fix go 1.18 support
- Fixed data race in core.Connection.Close()
- Fix channel ID overlap
17 January 2022
- the generator code has been split into multiple packages:
- added support for VPP enumflags type
- previously required manual patches for generated code should no longer be needed
- many generated aliases were removed and referenced to
*_typesfiles for simpler reading - any types imported from other VPP API (
*_types.api) files are now automatically resolved for generated Go code - marshal/unmarshal methods for memory client messages are now generated
- generated new helper methods for more convenient IP and MAC address conversion
- RPC service code is now generated into a separated file (
*_rpc.ba.go) in the same directory and uses a new low level stream API - added option to generate HTTP handlers for RPC services
- generated code now contains comments with information about versions of VPP and binapi-generator
- in addition to the file name, the binapi generator now accepts full path (including extension,
e.g.
/usr/share/vpp/api/core/vpe.api.json) - dependency on
github.com/lunixbochs/strucwas removed - generated helper methods for
vpe_types.Timestamp - generated API messages comment may contain additional information about the given API development state (in progress, deprecated)
- type
[]boolis now known to the generator - enhanced VPP version resolution - the generator is more reliable to evaluate installed VPP version
- socketclient was optimized and received a new method to add client name
- added new API stream for low-level access to VPP API
- the
StreamAPI uses the same default values as theChannelAPI - it supports the same functional options (request size, reply size, reply timeout)
- the
- statsclient supports additional options (retry period, retry timeout)
- the compatibility check error now contains a list of compatible and incompatible messages wrapped
as
CompatibilityError - removed global binary API adapter. This change allows GoVPP to manage multiple VPP connections with different sockets simultaneously
- added support for the stats v2. The
statsclientadapter recognizes the version automatically so theStatsAPIremains unchanged. In relation to this change, the legacy support (i.e. stat segment v0) for VPP <=19.04 was dropped. - GoVPP now recognizes VPP state
NotRespondingwhich can be used to prevent disconnecting in case the VPP hangs or is overloaded - added method
SetLogger()for setting the global logger StatsAPIhas a new methodGetMemory()retrieving values related to the statseg memory heap- the stats socket allows an option to connect asynchronously in the same manner as the API socket connection.
Use
AsyncConnectStats()to receiveConnectionEventnotifications - Instead of a cumulative value, the
statsclienterror counter now provides a value per worker ListStats(patterns ...string)returnsStatIdentifiercontaining the message name and the ID (instead of the name only)- added support for VPP stat symlinks
- GoVPP received its own API trace. See the example for more details.
MsgCodecwill recover panic occurring during a message decoding- calling
Unsubscibewill close the notification channel - GoVPP omits to send
sockclnt_deletewhile cleaning up socket clients in order to remove VPP duplicated close complaints - VPP handles it itself - fixed major bug causing GoVPP to not receive stats updates after VPP restart
- fixed name conflict in generated union field constructors
- the size of unions composed of other unions is now calculated correctly
- fixed race condition in the VPP adapter mock
- fixed crash caused by the return value of uint kind
- fixed encoding/decoding of float64
- fixed the stats reconnect procedure which occasionally failed re-enable the connection.
- fixed occasional panic during disconnect
statsclientwait for socket procedure works properly- fixed memory leak in health check
- improved log messages to provide more relevant info
- updated extras/libmemif to be compatible with the latest VPP changes
- default health check parameter was increased to 250 milliseconds (up from 100 milliseconds), and the default threshold was increased to 2 (up from 1)
- improved decoding of message context (message evaluation uses also the package path, not just the message ID)
statsclientnow recognizes between empty stat directories and does not treat them as unknown- proxy client was updated to VPP 20.05
- added more code samples of working with unions in binapi-types
- added profiling mode to perf bench example
- improved simple client example to work properly even with multiple runs
- added multi-vpp example displaying management of two VPP instances from single application
- added stream-client example showing usage of the new stream API
- simple client and binapi-types examples show usage of
the
vpe_types.Timestamp - added API trace example
- updated
github.com/sirupsen/logrusdep tov1.6.0 - updated
github.com/lunixbochs/strucdep tov0.0.0-20200521075829-a4cb8d33dbbe
18 May 2020
- statsclient: Fix stats data errors and panic for VPP 20.05
17 April 2020
- binapi-generator: Format generated Go source code in-process
9 April 2020
- proxy: Unexport methods that do not satisfy rpc to remove warning
20 March 2020
- statsclient: Fix panic occurring with VPP 20.05-rc0 (master)
18 March 2020
- Fix import path in examples/binapi
18 March 2020
- binapi-generator: Fix parsing default meta parameter
- api: Improve compatibility checking with new error types:
adapter.UnknownMsgErrorandapi.CompatibilityError - api: Added exported function
api.GetRegisteredMessageTypes()for getting list of all registered message types - binapi-generator: Support imports of common types from other packages
- binapi-generator: Generate
Reset()method for messages - binapi-generator: Compact generated methods
- deps: Update
github.com/bennyscetbun/jsongotov1.1.0 - regenerate examples/binapi for latest VPP from stable/2001
04 November 2019
- fixed socketclient for 19.08
- fixed binapi compatibility with master (20.01-rc0)
- fixed panic during stat data conversion
- introduce proxy for remote access to stats and binapi
- optimizations for statclient
- migrate to Go modules
- print info for users when sockets are missing
03 July 2019
The first release that introduces versioning for GoVPP.