Skip to content
Permalink
Branch: master
Commits on Feb 27, 2020
  1. some comment typos

    oconnor663 committed Feb 27, 2020
Commits on Feb 25, 2020
  1. version 0.2.2

    oconnor663 committed Feb 25, 2020
    Changes since 0.2.1 (and since c-0.2.0):
    - Fix a performance issue when the caller makes multiple calls to
      update() with uneven lengths. (#69, reported by @willbryant.)
  2. remove a mis-optimization that hurt performance for uneven updates

    oconnor663 committed Feb 25, 2020
    If the total number of chunks hashed so far is e.g. 1, and update() is
    called with e.g. 8 more chunks, we can't compress all 8 together. We
    have to break the input up, to make sure that that 1 lone chunk CV gets
    merged with its proper sibling, and that in general the correct layout
    of the tree is preserved. What we should do is hash 1-2-4-1 chunks of
    input, using increasing powers of 2 (with some cleanup at the end). What
    we were doing was 2-2-2-2 chunks. This was the result of a mistaken
    optimization that got us stuck with an always-odd number of chunks so
    far.
    
    Fixes #69.
Commits on Feb 21, 2020
Commits on Feb 19, 2020
  1. add examples to the b3sum readme

    oconnor663 committed Feb 19, 2020
Commits on Feb 14, 2020
  1. check for AVX-512 compiler support even when using assembly

    oconnor663 committed Feb 14, 2020
  2. version 0.2.1

    oconnor663 committed Feb 14, 2020
    Changes since 0.2.0:
    - Workarounds in the assembly implementations (enabled by the "c"
      feature), to build with older compilers.
Commits on Feb 13, 2020
  1. tag the first release of the C implementation, c-0.2.0

    oconnor663 committed Feb 13, 2020
    This release is motivated by a fix for a potential security
    vulnerability. 421a21a fixes a bug
    introduced in a1c4c4e. A truncated
    pointer register led to a segfault on x86-64 under Clang 7 and 8.
    Clang 9 happens to be unaffected, but the behavior is undefined in
    general. See also:
    #60 (comment)
    
    The C implementation of BLAKE3 hasn't been formally packaged anywhere,
    and most callers vendor code from master. This release tag is intended
    to make the fix above more visible, to encourage callers to update their
    vendored copies. We will continue to publish tags like this whenever
    bugs in the C implementation are fixed, or if there are any incompatible
    API changes.
    
    Note that the issue above does not impact callers of the Rust `blake3`
    crate. The affected file, `blake3_dispatch.c`, is not compiled by that
    crate in any configuration. It does impact callers of the internal
    `blake3_c_rust_bindings` crate, but that crate is not published on
    crates.io and not intended for production use.
  2. Fix bug inadvertently introduced in a1c4c4e

    sneves committed Feb 13, 2020
Commits on Feb 12, 2020
  1. more file renaming, use underscores more consistently

    oconnor663 committed Feb 12, 2020
  2. Rename assembly files (blake3-* -> blake3_*)

    erijo committed Feb 12, 2020
    This gives the assembly files the same prefix as the intrinsics files which
    simplifies building when the build system should pick between the assembly and
    the intrinsics files.
  3. version 0.2.0

    oconnor663 committed Feb 12, 2020
    Changes since 0.1.5:
    - The `c_avx512` feature has been replaced by the `c` feature. In
      addition to providing AVX-512 support, `c` also provides optimized
      assembly implementations. These assembly implementations perform
      better, perform more consistently across compilers, and compile more
      quickly. As before, `c` is off by default, but the `b3sum` binary
      crate activates it by default.
    - The `rayon` feature no longer affects the entire API. Instead, it
      provides the `join::RayonJoin` type for use with
      `Hasher::update_with_join`, so that the caller can control when
      multi-threading happens. Standalone API functions like `hash` are
      always single-threaded now.
  4. merge the version 0.1.5 branch

    oconnor663 committed Feb 12, 2020
    Version 0.1.5 was a backport release to mitigate
    #57. This is a no-op merge
    to make sure that the 0.1.5 branch shows up in `git log master`.
  5. add a performance note and a usage example for Hasher

    oconnor663 committed Feb 12, 2020
  6. add test_asm to the C Makefile

    oconnor663 committed Feb 12, 2020
  7. document how to build the C code with assembly implementations

    oconnor663 committed Feb 12, 2020
  8. assembly implementations

    sneves authored and oconnor663 committed Feb 11, 2020
  9. test a couple more reset() cases

    oconnor663 committed Feb 12, 2020
  10. use a non-zero value for counter when testing hash_many with parents

    oconnor663 committed Feb 12, 2020
    We use a counter value that's very close to wrapping the lower word,
    when we're testing the hash_many chunks case. It turns out that this is
    a useful thing to do with parents too, even though parents 1) are
    teeechnically supposed to always use a counter of 0, and 2) aren't going
    to increment the counter at all. We caught a bug in the assembly
    implementations this way (where we accidentally did increment the
    counter, but only the higher word), because the equivalent test in
    rust_c_bindings uses this eccentric parents counter value.
Commits on Feb 11, 2020
  1. add cross testing on i686 to CI

    oconnor663 committed Feb 11, 2020
Commits on Feb 10, 2020
  1. version 0.1.5

    oconnor663 committed Feb 10, 2020
    Changes since 0.1.4:
    - Remove all AVX-512 code from builds with the default feature set. This
      works around rust-lang/rust#68905 and fixes
      the nightly build as long as the "c_avx512" feature is not activated.
    
    This release is a backport of a single commit, e43a7d6. The master
    branch contains backwards-incompatible changes (fc219f4), and the next
    release of master will be version 0.2.0.
    
    Note that the `b3sum` crate activates the "c_avx512" feature by default,
    and it will continue to fail to build on nightly until the upstream bug
    is fixed.
  2. avoid compiling avx512_detected() when the "c_avx512" feature is disa…

    oconnor663 committed Feb 10, 2020
    …bled
    
    rust-lang/rust#68905 is currently causing
    nightly builds to fail, unless `--no-default-features` is used. This
    change means that the default build will succeed, and the failure will
    only happen when the "c_avx512" is enabled. The `b3sum` crate will still
    fail to build on nightly, because it enables that feature, but most
    callers should start succeeding on nightly.
  3. avoid compiling avx512_detected() when the "c_avx512" feature is disa…

    oconnor663 committed Feb 10, 2020
    …bled
    
    rust-lang/rust#68905 is currently causing
    nightly builds to fail, unless `--no-default-features` is used. This
    change means that the default build will succeed, and the failure will
    only happen when the "c_avx512" is enabled. The `b3sum` crate will still
    fail to build on nightly, because it enables that feature, but most
    callers should start succeeding on nightly.
Commits on Feb 7, 2020
  1. add the Windows GNU toolchain to CI

    oconnor663 committed Feb 7, 2020
Commits on Feb 6, 2020
  1. stop skipping all other builds when one CI build fails

    oconnor663 committed Feb 6, 2020
  2. Hasher::update_with_join

    oconnor663 committed Feb 3, 2020
    This is a new interface that allows the caller to provide a
    multi-threading implementation. It's defined in terms of a new `Join`
    trait, for which we provide two implementations, `SerialJoin` and
    `RayonJoin`. This lets the caller control when multi-threading is used,
    rather than the previous all-or-nothing design of the "rayon" feature.
    
    Although existing callers should keep working, this is a compatibility
    break, because callers who were relying on automatic multi-threading
    before will now be single-threaded. Thus the next release of this crate
    will need to be version 0.2.
    
    See #25 and
    #54.
Commits on Feb 4, 2020
  1. re-export digest and crypto_mac

    oconnor663 committed Feb 4, 2020
  2. add a link in the README to bar_chart.py

    oconnor663 committed Feb 4, 2020
    Closes #53.
Commits on Feb 3, 2020
  1. Inline wrapper methods

    cesarb authored and oconnor663 committed Feb 3, 2020
  2. version 0.1.4

    oconnor663 committed Feb 3, 2020
    Changes since 0.1.3:
    - Hasher supports the reset() method.
    - Hasher implements several traits from the `digest` and `crypto_mac`
      crates.
    - Bug fixes in the C implementation for MSVC and for 32-bit x86.
Older
You can’t perform that action at this time.