Commit Graph

68 Commits

Author SHA1 Message Date
Martin Habovstiak c4c64c0dc5
Test with minimal dependency versions
It could happen that we unknowingly depend on a new version of a crate
without updating `Cargo.toml`. This could cause resolution issues for
downstream users. It's also unclear for outsiders to see which
dependencies we tested the crate with.

This change commits two lock files: `minimal` and `recent`. `minimal`
contains minimal depdendency versions, while `recent` contains
dependency versions at the time of making the change.

Further, this adds CI jobs to test with both lock files, CI job for
`internals` crate, removes old `serde` pinning and prints a warning if
`recent` is no longer up to date. (We may have to override it somehow if
any crate breaks MSRV.)

The documentation is also updated accordingly.

Co-developed-by: Tobin C. Harding <me@tobin.cc>

Closes #1230
2023-05-03 08:06:46 +10:00
Andrew Poelstra 933ecb19e1
fuzz: fix warnings, clippy lints, 1.48.0 failures 2023-04-27 00:24:53 +00:00
Tobin C. Harding 6c61e1019e
Fix pinning (schemars and MSRV)
Done as is single patch to make sure all the docs and CI are in sync and
correct.

We currently pin the `schemars` dependency using `<=0.8.3` as well as a
the `dyn-clone` transient dependency in the manifest (`hashes` and the
extended test crate). This is incorrect because it makes usage of the
crate klunky (or possibly impossible) if downstream users wish to use a
later version of `schemars`.

Observe also that we do not have to pin `schemars`, we do however have to pin
the `serde` crate if either `serde` or `schemars` features are enabled.
Do so in CI and document in the readme file within hashes.

Currently we have a pin remaining from the old MSRV (`syn` due to use
of `matches!`).

Fix pinning by:

- Remove pin in manifest for `schemars`
- Fix pinning for MSRV in CI and docs (this includes documenting pinning
  requirements for `schemars` feature because it is related to the other
  pin of `serde`) in both `hashes` readme and main repo readme.
2023-04-19 10:17:18 +10:00
Tobin C. Harding 1187e10299
Add per crate release notes link
We moved to a workspace and did not update the README to point to the
respective changelogs.
2023-03-30 09:33:44 +11:00
David A. Harding bbda9599fa [Docs] Update internal project link to changelog 2023-03-28 14:02:39 -10:00
Andrew Poelstra 3417585a53
Merge rust-bitcoin/rust-bitcoin#1729: Bump MSRV to 1.48.0
1dc04fe10f Remove rust_v_1_46 (Tobin C. Harding)
71fa9e81e7 Bump MSRV to 1.48.1 (Tobin C. Harding)

Pull request description:

  Just patch 2, patch 1 is #1728

  From the commit log of patch 2

      Bump MSRV to 1.48.1

      As per discussion [0] bump our MSRV for all crates in `rust-bitcoin`
      repo to 1.48.1 [1].

      [0] https://github.com/rust-bitcoin/rust-bitcoin/discussions/1329
      [1] https://blog.rust-lang.org/2020/11/19/Rust-1.48.html

ACKs for top commit:
  apoelstra:
    ACK 1dc04fe10f
  sanket1729:
    ACK 1dc04fe10f

Tree-SHA512: 533470c55f7aeede88382db8245033dac9317d75b38ced2ad8256d38319632a524335f893044e96300a1e60048f9aaca2d1634735eb324eb8ed9ad3c9ab2f872
2023-03-23 00:50:33 +00:00
Tobin C. Harding 71fa9e81e7
Bump MSRV to 1.48.1
As per discussion [0] bump our MSRV for all crates in `rust-bitcoin`
repo to 1.48.1 [1].

[0] https://github.com/rust-bitcoin/rust-bitcoin/discussions/1329
[1] https://blog.rust-lang.org/2020/11/19/Rust-1.48.html
2023-03-23 08:03:06 +11:00
Harshil Jani 450df18166 remove Lines of Code badge
Signed-off-by: Harshil Jani <harshiljani2002@gmail.com>
2023-03-22 21:22:37 +05:30
Tobin C. Harding bef7992ce5
Update readme to mention pin for 1.47
We now require pinning for `serde` and `syn` if building with toolchain
1.47. Document this in the README.
2023-03-19 12:19:40 +11:00
Andrew Poelstra f5f4a33fa9
pin serde dep on 1.41 2023-03-18 22:10:18 +00:00
Steve Myers 33ee7a58af
Add README build docs for std and no-std 2023-03-16 19:01:02 -05:00
Tobin C. Harding 596e756d01
Pin syn dependency for MSRV toolchain
The recent 1.0.108 `syn` update violated our MSRV, pin `syn` in the CI
script.
2023-02-24 08:41:40 +11:00
Tobin C. Harding 3372333865 Add a kani badge to the README
In order for us to easily see the result of last nights kani run add a
badge to the readme file.
2022-12-30 08:41:04 +11:00
Tobin C. Harding 8ce928b8e7 Add testing section to readme
We now have a few different test harnesses in use, add a section to the
readme about each

- normal unit/integration tests
- benchmarks
- kani
- mutagen
2022-12-24 10:05:31 +11:00
Tobin C. Harding 73b506e149 Remove stale MSRV docs
We have stale docs referring to the old MSRV. We do not need MSRV docs
in `CONTRIBUTING` because we have them in the README already.

Fix stale docs by doing:
- Remove the MSRV docs from readme in favour of `CONTRIBUTING.md`.
- Add a sentence to the redame pointing readers towards `CONTRIBUTING.md`.
2022-07-26 11:04:45 +10:00
sanket1729 e2b038bf3d
Merge rust-bitcoin/rust-bitcoin#1098: Add cargo crev reminder to readme
ded1a32a59 Add cargo crev reminder to readme (Tobin C. Harding)

Pull request description:

  As suggested by the `cargo-crev` project; add a comment to the readme reminding people to use `cargo-crev` to check their dependencies.

  ### Notes

  Today I explored `cargo-crev`, it was new to me before today. I completed proofs for `bech32`, `rust-bitcoinconsenus`, `bitcoin_hashes`, `rust-secp256k1`, and `rust-bitcoin`. I published the proofs to https://github.com/tcharding/crev-proofs.

  If I'm understanding correctly proofs are only useful if the author is connected to a web of trust. So far I only found @dpc within the active rust-bitcoin devs with a `crev-proofs` repo (that includes an ID). Since he wrote `cargo-crev` its not surprising he has one :) Two other devs have `crev-proofs` repos but they are both incomplete (no ID) so I was unable to climb onto their web, so to speak. I am not a particularly well know dev so I imagine it would be more useful if some of you more well know fellas publish proofs as well.

  If we can get a web of trust between all the regular hackers here then we can start doing reviews/proofs of our dependencies and publishing them.

ACKs for top commit:
  Kixunil:
    ACK ded1a32a59
  apoelstra:
    ACK ded1a32a59
  sanket1729:
    ACK ded1a32a59

Tree-SHA512: c2d3b195a522095fcabcf51bb956b339f3a421541652f646f8e56286ebf850aa106d4acbf4defd344b5b0f57dd9626d1dbafe50c9d54b1436fd9e2c8b434fc07
2022-07-19 14:47:04 -07:00
sanket1729 0a0934af16 Remove the Pay-to-Contract reference from README.
Removed in https://github.com/rust-bitcoin/rust-bitcoin/pull/871
2022-07-18 10:36:10 -07:00
Andrew Poelstra bd8d9af18a
Merge rust-bitcoin/rust-bitcoin#1092: Create configuration conditional "bench"
f3b2120ec9 Create configuration conditional bench (Tobin C. Harding)
f60c92ca58 Add informative error message to DO_BENCH (Tobin C. Harding)
c6d5a12b60 Add cargo/rustc sanity calls (Tobin C. Harding)
34d5a3141d Put triple ticks on their own line (Tobin C. Harding)

Pull request description:

  Currently we are unable to build with all features enabled with a non-nightly toolchain, this is because of the use of

      `#![cfg_attr(all(test, feature = "unstable"), feature(test))]`

  which causes the following error when building:

   error[E0554]: `#![feature]` may not be used on the stable release channel

  The "unstable" feature is used to guard bench mark modules, this is widely suggested online but there is a better way.

  When running the bench marks use the following incantation:

      `RUSTFLAGS='--cfg=bench' cargo bench`

  This creates a configuration conditional "bench" that can be used to guard the bench mark modules.

  ```
  #[cfg(bench)]
  mod benches {
      ...
  }
  ```

ACKs for top commit:
  Kixunil:
    ACK f3b2120ec9
  apoelstra:
    ACK f3b2120ec9

Tree-SHA512: 7ec2a501a30bfe2ce72601077cd675cf5e5ac2f0f93f97fc7e83cb7401606b69ae909b35bfc0ace8bd1ea771ca4fba70e2ad9ac9ba26f2b6e371494cf694c0a8
2022-07-17 23:03:37 +00:00
DanGould 896ca42a53
Document PSBT roles and limitation 2022-07-15 14:45:43 +08:00
Tobin C. Harding ded1a32a59 Add cargo crev reminder to readme
As suggested by the `cargo-crev` project; add a comment to the readme
reminding people to use `cargo-crev` to check their dependencies.
2022-07-14 13:51:07 +10:00
Tobin C. Harding f3b2120ec9 Create configuration conditional bench
Currently we are unable to build with all features enabled with a
non-nightly toolchain, this is because of the use of

    `#![cfg_attr(all(test, feature = "unstable"), feature(test))]`

which causes the following error when building:

 error[E0554]: `#![feature]` may not be used on the stable release
 channel

The "unstable" feature is used to guard bench mark modules, this is
widely suggested online but there is a better way.

When running the bench marks use the following incantation:

    `RUSTFLAGS='--cfg=bench' cargo bench`

This creates a configuration conditional "bench" that can be used to
guard the bench mark modules.

    #[cfg(bench)]
    mod benches {
        ...
    }
2022-07-14 10:21:01 +10:00
Tobin C. Harding 34d5a3141d Put triple ticks on their own line
In markdown triple ticks go on a line of their own. This change does not
effect the rendering in GitHub which is managing to parse this section
correctly already.
2022-07-13 10:10:41 +10:00
Tobin C. Harding 91ff2f628c Introduce SPDX license identifiers
When `rust-bitcoin` was started in 2014 the SPDX license list and short
identifiers where not a thing. Now that we have short identifiers and
they are gaining popularity in other projects we can consider using
them.

- Add links to the SPDX website in the readme
- Shorten the author section to a single line
- Remove all the licence information in each file and replace it with an
SPDX ID (see https://spdx.dev/ids/#how)

Of note:

- If the author of a file is explicitly listed, maintain this
information
- If the 'author' is listed as the generic 'Rust Bitcoin developers'
just remove the attribution, this is implicit. This does loose the date
info but that can be seen at any time from the git index using

  `git log --follow --format=%ad --date default <FILE> | tail -1`
2022-06-29 14:12:02 +10:00
Tobin C. Harding 820adc0de0 Add githooks directory
Add a `githooks` directory. Copy the sample pre-commit hook into it.
Add a section to the README explaining how to take advantage of the
githooks.

The sample pre-commit hook includes checks for trailing whitespace that
we are seeing occasionally in PRs.

Done in preparation for adding a clippy githook.
2022-06-23 16:18:24 +10:00
Tobin C. Harding 281af7c1b9 Move broken-intra-doc-link lint config to command line
The docs lint `broken-intra-doc-links` has been changed but the new name
is not available in our MSRV, this means we get a build warning. We only
build docs with the nightly toolchain so we can move this lint control
to the docs build command in `test.sh` instead of doing it crate wide.

With this patch applied devs risk not noticing docs link issues until
they hit them on CI _if_ they do not build with the test script or
explicitly pass in `-- -D rustdoc::broken-intra-doc-links`, which no one
is going to do. Hence we add a line to the readme with a shell alias
that can be used to check docs, taken directly from `test.sh`.
2022-06-21 09:21:19 +10:00
Dawid Ciężarkiewicz 29cfdc8614 README: remove stale info about upcoming edition change
It is done.
2022-06-02 21:07:23 -07:00
Martin Habovštiak 091688c078
Remove irrelevant notes about version pinning
These are no longer relevant for MSRV 1.41.1+
2022-05-02 14:34:19 +02:00
Andrew Poelstra ff6dc61967
Merge rust-bitcoin/rust-bitcoin#690: BUG: Does not work with `no_std` under 1.29 (MSRV)
7854bd7918 Fix `no_std` MSRV Fixes #690, #947 (mcroad)

Pull request description:

  `rust-bitcoin` does not work with rust 1.29 under a `no_std` environment. This could be considered a bug. However, `no_std` support is a recent addition and this is likely not breaking anyone's builds.

  A decision needs to be made, either `no_std` MSRV is the current stable version while keeping the `std` MSRV as 1.29, or it needs to be fixed.

  This pr adds `no_std` to the 1.29 test suite.

  This came as I try to get rust-bitcoin/rust-miniscript#277 working and got stuck on the issue of testing `no_std` under 1.29.

ACKs for top commit:
  Kixunil:
    ACK 7854bd7918
  tcharding:
    ACK 7854bd7918
  sanket1729:
    ACK 7854bd7918
  apoelstra:
    ACK 7854bd7918

Tree-SHA512: 1614fb2193f760ed340592bdb94d076066f6f783bc1dc2b145d97f7151a28316e56b1975f1ad948460eb26db04e7e9382e60076686a681e46dcf33521fda5fca
2022-04-30 15:50:54 +00:00
Tobin C. Harding a0a83e18f6 README: Use correct license
Currently the readme badge is displaying Apache, we are not using the
Apache license, it should be CC0.

Use the correct CC0-1.0 Universal license.
2022-04-27 08:39:26 +10:00
Tobin C. Harding 5c363bc785 README: Update badge to Rust 1.41.1
Since we just bumped the MSRV, let's update the badge also.
2022-04-27 08:34:53 +10:00
mcroad 7854bd7918
Fix `no_std` MSRV
Fixes #690, #947
2022-04-25 11:14:41 -05:00
Martin Habovstiak bd36d846f2 Add temporary warning about edition change
This warns contributors about possible rebases. Changing CONTRIBUTING
should ensure that GitHub will display special warning. This will be
removed after migration is done.
2022-04-20 20:15:49 +02:00
Hunter Trujillo 3d3993a3ba
Add Rust-Bitcoin logo and project header.
Remove old shields.

Replace with new single gear logo.

Add license, readme, and source files under /logo.
2022-03-22 20:30:33 -06:00
Andrew Ahlers 006193f5b6 feat: Support running CI locally with `act`
Disable problematic jobs that involve Github Actions caching or `cross`
whenever the environment is set to ACT. This allows running the CI
pipeline locally and hopefully speeds up PR cycle times by reducing
unexpected CI pipeline results.
2022-02-17 21:11:30 +01:00
Martin Habovstiak 083f5f3138 Document lack of support for 16-bit pointers
This clearly states lack of support for 16-bit architectures as well as
adds readable `compile_error!()` call. It also fixes a few stylistic
mistakes - headings (top-level should not be repeated) and missing
newlines.

Closes #660
2021-09-20 21:31:46 +02:00
Alekos Filini dc3d9eebaa
Update IRC info to libera.chat 2021-06-08 14:20:36 +02:00
Andrew Poelstra 4132e71b08
Merge pull request #546 from sgeisler/2021-01-ci-badge
Switch CI badge to GH actions
2021-01-11 19:49:51 +00:00
Andrew Poelstra ef116ffbed Add byteorder pinning for 1.29.0 compatibility
They broke their MSRV in a minor release.

Co-authored-by: Sebastian Geisler <sebastian@blockstream.io>
2021-01-09 16:43:18 +00:00
Sebastian Geisler bd55fa3eb1 Switch CI badge to GH actions 2021-01-04 14:53:37 +01:00
Steven Roose 94b7371424 Replace serde_struct_impl with derive-based impls 2020-12-30 16:32:52 +01:00
Steven Roose d5b73f9c8c
README: Refer to MSRV section in Installing Rust section 2020-10-07 19:11:30 +02:00
Steven Roose f483646954
README: Fix typo in MSRV section 2020-10-07 17:05:26 +02:00
Andrew Poelstra 6138084c5b bump version to 0.25, MSRV to 1.29 2020-09-10 20:06:10 +00:00
Andrew Poelstra 1c46b32d2b update Travis and README for manual rustc 1.22.0 steps 2020-09-10 19:03:01 +00:00
Will Binns 410e45f378
readme: Add links to CHANGELOG.md and LICENSE 2020-01-23 10:45:18 +01:00
Elichai Turkel 62a7f26e9b
Update README.md 2019-11-23 18:44:19 +02:00
Tamas Blummer ff2f5d9ec2 forbid unsafe 2019-07-23 23:29:45 +02:00
Steven Roose 0343559ae0
Slightly update README 2019-06-17 11:46:54 +01:00
Sebastian Geisler cad0fe790f point to IRC 2019-02-12 14:28:57 -08:00
lucash-dev 114ebb0c73 Added contributing part to README 2019-02-12 14:28:57 -08:00