Change module name to go.fd.io/govpp
[govpp.git] / CHANGELOG.md
1 # Changelog
2
3 This file lists changes for the GoVPP releases.
4
5 <!-- TEMPLATE
6 ### Fixes
7 -
8 ### Features
9 -
10 ### Other
11 -
12 -->
13
14 ## 0.6.0
15
16 > _Upcoming_
17
18 ## 0.5.0
19
20 > _28 July 2022_
21
22 ### Features
23
24 - Also generate APIName/APIVersion/CrcVersion constants for the types packages
25 - Stat segment client fixes & improvements
26
27 ### Fixes
28
29 - Fix go 1.18 support
30 - Fixed data race in core.Connection.Close()
31 - Fix channel ID overlap
32
33 ## 0.4.0
34
35 > _17 January 2022_
36
37 ### Binapi Generator
38
39 - the generator code has been split into multiple packages:
40     - [vppapi](binapigen/vppapi) - parses VPP API (`.api.json`) files
41     - [binapigen](binapigen) - processes parsed VPP API files and handles code generation
42 - added support for VPP enumflags type
43 - previously required manual patches for generated code should no longer be needed
44 - many generated aliases were removed and referenced to `*_types` files for simpler reading
45 - any types imported from other VPP API (`*_types.api`) files are now automatically resolved for generated Go code
46 - marshal/unmarshal methods for memory client messages are now generated
47 - generated new helper methods for more convenient IP and MAC address conversion
48 - RPC service code is now generated into a separated file (`*_rpc.ba.go`) in the same directory and uses a new low level
49   stream API
50 - added option to generate HTTP handlers for RPC services
51 - generated code now contains comments with information about versions of VPP and binapi-generator
52 - in addition to the file name, the binapi generator now accepts full path (including extension,
53   e.g. `/usr/share/vpp/api/core/vpe.api.json`)
54 - dependency on `github.com/lunixbochs/struc` was removed
55 - generated helper methods for `vpe_types.Timestamp`
56 - generated API messages comment may contain additional information about the given API development state (in progress,
57   deprecated)
58 - type `[]bool` is now known to the generator
59 - enhanced VPP version resolution - the generator is more reliable to evaluate installed VPP version
60
61 ### Features
62
63 - [socketclient](adapter/socketclient) was optimized and received a new method to add client name
64 - added new API [stream](api/api.go) for low-level access to VPP API
65     - the `Stream` API uses the same default values as the `Channel` API
66     - it supports the same functional options (request size, reply size, reply timeout)
67 - [statsclient](adapter/statsclient) supports additional options (retry period, retry timeout)
68 - the compatibility check error now contains a list of compatible and incompatible messages wrapped
69   as `CompatibilityError`
70 - removed global binary API adapter. This change allows GoVPP to manage multiple VPP connections with different sockets
71   simultaneously
72 - added support for the stats v2. The `statsclient` adapter recognizes the version automatically so the `StatsAPI`
73   remains unchanged. In relation to this change, the legacy support (i.e. stat segment v0) for VPP <=19.04 was dropped.
74 - GoVPP now recognizes VPP state `NotResponding` which can be used to prevent disconnecting in case the VPP hangs or is
75   overloaded
76 - added method `SetLogger()` for setting the global logger
77 - `StatsAPI` has a new method `GetMemory()` retrieving values related to the statseg memory heap
78 - the stats socket allows an option to connect asynchronously in the same manner as the API socket connection.
79   Use `AsyncConnectStats()` to receive `ConnectionEvent` notifications
80 - Instead of a cumulative value, the `statsclient` error counter now provides a value per worker
81 - `ListStats(patterns ...string)` returns `StatIdentifier` containing the message name and the ID (instead of the name
82   only)
83 - added support for VPP stat symlinks
84 - GoVPP received its own [API trace](api/trace.go). See the [example](examples/api-trace) for more details.
85
86 ### Fixes
87
88 - `MsgCodec` will recover panic occurring during a message decoding
89 - calling `Unsubscibe` will close the notification channel
90 - GoVPP omits to send `sockclnt_delete` while cleaning up socket clients in order to remove VPP duplicated close
91   complaints - VPP handles it itself
92 - fixed major bug causing GoVPP to not receive stats updates after VPP restart
93 - fixed name conflict in generated union field constructors
94 - the size of unions composed of other unions is now calculated correctly
95 - fixed race condition in the VPP adapter mock
96 - fixed crash caused by the return value of uint kind
97 - fixed encoding/decoding of float64
98 - fixed the stats reconnect procedure which occasionally failed re-enable the connection.
99 - fixed occasional panic during disconnect
100 - `statsclient` wait for socket procedure works properly
101 - fixed memory leak in health check
102
103 ### Other
104
105 - improved log messages to provide more relevant info
106 - updated extras/libmemif to be compatible with the latest VPP changes
107 - default health check parameter was increased to 250 milliseconds (up from 100 milliseconds), and the default threshold
108   was increased to 2 (up from 1)
109 - improved decoding of message context (message evaluation uses also the package path, not just the message ID)
110 - `statsclient` now recognizes between empty stat directories and does not treat them as unknown
111 - proxy client was updated to VPP 20.05
112
113 #### Examples
114
115 - added more code samples of working with unions in [binapi-types](examples/binapi-types)
116 - added profiling mode to [perf bench](examples/perf-bench) example
117 - improved [simple client](examples/simple-client) example to work properly even with multiple runs
118 - added [multi-vpp](examples/multi-vpp) example displaying management of two VPP instances from single application
119 - added [stream-client](examples/stream-client) example showing usage of the new stream API
120 - [simple client](examples/simple-client) and [binapi-types](examples/binapi-types) examples show usage of
121   the `vpe_types.Timestamp`
122 - added [API trace example](examples/api-trace)
123
124 #### Dependencies
125
126 - updated `github.com/sirupsen/logrus` dep to `v1.6.0`
127 - updated `github.com/lunixbochs/struc` dep to `v0.0.0-20200521075829-a4cb8d33dbbe`
128
129 ## 0.3.5
130
131 > _18 May 2020_
132
133 ### Fixes
134
135 - statsclient: Fix stats data errors and panic for VPP 20.05
136
137 ## 0.3.4
138
139 > _17 April 2020_
140
141 ### Features
142
143 - binapi-generator: Format generated Go source code in-process
144
145 ## 0.3.3
146
147 > _9 April 2020_
148
149 ### Fixes
150
151 - proxy: Unexport methods that do not satisfy rpc to remove warning
152
153 ## 0.3.2
154
155 > _20 March 2020_
156
157 ### Fixes
158
159 - statsclient: Fix panic occurring with VPP 20.05-rc0 (master)
160
161 ## 0.3.1
162
163 > _18 March 2020_
164
165 ### Fixes
166
167 - Fix import path in examples/binapi
168
169 ## 0.3.0
170
171 > _18 March 2020_
172
173 ### Fixes
174
175 - binapi-generator: Fix parsing default meta parameter
176
177 ### Features
178
179 - api: Improve compatibility checking with new error types:
180   `adapter.UnknownMsgError` and `api.CompatibilityError`
181 - api: Added exported function `api.GetRegisteredMessageTypes()`
182   for getting list of all registered message types
183 - binapi-generator: Support imports of common types from other packages
184 - binapi-generator: Generate `Reset()` method for messages
185 - binapi-generator: Compact generated methods
186
187 ### Other
188
189 - deps: Update `github.com/bennyscetbun/jsongo` to `v1.1.0`
190 - regenerate examples/binapi for latest VPP from stable/2001
191
192 ## 0.2.0
193
194 > _04 November 2019_
195
196 ### Fixes
197
198 - fixed socketclient for 19.08
199 - fixed binapi compatibility with master (20.01-rc0)
200 - fixed panic during stat data conversion
201
202 ### Features
203
204 - introduce proxy for remote access to stats and binapi
205 - optimizations for statclient
206
207 ### Other
208
209 - migrate to Go modules
210 - print info for users when sockets are missing
211
212 ## 0.1.0
213
214 > _03 July 2019_
215
216 The first release that introduces versioning for GoVPP.