Update notes preparing for v1.0.0-rc1
This commit is contained in:
parent
d8ff72387d
commit
a853467542
170
CHANGELOG.md
170
CHANGELOG.md
@ -1,18 +1,165 @@
|
|||||||
### 1.0.0 (unreleased)
|
## [1.0.0-rc1](https://github.com/redis/hiredis/tree/v1.0.0-rc1) - (2020-07-29)
|
||||||
|
|
||||||
|
Announcing Hiredis v1.0.0-rc1, which adds support for RESP3, SSL connections, allocator injection, and substantially improved Windows support! :tada:
|
||||||
|
|
||||||
|
_A big thanks to everyone who helped with this release. The following list includes everyone who contributed at least five lines, sorted by lines contributed._ :sparkling_heart:
|
||||||
|
|
||||||
|
[Michael Grunder](https://github.com/michael-grunder), [Yossi Gottlieb](https://github.com/yossigo),
|
||||||
|
[Mark Nunberg](https://github.com/mnunberg), [Marcus Geelnard](https://github.com/mbitsnbites),
|
||||||
|
[Justin Brewer](https://github.com/justinbrewer), [Valentino Geron](https://github.com/valentinogeron),
|
||||||
|
[Minun Dragonation](https://github.com/dragonation), [Omri Steiner](https://github.com/OmriSteiner),
|
||||||
|
[Sangmoon Yi](https://github.com/jman-krafton), [Jinjiazh](https://github.com/jinjiazhang),
|
||||||
|
[Odin Hultgren Van Der Horst](https://github.com/Miniwoffer), [Muhammad Zahalqa](https://github.com/tryfinally),
|
||||||
|
[Nick Rivera](https://github.com/heronr), [Qi Yang](https://github.com/movebean),
|
||||||
|
[kevin1018](https://github.com/kevin1018)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/redis/hiredis/compare/v0.14.1...HEAD)
|
||||||
|
|
||||||
**BREAKING CHANGES**:
|
**BREAKING CHANGES**:
|
||||||
|
|
||||||
* Bulk and multi-bulk lengths less than -1 or greater than `LLONG_MAX` are now
|
* `redisOptions` now has two timeout fields. One for connecting, and one for commands. If you're presently using `options->timeout` you will need to change it to use `options->connect_timeout`. (See [example](https://github.com/redis/hiredis/commit/38b5ae543f5c99eb4ccabbe277770fc6bc81226f#diff-86ba39d37aa829c8c82624cce4f049fbL36))
|
||||||
protocol errors. This is consistent with the RESP specification. On 32-bit
|
|
||||||
platforms, the upper bound is lowered to `SIZE_MAX`.
|
|
||||||
|
|
||||||
* Change `redisReply.len` to `size_t`, as it denotes the the size of a string
|
* Bulk and multi-bulk lengths less than -1 or greater than `LLONG_MAX` are now protocol errors. This is consistent
|
||||||
|
with the RESP specification. On 32-bit platforms, the upper bound is lowered to `SIZE_MAX`.
|
||||||
|
|
||||||
User code should compare this to `size_t` values as well. If it was used to
|
* `redisReplyObjectFunctions.createArray` now takes `size_t` for its length parameter.
|
||||||
compare to other values, casting might be necessary or can be removed, if
|
|
||||||
casting was applied before.
|
|
||||||
|
|
||||||
### 0.x.x (unreleased)
|
**New features:**
|
||||||
|
- Support for RESP3
|
||||||
|
[\#697](https://github.com/redis/hiredis/pull/697),
|
||||||
|
[\#805](https://github.com/redis/hiredis/pull/805),
|
||||||
|
[\#819](https://github.com/redis/hiredis/pull/819),
|
||||||
|
[\#841](https://github.com/redis/hiredis/pull/841)
|
||||||
|
([Yossi Gottlieb](https://github.com/yossigo), [Michael Grunder](https://github.com/michael-grunder))
|
||||||
|
- Support for SSL connections
|
||||||
|
[\#645](https://github.com/redis/hiredis/pull/645),
|
||||||
|
[\#699](https://github.com/redis/hiredis/pull/699),
|
||||||
|
[\#702](https://github.com/redis/hiredis/pull/702),
|
||||||
|
[\#708](https://github.com/redis/hiredis/pull/708),
|
||||||
|
[\#711](https://github.com/redis/hiredis/pull/711),
|
||||||
|
[\#821](https://github.com/redis/hiredis/pull/821),
|
||||||
|
[more](https://github.com/redis/hiredis/pulls?q=is%3Apr+is%3Amerged+SSL)
|
||||||
|
([Mark Nunberg](https://github.com/mnunberg), [Yossi Gottlieb](https://github.com/yossigo))
|
||||||
|
- Run-time allocator injection
|
||||||
|
[\#800](https://github.com/redis/hiredis/pull/800)
|
||||||
|
([Michael Grunder](https://github.com/michael-grunder))
|
||||||
|
- Improved Windows support (including MinGW and Windows CI)
|
||||||
|
[\#652](https://github.com/redis/hiredis/pull/652),
|
||||||
|
[\#663](https://github.com/redis/hiredis/pull/663)
|
||||||
|
([Marcus Geelnard](https://www.bitsnbites.eu/author/m/))
|
||||||
|
- Adds support for distinct connect and command timeouts
|
||||||
|
[\#839](https://github.com/redis/hiredis/pull/839),
|
||||||
|
[\#829](https://github.com/redis/hiredis/pull/829)
|
||||||
|
([Valentino Geron](https://github.com/valentinogeron))
|
||||||
|
- Add generic pointer and destructor to `redisContext` that users can use for context.
|
||||||
|
[\#855](https://github.com/redis/hiredis/pull/855)
|
||||||
|
([Michael Grunder](https://github.com/michael-grunder))
|
||||||
|
|
||||||
|
**Closed issues (that involved code changes):**
|
||||||
|
|
||||||
|
- Makefile does not install TLS libraries [\#809](https://github.com/redis/hiredis/issues/809)
|
||||||
|
- redisConnectWithOptions should not set command timeout [\#722](https://github.com/redis/hiredis/issues/722), [\#829](https://github.com/redis/hiredis/pull/829) ([valentinogeron](https://github.com/valentinogeron))
|
||||||
|
- Fix integer overflow in `sdsrange` [\#827](https://github.com/redis/hiredis/issues/827)
|
||||||
|
- INFO & CLUSTER commands failed when using RESP3 [\#802](https://github.com/redis/hiredis/issues/802)
|
||||||
|
- Windows compatibility patches [\#687](https://github.com/redis/hiredis/issues/687), [\#838](https://github.com/redis/hiredis/issues/838), [\#842](https://github.com/redis/hiredis/issues/842)
|
||||||
|
- RESP3 PUSH messages incorrectly use pending callback [\#825](https://github.com/redis/hiredis/issues/825)
|
||||||
|
- Asynchronous PSUBSCRIBE command fails when using RESP3 [\#815](https://github.com/redis/hiredis/issues/815)
|
||||||
|
- New SSL API [\#804](https://github.com/redis/hiredis/issues/804), [\#813](https://github.com/redis/hiredis/issues/813)
|
||||||
|
- Hard-coded limit of nested reply depth [\#794](https://github.com/redis/hiredis/issues/794)
|
||||||
|
- Fix TCP_NODELAY in Windows/OSX [\#679](https://github.com/redis/hiredis/issues/679), [\#690](https://github.com/redis/hiredis/issues/690), [\#779](https://github.com/redis/hiredis/issues/779), [\#785](https://github.com/redis/hiredis/issues/785),
|
||||||
|
- Added timers to libev adapter. [\#778](https://github.com/redis/hiredis/issues/778), [\#795](https://github.com/redis/hiredis/pull/795)
|
||||||
|
- Initialization discards const qualifier [\#777](https://github.com/redis/hiredis/issues/777)
|
||||||
|
- \[BUG\]\[MinGW64\] Error setting socket timeout [\#775](https://github.com/redis/hiredis/issues/775)
|
||||||
|
- undefined reference to hi_malloc [\#769](https://github.com/redis/hiredis/issues/769)
|
||||||
|
- hiredis pkg-config file incorrectly ignores multiarch libdir spec'n [\#767](https://github.com/redis/hiredis/issues/767)
|
||||||
|
- Don't use -G to build shared object on Solaris [\#757](https://github.com/redis/hiredis/issues/757)
|
||||||
|
- error when make USE\_SSL=1 [\#748](https://github.com/redis/hiredis/issues/748)
|
||||||
|
- Allow to change SSL Mode [\#646](https://github.com/redis/hiredis/issues/646)
|
||||||
|
- hiredis/adapters/libevent.h memleak [\#618](https://github.com/redis/hiredis/issues/618)
|
||||||
|
- redisLibuvPoll crash when server closes the connetion [\#545](https://github.com/redis/hiredis/issues/545)
|
||||||
|
- about redisAsyncDisconnect question [\#518](https://github.com/redis/hiredis/issues/518)
|
||||||
|
- hiredis adapters libuv error for help [\#508](https://github.com/redis/hiredis/issues/508)
|
||||||
|
- API/ABI changes analysis [\#506](https://github.com/redis/hiredis/issues/506)
|
||||||
|
- Memory leak patch in Redis [\#502](https://github.com/redis/hiredis/issues/502)
|
||||||
|
- Remove the depth limitation [\#421](https://github.com/redis/hiredis/issues/421)
|
||||||
|
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Move SSL management to a distinct private pointer [\#855](https://github.com/redis/hiredis/pull/855) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Move include to sockcompat.h to maintain style [\#850](https://github.com/redis/hiredis/pull/850) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Remove erroneous tag and add license to push example [\#849](https://github.com/redis/hiredis/pull/849) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- fix windows compiling with mingw [\#848](https://github.com/redis/hiredis/pull/848) ([rmalizia44](https://github.com/rmalizia44))
|
||||||
|
- Some Windows quality of life improvements. [\#846](https://github.com/redis/hiredis/pull/846) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Use \_WIN32 define instead of WIN32 [\#845](https://github.com/redis/hiredis/pull/845) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Non Linux CI fixes [\#844](https://github.com/redis/hiredis/pull/844) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Resp3 oob push support [\#841](https://github.com/redis/hiredis/pull/841) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- fix \#785: defer TCP\_NODELAY in async tcp connections [\#836](https://github.com/redis/hiredis/pull/836) ([OmriSteiner](https://github.com/OmriSteiner))
|
||||||
|
- sdsrange overflow fix [\#830](https://github.com/redis/hiredis/pull/830) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Use explicit pointer casting for c++ compatibility [\#826](https://github.com/redis/hiredis/pull/826) ([aureus1](https://github.com/aureus1))
|
||||||
|
- Document allocator injection and completeness fix in test.c [\#824](https://github.com/redis/hiredis/pull/824) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Use unique names for allocator struct members [\#823](https://github.com/redis/hiredis/pull/823) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- New SSL API to replace redisSecureConnection\(\). [\#821](https://github.com/redis/hiredis/pull/821) ([yossigo](https://github.com/yossigo))
|
||||||
|
- Add logic to handle RESP3 push messages [\#819](https://github.com/redis/hiredis/pull/819) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Use standrad isxdigit instead of custom helper function. [\#814](https://github.com/redis/hiredis/pull/814) ([tryfinally](https://github.com/tryfinally))
|
||||||
|
- Fix missing SSL build/install options. [\#812](https://github.com/redis/hiredis/pull/812) ([yossigo](https://github.com/yossigo))
|
||||||
|
- Add link to ABI tracker [\#808](https://github.com/redis/hiredis/pull/808) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Resp3 verbatim string support [\#805](https://github.com/redis/hiredis/pull/805) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Allow users to replace allocator and handle OOM everywhere. [\#800](https://github.com/redis/hiredis/pull/800) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Remove nested depth limitation. [\#797](https://github.com/redis/hiredis/pull/797) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Attempt to fix compilation on Solaris [\#796](https://github.com/redis/hiredis/pull/796) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Support timeouts in libev adapater [\#795](https://github.com/redis/hiredis/pull/795) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Fix pkgconfig when installing to a custom lib dir [\#793](https://github.com/redis/hiredis/pull/793) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Fix USE\_SSL=1 make/cmake on OSX and CMake tests [\#789](https://github.com/redis/hiredis/pull/789) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Use correct libuv call on Windows [\#784](https://github.com/redis/hiredis/pull/784) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Added CMake package config and fixed hiredis\_ssl on Windows [\#783](https://github.com/redis/hiredis/pull/783) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- CMake: Set hiredis\_ssl shared object version. [\#780](https://github.com/redis/hiredis/pull/780) ([yossigo](https://github.com/yossigo))
|
||||||
|
- Win32 tests and timeout fix [\#776](https://github.com/redis/hiredis/pull/776) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Provides an optional cleanup callback for async data. [\#768](https://github.com/redis/hiredis/pull/768) ([heronr](https://github.com/heronr))
|
||||||
|
- Housekeeping fixes [\#764](https://github.com/redis/hiredis/pull/764) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- install alloc.h [\#756](https://github.com/redis/hiredis/pull/756) ([ch1aki](https://github.com/ch1aki))
|
||||||
|
- fix spelling mistakes [\#746](https://github.com/redis/hiredis/pull/746) ([ShooterIT](https://github.com/ShooterIT))
|
||||||
|
- Free the reply in redisGetReply when passed NULL [\#741](https://github.com/redis/hiredis/pull/741) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Fix dead code in sslLogCallback relating to should\_log variable. [\#737](https://github.com/redis/hiredis/pull/737) ([natoscott](https://github.com/natoscott))
|
||||||
|
- Fix typo in dict.c. [\#731](https://github.com/redis/hiredis/pull/731) ([Kevin-Xi](https://github.com/Kevin-Xi))
|
||||||
|
- Adding an option to DISABLE\_TESTS [\#727](https://github.com/redis/hiredis/pull/727) ([pbotros](https://github.com/pbotros))
|
||||||
|
- Update README with SSL support. [\#720](https://github.com/redis/hiredis/pull/720) ([yossigo](https://github.com/yossigo))
|
||||||
|
- Fixes leaks in unit tests [\#715](https://github.com/redis/hiredis/pull/715) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- SSL Tests [\#711](https://github.com/redis/hiredis/pull/711) ([yossigo](https://github.com/yossigo))
|
||||||
|
- SSL Reorganization [\#708](https://github.com/redis/hiredis/pull/708) ([yossigo](https://github.com/yossigo))
|
||||||
|
- Fix MSVC build. [\#706](https://github.com/redis/hiredis/pull/706) ([yossigo](https://github.com/yossigo))
|
||||||
|
- SSL: Properly report SSL\_connect\(\) errors. [\#702](https://github.com/redis/hiredis/pull/702) ([yossigo](https://github.com/yossigo))
|
||||||
|
- Silent SSL trace to stdout by default. [\#699](https://github.com/redis/hiredis/pull/699) ([yossigo](https://github.com/yossigo))
|
||||||
|
- Port RESP3 support from Redis. [\#697](https://github.com/redis/hiredis/pull/697) ([yossigo](https://github.com/yossigo))
|
||||||
|
- Removed whitespace before newline [\#691](https://github.com/redis/hiredis/pull/691) ([Miniwoffer](https://github.com/Miniwoffer))
|
||||||
|
- Add install adapters header files [\#688](https://github.com/redis/hiredis/pull/688) ([kevin1018](https://github.com/kevin1018))
|
||||||
|
- Remove unnecessary null check before free [\#684](https://github.com/redis/hiredis/pull/684) ([qlyoung](https://github.com/qlyoung))
|
||||||
|
- redisReaderGetReply leak memory [\#671](https://github.com/redis/hiredis/pull/671) ([movebean](https://github.com/movebean))
|
||||||
|
- fix timeout code in windows [\#670](https://github.com/redis/hiredis/pull/670) ([jman-krafton](https://github.com/jman-krafton))
|
||||||
|
- test: fix errstr matching for musl libc [\#665](https://github.com/redis/hiredis/pull/665) ([ghost](https://github.com/ghost))
|
||||||
|
- Windows: MinGW fixes and Windows Travis builders [\#663](https://github.com/redis/hiredis/pull/663) ([mbitsnbites](https://github.com/mbitsnbites))
|
||||||
|
- The setsockopt and getsockopt API diffs from BSD socket and WSA one [\#662](https://github.com/redis/hiredis/pull/662) ([dragonation](https://github.com/dragonation))
|
||||||
|
- Fix Compile Error On Windows \(Visual Studio\) [\#658](https://github.com/redis/hiredis/pull/658) ([jinjiazhang](https://github.com/jinjiazhang))
|
||||||
|
- Fix NXDOMAIN test case [\#653](https://github.com/redis/hiredis/pull/653) ([michael-grunder](https://github.com/michael-grunder))
|
||||||
|
- Add MinGW support [\#652](https://github.com/redis/hiredis/pull/652) ([mbitsnbites](https://github.com/mbitsnbites))
|
||||||
|
- SSL Support [\#645](https://github.com/redis/hiredis/pull/645) ([mnunberg](https://github.com/mnunberg))
|
||||||
|
- Fix Invalid argument after redisAsyncConnectUnix [\#644](https://github.com/redis/hiredis/pull/644) ([codehz](https://github.com/codehz))
|
||||||
|
- Makefile: use predefined AR [\#632](https://github.com/redis/hiredis/pull/632) ([Mic92](https://github.com/Mic92))
|
||||||
|
- FreeBSD build fix [\#628](https://github.com/redis/hiredis/pull/628) ([devnexen](https://github.com/devnexen))
|
||||||
|
- Fix errors not propagating properly with libuv.h. [\#624](https://github.com/redis/hiredis/pull/624) ([yossigo](https://github.com/yossigo))
|
||||||
|
- Update README.md [\#621](https://github.com/redis/hiredis/pull/621) ([Crunsher](https://github.com/Crunsher))
|
||||||
|
- Fix redisBufferRead documentation [\#620](https://github.com/redis/hiredis/pull/620) ([hacst](https://github.com/hacst))
|
||||||
|
- Add CPPFLAGS to REAL\_CFLAGS [\#614](https://github.com/redis/hiredis/pull/614) ([thomaslee](https://github.com/thomaslee))
|
||||||
|
- Update createArray to take size\_t [\#597](https://github.com/redis/hiredis/pull/597) ([justinbrewer](https://github.com/justinbrewer))
|
||||||
|
- fix common realloc mistake and add null check more [\#580](https://github.com/redis/hiredis/pull/580) ([charsyam](https://github.com/charsyam))
|
||||||
|
- Proper error reporting for connect failures [\#578](https://github.com/redis/hiredis/pull/578) ([mnunberg](https://github.com/mnunberg))
|
||||||
|
|
||||||
|
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
||||||
|
|
||||||
|
### 0.14.1 (2020-03-13)
|
||||||
|
|
||||||
|
* Adds safe allocation wrappers (CVE-2020-7105, #747, #752) (Michael Grunder)
|
||||||
|
|
||||||
|
### 0.14.0 (2018-09-25)
|
||||||
**BREAKING CHANGES**:
|
**BREAKING CHANGES**:
|
||||||
|
|
||||||
* Change `redisReply.len` to `size_t`, as it denotes the the size of a string
|
* Change `redisReply.len` to `size_t`, as it denotes the the size of a string
|
||||||
@ -20,10 +167,6 @@
|
|||||||
User code should compare this to `size_t` values as well.
|
User code should compare this to `size_t` values as well.
|
||||||
If it was used to compare to other values, casting might be necessary or can be removed, if casting was applied before.
|
If it was used to compare to other values, casting might be necessary or can be removed, if casting was applied before.
|
||||||
|
|
||||||
* `redisReplyObjectFunctions.createArray` now takes `size_t` for its length parameter.
|
|
||||||
|
|
||||||
### 0.14.0 (2018-09-25)
|
|
||||||
|
|
||||||
* Make string2ll static to fix conflict with Redis (Tom Lee [c3188b])
|
* Make string2ll static to fix conflict with Redis (Tom Lee [c3188b])
|
||||||
* Use -dynamiclib instead of -shared for OSX (Ryan Schmidt [a65537])
|
* Use -dynamiclib instead of -shared for OSX (Ryan Schmidt [a65537])
|
||||||
* Use string2ll from Redis w/added tests (Michael Grunder [7bef04, 60f622])
|
* Use string2ll from Redis w/added tests (Michael Grunder [7bef04, 60f622])
|
||||||
@ -196,4 +339,3 @@ The parser, standalone since v0.12.0, can now be compiled on Windows
|
|||||||
### 0.10.0
|
### 0.10.0
|
||||||
|
|
||||||
* See commit log.
|
* See commit log.
|
||||||
|
|
||||||
|
78
README.md
78
README.md
@ -1,6 +1,6 @@
|
|||||||
[![Build Status](https://travis-ci.org/redis/hiredis.png)](https://travis-ci.org/redis/hiredis)
|
[![Build Status](https://travis-ci.org/redis/hiredis.png)](https://travis-ci.org/redis/hiredis)
|
||||||
|
|
||||||
**This Readme reflects the latest changed in the master branch. See [v0.14.1](https://github.com/redis/hiredis/tree/v0.14.1) for the Readme and documentation for the latest release ([API/ABI history](https://abi-laboratory.pro/?view=timeline&l=hiredis)).**
|
**This Readme reflects the latest changed in the master branch. See [v1.0.0-rc1](https://github.com/redis/hiredis/tree/v1.0.0-rc1) for the Readme and documentation for the latest release ([API/ABI history](https://abi-laboratory.pro/?view=timeline&l=hiredis)).**
|
||||||
|
|
||||||
# HIREDIS
|
# HIREDIS
|
||||||
|
|
||||||
@ -22,14 +22,33 @@ Redis version >= 1.2.0.
|
|||||||
The library comes with multiple APIs. There is the
|
The library comes with multiple APIs. There is the
|
||||||
*synchronous API*, the *asynchronous API* and the *reply parsing API*.
|
*synchronous API*, the *asynchronous API* and the *reply parsing API*.
|
||||||
|
|
||||||
## Upgrading to `1.0.0`
|
## Upgrading to `1.0.0-rc1`
|
||||||
|
|
||||||
Version 1.0.0 marks a stable release of hiredis.
|
Version 1.0.0-rc1 marks the first release candidate for the first stable release of Hiredis.
|
||||||
It includes some minor breaking changes, mostly to make the exposed API more uniform and self-explanatory.
|
It includes some minor breaking changes, mostly to make the exposed API more uniform and self-explanatory.
|
||||||
It also bundles the updated `sds` library, to sync up with upstream and Redis.
|
It also bundles the updated `sds` library, to sync up with upstream and Redis.
|
||||||
For most applications a recompile against the new hiredis should be enough.
|
|
||||||
For code changes see the [Changelog](CHANGELOG.md).
|
For code changes see the [Changelog](CHANGELOG.md).
|
||||||
|
|
||||||
|
_Note: As described below, a few member names have been changed but most applications should be able to upgrade with minor code changes and recompiling._
|
||||||
|
|
||||||
|
## IMPORTANT: Breaking change from `0.14.1` -> `1.0.0-rc1`
|
||||||
|
|
||||||
|
* `redisContext` has two additional members (`free_privdata`, and `privctx`).
|
||||||
|
* `redisOptions.timeout` has been renamed to `redisOptions.connect_timeout`, and we've added `redisOptions.command_timeout`.
|
||||||
|
* `redisReplyObjectFunctions.createArray` now takes `size_t` instead of `int` for its length parameter.
|
||||||
|
|
||||||
|
## IMPORTANT: Breaking changes when upgrading from 0.13.x -> 0.14.x
|
||||||
|
|
||||||
|
Bulk and multi-bulk lengths less than -1 or greater than `LLONG_MAX` are now
|
||||||
|
protocol errors. This is consistent with the RESP specification. On 32-bit
|
||||||
|
platforms, the upper bound is lowered to `SIZE_MAX`.
|
||||||
|
|
||||||
|
Change `redisReply.len` to `size_t`, as it denotes the the size of a string
|
||||||
|
|
||||||
|
User code should compare this to `size_t` values as well. If it was used to
|
||||||
|
compare to other values, casting might be necessary or can be removed, if
|
||||||
|
casting was applied before.
|
||||||
|
|
||||||
## Upgrading from `<0.9.0`
|
## Upgrading from `<0.9.0`
|
||||||
|
|
||||||
Version 0.9.0 is a major overhaul of hiredis in every aspect. However, upgrading existing
|
Version 0.9.0 is a major overhaul of hiredis in every aspect. However, upgrading existing
|
||||||
@ -110,6 +129,8 @@ The standard replies that `redisCommand` are of the type `redisReply`. The
|
|||||||
`type` field in the `redisReply` should be used to test what kind of reply
|
`type` field in the `redisReply` should be used to test what kind of reply
|
||||||
was received:
|
was received:
|
||||||
|
|
||||||
|
### RESP2
|
||||||
|
|
||||||
* **`REDIS_REPLY_STATUS`**:
|
* **`REDIS_REPLY_STATUS`**:
|
||||||
* The command replied with a status reply. The status string can be accessed using `reply->str`.
|
* The command replied with a status reply. The status string can be accessed using `reply->str`.
|
||||||
The length of this string can be accessed using `reply->len`.
|
The length of this string can be accessed using `reply->len`.
|
||||||
@ -134,16 +155,51 @@ was received:
|
|||||||
and can be accessed via `reply->element[..index..]`.
|
and can be accessed via `reply->element[..index..]`.
|
||||||
Redis may reply with nested arrays but this is fully supported.
|
Redis may reply with nested arrays but this is fully supported.
|
||||||
|
|
||||||
|
### RESP3
|
||||||
|
|
||||||
|
Hiredis also supports every new `RESP3` data type which are as follows. For more information about the protocol see the `RESP3` [specification.](https://github.com/antirez/RESP3/blob/master/spec.md)
|
||||||
|
|
||||||
|
* **`REDIS_REPLY_DOUBLE`**:
|
||||||
|
* The command replied with a double-precision floating point number.
|
||||||
|
The value is stored as a string in the `str` member, and can be converted with `strtod` or similar.
|
||||||
|
|
||||||
|
* **`REDIS_REPLY_BOOL`**:
|
||||||
|
* A boolean true/false reply.
|
||||||
|
The value is stored in the `integer` member and will be either `0` or `1`.
|
||||||
|
|
||||||
|
* **`REDIS_REPLY_MAP`**:
|
||||||
|
* An array with the added invariant that there will always be an even number of elements.
|
||||||
|
The MAP is functionally equivelant to `REDIS_REPLY_ARRAY` except for the previously mentioned invariant.
|
||||||
|
|
||||||
|
* **`REDIS_REPLY_SET`**:
|
||||||
|
* An array response where each entry is unique.
|
||||||
|
Like the MAP type, the data is identical to an array response except there are no duplicate values.
|
||||||
|
|
||||||
|
* **`REDIS_REPLY_PUSH`**:
|
||||||
|
* An array that can be generated spontaneously by Redis.
|
||||||
|
This array response will always contain at least two subelements. The first contains the type of `PUSH` message (e.g. `message`, or `invalidate`), and the second being a sub-array with the `PUSH` payload itself.
|
||||||
|
|
||||||
|
* **`REDIS_REPLY_ATTR`**:
|
||||||
|
* An array structurally identical to a `MAP` but intended as meta-data about a reply.
|
||||||
|
_As of Redis 6.0.6 this reply type is not used in Redis_
|
||||||
|
|
||||||
|
* **`REDIS_REPLY_BIGNUM`**:
|
||||||
|
* A string representing an arbitrarily large signed or unsigned integer value.
|
||||||
|
The number will be encoded as a string in the `str` member of `redisReply`.
|
||||||
|
|
||||||
|
* **`REDIS_REPLY_VERB`**:
|
||||||
|
* A verbatim string, intended to be presented to the user without modification.
|
||||||
|
The string payload is stored in the `str` memeber, and type data is stored in the `vtype` member (e.g. `txt` for raw text or `md` for markdown).
|
||||||
|
|
||||||
Replies should be freed using the `freeReplyObject()` function.
|
Replies should be freed using the `freeReplyObject()` function.
|
||||||
Note that this function will take care of freeing sub-reply objects
|
Note that this function will take care of freeing sub-reply objects
|
||||||
contained in arrays and nested arrays, so there is no need for the user to
|
contained in arrays and nested arrays, so there is no need for the user to
|
||||||
free the sub replies (it is actually harmful and will corrupt the memory).
|
free the sub replies (it is actually harmful and will corrupt the memory).
|
||||||
|
|
||||||
**Important:** the current version of hiredis (0.10.0) frees replies when the
|
**Important:** the current version of hiredis (1.0.0-rc1) frees replies when the
|
||||||
asynchronous API is used. This means you should not call `freeReplyObject` when
|
asynchronous API is used. This means you should not call `freeReplyObject` when
|
||||||
you use this API. The reply is cleaned up by hiredis _after_ the callback
|
you use this API. The reply is cleaned up by hiredis _after_ the callback
|
||||||
returns. This behavior will probably change in future releases, so make sure to
|
returns. We may introduce a flag to make this configurable in future versions of the library.
|
||||||
keep an eye on the changelog when upgrading (see issue #39).
|
|
||||||
|
|
||||||
### Cleaning up
|
### Cleaning up
|
||||||
|
|
||||||
@ -595,6 +651,8 @@ hiredisResetAllocators();
|
|||||||
|
|
||||||
## AUTHORS
|
## AUTHORS
|
||||||
|
|
||||||
Hiredis was written by Salvatore Sanfilippo (antirez at gmail),
|
Salvatore Sanfilippo (antirez at gmail),\
|
||||||
Pieter Noordhuis (pcnoordhuis at gmail), and Michael Grunder
|
Pieter Noordhuis (pcnoordhuis at gmail)\
|
||||||
(michael dot grunder at gmail) and is released under the BSD license.
|
Michael Grunder (michael dot grunder at gmail)
|
||||||
|
|
||||||
|
_Hiredis is released under the BSD license._
|
||||||
|
@ -45,10 +45,10 @@ typedef long long ssize_t;
|
|||||||
#include "sds.h" /* for sds */
|
#include "sds.h" /* for sds */
|
||||||
#include "alloc.h" /* for allocation wrappers */
|
#include "alloc.h" /* for allocation wrappers */
|
||||||
|
|
||||||
#define HIREDIS_MAJOR 0
|
#define HIREDIS_MAJOR 1
|
||||||
#define HIREDIS_MINOR 15
|
#define HIREDIS_MINOR 0
|
||||||
#define HIREDIS_PATCH 0
|
#define HIREDIS_PATCH 0
|
||||||
#define HIREDIS_SONAME 0.15
|
#define HIREDIS_SONAME 1.0.0-rc1
|
||||||
|
|
||||||
/* Connection type can be blocking or non-blocking and is set in the
|
/* Connection type can be blocking or non-blocking and is set in the
|
||||||
* least significant bit of the flags field in redisContext. */
|
* least significant bit of the flags field in redisContext. */
|
||||||
|
Loading…
Reference in New Issue
Block a user