summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md104
1 files changed, 79 insertions, 25 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2bffb4d..23f31fb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,104 +11,152 @@ This file lists changes for the GoVPP releases.
-
-->
-## 0.4.0 (in development)
-> _NOT RELEASED YET_
+## 0.4.0
+
+> _11 January 2022_
### Binapi Generator
-- generator code has been split into multiple packages:
- - [vppapi](binapigen/vppapi) - parses VPP API (`.api.json`) files
- - [binapigen](binapigen) - processes parsed VPP API and handles code generation
+
+- the generator code has been split into multiple packages:
+ - [vppapi](binapigen/vppapi) - parses VPP API (`.api.json`) files
+ - [binapigen](binapigen) - processes parsed VPP API files and handles code generation
+- 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 `*_types` files 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
-- added option to generate HTTP handlers for RPC services
-- RPC service code is now generated into a separated file (`*_rpc.ba.go`) in the same directory and uses low level
+- 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
-- generated code now contains comment 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`)
+- 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/struc` was 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 `[]bool` is now known to the generator
+- enhanced VPP version resolution - the generator is more reliable to evaluate installed VPP version
### Features
-- [socketclient](adapter/socketclient) received a new method to add client name
-- added list of compatible messages to `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 statsclient adapter recognized the version automatically so the `StatsAPI`
- remained 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 `NotResponding` which can be used to prevent disconnecting in case the VPP hangs
- or is overloaded
+
+- [socketclient](adapter/socketclient) was optimized and received a new method to add client name
+- added new API [stream](api/api.go) for low-level access to VPP API
+ - the `Stream` API uses the same default values as the `Channel` API
+ - it supports the same functional options (request size, reply size, reply timeout)
+- [statsclient](adapter/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 `statsclient` adapter recognizes the version automatically so the `StatsAPI`
+ remains 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 `NotResponding` which can be used to prevent disconnecting in case the VPP hangs or is
+ overloaded
- added method `SetLogger()` for setting the global logger
- `StatsAPI` has a new method `GetMemory()` 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 receive `ConnectionEvent` notifications
+- Instead of a cumulative value, the `statsclient` error counter now provides a value per worker
+- `ListStats(patterns ...string)` returns `StatIdentifier` containing the message name and the ID (instead of the name
+ only)
+- added support for VPP stat symlinks
+- GoVPP received its own [API trace](api/trace.go). See the [example](examples/api-trace) for more details.
### Fixes
+
- `MsgCodec` will recover panic occurring during a message decoding
- calling `Unsubscibe` will close the notification channel
-- GoVPP omits sending `sockclnt_delete` while cleaning up socket clients in order to remove VPP duplicate close
+- GoVPP omits to send `sockclnt_delete` while 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
-- size of unions composed of another unions is now calculated correctly
+- the size of unions composed of other unions is now calculated correctly
- fixed race condition in the VPP adapter mock
-- fixed crash caused by return value of uint kind
+- 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
+- `statsclient` wait for socket procedure works properly
+- fixed memory leak in health check
### Other
+
- improved log messages to provide more relevant info
-- updated extras/libmemif to be compatible again
-- default health check parameter was increased to 250 milliseconds (up from 100 milliseconds), and the default
- threshold was increased to 2 (up from 1)
+- 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)
+- `statsclient` now recognizes between empty stat directories and does not treat them as unknown
+- proxy client was updated to VPP 20.05
#### Examples
+
- added more code samples of working with unions in [binapi-types](examples/binapi-types)
- added profiling mode to [perf bench](examples/perf-bench) example
- improved [simple client](examples/simple-client) example to work properly even with multiple runs
-- added [multi-vpp](examples/multi-vpp) example displaying management of two VPP instances from single
- application
+- added [multi-vpp](examples/multi-vpp) example displaying management of two VPP instances from single application
- added [stream-client](examples/stream-client) example showing usage of the new stream API
+- [simple client](examples/simple-client) and [binapi-types](examples/binapi-types) examples show usage of
+ the `vpe_types.Timestamp`
+- added [API trace example](examples/api-trace)
#### Dependencies
+
- updated `github.com/sirupsen/logrus` dep to `v1.6.0`
- updated `github.com/lunixbochs/struc` dep to `v0.0.0-20200521075829-a4cb8d33dbbe`
## 0.3.5
+
> _18 May 2020_
### Fixes
+
- statsclient: Fix stats data errors and panic for VPP 20.05
## 0.3.4
+
> _17 April 2020_
### Features
+
- binapi-generator: Format generated Go source code in-process
## 0.3.3
+
> _9 April 2020_
### Fixes
+
- proxy: Unexport methods that do not satisfy rpc to remove warning
## 0.3.2
+
> _20 March 2020_
### Fixes
+
- statsclient: Fix panic occurring with VPP 20.05-rc0 (master)
## 0.3.1
+
> _18 March 2020_
### Fixes
+
- Fix import path in examples/binapi
## 0.3.0
+
> _18 March 2020_
### Fixes
+
- binapi-generator: Fix parsing default meta parameter
### Features
+
- api: Improve compatibility checking with new error types:
`adapter.UnknownMsgError` and `api.CompatibilityError`
- api: Added exported function `api.GetRegisteredMessageTypes()`
@@ -118,26 +166,32 @@ This file lists changes for the GoVPP releases.
- binapi-generator: Compact generated methods
### Other
+
- deps: Update `github.com/bennyscetbun/jsongo` to `v1.1.0`
- regenerate examples/binapi for latest VPP from stable/2001
## 0.2.0
+
> _04 November 2019_
### Fixes
+
- fixed socketclient for 19.08
- fixed binapi compatibility with master (20.01-rc0)
- fixed panic during stat data conversion
### Features
+
- introduce proxy for remote access to stats and binapi
- optimizations for statclient
### Other
+
- migrate to Go modules
- print info for users when sockets are missing
## 0.1.0
+
> _03 July 2019_
The first release that introduces versioning for GoVPP.