@cryptotaxi247 / kubo / commits / 8f51d011a

paragraphs

License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>

Steven Allen committed Jul 6, 2018 at 12:29 UTC 8f51d011a3889fe9739c39ea6d9a9b06b8efeab9
1 file changed +79 -48
CHANGELOG.md
+79 -48
@@ -3,60 +3,91 @@
3 ## 0.4.16
4
5 Ipfs 0.4.16 is a fairly small release in terms of changes to the ipfs codebase,
6 -but it contains a huge amount of changes and improvements from libraries we
7 -depend on, notably libp2p. This version of ipfs contains the changes for libp2p
8 -v6.0.5, In that release, we made significant changes to the codebase to allow
9 -for more easy integration of future transports and modules. We also improved
10 -some of our dialing logic, fixed a couple issues in the DHT, and added
11 -support for a new way to write ipfs multiaddrs. The transport refactor now
12 -allows us to much more easily add in support for running libp2p (and by
13 -extension, ipfs) over QUIC, or using TLS instead of secio for encrypting
14 -connections. Our [QUIC
15 -transport](https://github.com/libp2p/go-libp2p-quic-transport) currently
16 -works, and can be plugged into libp2p manually (though note that it is
17 -still experimental, as the upstream spec is still in flux). Further work is
18 -needed to make enabling this inside ipfs easy and not require
19 -recompilation. For more information on the refactor and libp2p v6.0.0, see
20 -the [release blog post](https://ipfs.io/blog/39-go-libp2p-6-0-0/). Between
21 -libp2p v6.0.0 and v6.0.5, there have been some changes worth pointing out
22 -as well. The swarm dialer has been improved to have shortened timeouts when
23 -dialing peers in 'local' subnets. This prevents large dial timeouts from
24 -wasting dial time when the subnet you are dialing is not accessible. The
25 -TCP handshake timeout has also been dropped to 5 seconds, improving the
26 -performance of dials to non-existent addresses. In the DHT, we have fixed
27 -the query code to put records to the K closest peers we can actually
28 -connect to, which is a strict superset of the peers we previously put
29 -records to: The peers we could connect to out of the K closest we learned
30 -about. Finally, we are changing the way that people write 'ipfs'
31 -multiaddrs. Currently, ipfs multiaddrs look something like
6 +but it contains a huge amount of changes and improvements from the libraries we
7 +depend on, notably libp2p.
8 +
9 +### Libp2p
10 +
11 +This version of ipfs contains the changes made in libp2p from v5.0.14 through
12 +v6.0.5. In that time, we have made significant changes to the codebase to allow
13 +for easier integration of future transports and modules along with the usual
14 +performance and reliability improvements. You can find many of these
15 +improvements in the libp2p 6.0 [release blog
16 +post](https://ipfs.io/blog/39-go-libp2p-6-0-0/).
17 +
18 +The primary motivation for this refactor was adding support for network
19 +transports like QUIC that have built-in support for encryption, authentication,
20 +and stream multiplexing. It will also allow us to plug-in new security
21 +transports (like TLS) without hard-coding them.
22 +
23 +For example, our [QUIC
24 +transport](https://github.com/libp2p/go-libp2p-quic-transport) currently works,
25 +and can be plugged into libp2p manually (though note that it is still
26 +experimental, as the upstream spec is still in flux). Further work is needed to
27 +make enabling this inside ipfs easy and not require recompilation.
28 +
29 +On the user-visible side of things, we've improved our dialing logic and
30 +timeouts. We now abort dials to local subnets after 5 seconds and abort all
31 +dials if the TCP handshake takes longer than 5 seconds. This should
32 +significantly improve performance in some cases as we limit the number of
33 +concurrent dials and slow dials to non-responsive peers have been known to clog
34 +the dialer, blocking dials to reachable peers. Importantly, this should improve
35 +DHT performance as it tends to spend a disproportional amount of time connecting
36 +to peers.
37 +
38 +We have also made a few noticeable changes to the DHT: significantly improved
39 +the chances of finding a value on the DHT, we've tightened up some of our
40 +validation logic, and fixed some issues that should reduce traffic to nodes
41 +running in dhtclient mode over time.
42 +
43 +Of these, the first one will likely see the most impact. In the past, when
44 +putting a value (e.g., an IPNS entry) into the DHT, we'd try to put the value to
45 +K peers (where K for us is 20). However, we'd often fail to connect to many of
46 +these peers so we'd end up putting the value to significantly fewer than K
47 +peers. We now try to put the value to the K peers we can actually connect to.
48 +
49 +### Multiformats
50 +
51 +Finally, we are changing the way that people write 'ipfs' multiaddrs. Currently,
52 +ipfs multiaddrs look something like
53 `/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ`.
33 -But caling them 'ipfs' multiaddrs is a bit misleading, as this is actually
34 -the multiaddr of a libp2p peer that runs ipfs. Other protocols using libp2p
35 -right now still have to use multiaddrs that say 'ipfs', without actually
36 -having anything to do with ipfs. Towards that, we are renaming them to
54 +However, calling them 'ipfs' multiaddrs is a bit misleading as this is actually
55 +the multiaddr of a libp2p peer that happens to run ipfs. Other protocols built
56 +on libp2p right now still have to use multiaddrs that say 'ipfs', without
57 +actually having anything to do with ipfs. Therefore, we are renaming them to
58 'p2p' multiaddrs. Moving forward these addresses will be written as:
59 `/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ`.
39 -This release adds support for *parsing* both types of addresses into the
40 -same binary format, and the binary format is remaining exactly the same. A
41 -future release will have the ipfs daemon switch to *printing* out addresses
42 -this way, once a large enough portion of the network has upgraded.
43 -
44 -On the ipfs side of things, we've added a few small features. The first of
45 -which is moving to embedding public keys inside IPNS records. This allows
46 -lookups to be faster, as we only need to fetch the record itself (and not the
47 -public key separately), and also fixes an issue where DHT peers wouldnt store a
48 -record for a peer if they didn't have their public key already. Combined with
49 -some of the DHT and dialing fixes, this should improve the performance of IPNS
50 -(once a majority of the network updates).
60 +
61 +This release adds support for *parsing* both types of addresses (`.../ipfs/...`
62 +and `.../p2p/...`) into the same network format, and the network format is
63 +remaining exactly the same. A future release will have the ipfs daemon switch to
64 +*printing* out addresses this way, once a large enough portion of the network
65 +has upgraded.
66 +
67 +N.B., these addresses are *not* related to IPFS *file* names (`/ipfs/Qm...`).
68 +Disambiguating the two was yet another motivation to switch the protocol name to
69 +`/p2p/`.
70 +
71 +### IPFS
72 +
73 +On the ipfs side of things, we've started embedding public keys inside IPNS
74 +records and have enabled the git plugin by default.
75 +
76 +Embedding public keys inside IPNS records allows lookups to be faster as we only
77 +need to fetch the record itself (and not the public key separately). It also
78 +fixes an issue where DHT peers wouldn't store a record for a peer if they didn't
79 +have their public key already. Combined with some of the DHT and dialing fixes,
80 +this should improve the performance of IPNS (once a majority of the network
81 +updates).
82
83 The second feature added is the automatic inclusion of the git plugin in the
53 -default build. With this, ipfs can ingest git repositories and other data
54 -directly, and operate over it. For more information on this, see [the
55 -go-ipld-git repo](https://github.com/ipfs/go-ipld-git).
84 +default build. With this, ipfs can ingest and operate over git repositories
85 +and commit graphs directly. For more information on this, see [the go-ipld-git
86 +repo](https://github.com/ipfs/go-ipld-git).
87
57 -Various other changes were merged in this release, including great
58 -documentation, a good number of smaller bugfixes, refactoring and a good bit
59 -more. For the details, see the changelog below.
88 +Various other changes were merged in this release including great documentation,
89 +a good number of smaller bugfixes, refactoring, and a good bit more. For the
90 +full details, see the changelog below.
91
92 ## 0.4.16-rc3 2018-07-09
93 - Bugfixes