units: Prepare for initial 1.0 alpha version#3935
units: Prepare for initial 1.0 alpha version#3935tcharding wants to merge 3 commits intorust-bitcoin:1.xfrom
Conversation
|
Note to self: PR filter |
d9ec24d to
ec5a1f6
Compare
4b925f7 to
9fe8c7b
Compare
9fe8c7b to
93f8669
Compare
|
This now demos the idea I posted about here: on the |
We cannot for the same reasons we have #4062 open. |
units/CHANGELOG.md
Outdated
| * Add `FIFTY_BTC` const to the amount types [#3915](https://github.com/rust-bitcoin/rust-bitcoin/pull/3915) | ||
| * Remove `InputString` from the public API [#3905](https://github.com/rust-bitcoin/rust-bitcoin/pull/) | ||
| * Hide the remaining public macros [#3867]() | ||
| * Introduce an unchecked constructor for the `Amount` type [#3811]() |
There was a problem hiding this comment.
We agreed to remove it though.
There was a problem hiding this comment.
Ugh, I didn't even re-read any of these changelog entries when re-doing the PR - fail.
93f8669 to
adcb61c
Compare
|
adcb61c to
4a35a29
Compare
4a35a29 to
c76fc23
Compare
Introduce `units` in preparation for releasing it. - Run `rsync` to get `units` from master. - Add CI jobs for stable, MSRV, and docs - Add lock files - Add a workspace manifest
We are gearing up to do alpha releases of the soon-to-stabalised crates. We would like to achieve the following: a) Test our release process b) Do downstream testing on `units` To achieve this we can release the `units v1.0.0-aphla.0` crate without amount types. 1. Delete the `amount` module. 2. Delete the `fee` module (adds impls of `Amount`). 3. Delete integration test modules (2) and (3) are more aggressive than totally needed but it will be easier both for the dev and the reviewer if we just delete the whole files then pull them across from `master` when we are ready to release `amount`.
In preparation for doing the first 1.0 alpha release set the version number, add a changelog entry, and update the lock files.
4248b86 to
a5e6a38
Compare
|
FTR 1.x now starts with a 'delete everything' patch. |
|
If the process in |
In my mind:
Also I'm not convinced that we should do it the same as in |
|
Re the rc/alpha name, I don't personally care. What ever you and @apoelstra want is fine for me. Re the 1.0 branch: We cannot release from |
|
Unless someone finds a reference saying I'm wrong about categorization, I prefer the name alpha. So IIUC if we tried to release amount-less crate |
If we aren't releasing any 1.0s until we are 100% complete then what is the point of all the extension traits we've been adding? More generally, it's extremely frustrating that every time we find a way that we can get some 1.0 crates out the door so that people can use stable versions of essential parts of rust-bitcoin, you seem to want to add delays of the form "well first we would need to do a bunch of unrelated things". We don't. Under a very wide set of circumstances, we can ship a 1.0 crate containing large subsets of our API. This lets downstream users start using those, smoothing their transition difficulty (especially when we expose 1.0 types as reexports from unstable versions, so they don't even need to juggle multiple versions themselves) and reducing the API surface area that we need to keep in our heads as we iterate on the rest.
Why? If
Because then we have a bunch of janky " |
|
Regarding the naming, let's please just do whatever @Kixunil wants because it doesn't matter and arguing is exhausting. So |
Shit, I wrote it in a confusing way. I meant we won't be developing 0.x
I have no idea what exactly you have in mind. It seems like there's something else bothering you than the misunderstanding above but I can't figure out what it is.
Because it depends on it right now, and if we want to release an amount-less alpha version before fixing the amount thing we should temporarily hide it from users. I could also accept
It's not an issue, the code must still work correctly, it's just unfinished and rather than deluding the users into thinking this is how |
We will be, because in particular
Yes, that it sounds like you want to finish IOW I can't do any downstream work with units 1.0 until we do
Why? If users need |
|
I may be a massive drama queen but anyways ...
Solution:
I'm not the boss, that is @apoelstra's burden to carry, and no hard feelings @Kixunil but IMO we should override your opinion and just fucking release already. |
|
@apoelstra please BDFL in #4204, tag and release
That was written by @Kixunil above and my request is perfectly in line with this view. |
|
I'd prefer we attempt to strip If we pull I want a situation where I move elements, simplicity and miniscript over to |
|
All this is just for testing, right? No one can actually release anything with |
|
I"m operating under the assumption that we will be the only ones doing downstream testing for now. And if others help the |
We can immediately use it for locktimes and weights in rust-elements and rust-miniscript. These are the most important units -- Miniscript barely works with amounts at all, and Elements has its own confidential amount type. We can also use it in rust-simplicity, which is currently Elements-only. |
|
Sorry man, this whole thing is doing my head in. I"m off doing downstream testing with a bunch of branches I created on my own tree. I'll come back when I've cleared my head. |
|
For fun here is the miniscript one I just got done: https://github.com/tcharding/rust-miniscript/tree/bitcoin-alpha (FWIW in |
Why wouldn't we develop
Yes but isn't this PR trying to do the same? At least that was my understanding.
That sounds like too much work for how soon we can release 1.0. I'm pretty sure we'll be able to release 1.0 within a ~month of fixing the MAX thing. Can't it wait?
It's funny, because I thought
You might be right and I'm fine with that but maybe slap
Good way to lose contributors
That's literally what I intended by the feature. The idea is that adding a few
Exactly. The only crate I know of that can use |
I do not believe you that it's "not a lot of work" to do MAX and that it's "not a lot of time" after that that we can release. We've had multiple years of this sort of "oh just one more thing" thinking and we have released zero things. We've recently realized that we can start shipping things piecemeal, which I was excited about because it lets us start actually using this library instead of endlessly hacking on it, it lets us make tangible progress, and it will reduce the size of the remaining "things that need to get done". Also, by having released APIs that must not change in breaking ways, we will constrain the design space for remaining stuff and hopefully reduce the amount of endless attempts to emulate perfect APIs by contorting ourselves into broken corners of the language.
I have repeatedly and explicitly listed multiple crates that I maintain that can use
I could say the same about your unwillingness to compromise on API purity for the sake of delivering, and by your continual pushback on our attempts to get things out the door, even when we bend over backward to do so in a way that won't step on your fingers. |
|
FWIW I think the things Kix has been pointing out are valuable. And if that means it takes a bit longer now, rather then needing to retroactively fix things after bugs are found, then it's for the better. The state is of master with respect to Amount is already in bad shape imo because not enough good review and for thought was done, and that's because there wasn't another maintainer to review. Tobin has been doing a heroic job. His output and constancy is remarkable. Although I think it's unfair to push to override the consensus of a two ack merge just to hurry up. It's not just the Amounts module i've seen Kix find bugs recently that are better to fix now than later. So, Anderw makes the call on if it's better to have just a one Ack policy, although I feel like it's poor conduct to keep pushing him to do so. |
|
Isn't it just the two open PRs and then carefully checking that nothing broke in Anyway, if you think it's that hard, maybe we should just move the
For the past months this pushback was much, much lower than my standard. I'm now letting things in that I would've blocked before. But note that part of the pushbak is in fact unblocking us - whenever I want the PRs to be cleaner it unlocks my ability to find a time slot when I'm capable of reviewing it. My capacity to review super-complicated PRs is limited and I sometimes need to wait multiple days before I can. |
Ok, we can do this instead of making a 1.x branch (yet). |
We want to do an alpha release of
unitsthat can be used to test stuff without waiting for theamountmodule.amountunitscrate for releaseNote this uses a new branch
1.xas the merge target. The single patch on that branch removes everything from the repo exceptunits.