forked from Cylix/cpp_redis
-
Notifications
You must be signed in to change notification settings - Fork 205
Expand file tree
/
Copy pathmd_CHANGELOG.tex
More file actions
419 lines (258 loc) · 15.4 KB
/
md_CHANGELOG.tex
File metadata and controls
419 lines (258 loc) · 15.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/4.3.1}{\tt v4.\+3.\+1}}
\subsubsection*{Tag}
{\ttfamily 4.\+3.\+1}. \subsubsection*{Date}
January 31st, 2018 \subsubsection*{Changes}
\begin{DoxyItemize}
\item Fix compilation issues on some platforms
\item Fix C\+Make configuration issues
\item Compile with position independent code
\item Fix issue when reconnecting if the internal buffer was not cleared. Now fully clear all input/output buffers
\item Fix set\+\_\+nb\+\_\+workers behavior
\item Bump tacopie\+: compilation fix, position independent code, set\+\_\+nb\+\_\+workers fix \subsubsection*{Additions}
\end{DoxyItemize}
None \subsubsection*{Removals}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/4.3.0}{\tt v4.\+3.\+0}}
\subsubsection*{Tag}
{\ttfamily 4.\+3.\+0}. \subsubsection*{Date}
November 13th, 2017 \subsubsection*{Changes}
\begin{DoxyItemize}
\item tacopie\+: fork support\+: allow set\+\_\+default\+\_\+io\+\_\+service to take nullptr. In order to safely fork, call set\+\_\+default\+\_\+io\+\_\+service(nullptr) to make sure the io\+\_\+service destructor is called and all underlying threads joined.
\item tacopie\+: fix\+: timeout for connection not working due to invalid param to select, now working
\item tacopie\+: improvement\+: make sure socket is in blocking mode before connection (\#32) as it differs from one OS to another
\item tacopie\+: improvement\+: check for non-\/blocking connect errors with getsockopt to avoid connect reporting a successful connection followed by a call to disconnection handler (now connect report a failed \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item tacopie\+: ipv6 support (connect, bind and accept operations, on tcp\+\_\+server and tcp\+\_\+client) \subsubsection*{Removals}
\end{DoxyItemize}
None
\subsubsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/4.2.0}{\tt v4.\+2.\+0}}
\subsubsection*{Tag}
{\ttfamily 4.\+2.\+0}. \subsubsection*{Date}
November 2nd, 2017 \subsubsection*{Changes}
\begin{DoxyItemize}
\item C\+Make fix\+: Remove explicit S\+T\+A\+T\+IC in add\+\_\+library call so dynamic libraries can be built and improve consistency
\item Tacopie bump to 3.\+1.\+0 (refer to tacopie changelog for updates) \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item Visual Studio C++ solution \subsubsection*{Removals}
\end{DoxyItemize}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/4.1.0}{\tt v4.\+1.\+0}}
\subsubsection*{Tag}
{\ttfamily 4.\+1.\+0}. \subsubsection*{Date}
September 26th, 2017 \subsubsection*{Changes}
\begin{DoxyItemize}
\item Fix some compilation issues on windows (on both cpp\+\_\+redis and tacopie sides)
\item scan command improvement with additional overloads \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item sort command
\item hscan command
\item sscan command
\item zscan command
\item zinterstore command
\item zunionstore command
\item zrangebyscore command
\item zrevrangebyscore command
\item zrangebylex command
\item zrevrangebylex command
\item georadius command
\item georadiusbymember command
\item bitfield command \subsubsection*{Removals}
\end{DoxyItemize}
\begin{DoxyItemize}
\item Private, Protected and Static functions from doxygen documentation
\end{DoxyItemize}
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/4.0.0}{\tt v4.\+0.\+0}}
\subsubsection*{Tag}
{\ttfamily 4.\+0.\+0}. \subsubsection*{Date}
September 20th, 2017 \subsubsection*{Changes}
\begin{DoxyItemize}
\item Z\+A\+DD score param changed from map to multimap to allow multiple elements with same score
\item connection\+\_\+callback (replacement of disconnection\+\_\+callback). Called for any steps of connection process (attempt, success, failure, reconnection, drop, ...) \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item Sentinel support
\item Automatic reconnection if requested
\item Connection timeout
\item Ability to set number of io workers if you are working with tacopie
\item {\ttfamily redis\+\_\+client} renamed into {\ttfamily client}
\item {\ttfamily redis\+\_\+subscriber} renamed into {\ttfamily subscriber}
\item commands that failed to be sent (client not connected or disconnected) get their callback called with an error reply {\ttfamily connection failure}. This ensure that now all callbacks are always called
\item if reconnection process is enabled and succeed, failed commands are resent
\item if you send command and commit while client is not connected, it will now dismiss the commands and call their callback with an error, or resend them if reconnection is enabled. This is a change compared to the existing behavior that simply kept the commands in the buffer.
\item doxygen documentation \subsubsection*{Removals}
\end{DoxyItemize}
\begin{DoxyItemize}
\item future\+\_\+client\+: all functions have been merge into the redis\+\_\+client
\item disconnection\+\_\+callback\+: it is now replaced by the connection callback
\end{DoxyItemize}
This is a major release with lots of breaking changes. It aims to enable high availability configuration as well as improved consistency with an enhanced design.
If you are upgrading please consider the following breaking changes\+:
\begin{DoxyItemize}
\item {\ttfamily redis\+\_\+client} is now {\ttfamily client} and {\ttfamily redis\+\_\+subscriber} is now {\ttfamily subscriber}
\item {\ttfamily future\+\_\+client} has been removed, but it is actually merged into {\ttfamily client}. Simply switch from {\ttfamily future\+\_\+client} to {\ttfamily client} and you will have the same behavior
\item {\ttfamily disconnection\+\_\+callback} has been removed and replaced by a {\ttfamily connection\+\_\+callback}. If you are looking for exact same behavior, you will have to check if the state param is equal to {\ttfamily dropped}.
\item commands callbacks are always called. In case of failure, an error reply is passed in.
\end{DoxyItemize}
Any other changes should not be breaking changes but you might be interested into the added features.
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.5.4}{\tt v3.\+5.\+4}}
\subsubsection*{Tag}
{\ttfamily 3.\+5.\+4}. \subsubsection*{Date}
August 24th, 2017 \subsubsection*{Changes}
\begin{DoxyItemize}
\item fix issue \#86 by changing some int32\+\_\+t to int64\+\_\+t (was causing overflow leading to stuck program on some architecture)
\item improve travis build with caching \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item Z\+A\+DD command
\item C\+L\+I\+E\+NT K\+I\+LL \subsubsection*{Removals}
\end{DoxyItemize}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.5.3}{\tt v3.\+5.\+3}}
\subsubsection*{Tag}
{\ttfamily 3.\+5.\+3}. \subsubsection*{Date}
July 2nd, 2017 \subsubsection*{Changes}
\begin{DoxyItemize}
\item bump tacopie to fix \#85 -\/ select keep sleeping and does not process incoming read/write events \subsubsection*{Additions}
\end{DoxyItemize}
None \subsubsection*{Removals}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.5.2}{\tt v3.\+5.\+2}}
\subsubsection*{Tag}
{\ttfamily 3.\+5.\+2}. \subsubsection*{Date}
June 19th, 2017 \subsubsection*{Changes}
\begin{DoxyItemize}
\item Fix T\+A\+C\+O\+P\+I\+E\+\_\+\+C\+M\+A\+K\+E\+\_\+\+A\+R\+GS getting converted to a string instead of a list
\item Fix Issue 76 (C\+Make install dir)
\item bump tacopie -\/ fixes to address high C\+PU usage issues. \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item Expose wait\+\_\+for\+\_\+removal in .disconnect of redis\+\_\+client redis\+\_\+subcriber future\+\_\+client \subsubsection*{Removals}
\end{DoxyItemize}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.5.1}{\tt v3.\+5.\+1}}
\subsubsection*{Tag}
{\ttfamily 3.\+5.\+1}. \subsubsection*{Date}
April 30th, 2017 \subsubsection*{Changes}
\begin{DoxyItemize}
\item Fix compilations on windows
\item Fix reconnection behavior
\item Do not clear commands/callback buffer on calling commit or sync\+\_\+commit while client is disconnected. \subsubsection*{Additions}
\end{DoxyItemize}
None \subsubsection*{Removals}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.5.0}{\tt v3.\+5.\+0}}
\subsubsection*{Tag}
{\ttfamily 3.\+5.\+0}. \subsubsection*{Date}
April 9th, 2017 \subsubsection*{Changes}
None \subsubsection*{Additions}
\begin{DoxyItemize}
\item New feature -\/ Update tacopie ref -\/ Provide support for Unix socket. Simply pass in 0 as the port when building a {\ttfamily redis\+\_\+client}, {\ttfamily redis\+\_\+subscriber} or {\ttfamily future\+\_\+client}. Then, the host will automatically be treated as the path to a Unix socket instead of a real host. -\/ More in \#67. \subsubsection*{Removals}
\end{DoxyItemize}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.4.0}{\tt v3.\+4.\+0}}
\subsubsection*{Tag}
{\ttfamily 3.\+4.\+0}. \subsubsection*{Changes}
\begin{DoxyItemize}
\item Change\+: update tacopie ref -\/ IO Service is now based on {\ttfamily select} and not on {\ttfamily poll} anymore to solve some issues encountered on windows due to the buggy implementation of {\ttfamily poll} on windows Systems. \subsubsection*{Additions}
\end{DoxyItemize}
None \subsubsection*{Removals}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.3.0}{\tt v3.\+3.\+0}}
\subsubsection*{Tag}
{\ttfamily 3.\+3.\+0}. \subsubsection*{Changes}
\begin{DoxyItemize}
\item Rename {\ttfamily redis\+\_\+client\+::before\+\_\+callback} into {\ttfamily redis\+\_\+client\+::set\+\_\+callback\+\_\+runner} which is more relevant.
\item Before, {\ttfamily future\+\_\+client} automatically called {\ttfamily .commit} when sending a command, meaning that no pipelining was done for the {\ttfamily future\+\_\+client}. This has been changed and the {\ttfamily future\+\_\+client} do not call {\ttfamily .commit} anymore\+: this is a {\bfseries breaking} change and you {\bfseries must} call {\ttfamily .commit} or {\ttfamily .sync\+\_\+commit} when you wish the commands to be effectively sent. Please refer to the examples if necessary. \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item Add {\ttfamily commit} and {\ttfamily sync\+\_\+commit} methodsto the {\ttfamily future\+\_\+client} for pipelining support.
\item documentation for {\ttfamily redis\+\_\+client\+::before\+\_\+callback} has been added
\item documentation for {\ttfamily future\+\_\+client} has been added \subsubsection*{Removals}
\end{DoxyItemize}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.2.1}{\tt v3.\+2.\+1}}
\subsubsection*{Tag}
{\ttfamily 3.\+2.\+1}. \subsubsection*{Changes}
\begin{DoxyItemize}
\item Fix static initialization order fiasco condition
\item Change {\ttfamily \+\_\+\+\_\+\+C\+P\+P\+\_\+\+R\+E\+D\+I\+S\+\_\+\+U\+S\+E\+\_\+\+T\+A\+C\+O\+P\+IE} (cmake variable\+: {\ttfamily U\+S\+E\+\_\+\+T\+A\+C\+O\+P\+IE}) into {\ttfamily \+\_\+\+\_\+\+C\+P\+P\+\_\+\+R\+E\+D\+I\+S\+\_\+\+U\+S\+E\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+T\+C\+P\+\_\+\+C\+L\+I\+E\+NT} (cmake variable\+: {\ttfamily U\+S\+E\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+T\+C\+P\+\_\+\+C\+L\+I\+E\+NT}). Of course, the meaning is now the opposite. \subsubsection*{Additions}
\end{DoxyItemize}
None \subsubsection*{Removals}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.2.0}{\tt v3.\+2.\+0}}
\subsubsection*{Tag}
{\ttfamily 3.\+2.\+0}. \subsubsection*{Changes}
\begin{DoxyItemize}
\item tacopie is no longer a mandatory dependency, but just provided by default and can be override if necessary. \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item add a new interface, {\ttfamily cpp\+\_\+redis\+::network\+::tcp\+\_\+client\+\_\+iface} that allows you to use your own tcp\+\_\+client in place of tacopie. \subsubsection*{Removals}
\end{DoxyItemize}
\begin{DoxyItemize}
\item The {\ttfamily sync\+\_\+client} has been removed as it was a duplicate of {\ttfamily redis\+\_\+client\+::sync\+\_\+commit} but with a different implementation based on futures. Please use {\ttfamily redis\+\_\+client} and call {\ttfamily sync\+\_\+commit} instead.
\end{DoxyItemize}
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.1.2}{\tt v3.\+1.\+2}}
\subsubsection*{Tag}
{\ttfamily 3.\+1.\+2}. \subsubsection*{Changes}
\begin{DoxyItemize}
\item rename the {\ttfamily setbit()} function into {\ttfamily setbit\+\_\+()} in order to avoid conflict with the standard library macro {\ttfamily setbit} causing compilation error. \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item add {\ttfamily send()} method to the {\ttfamily sync\+\_\+client} and {\ttfamily future\+\_\+client}. \subsubsection*{Removals}
\end{DoxyItemize}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.1.1}{\tt v3.\+1.\+1}}
\subsubsection*{Tag}
{\ttfamily 3.\+1.\+1}. \subsubsection*{Changes}
\begin{DoxyItemize}
\item Fix\+: subscriber callbacks were sometimes not called due to poll not listening to the appropriate events. Mostly impacted windows as referred in \#51, but unix version might also be impacted. Fixed by updating the reference tacopie which contains the fix. \subsubsection*{Additions}
\end{DoxyItemize}
None \subsubsection*{Removals}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.1.0}{\tt v3.\+1.\+0}}
\subsubsection*{Tag}
{\ttfamily 3.\+1.\+0}. \subsubsection*{Changes}
\begin{DoxyItemize}
\item Fix\+: compilation for specific windows compilers concerning atomic variables
\item Fix\+: handle correctly array replies with negative size by returning a null reply instead of throwing an invalid format exception
\item Fix\+: Bump tacopie version to retrieve a fix concerning gethostbyname() thread-\/safety issue on unix
\item Fix\+: compilation for programs based on Qt (\textquotesingle{}slots\textquotesingle{} conflict) \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item Add some overloads for the Z set functions to support floating point values
\item Add an auth method to the subscriber class to allow a subscriber to authenticate on the redis server \subsubsection*{Removals}
\end{DoxyItemize}
None
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/3.0.0}{\tt v3.\+0.\+0}}
\subsubsection*{Tag}
{\ttfamily 3.\+0.\+0}. \subsubsection*{Changes}
\begin{DoxyItemize}
\item Rewrite the network side of cpp\+\_\+redis by using the \href{https://github.com/Cylix/tacopie}{\tt tacopie library} \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item Tacopie is now a submodule of cpp\+\_\+redis \subsubsection*{Removals}
\end{DoxyItemize}
\begin{DoxyItemize}
\item All network related code
\end{DoxyItemize}
\subsection*{\href{https://github.com/Cylix/cpp_redis/releases/tag/2.2}{\tt v2.\+2}}
\subsubsection*{Tag}
{\ttfamily 2.\+2}. \subsubsection*{Changes}
\begin{DoxyItemize}
\item Bug patch
\item io\+\_\+service is no longer a singleton
\item {\ttfamily redis\+\_\+client} and {\ttfamily redis\+\_\+subscriber} instances can be assigned specific io\+\_\+service \subsubsection*{Additions}
\end{DoxyItemize}
\begin{DoxyItemize}
\item Integration Tests
\item Travis Integration
\item \href{https://github.com/Cylix/cpp_redis/wiki}{\tt Wiki}
\item Port of the library on Windows
\item Support for acknowledgement callbacks for {\ttfamily cpp\+\_\+redis\+::redis\+\_\+subscriber}
\item Logging system
\item Compilation Customizations \subsubsection*{Removals}
\end{DoxyItemize}
None