PackageTrack

Go modules · #2266

github.com/zeebo/xxh3

v1.1.0zeebo/xxh3

Release timeline

62 releases since 2019
20192020202120222023202420252026

Releases

  1. v1.1.1-0.20260723224138-c88f7bdcf99223 Jul 2026pre-release

    Nothing published for this version

  2. v1.1.023 Jan 2026
    Release notes

    Just run gofmt -w .

    Open source →
  3. v1.0.3-0.20250724185950-77e65e1f514f24 Jul 2025pre-release

    Nothing published for this version

  4. v1.0.3-0.20250310223743-4b2280ee9daf10 Mar 2025pre-release

    Nothing published for this version

  5. v1.0.3-0.20230502181907-7a4a65f1295e2 May 2023pre-release

    Nothing published for this version

  6. v1.0.3-0.20230502181907-3808c706a06a2 May 2023pre-release

    Nothing published for this version

  7. v1.0.3-0.20230105190837-8b1e819c6d4d5 Jan 2023pre-release

    Nothing published for this version

  8. v1.0.3-0.20220911134137-44d8fda7850a11 Sept 2022pre-release

    Nothing published for this version

  9. v1.0.25 Mar 2022
    Release notes

    the trick to dispatch to one of two functions by picking it
    and putting it into a variable to allow the body to be inlined
    has a problem: the compiler, seeing the virtual dispatch, is
    not smart enough to notice that every option does not escape
    the argument, and so it escapes the argument.

    remove that and refactor some to gain some lost performance.
    some smaller sizes are worse by <1ns, but some larger sizes
    are better by up to 15%, and nothing escapes anymore.

    fixes #19

    Open source →
  10. v1.0.2-0.20220305191009-e6b0fd3c7bb55 Mar 2022pre-release

    Nothing published for this version

  11. v1.0.2-0.20211113223132-d10cc761c3ac13 Nov 2021pre-release

    Nothing published for this version

  12. v1.0.111 Nov 2021
    Release notes

    make zero value Hasher valid

    Open source →
  13. v1.0.011 Nov 2021
    Release notes

    go vet on more combos and fix test builds

    Open source →
  14. v1.0.0-rc3.0.20210921232450-c77878a3820421 Sept 2021pre-release

    Nothing published for this version

  15. v1.0.0-rc3.0.20210921212306-5d489ec08be021 Sept 2021pre-release

    Nothing published for this version

  16. v1.0.0-rc3.0.20210921212306-226faff1ffc921 Sept 2021pre-release

    Nothing published for this version

  17. v1.0.0-rc318 Sept 2021pre-release
    Release notes

    for sizes larger than a block+stripe (so 1088 bytes)
    the Hasher would output the wrong value. this was due
    to a bug caused by having reversed arguments to a copy
    call. the test did not catch it because it too had a
    bug where it was generating very aligned data bytes.

    the reason why it does this copy is because the final
    accumulation step always reads a stripe backwards from
    the end, so if we just accumulated a block and then
    need to finalize, it reads in the last stripe of bytes
    again.

    fixes #14

    Open source →
  18. v1.0.0-rc2.0.20210918145839-b240456d678818 Sept 2021pre-release

    Nothing published for this version

  19. v1.0.0-rc2.0.20210916144003-669a5fc93c8516 Sept 2021pre-release

    Nothing published for this version

  20. v1.0.0-rc2.0.20210916144003-0d6d3ec9e41e16 Sept 2021pre-release

    Nothing published for this version

  21. v1.0.0-rc2.0.20210916144003-01a91e30d29716 Sept 2021pre-release

    Nothing published for this version

  22. v1.0.0-rc29 Sept 2021pre-release
    Release notes

    This worked because of alignment. Instead use explicit uint64s.

    Open source →
  23. v1.0.0-rc1.0.20210909162519-15f67708de029 Sept 2021pre-release

    Nothing published for this version

  24. v1.0.0-rc1.0.20210830155713-f1e814efae8b30 Aug 2021pre-release

    Nothing published for this version

  25. v1.0.0-rc1.0.20210830144205-97ecdea48bc930 Aug 2021pre-release

    Nothing published for this version

  26. v1.0.0-rc1.0.20210825194513-b74a5ff8050b25 Aug 2021pre-release

    Nothing published for this version

  27. v1.0.0-rc125 Aug 2021pre-release
    Release notes

    This change adds a Hasher type that implements hash.Hash. It
    has to keep a trailing stripe because the finalization step
    ends up reading up to a stripe from the end of the buffer after
    a full block has been consumed.

    In order to implement it, a new accumBlock function was introduced
    that does the first part of the hashLarge function that operates
    on full blocks. It's possible that we can reduce the amount of
    internal state the hash has to keep to 2 stripes instead of 17
    stripes at the cost of more accumBlock calls. That's is left
    for further work and investigation.

    Additionally, there was a lot of reorganization around how the
    architecture specific code was laid out. This should help me
    stop pushing changes that break other architectures because I
    forgot build tags or whatever. There's now a make vet check
    that runs go vet on different GOARCH values. So far, that
    has been able to catch every silly mistake I've made doing
    that. It also helps reduce some duplication by making the cpu
    feature flags constants on unsupported architectures so that
    the compiler can just dead-code eliminate some branches.

    Fixes #7.

    Open source →
  28. v0.13.025 Aug 2021
    Release notes

    This change adds a Hasher type that implements hash.Hash. It
    has to keep a trailing stripe because the finalization step
    ends up reading up to a stripe from the end of the buffer after
    a full block has been consumed.

    In order to implement it, a new accumBlock function was introduced
    that does the first part of the hashLarge function that operates
    on full blocks. It's possible that we can reduce the amount of
    internal state the hash has to keep to 2 stripes instead of 17
    stripes at the cost of more accumBlock calls. That's is left
    for further work and investigation.

    Additionally, there was a lot of reorganization around how the
    architecture specific code was laid out. This should help me
    stop pushing changes that break other architectures because I
    forgot build tags or whatever. There's now a make vet check
    that runs go vet on different GOARCH values. So far, that
    has been able to catch every silly mistake I've made doing
    that. It also helps reduce some duplication by making the cpu
    feature flags constants on unsupported architectures so that
    the compiler can just dead-code eliminate some branches.

    Fixes #7.

    Open source →
  29. v0.12.1-0.20210825191033-84986888ae1425 Aug 2021pre-release

    Nothing published for this version

  30. v0.12.1-0.20210824123103-83b8bd2fd42c24 Aug 2021pre-release

    Nothing published for this version

  31. v0.12.022 Jun 2021
    Release notes

    bump avo and stop using BP

    Open source →
  32. v0.11.07 Jun 2021
    Release notes

    if your code broke because of this change, i would first like
    to apologize. let me try to explain why i decided to do this
    even though it would be breaking.

    first, it's a v0 library. this is just a necessary condition
    though not sufficient. if it were v1, i would have to do
    something else. second, it turns out that the go compiler does
    not optimize with arrays well. heres some benchmarks:

    Fixed128/1        102MB/s ± 0%    241MB/s ± 1%  +136.24%
    Fixed128/2        194MB/s ± 1%    457MB/s ± 2%  +135.17%
    Fixed128/3        306MB/s ± 1%    717MB/s ± 0%  +134.58%
    Fixed128/4        398MB/s ± 0%    924MB/s ± 3%  +132.31%
    Fixed128/8        793MB/s ± 1%   1854MB/s ± 1%  +133.88%
    Fixed128/9        855MB/s ± 1%   1597MB/s ± 1%   +86.83%
    Fixed128/16      1.52GB/s ± 1%   2.84GB/s ± 1%   +86.99%
    Fixed128/17      1.37GB/s ± 0%   2.51GB/s ± 1%   +83.70%
    Fixed128/32      2.56GB/s ± 1%   4.58GB/s ± 9%   +78.52%
    Fixed128/33      2.15GB/s ± 1%   3.53GB/s ± 1%   +64.34%
    Fixed128/64      4.17GB/s ± 1%   6.86GB/s ± 1%   +64.78%
    Fixed128/65      3.61GB/s ± 1%   5.36GB/s ± 4%   +48.60%
    Fixed128/96      5.34GB/s ± 1%   8.01GB/s ± 0%   +50.01%
    Fixed128/97      4.69GB/s ± 1%   6.85GB/s ± 1%   +46.10%
    Fixed128/128     6.20GB/s ± 0%   9.04GB/s ± 1%   +45.86%
    Fixed128/129     5.42GB/s ± 1%   6.35GB/s ± 1%   +17.19%
    Fixed128/240     6.94GB/s ± 1%   7.85GB/s ± 1%   +13.11%
    

    some of those speedups are absolutely massive. i went through
    great lengths to get even 10% speedups before. third, one of
    the main criterias of a good hash function is speed. assuming
    two hash functions do an equally good job at their core
    competency of hashing, speed is the most important feature.
    otherwise, we'd just use some cryptographic hash function and
    call it a day. so given that, i'm assuming that users of this
    library would happily make small fixes to get that performance
    improvement. indeed, a local fix could be applied by changing

    res := xxh3.Hash128(someBytes)
    

    to

    resTmp := xxh3.Hash128(someBytes)
    res := [2]uint64{resTmp.Hi, resTmp.Lo}
    

    and if i could ship this change with a gofix to do that, i would.
    anyway, sorry again. i hope you agree that it was worth it. all
    approximately 5 of you at the time of this commit according to
    deps.dev.

    Open source →
  33. v0.10.012 Jan 2021

    Nothing published for this version

  34. v0.9.1-0.20210111192555-080c3331775811 Jan 2021pre-release

    Nothing published for this version

  35. v0.9.022 Dec 2020

    Nothing published for this version

  36. v0.8.24 Aug 2020

    Nothing published for this version

  37. v0.8.14 Aug 2020

    Nothing published for this version

  38. v0.8.028 Jul 2020

    Nothing published for this version

  39. v0.0.0-20260723224138-c88f7bdcf99223 Jul 2026pre-release

    Nothing published for this version

  40. v0.0.0-20260123191808-84cc04fc617723 Jan 2026pre-release

    Nothing published for this version

  41. v0.0.0-20250724185950-77e65e1f514f24 Jul 2025pre-release

    Nothing published for this version

  42. v0.0.0-20230502181907-3808c706a06a2 May 2023pre-release

    Nothing published for this version

  43. v0.0.0-20230105190837-8b1e819c6d4d5 Jan 2023pre-release

    Nothing published for this version

  44. v0.0.0-20211113223132-d10cc761c3ac13 Nov 2021pre-release

    Nothing published for this version

  45. v0.0.0-20210918145839-b240456d678818 Sept 2021pre-release

    Nothing published for this version

  46. v0.0.0-20210909162519-15f67708de029 Sept 2021pre-release

    Nothing published for this version

  47. v0.0.0-20210825191033-84986888ae1425 Aug 2021pre-release

    Nothing published for this version

  48. v0.0.0-20191227220208-65f423c1068827 Dec 2019pre-release

    Nothing published for this version

  49. v0.0.0-20191021174148-b56a7dc3d80c21 Oct 2019pre-release

    Nothing published for this version

  50. v0.0.0-20190923153500-83a7230063d023 Sept 2019pre-release

    Nothing published for this version

  51. v0.0.0-20190920185308-7d4834599e0920 Sept 2019pre-release

    Nothing published for this version

  52. v0.0.0-20190829032042-2e75bc3ac09d29 Aug 2019pre-release

    Nothing published for this version

  53. v0.0.0-20190829023610-cef1e81095a729 Aug 2019pre-release

    Nothing published for this version

  54. v0.0.0-20190817213027-518846a5db2f17 Aug 2019pre-release

    Nothing published for this version

  55. v0.0.0-20190723171140-016cf9b7a3dd23 Jul 2019pre-release

    Nothing published for this version

  56. v0.0.0-20190706061215-e3a4ded7d14f6 Jul 2019pre-release

    Nothing published for this version

  57. v0.0.0-20190706054419-27eba1deae7f6 Jul 2019pre-release

    Nothing published for this version

  58. v0.0.0-20190402181837-148601fe83bd2 Apr 2019pre-release

    Nothing published for this version

  59. v0.0.0-20190402180534-658b0066ca862 Apr 2019pre-release

    Nothing published for this version

  60. v0.0.0-20190330160623-6bb78cf1307330 Mar 2019pre-release

    Nothing published for this version