Skip to content

Releases: Giulio2002/bend-collections

Release list

v0.1.0

Choose a tag to compare

@Giulio2002 Giulio2002 released this 23 Sep 21:27

First release of bend-collections: containers, math and hashes for Bend 2, formally verified and benchmarked against C.

Install (Bend hub)

Published as 0x9ee2e9a299991dcc089fe22c7f3ceb5f. Import any module by its path:

import 0x9ee2e9a299991dcc089fe22c7f3ceb5f/src/containers/hash_table.bend as HashMap
import 0x9ee2e9a299991dcc089fe22c7f3ceb5f/src/crypto/sha/sha256.bend as SHA256

Contents

  • Containers: dynamic array, deque, FIFO queue, stack, simple and priority queue, binary heap, doubly linked list and list iterator, indexed red-black tree map, bitset, String-keyed hash map, LRU cache.
  • Math: 64-bit words, hashing, powers of two.
  • Hashes: SHA-256, Keccak-256, BLAKE2s, BLAKE2b, BLAKE3.

Verification

At this commit, all 29 proof packages check with Bend 2.0.25 (python3 proofs/prove.py, including proofs/PROOF.bend). Each container is proved to refine an independent specification. SHA-256 is proved equal to an executable FIPS 180-4 specification, and the other hashes are checked against their specifications and fuzzed against reference implementations.

Benchmarks

See BENCHMARK.md: Bend (native C backend, one thread) against C, same algorithms and inputs. Rows marked † were measured with the quicker sampling.