-
-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release v0.10 #8176
Comments
more effort, or less effort? |
@eminence : doh - fixed - thanks! |
ChangelogFull Changelog
❤️ Contributors
Would you like to contribute to the IPFS project and don't know how? Well, there are a few places you can get started:
|
My reading of this is that this doesn't include the pending move of the blockstore from cids to multihashes. Is that correct? |
@ianopolous correct. That is currently planned to be a release all of its own (i.e. that will be the only change in that release in order to ease people through the migration). It's currently scheduled for v0.12.0 |
Is anyone aware of anything like https://deno.land/benchmarks for go-ipfs? The switch to go-ipld-prime under the hood is very exciting (thanks @hannahhoward !). To help assess release candidates, I'd really appreciate the sanity checks an automated set of benchmarks run between releases would provide. |
Early testers ping for RC1 testing 😄
|
#8177 pls ? |
Things are looking good on our end. We've been running this on a segment of our infrastructure and there are no issues to report as of yet. |
tracking orbit-db support: orbitdb/orbitdb#909 |
Any thoughts on #8413 ? Seems like an easy add with a big usability improvement. |
Per 2021-09-09 verbal:
|
v0.10.0-rc2Just published RC2 on github, dist.ipfs.io, NPM and dockerhub. 👉 We are planning to ship the final release around Thursday 30th (TBD), mind the window for testing is a bit short. Changes since -rc1
Call for feedbackEarly testers – ping for
|
Would it be reasonable to include this merkledag fix ? |
tests are passing locally using orbitdb/orbitdb#913 (will be merged and published very soon) + go-ipfs@0.10.0-rc2. 👍 |
@MichaelMure IIUC that fix doesn't effect really effect the go-ipfs binary, but might be useful in some edge cases with go-ipfs as a library. If so then we can do a go-merkledag release. I'd prefer not to add much more into the release if we can to expedite getting it out. If there's a more pressing need or problem that I'm missing lmk (here, on the go-merkeldag PR, or in a DM) |
perhaps https://docs.ipfs.io/install/command-line/#official-distributions could be updated to reference the 0.10 release |
Good catch @eminence! |
go-ipfs 0.10.0 Release
We're happy to announce go-ipfs 0.10.0. This release brings some big changes to the IPLD internals of go-ipfs that make working with non-UnixFS DAGs easier than ever. There are also a variety of new commands and configuration options available.
As usual, this release includes important fixes, some of which may be critical for security. Unless the fix addresses a bug being exploited in the wild, the fix will not be called out in the release notes. Please make sure to update ASAP. See our release process for details.
🛠 TLDR: BREAKING CHANGES
ipfs dag get
dag-json
dag-pb
objects returned bydag get
ipfs dag put
dag-json
, and data is serialized todag-cbor
at rest.--format
and--input-enc
were removed and replaced with--store-codec
and--input-codec
dag-pb
objects stored viadag put
Keep reading to learn more details.
🔦 Highlights
🌲 IPLD Levels Up
The handling of data serialization as well as many aspects of DAG traversal and pathing have been migrated from older libraries, including go-merkledag and go-ipld-format to the new go-ipld-prime library and its components. This allows us to use many of the newer tools afforded by go-ipld-prime, stricter and more uniform codec implementations, support for additional (pluggable) codecs, and some minor performance improvements.
This is significant refactor of a core component that touches many parts of IPFS, and does come with some breaking changes:
PluginIPLD
interface has been changed to utilize go-ipld-prime. There is a demonstration of the change in the bundled git plugin.dag put
anddag get
change:dag get
now takes theoutput-codec
option which accepts a multicodec name used to encode the output. By default this isdag-json
, which is a strict and deterministic subset of JSON created by the IPLD team. Users may notice differences from the previously plain Go JSON output, particularly where bytes are concerned which are now encoded using a form similar to CIDs:{"/":{"bytes":"unpadded-base64-bytes"}}
rather than the previously Go-specific plain padded base64 string. See the dag-json specification for an explanation of these forms.dag get
no longer prints an additional new-line character at the end of the encoded block output. This means that the output as presented bydag get
are the exact bytes of the requested node. A round-trip of such bytes back in throughdag put
using the same codec should result in the same CID.dag put
uses theinput-codec
option to specify the multicodec name of the format data is being provided in, and thestore-codec
option to specify the multicodec name of the format the data should be stored in at rest. These formerly defaulted tojson
andcbor
respectively. They now default todag-json
anddag-cbor
respectively but may be changed to any supported codec (bundled or loaded via plugin) by its multicodec name.json
andcbor
multicodec names (as used byinput-enc
andformat
options) are now no longer aliases fordag-json
anddag-cbor
respectively. Instead, they now refer to their proper multicodec types.cbor
refers to a plain CBOR format, which will not encode CIDs and does not have strict deterministic encoding rules.json
is a plain JSON format, which also won't encode CIDs and will encode bytes in the Go-specific padded base64 string format rather than the dag-json method of byte encoding. See https://ipld.io/specs/codecs/ for more information on IPLD codecs.protobuf
is no longer used as the codec name fordag-pb
raw
is used to mean Bytes in the IPLD Data Modeldag
API in a form that mirrors the protobuf schema used to define the binary format. This unifies the implementations and specification of dag-pb across the IPLD and IPFS stacks. Previously, additional layers of code for file and directory handling within IPFS between protobuf serialization and UnixFS obscured the protobuf representation. Much of this code has now been replaced and there are fewer layers of transformation. This means that interacting with dag-pb data via thedag
API will use different forms:dag get
on a dag-pb block would present the block serialized as JSON as{"data":"padded-base64-bytes","links":[{"Name":"foo","Size":100,"Cid":{"/":"Qm..."}},...]}
.{"Data":{"/":{"bytes":"unpadded-base64-bytes"}},"Links":[{"Name":"foo","Tsize":100,"Hash":{"/":"Qm..."}},...]}
. Aside from the change in byte formatting, most field names have changed:data
→Data
,links
→Links
,Size
→Tsize
,Cid
→Hash
. Note that this output can be changed now using theoutput-codec
option to specify an alternative codec.dag put
and astore-codec
option ofdag-pb
now requires that the input conform to this dag-pb specified form. Previously, input using{"data":"...","links":[...]}
was accepted, now it must be{"Data":"...","Links":[...]}
.dag get QmFoo/NamedLink
whereNamedLink
was one of the links whose name wasNamedLink
. This functionality remains the same, but by prefixing the path with/ipld/
we enter data model pathing semantics and candag get /ipld/QmFoo/Links/0/Hash
to navigate to links or/ipld/QmFoo/Data
to simply retrieve the data section of the node, for example.Ⓜ Multibase Command
go-ipfs now provides utility commands for working with multibase:
See
ipfs multibase --help
for more examples.🔨 Bitswap now supports greater configurability
This release adds an
Internal
section to the configuration file that is designed to help advanced users optimize their setups without needing a custom binary. TheInternal
section is not guaranteed to be the same from release to release and may not be covered by migrations. If you use theInternal
section you should be making sure to check the config documentation between releases for any changes.🐚 Programmatic shell completions command
ipfs commands completion bash
will generate a bash completion script for go-ipfs commands📜 Profile collection command
Performance profiles can now be collected using
ipfs diag profile
. If you need to do some debugging or have an issue to submit the collected profiles are very useful to have around.🍎 Mac OS notarized binaries
The go-ipfs and related migration binaries (for both Intel and Apple Sillicon) are now signed and notarized to make Mac OS installation easier.
👨👩👦 Improved MDNS
There is a completed implementation of the revised libp2p MDNS spec. This should result in better MDNS discovery and better local/offline operation as a result.
🚗 CAR import statistics
dag import
command now supports--stats
option which will include the number of imported blocks and their total size in the output.🕸 Peering command
This release adds
swarm peering
command for easy management of the peering subsystem. Peer in the peering subsystem is maintained to be connected at all times, and gets reconnected on disconnect with a back-off.See
ipfs swarm peering --help
for more details.✅ Release Checklist
For each RC published in each stage:
version.go
has been updated (in therelease-vX.Y.Z
branch).vX.Y.Z-rcN
Checklist:
release-vX.Y.Z
) frommaster
and make any further release related changes to this branch. If any "non-trivial" changes (see the footnotes of docs/releases.md for a definition) get added to the release, uncheck all the checkboxes and return to this stage.version.go
in themaster
branch tovX.(Y+1).0-dev
.make test
)make test_go_lint
)./bin/mkreleaselog
to generate a nice starter listversion.go
has been updated.release-vX.Y.Z
into therelease
branch.release
branch) withvX.Y.Z
.Announce it on the IPFS Users Mailing Listrelease
branch back intomaster
, ignoring the changes toversion.go
(keep the-dev
version from master).The best place to ask your questions about IPFS, how it works and what you can do with it is at discuss.ipfs.io. We are also available at the
#lobby:ipfs.io
Matrix channel which is bridged with other chat platforms.The text was updated successfully, but these errors were encountered: