v0.8.4

  • 性能:RISC-V Vector拡張(RVV)の実装を追加。@zijianli1234、@BoBoDai、@camel-cdrによる。
  • 性能:LoongArch LASXの実装を追加し、LSXを改善。@24bit-xjkpによる。
  • 性能:AArch64ではSVEよりNEONを優先し、XXH3を25-40%高速化。@Nicoshevによる。
  • 性能:非常に小さい更新でのXXH3ストリーミング速度を改善。@aleksazrの提案による。
  • API:XXH_memcpy()、XXH_memset()、XXH_memcmp()をコンパイル時に別の処理へ振り向けられるようにした。
  • API:複雑なC++統合向けに、新しいビルドマクロXXH_NO_EXTERNC_GUARDを追加。
  • CLI:64ビットシードに対応(-s、--seed)。@d06iによる。
  • CLI:ファイル名の後にもオプションを置けるようにした。--でオプション解析を終了する。#1098は@unterkomplexの報告による。
  • CLI:読み取りエラー後も後続ファイルの処理を続ける。#1064は@ZoomRmcの報告による。
  • CLI:長いWindowsパスや特殊なWindowsパスに対応。#1060。@t-matによる#1061を基にした。
  • CLI:ベンチマークの精度、エラー処理、単位ラベルを改善。#1051は@calgrayの報告による。
  • 修正:厳密なエイリアシングの下で、GCCが非整列読み取りを誤ってコンパイルする場合があった。#1013は@lassipulkkinenによる。
  • 修正:XXH_INLINE_ALLとXXH_NAMESPACEおよびx86実行時ディスパッチとの互換性を修正。@pps83による。#1071は@Dr-Hexの報告による。
  • 修正:extern "C"ブロック内でシステムヘッダーをインクルードすることを回避。#1122は@andreas-schwabの報告による。
  • 修正:MSVCのリンク時最適化、および警告をエラーとして扱う設定でのコンパイルを修正。#1038は@mi2thinkの報告による。
  • ビルド:クロスコンパイルと非x86ターゲット向けの実行時ディスパッチ検出を改善。@eworm-deの協力による。#1081は@PotMJの報告による。
  • ビルド:LIBXXH_DISPATCH=1を静的ライブラリーと動的ライブラリーの両方に適用。#1058は@xiotaの報告による。
  • ビルド:Makeビルドで設定ごとにオブジェクトを分離し、テストの並列ビルドに対応。
  • ビルド:CMake統合をbuild/cmakeへ移し、クロスコンパイル検出を改善。
  • インストール:WindowsとFreeBSDでパッケージのメタデータとインストールパスを改善。@iwamatsu、@chitao1234、@sunpoetによる。
  • 移植性:GCC < 8を使うARMでのコンパイルを修正。@mstorsjoによる。
  • 移植性:SolarisとillumosでのC++コンパイルを修正。@luqmanaによる。
  • 移植性:AVX-512の実装でAVX-512BWが不要になった。@NexusXeによる。
  • 文書:xxhsumの文書を拡充し、アルゴリズム仕様ファイルを明確化。
  • 文書:非暗号学的な衝突特性、特にXXH3の中程度の入力の処理経路について文書化(#1127、@thomasahleによる)。

v0.8.3

  • 修正:XXH3_128bits_withSecretandSeed()が、特定の条件の組み合わせで不正な結果を生成する場合があった。#894は@hltjによる。
  • CLI:x86/x64でベクトル拡張を実行時に検出。既定で有効。
  • CLI:新しいコマンド--filelistと--files-fromを追加。@Ian-Clowesによる。
  • CLI:XXH3の64ビットGNU形式を生成・検査できるようにした(コマンド-H3)。
  • 移植性:LoongArch SX SIMD拡張に対応。@lrzlinによる。
  • 移植性:AIXでビルドできるようにした。@likemaの提案による。
  • 移植性:SPARC CPUで検証。

v0.8.2

  • 修正:XXH3のS390xベクトル実装を修正(@hzhuang1)。
  • 修正:IBM XLコンパイラーでのPowerPCベクトルのコンパイルを修正(@MaxiBoether)。
  • 性能:SIMD128を使ってWASMを2倍/3倍高速化(@easyaspi314)。
  • 性能:ARM NEON上のXXH3を高速化(+20%)(@easyaspi314)。
  • CLI:/LF文字を含むファイル名を修正(@t-mat)。
  • CLI:--checkファイル内の#コメント行に対応(@t-mat)。
  • CLI:--binaryと--ignore-missingコマンドに対応(@t-mat)。
  • ビルド:-Ogでのコンパイルを修正(@easyaspi314、@t-mat)。
  • ビルド:cmakeによるpkgconfig生成を修正(@ilya-fedin)。
  • ビルド:iccでのコンパイルを修正。
  • ビルド:cmakeのインストールディレクトリを修正。
  • ビルド:バイナリーサイズを減らす新しいビルドオプションXXH_NO_XXH3、XXH_SIZE_OPT、XXH_NO_STREAMを追加(@easyaspi314)。
  • ビルド:専用のインストールターゲットを追加(@ffontaine)。
  • ビルド:cmakeでDISPATCHモードに対応(@hzhuang1)。
  • 移植性:Visual + clang-clでビルドするときのx86dispatchを修正(@t-mat)。
  • 移植性:XXH3のSVEベクトル実装を追加(@hzhuang1)。
  • 移植性:XXH_NO_STDLIBを使って、フリースタンディング環境との互換性を確保。
  • 移植性:Haikuでビルドできるようにした(@Begasus)。
  • 移植性:m68kとrisc-vで検証。
  • 文書:XXH3仕様を追加(@Adrien1018)。
  • 文書:doxygen文書を改善(@easyaspi314、@t-mat)。
  • その他:専用の健全性テスト用バイナリーを追加(@t-mat)。

v0.8.1

  • 性能:XXH3のストリーミング版、特にgccとmsvcで性能を大幅に改善。
  • 性能:小さい入力でのXXH64の速度とレイテンシーを改善。
  • 性能:ランダムな大きさの小さい入力で、XXH32の速度とレイテンシーをわずかに改善。
  • 性能:XXH32とXXH64のスタック使用量をわずかに改善。
  • API:新しい実験的な版XXH3_*_withSecretandSeed()を追加。
  • API:XXH3_generateSecret()を更新し、任意の大きさ(>= XXH3_SECRET_SIZE_MIN)のシークレットを生成できるようにした。
  • CLI:xxhsumで、コマンド-H3を使ってXXH3チェックサムを生成・検査できるようにした。
  • ビルド:新しいビルドマクロXXH_NO_XXH3で、XXH3を含めずにxxhashをビルドできるようにした。
  • ビルド:MSVCでのxxh_x86dispatchビルドを修正。@apankratによる。
  • ビルド:XXH_NAMESPACEまたは以前のXXH_INLINE_ALLの後でも、XXH_INLINE_ALLを常に安全に使えるようにした。
  • ビルド:PPC64LEのベクトル対応を改善。@mpeによる。
  • インストール:pkgconfigを修正。@ellertによる。
  • インストール:Haikuとの互換性を確保。@Begasusによる。
  • 文書:コードコメントをdoxygen対応にした。@easyaspi314による。
  • その他:XXH_ACCEPT_NULL_INPUT_POINTERが不要になった。size == 0であれば、すべての関数でNULL入力ポインターを受け付ける。
  • その他:GitHub Actions上のCIテストを全面的に再構成し、カバレッジを大幅に拡大。@t-matによる。
  • その他:xxhsumのコードベースをcli/ディレクトリ内の複数の専用単位へ分割。@easyaspi314による。

v0.8.0

  • API:XXH3を安定化。
  • CLI:xxhsumでBSD形式の--check行を解析できるようにした。@WayneDによる。
  • CLI:xxhsum -でコンソール入力を受け付ける。@jakiの要望による。
  • CLI:xxhsumで--区切り記号を受け付ける。@jakiによる。
  • CLI:修正:シンボリックリンクによる補助ツールで、正しい既定のアルゴリズムを表示。@martinetdによる。
  • インストール:pkgconfigスクリプトを改善し、インストール先を指定できるようにした。@ellertの要望による。

v0.7.4

  • 性能:実行時にベクトルを自動検出・選択(xxh_x86dispatch.h)。@easyaspi314が着手。
  • 性能:AVX512対応を追加。@gzm55による。
  • API:追加:シークレット生成器XXH_generateSecret()。@koraaの提案による。
  • API:修正:XXH3_state_tを移動可能にした。@koraaが特定。
  • API:修正:AVXモードで状態を正しく整列させる(malloc()とは異なる)。@easyaspi314による。
  • API:修正:ランダムな入力取り込み長の組み合わせによって、ストリーミングが誤った値を生成していた。@WayneDの報告による。
  • CLI:WindowsのUnicode表示を修正。@easyaspi314による。
  • CLI:sfvで生成したファイルを-cで検査できるようにした。
  • ビルド:make DISPATCH=1で、実行時のベクトル検出に対応するxxhsumとlibxxhashを生成(x86/x64のみ)。
  • インストール:cygwinでのインストールに対応。
  • 文書:XXH32とXXH64のCryptol仕様。@weaversaによる。

v0.7.3

  • 性能:大きい入力を高速化(約+20%)。
  • 性能:小さい入力のレイテンシーを改善(約10%)。
  • 性能:s390xのベクトルコードを追加。@easyaspi314による。
  • CLI:Windows上のUnicodeファイル名の対応を改善。@easyaspi314と@t-matの協力による。
  • API:XXH_STATIC_LINKING_ONLYとXXH_INLINE_ALLの有無にかかわらず、xxhash.hを任意の順序でインクルードできるようにした。
  • ビルド:xxHashの実装をxxhash.hへ移した。XXH_INLINE_ALLを使うために、/includeディレクトリにxxhash.cを置く必要がなくなった。
  • インストール:pkg-configファイルを作成。@bketによる。
  • インストール:VCpkgのインストール手順。@LilyWangLによる。
  • 文書:コード文書を大幅に改善。@easyaspi314による。
  • その他:/tests/collisionsに新しいテストツールを追加。64ビットハッシュ向けの総当たり衝突テスター。

v0.7.2

  • 特定の入力長でのXXH128の衝突率を修正。@svpvの報告による。
  • VSXとNEONの版を改善。@easyaspi314による。
  • スカラー処理経路(XXH_VECTOR=0)の性能を改善。@easyaspi314による。
  • xxhsum:-H2オプションで128ビットハッシュを生成できるようにした(注:実験目的のみ。XXH128はまだ凍結されていない)。
  • xxhsum:-qオプションで状態の通知を非表示にする。

v0.7.1

  • シークレットを優先:サイズがXXH3_SECRET_SIZE_MIN以上の任意のバイト列である「シークレット」を渡すことで、アルゴリズムの計算を変更できる。
  • seedも引き続き利用でき、シークレット生成器として働く。
  • ARM NEON版を更新。@easyaspi314による。
  • ストリーミング実装を利用可能にした。
  • Visual Studioとの互換性と性能を改善。@aras-pの協力による。
  • XXH_INLINE_ALL使用時の統合を改善。組み込み先の名前空間を汚さず、XXH_ASSERT()やXXH_ALIGNなど、独自のマクロを使う。
  • 128ビット版に、ハッシュ比較の補助関数を追加。
  • clangでのrotl命令生成を改善。@easyaspi314の協力による。
  • バイナリーサイズを減らすビルドマクロXXH_REROLLを追加。@easyaspi314による。
  • cmakeスクリプトを改善。@Mezozoyskyによる。
  • /tests/benchに完全なベンチマークプログラムを用意。