Commit Graph

341 Commits

Author SHA1 Message Date
merge-script 4797a75586
Merge rust-bitcoin/rust-bitcoin#3584: Standardize constructor type function docs
1649b68589 Standardize wording to `constructs a new` (Jamil Lambert, PhD)
27f94d5540 Replace `creates` with `constructs` (Jamil Lambert, PhD)

Pull request description:

  As discussed in issue #3575 there are various ways of saying a new object is created.

  These have all be standardized to the agreed version.

  Close #3575

ACKs for top commit:
  apoelstra:
    ACK 1649b68589834dfe9d5b63812da3e9f0e5930107; successfully ran local tests
  tcharding:
    ACK 1649b68589

Tree-SHA512: 0ed9b56819c95f1fc14da1e0fdbbe03c4af2d97a95ea6b56125f72913e8d832db5d2882d713ae139d00614e651f3834a4d72528bdf776231cceb6772bf2f9963
2024-11-06 16:05:24 +00:00
merge-script b09ce778f8
Merge rust-bitcoin/rust-bitcoin#3579: hashes: Hide error internals
fe8ca21ec2 hashes: Duplicate impl_from_infallible (Tobin C. Harding)
7652d0ddfc hashes: Hide innards of FromSliceError (Tobin C. Harding)
5232bba62b hashes: Move FromSliceError to submodule (Tobin C. Harding)

Pull request description:

  Hide the internals of the `hashes::FromSliceError`.

ACKs for top commit:
  apoelstra:
    ACK fe8ca21ec282cfe50e3f39b7f86c619d30d7f542; successfully ran local tests

Tree-SHA512: dac33777353dd81c8c86de331b2ab30d0a5268f2be7685f85405d29809ec36eeab31b0e71c9f09e820e06a93c3f05b7d675e5e729b780e8600b960cad4a02c77
2024-11-06 15:33:27 +00:00
Jamil Lambert, PhD 1649b68589
Standardize wording to `constructs a new`
There is a range of different wordings used in the docs of constructor
type functions.

Change all to start with `Constructs a new` or `Constructs an empty`.
2024-11-05 13:02:26 +00:00
Jamil Lambert, PhD 27f94d5540
Replace `creates` with `constructs`
In functions that act like constructors there is a mixture of the usage
of `creates` and `constructs`.

Replace all occurrences of `creates` with `constructs` in the first line
of docs of constructor like functions.
2024-11-05 12:47:28 +00:00
Tobin C. Harding fe8ca21ec2
hashes: Duplicate impl_from_infallible
We don't want a dependency on `internals` for `hashes` unless its really
needed.

Duplicated the `impl_from_infallible` macro into `hashes::error` and
use it to implement from infallible for `FromSliceError`.
2024-11-05 11:19:19 +11:00
Tobin C. Harding 7652d0ddfc
hashes: Hide innards of FromSliceError
In preparation for releasing 1.0 we want to hide all error internals. Do
so for the single error type in the `hashes` crate.
2024-11-05 11:17:29 +11:00
Tobin C. Harding 5232bba62b
hashes: Move FromSliceError to submodule
Add a public `error` module and move the one error for the `hashes`
crate into it.

Re-export at the crate root.

Done in preparation for adding an additional error type.
2024-11-05 11:17:29 +11:00
Tobin C. Harding ba124757c4
hashes: Default to no_std
`hashes` is `no_std` ready, lets default to `no_std`.
2024-11-05 11:16:24 +11:00
Tobin C. Harding 6a4e219c55
hashes: embedded: Remove unused import
Clear clippy warning by removing unused import statement.
2024-11-05 11:16:23 +11:00
Tobin C. Harding 915c9627f6
Put feature gate attribute under test attribute
Either way is fine, just pick one and be uniform.
2024-11-05 11:16:23 +11:00
Tobin C. Harding 90b2ac03e3
hashes: Introduce impl_bytelike_traits macro
We have a couple of problems:

1. There are two macros currently for fmt stuff that do similar things,
`arr_newtype_fmt_impl` and `hex_fmt_impl` - the difference is not
immediately obvious, its the way that the byte array is iterated.

2. Our hash types are missing `AsRef<[u8; len]>` and `Borrow<[u8; len]>`.

Introduce a new macro and remove a bunch of other macros. Include
extensive docs but hide the macro from public docs because its not
really for consumers of the library.

The macro requires `$crate::hex` to point to `hex-conservative`.

Note the macro is pretty generic (as in general purpose), `hashes` might
not be the right home for it. Potentially a better place would be in
`hex` itself?
2024-11-02 08:10:43 +11:00
merge-script 8eacfd0191
Merge rust-bitcoin/rust-bitcoin#3557: Remove needless_borrows_for_generic_args
6aa8c2b023 Remove needless_borrows_for_generic_args (Tobin C. Harding)

Pull request description:

  This has been fixed and we use nightly to lint so we have access to the merged fix.

ACKs for top commit:
  apoelstra:
    ACK 6aa8c2b023619534437043e76ec4252f27295875; successfully ran local tests

Tree-SHA512: 011677b6c1a2dc6c63097cafd1682fab5d9bdd94133b872bdd49699a55c80a01a8e6e5e844ae1cfe1ca9da47a2ba2ed6b910719b1ccbb06e60e22ecb01ec0efc
2024-11-01 13:37:27 +00:00
merge-script 5ec0e5299b
Merge rust-bitcoin/rust-bitcoin#3377: Release tracking PR: `bitcoin_hashes 0.15.0`
80b5d8b7b3 hashes: Add changelog for release 0.15.0 (Tobin C. Harding)

Pull request description:

  The version has already been bumped on `master`.

  In preparation for releasing `hashes v0.15.0` add a changelog entry.

ACKs for top commit:
  apoelstra:
    ACK 80b5d8b7b36ea97007f062971a732ec8a512cfa5; successfully ran local tests; again lots of stuff!

Tree-SHA512: ab1bbdf7df819c587dc905e4cdcda2232ede2a495a0e395e5d6f6bd730a7c3c0675e05f8ab616e5e6dee0a87836ab486d025f80608e73b713007391711ef15ba
2024-11-01 12:22:57 +00:00
Tobin C. Harding 6aa8c2b023
Remove needless_borrows_for_generic_args
This has been fixed and we use nightly to lint so we have access to the
merged fix.

Removing the attribute uncovers a bunch of real lint warnings, fix
them while we are at it.
2024-11-01 14:30:45 +11:00
Tobin C. Harding 80b5d8b7b3
hashes: Add changelog for release 0.15.0
The version has already been bumped on `master`.

In preparation for releasing `hashes v0.15.0` add a changelog entry.
2024-10-31 17:14:26 +11:00
Leo Nash 7f289a9fdf Bump hex-conservative to 0.3.0 2024-10-31 03:36:22 +00:00
Tobin C. Harding e84346644e
Run the formatter
Run `just fmt` - no other changes.
2024-10-30 11:30:24 +11:00
Tobin C. Harding abcac54078
hashes: Move public macros
Put the two "real" public macros at the top of the `macros` file and add
a module level doc to link to them because they don't show up otherwise.
2024-10-30 07:10:37 +11:00
Tobin C. Harding 2868985a91
Replace TBD with next hashes release version
We are about to release `bitcoin_hashes 0.15.0`, replace the TBD string
with the version number.

Requires changing `allow(deprecated_in_future)` attribute to
`allow(deprecated)` (in functions that are them self deprecated).
2024-10-30 07:10:36 +11:00
Tobin C. Harding baab5e580d
hashes: Move private macro
We have two files one for public macros and one for private macros. Move
the `engine_input_impl` macro to the private macros file.

Requires change to call sites because we do not have `use_macros`
attribute on the `internal_macros` file.
2024-10-29 14:06:12 +11:00
Tobin C. Harding e4486d07f0
hashes: Hide macros from docs
These three macros are solely provided to reduce code duplication, they
are only part of the public API because they are used by the "real"
public macro `hash_newtype`.
2024-10-29 14:01:50 +11:00
Tobin C. Harding 25c4c78e26
hashes: Put attribute under rustdoc
Like we do for all the other macros ptu the `macro_export` attribute
below the macro comments.
2024-10-29 13:58:50 +11:00
Tobin C. Harding 5a736edaaa
hashes: Move serde_macros code into macros
Roll the `serde_macros` module into `macros`, requires making `macros`
public but since it explicitly holds public macros this is reasonable.

Keep the original module and deprecate it.
2024-10-27 07:07:01 +11:00
Tobin C. Harding aaa78a3a09
hashes: Rename util to macros
The `utils` module holds public macros, call it `macros` instead.
2024-10-27 07:03:50 +11:00
Tobin C. Harding 34e638d40c
hashes: Separate private and public modules
The private and public modules are already grouped, add a line of
whitespace to make it _even_ more clear. Trivial I know, this patch got
smaller during rebase.
2024-10-27 07:03:50 +11:00
Jamil Lambert, PhD b22db6268c
Remove unnecessary lifetimes 2024-10-24 14:08:20 +01:00
merge-script 456bbf11d1
Merge rust-bitcoin/rust-bitcoin#3505: CI: Hobble WASM job
5ec17a2ee8 CI: Hobble WASM job (Tobin C. Harding)

Pull request description:

  The WASM job is not working. `wasm-pack build` works fine but `wasm-pack test` doesn't compile.

  Comment out the line that runs `wasm-pack test`.

ACKs for top commit:
  apoelstra:
    ACK 5ec17a2ee8c963d182777a9661b1bab786956bd4; successfully ran local tests; LGTM

Tree-SHA512: 5ea88bd99f625a8c669dc1dec02486dd549e9ac83d7670c6c7b3b25c86de3fc9a8dbc959dc39de92305dd5e254e0b8ed9424cae5e5941b66a6476ee433009fdd
2024-10-23 19:16:40 +00:00
merge-script 79ff70255b
Merge rust-bitcoin/rust-bitcoin#3477: Polish the `hashes` crate
1cb24c1f15 hashes:: Polish crate level rustdocs (Tobin C. Harding)
98691186dc hashes: Move engine functions (Tobin C. Harding)
12f261c009 hashes: Re-order from_byte_array (Tobin C. Harding)
c11587d60d hashes: Rename hash_type macro (Tobin C. Harding)
62617cf9ac hashes: Move from_engine function to other macro (Tobin C. Harding)
bb7dd2c479 hashes: Move DISPLAY_BACKWARD to top of impl block (Tobin C. Harding)
71013afe07 hashes: Put attribute under doc (Tobin C. Harding)

Pull request description:

  `hashes 1.0.0` can't be far away, here is a quick polish (done while I waited for my car to get fixed).

  Everything here is internal except stuff to docs. Note please I claim "internal change only" in a bunch of patches that do code moves but these effect the docs build because order is preserved in some instances.

ACKs for top commit:
  apoelstra:
    ACK 1cb24c1f150bc2d65d0be439f2005f41d95ad23c; successfully ran local tests

Tree-SHA512: 430c451afab8fc92fb4596bf2d4b36c086333fe72b3fe5858925b75597641b8c4f5e49f7643888fa19b675d3070ce9a3606623cd56bdba6cfc59e459fbdda440
2024-10-22 22:24:49 +00:00
Tobin C. Harding 5ec17a2ee8
CI: Hobble WASM job
The WASM job is not working. `wasm-pack build` works fine but `wasm-pack
test` doesn't compile.

Comment out the line that runs `wasm-pack test`.
2024-10-23 06:59:51 +11:00
Tobin C. Harding 1cb24c1f15
hashes:: Polish crate level rustdocs
`hashes v1.0.0` is close, make an effort to polish the crate level rustdocs.
2024-10-16 12:26:14 +11:00
Tobin C. Harding 98691186dc
hashes: Move engine functions
The `sha256t` module is unique in that it implements its methods
manually (as call throughs) instead of using the macros. To make it more
clear what is implemented re-order the engine constructor and getter to
better mirror the layout in the macros.

Internal change only.
2024-10-16 12:22:42 +11:00
Tobin C. Harding 12f261c009
hashes: Re-order from_byte_array
The `hashes` crate has a bunch of similar types defined by a bunch of
similar macros and impl blocks, all of which makes it difficult to tell
exactly what is implemented where. In an effort to make the code easier
to read order the `from_byte_array` constructor in the same place across
the crate. Note also we typically put constructors up the top, also
`from_byte_array` is the likely most used constructor so put it first.

FWIW I discovered this while polishing the HTML docs.

Internal change only.
2024-10-16 12:22:42 +11:00
Tobin C. Harding c11587d60d
hashes: Rename hash_type macro
Conceptually (and using traits) we split the hashes into "general"
hash types and more restricted hash types (`Hash`). Also we observe that
the `hash_type` macro defines all the inherent functions name
identically to the `GeneralHash` trait methods.

Rename the trait to describe better what it does.

Internal change only.
2024-10-16 12:22:42 +11:00
Tobin C. Harding 62617cf9ac
hashes: Move from_engine function to other macro
The `from_engine` function is associated with a general hash type but we
are defining it in the `hash_type` macro which holds nothing but
functions associated with the `Hash` trait. By "associated" I mean
methods on the type as opposed to trait methods.

In preparation for re-naming the `hash_type` macro move the
`from_engine` function there. Requires duplicating the code in the
`siphash` impl block, this is as expected because the `siphash` requires
a custom implementation of the general hashing functionality.

Internal change only.
2024-10-16 12:22:22 +11:00
Tobin C. Harding bb7dd2c479
hashes: Move DISPLAY_BACKWARD to top of impl block
There is no obvious reason why this const is further down the block,
move it.

Refactor only, no logic change.
2024-10-16 11:59:13 +11:00
Tobin C. Harding 71013afe07
hashes: Put attribute under doc
As is typical round here, put the attribute under the associated
rustdoc.
2024-10-16 11:59:07 +11:00
Jamil Lambert, PhD 88b53a471e
Unify deprecated note field format
All the deprecated note fields have been changed to be lower case and in
the format "use `a` instead".
2024-10-15 15:16:01 +01:00
Tobin C. Harding e68da281ff
Warn on future deprecations
We use `TBD` in our `deprecated` string and it was discovered that there
is an exception on this string so as not to warn because it is used
internally by the Rust language. However there is a special lint to
enable warnings, lets use it.

Add `#![warn(deprecated_in_future)]` to the coding conventions section
of all crates except `fuzz`.
2024-10-15 07:56:06 +11:00
Tobin C. Harding 2cc944578d
Fully deprecate Hash::from_slice
We had an initial go at this but we didn't do the `Hash` trait method.
In order to do so we need to hack the serde code a fair bit, note the
public visitor types.
2024-10-15 07:56:05 +11:00
Fmt Bot f1733309e0 2024-10-13 automated rustfmt nightly 2024-10-13 01:20:28 +00:00
merge-script fe62d94ff7
Merge rust-bitcoin/rust-bitcoin#3296: Remove the `SliceIndex` implementation from hash types
3b7ba4f977 Remove the SliceIndex implementation from hash types (Tobin C. Harding)

Pull request description:

  If folk really want to index into a hash they can us `as_byte_array` then index that.

  Includes a bump to the version number of `hashes` to `v0.15.0` - this is because otherwise `secp` won't build since we are breaking an API that is used in the current release of secp.

  Fix: #3115

ACKs for top commit:
  apoelstra:
    ACK 3b7ba4f977 successfully ran local tests

Tree-SHA512: 0ba93268cd8133fe683183c5e39ab8b3bf25c15bfa5767d2934d67a5f6a0d2f65f6c9304952315fe8a33abfce488d810a8d28400a28facfb658879ed06acca63
2024-10-10 22:39:21 +00:00
Jamil Lambert, PhD 1f8fdc6ccb
Fix type used in bytes_hashed addition
`length` was changed to `bytes_hashed` and the type changed from `usize`
to `u64`.

The addition under the `hashes_fuzz` feature flag has been changed from
`usize` to `u64` to fix the fuzz error.
2024-10-09 16:19:07 +01:00
Jamil Lambert, PhD d37b8a5dd2
Fix HashEngine.length name change to bytes_hashed
When `hashes_fuzz` is on the field `length` is refered to but it was
changed to `bytes_hashed` in a previous PR.

This has been fixed by changing `length` to `bytes_hashed`.
2024-10-09 16:17:20 +01:00
Tobin C. Harding 3b7ba4f977
Remove the SliceIndex implementation from hash types
If folk really want to index into a hash they can us `as_byte_array`
then index that.

Includes a bump to the version number of `hashes` to `v0.15.0` - this
is because otherwise `secp` won't build since we are breaking an API
that is used in the current release of secp.

Fix: #3115
2024-10-02 10:18:45 +10:00
Tobin C. Harding fed94f8899
Bump version of bitcoin-io to 0.2.0
In preparation for releasing `io v0.2.0` bump the version number,
add a changelog entry, update the lock files, and depend on the new
version in all crates that depend on `io`.
2024-10-02 09:47:10 +10:00
merge-script 66d2c0214a
Merge rust-bitcoin/rust-bitcoin#3429: Rename Midstate::into_parts to Midstate::to_parts since it derives Copy
be94c9e54b Rename Midstate::into_parts to Midstate::to_parts since it derives Copy (Shing Him Ng)

Pull request description:

  This is a follow up to #3010

  Fixes #3079

ACKs for top commit:
  tcharding:
    ACK be94c9e54b
  apoelstra:
    ACK be94c9e54b successfully ran local tests

Tree-SHA512: 0d838a2064136d050d319116f6df3d598323b04a137e7bb7cb5f3f1a87d72ad1ee4d2f3b228a2f9d68e7ca117c0f922ef6551f783eb39c8db0db1188e4732c41
2024-10-01 16:03:53 +00:00
merge-script de120de5b9
Merge rust-bitcoin/rust-bitcoin#3410: Fix buggy cfg in rustdocs
8bb0d3f667 Fix buggy cfg in rustdocs (Tobin C. Harding)

Pull request description:

  In b9643bf3e9 we introduced an incorrect `cfg` attribute, that has just shown up, no clue why clippy only just presented me with this error now. Anywho, the current code is buggy and the rustdoc tests are never being run.

  Fix `cfg` attribute to use the feature name correctly and fix the imports so the code runs.

  Maintain the explicit `main` so that we can return an error using the `?` operator. Remove the empty `main` because its not needed anymore, it is a hang-over from Rust back in the day (before main was automatically added, IIUC).

ACKs for top commit:
  apoelstra:
    ACK 8bb0d3f667 successfully ran local tests

Tree-SHA512: 27f571ac3644417c06d0b4eb6fb122b39ac1068aefa4bcfc03f1febe2d031fb30616883c55c42c2ec80d419572fe7eba9bcc239e3c0e0e178ec7eaf8533b9efe
2024-10-01 14:37:29 +00:00
Tobin C. Harding 8bb0d3f667
Fix buggy cfg in rustdocs
In b9643bf3e9 we introduced an incorrect
`cfg` attribute, that has just shown up, no clue why clippy only just
presented me with this error now. Anywho, the current code is buggy and
the rustdoc tests are never being run.

Fix `cfg` attribute to use the feature name correctly and fix the
imports so the code runs.

Maintain the explicit `main` so that we can return an error using the
`?` operator. Remove the empty `main` because its not needed anymore,
it is a hang-over from Rust back in the day (before main was
automatically added, IIUC).
2024-10-01 08:37:22 +10:00
Shing Him Ng be94c9e54b Rename Midstate::into_parts to Midstate::to_parts since it derives Copy 2024-09-30 08:13:16 -05:00
Andrew Poelstra c2674caf4c
clippy: remove some newly-detected unnecessary returns 2024-09-30 12:31:17 +00:00