Comment 10 for bug 1717040

Revision history for this message
Yann Collet (cyan4973) wrote :

Note that the format is an (important) part of the problem,
but there is also the topic of the API, which has changed much since v0.5.1.

The simplest prototypes are still the same (ZSTD_compress(), ZSTD_decompress()),
but advanced ones have evolved.
The streaming API is very different, and the older one, present in v0.5.1, is now considered deprecated (it generates compilation warnings, and in a future version, symbols will be removed).
The Dictionary API for Bulk processing doesn't exist.
Even minor details matter : all objects in zstd share a common pattern starting with ZSTD_createObject() and ending with ZSTD_freeObject(). For convenience, ZSTD_freeObject() accepts NULL pointers, like free(). But that's only true since >= v0.7.0, hence not in v0.5.1.

The API has stabilised in v0.8.1, adding only a couple of capabilities since, and guaranteeing continued support for existing interfaces labelled "stable" (all symbols published by default).

A number of applications expecting an API >= 0.8.1 will fail with libzstd v0.5.1, either at link stage, because a symbol is missing, or even sometimes at run stage, because a behaviour is different.