Go-ipfs: Road to 0.5

Created on 3 Dec 2019  路  9Comments  路  Source: ipfs/go-ipfs

[Living]

We're working towards a pretty large 0.5.0 go-ipfs release but still have some work remaining.

ETA: April 7th because apparently April 1st +/- a few days is reserved for jokes.

Release blockers

  • Working (small-data) content routing. That is, the DHT should be useful again for finding small data sets.

Landed features

  • Streaming pin ls results.
  • "internal" daemon plugin for perma-unstable plugins with direct access to go-ipfs internals.
  • Updated QUIC transport (backwards incompatible)

    • Updates the underlying QUIC protocol to draft 27. This should be the last breaking change to QUIC before it stabilizes.

    • Updates the handshake protocol to support ed25519 keys.

  • Significantly improved bitswap performance when serving data from high-latency disks.
  • Systemd support

    • Socket activation

    • Example unit files

    • Systemd startup/shutdown notifications

  • Support for .eth links in /ipns/.
  • A new and orders of magnitude faster (than rabin) content based chunker for ipfs add (buzhash).
  • Unix domain socket support for the HTTP API.
  • Identify Push - Libp2p now pushes announcements of address/protocol support changes made at runtime.
  • Significant extensions to the bitswap protocol https://github.com/ipfs/go-bitswap/pull/189
  • Async datastore writes in badger (2x performance improvements). NEEDS CONFIGURATION.
  • Write coalescing: We previously added support for batching small writes but ran into a significant bug (https://github.com/libp2p/go-libp2p/issues/644) and had to pull out at the last minute. We have re-enabled this feature.
  • We will now prefer the TLS security transport over SECIO.

Next Up

  • QUIC by default. We've been working towards switching over to QUIC (a UDP-based transport) by default for quite some time. However, we've recently made some significant breaking changes to both the underlying protocol (bringing our implementation in-line with the draft spec) and the way in which we structure our QUIC TLS certificates.
  • Badger based datastore by default. We've been testing out badger for well over a year now and plan on switching over in the near future. However:

    • Badger just released a 2.0 with some significant changes and an incompatible database format.

    • Badger 1.0, in our current configuration, uses a _lot_ of memory.

    • We still haven't thoroughly stress-tested badger.

Todo

topimeta

Most helpful comment

I resurrected the aur-package from the death (last update was 2017), have fun:

https://aur.archlinux.org/packages/go-ipfs-git/

All 9 comments

~https://github.com/dgraph-io/badger 2.0.0 was released a period of time.
I tried to compiled it into 0.5.0.
it works well.
perhaps we can integrate it when 0.5.0 released.~

I have seen this plan.

Status update from testground on unblocking the release.

Very glad this list exists - thank you! To help ease the tracking of the remaining burn-down items as we get closer to launch - can you add owners to each of the remaining todos and create or link tracking issues (with scope of required tests) for each of the "test with testground" items?

Status update from testground on unblocking the release.

Is there any more information about timeline? While this is great and all, it mentions nothing about timeline for v0.5.0. Is it one month? Two months? Or 6 months.

The ETA is end of march +/- a week.

The build process hasn't changed, right? Hoping to submit 0.5 to nixpkgs when it releases.

The build process is still make build. There shouldn't be any significant changes since 0.4.23.

Thanks!

I resurrected the aur-package from the death (last update was 2017), have fun:

https://aur.archlinux.org/packages/go-ipfs-git/

Switching over to a proper release issue: https://github.com/ipfs/go-ipfs/issues/7109

Was this page helpful?
0 / 5 - 0 ratings