mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-30 09:59:13 +08:00
paragraphs
License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
This commit is contained in:
125
CHANGELOG.md
125
CHANGELOG.md
@ -3,60 +3,91 @@
|
|||||||
## 0.4.16
|
## 0.4.16
|
||||||
|
|
||||||
Ipfs 0.4.16 is a fairly small release in terms of changes to the ipfs codebase,
|
Ipfs 0.4.16 is a fairly small release in terms of changes to the ipfs codebase,
|
||||||
but it contains a huge amount of changes and improvements from libraries we
|
but it contains a huge amount of changes and improvements from the libraries we
|
||||||
depend on, notably libp2p. This version of ipfs contains the changes for libp2p
|
depend on, notably libp2p.
|
||||||
v6.0.5, In that release, we made significant changes to the codebase to allow
|
|
||||||
for more easy integration of future transports and modules. We also improved
|
### Libp2p
|
||||||
some of our dialing logic, fixed a couple issues in the DHT, and added
|
|
||||||
support for a new way to write ipfs multiaddrs. The transport refactor now
|
This version of ipfs contains the changes made in libp2p from v5.0.14 through
|
||||||
allows us to much more easily add in support for running libp2p (and by
|
v6.0.5. In that time, we have made significant changes to the codebase to allow
|
||||||
extension, ipfs) over QUIC, or using TLS instead of secio for encrypting
|
for easier integration of future transports and modules along with the usual
|
||||||
connections. Our [QUIC
|
performance and reliability improvements. You can find many of these
|
||||||
transport](https://github.com/libp2p/go-libp2p-quic-transport) currently
|
improvements in the libp2p 6.0 [release blog
|
||||||
works, and can be plugged into libp2p manually (though note that it is
|
post](https://ipfs.io/blog/39-go-libp2p-6-0-0/).
|
||||||
still experimental, as the upstream spec is still in flux). Further work is
|
|
||||||
needed to make enabling this inside ipfs easy and not require
|
The primary motivation for this refactor was adding support for network
|
||||||
recompilation. For more information on the refactor and libp2p v6.0.0, see
|
transports like QUIC that have built-in support for encryption, authentication,
|
||||||
the [release blog post](https://ipfs.io/blog/39-go-libp2p-6-0-0/). Between
|
and stream multiplexing. It will also allow us to plug-in new security
|
||||||
libp2p v6.0.0 and v6.0.5, there have been some changes worth pointing out
|
transports (like TLS) without hard-coding them.
|
||||||
as well. The swarm dialer has been improved to have shortened timeouts when
|
|
||||||
dialing peers in 'local' subnets. This prevents large dial timeouts from
|
For example, our [QUIC
|
||||||
wasting dial time when the subnet you are dialing is not accessible. The
|
transport](https://github.com/libp2p/go-libp2p-quic-transport) currently works,
|
||||||
TCP handshake timeout has also been dropped to 5 seconds, improving the
|
and can be plugged into libp2p manually (though note that it is still
|
||||||
performance of dials to non-existent addresses. In the DHT, we have fixed
|
experimental, as the upstream spec is still in flux). Further work is needed to
|
||||||
the query code to put records to the K closest peers we can actually
|
make enabling this inside ipfs easy and not require recompilation.
|
||||||
connect to, which is a strict superset of the peers we previously put
|
|
||||||
records to: The peers we could connect to out of the K closest we learned
|
On the user-visible side of things, we've improved our dialing logic and
|
||||||
about. Finally, we are changing the way that people write 'ipfs'
|
timeouts. We now abort dials to local subnets after 5 seconds and abort all
|
||||||
multiaddrs. Currently, ipfs multiaddrs look something like
|
dials if the TCP handshake takes longer than 5 seconds. This should
|
||||||
|
significantly improve performance in some cases as we limit the number of
|
||||||
|
concurrent dials and slow dials to non-responsive peers have been known to clog
|
||||||
|
the dialer, blocking dials to reachable peers. Importantly, this should improve
|
||||||
|
DHT performance as it tends to spend a disproportional amount of time connecting
|
||||||
|
to peers.
|
||||||
|
|
||||||
|
We have also made a few noticeable changes to the DHT: significantly improved
|
||||||
|
the chances of finding a value on the DHT, we've tightened up some of our
|
||||||
|
validation logic, and fixed some issues that should reduce traffic to nodes
|
||||||
|
running in dhtclient mode over time.
|
||||||
|
|
||||||
|
Of these, the first one will likely see the most impact. In the past, when
|
||||||
|
putting a value (e.g., an IPNS entry) into the DHT, we'd try to put the value to
|
||||||
|
K peers (where K for us is 20). However, we'd often fail to connect to many of
|
||||||
|
these peers so we'd end up putting the value to significantly fewer than K
|
||||||
|
peers. We now try to put the value to the K peers we can actually connect to.
|
||||||
|
|
||||||
|
### Multiformats
|
||||||
|
|
||||||
|
Finally, we are changing the way that people write 'ipfs' multiaddrs. Currently,
|
||||||
|
ipfs multiaddrs look something like
|
||||||
`/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ`.
|
`/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ`.
|
||||||
But caling them 'ipfs' multiaddrs is a bit misleading, as this is actually
|
However, calling them 'ipfs' multiaddrs is a bit misleading as this is actually
|
||||||
the multiaddr of a libp2p peer that runs ipfs. Other protocols using libp2p
|
the multiaddr of a libp2p peer that happens to run ipfs. Other protocols built
|
||||||
right now still have to use multiaddrs that say 'ipfs', without actually
|
on libp2p right now still have to use multiaddrs that say 'ipfs', without
|
||||||
having anything to do with ipfs. Towards that, we are renaming them to
|
actually having anything to do with ipfs. Therefore, we are renaming them to
|
||||||
'p2p' multiaddrs. Moving forward these addresses will be written as:
|
'p2p' multiaddrs. Moving forward these addresses will be written as:
|
||||||
`/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ`.
|
`/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ`.
|
||||||
This release adds support for *parsing* both types of addresses into the
|
|
||||||
same binary format, and the binary format is remaining exactly the same. A
|
|
||||||
future release will have the ipfs daemon switch to *printing* out addresses
|
|
||||||
this way, once a large enough portion of the network has upgraded.
|
|
||||||
|
|
||||||
On the ipfs side of things, we've added a few small features. The first of
|
This release adds support for *parsing* both types of addresses (`.../ipfs/...`
|
||||||
which is moving to embedding public keys inside IPNS records. This allows
|
and `.../p2p/...`) into the same network format, and the network format is
|
||||||
lookups to be faster, as we only need to fetch the record itself (and not the
|
remaining exactly the same. A future release will have the ipfs daemon switch to
|
||||||
public key separately), and also fixes an issue where DHT peers wouldnt store a
|
*printing* out addresses this way, once a large enough portion of the network
|
||||||
record for a peer if they didn't have their public key already. Combined with
|
has upgraded.
|
||||||
some of the DHT and dialing fixes, this should improve the performance of IPNS
|
|
||||||
(once a majority of the network updates).
|
N.B., these addresses are *not* related to IPFS *file* names (`/ipfs/Qm...`).
|
||||||
|
Disambiguating the two was yet another motivation to switch the protocol name to
|
||||||
|
`/p2p/`.
|
||||||
|
|
||||||
|
### IPFS
|
||||||
|
|
||||||
|
On the ipfs side of things, we've started embedding public keys inside IPNS
|
||||||
|
records and have enabled the git plugin by default.
|
||||||
|
|
||||||
|
Embedding public keys inside IPNS records allows lookups to be faster as we only
|
||||||
|
need to fetch the record itself (and not the public key separately). It also
|
||||||
|
fixes an issue where DHT peers wouldn't store a record for a peer if they didn't
|
||||||
|
have their public key already. Combined with some of the DHT and dialing fixes,
|
||||||
|
this should improve the performance of IPNS (once a majority of the network
|
||||||
|
updates).
|
||||||
|
|
||||||
The second feature added is the automatic inclusion of the git plugin in the
|
The second feature added is the automatic inclusion of the git plugin in the
|
||||||
default build. With this, ipfs can ingest git repositories and other data
|
default build. With this, ipfs can ingest and operate over git repositories
|
||||||
directly, and operate over it. For more information on this, see [the
|
and commit graphs directly. For more information on this, see [the go-ipld-git
|
||||||
go-ipld-git repo](https://github.com/ipfs/go-ipld-git).
|
repo](https://github.com/ipfs/go-ipld-git).
|
||||||
|
|
||||||
Various other changes were merged in this release, including great
|
Various other changes were merged in this release including great documentation,
|
||||||
documentation, a good number of smaller bugfixes, refactoring and a good bit
|
a good number of smaller bugfixes, refactoring, and a good bit more. For the
|
||||||
more. For the details, see the changelog below.
|
full details, see the changelog below.
|
||||||
|
|
||||||
## 0.4.16-rc3 2018-07-09
|
## 0.4.16-rc3 2018-07-09
|
||||||
- Bugfixes
|
- Bugfixes
|
||||||
|
Reference in New Issue
Block a user