datrs / hypercore

Secure, distributed, append-only log
https://docs.rs/hypercore
Apache License 2.0
326 stars 37 forks source link

Plan 0.12 release #114

Closed Frando closed 8 months ago

Frando commented 4 years ago

This is a tracking issues on what I think we should merge for a breaking 0.12 release soonish:

breaking changes

non-breaking changes

I think it would be great to get those merged rather sooner than later, because at least the first three ones all change the public and internal API so that all other PRs oftenly have to be manually updated.

Because we don't have, I think, anyone using hypercore-rs, and because there is no one "properly" maintaining this at the moment, I propose that we let this issue sit here for a couple of days or a week and then go ahead, merge the PRs, and figure out bugs and issues in the process.

Also very open to other suggestions :)

bltavares commented 4 years ago

Awesome strategy creating this issue for tracking.

I will land the PRs this Sunday and release it with RC versions then, and we can promote a 0.12 after we are able to test all of this together

bltavares commented 4 years ago

Trying to set network in colmeia, I ended up with a design where a hyperdrive is contained inside a PeeredHyperdrive, and a hypercore is contained on a PeeredHypercore.

https://github.com/bltavares/colmeia contains a similar protocol layer to https://github.com/Frando/hypercore-protocol-rs, producing events. The peered version of each struct contains the struct and the protocol channel in order to drive the underlying struct.

There is a set of unimplemented! functions related to networking on hypercore, but I'm thinking that we might not be able to implement it as a 1:1 mapping to JS as how Rust ownership led me to design the network methods as a wrapper to the hypercore struct.

@Frando I'm wondering if you will endup with a similar desing as well, and if you endup on the same desing I think it would be better to remove the network methods (eg: have, unhave) and add them to the peered layer. This would be a breaking change that could go on 0,12. What do you think?

dumblob commented 1 year ago

What are the next steps?

I wonder if there is (will be) any hypercore implementation in pure Rust to allow being incorporated into DeltaChat along with IPFS.

ttiurani commented 1 year ago

Unrelated to this issue, but I've been working on JS v10 compatibility for a while. The branches are at:

https://github.com/ttiurani/hypercore/tree/v10

and

https://github.com/ttiurani/hypercore-protocol-rs/tree/v10

I'm currently testing my changes with upstream projects, but hopefully those will land at some point here. v9 -> v10 changed just about everything on the javascript-side so trying to keep v9 also working might not be worth the effort.

dumblob commented 1 year ago

@hpk42 as discussed in https://github.com/deltachat/deltachat-core-rust/pull/3227 it seems @ttiurani works on bringing the recent hypercore to Rust.

So not everything is lost...

Thanks @ttiurani !

cowlicks commented 8 months ago

I think this issue can be closed seeing that 0.21.1 has been released. But what is to be done about #113 ?

ttiurani commented 8 months ago

Closing as plans changed with v0.12 was for hypercore v10 compatibility first. #113 did not make it yet, but should be seriously re-considered for v1.0.