Thank you for considering contributing to lzbench! Please follow the guidelines below to ensure a smooth and efficient contribution process.
All contributions should pass (green tick) all Azure Pipeline tests for lzbench pipeline, which will be triggered automatically.
When updating an existing codec, please follow these steps:
- Update the codec files (e.g.,
brotli/*
). - Update
Makefile
if there are new source files that need to be built. - Update the codec version in
bench/lzbench.h
andREADME.md
. - Add a new entry in
CHANGELOG
- Refer to example commit: update brotli to 1.1.0.
When adding a new codec, please follow these steps:
- Create a new directory with the codec files (e.g.,
xxxx
). - Add a new codec to
README.md
with a proper link to the upstream repository. - Add a new entry in
CHANGELOG
- Add the new codec to
bench/lzbench.h
and increaseLZBENCH_COMPRESSOR_COUNT
. - Add declarations of compression and decompression functions in
bench/codecs.h
, e.g.:
#ifndef BENCH_REMOVE_XXXX
int64_t lzbench_xxxx_compress(char* inbuf, size_t insize, char* outbuf, size_t outsize, size_t level, size_t, char*);
int64_t lzbench_xxxx_decompress(char* inbuf, size_t insize, char* outbuf, size_t outsize, size_t, size_t, char*);
#else
#define lzbench_xxxx_compress NULL
#define lzbench_xxxx_decompress NULL
#endif // BENCH_REMOVE_XXXX
- Add definitions of compression and decompression functions in
bench/lz_codecs.cpp
,bench/symmetric_codecs.cpp
(BWT, PPM-based), orbench/misc_codecs.cpp
, e.g.:
#ifndef BENCH_REMOVE_XXXX
#include "XXXX/YYYY.h"
int64_t lzbench_xxxx_compress(char* inbuf, size_t insize, char* outbuf, size_t outsize, size_t level, size_t, char*) { }
int64_t lzbench_xxxx_decompress(char* inbuf, size_t insize, char* outbuf, size_t outsize, size_t, size_t, char*) { }
#endif
-
If a codec supports multi-threading, it should be disabled since all codecs are currently tested using a single thread. The only exception is GLZA, which is very slow and not tested with the default codecs.
-
Update
Makefile
:
ifeq "$(DONT_BUILD_XXXX)" "1"
DEFINES += -DBENCH_REMOVE_XXXX
else
XXXX_FILES = XXXX/YYYY.o XXXX/YYYY_Dec.o XXXX/YYYY_Enc.o
endif
And ensure the new codec in Makefile
is linked in:
lzbench: $(BZIP2_FILES) $(KANZI_FILES) ... $(XXXX_FILES)
- Refer to example commit: Add ppmd8 based on 7-zip 24.09.