You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+60-1
Original file line number
Diff line number
Diff line change
@@ -24,6 +24,65 @@ The following emojis are used to highlight certain changes:
24
24
25
25
### Security
26
26
27
+
## [v0.14.0]
28
+
29
+
### Added
30
+
31
+
*`boxo/gateway`:
32
+
* A new `WithResolver(...)` option can be used with `NewBlocksBackend(...)` allowing the user to pass their custom `Resolver` implementation.
33
+
* The gateway now sets a `Cache-Control` header for requests under the `/ipns/` namespace if the TTL for the corresponding IPNS Records or DNSLink entities is known.
34
+
*`boxo/bitswap/client`:
35
+
* A new `WithoutDuplicatedBlockStats()` option can be used with `bitswap.New` and `bsclient.New`. This disable accounting for duplicated blocks, which requires a `blockstore.Has()` lookup for every received block and thus, can impact performance.
A service that maintains connections to a number of bootstrap peers.
41
+
42
+
### Changed
43
+
44
+
*`boxo/gateway`
45
+
* 🛠 The `IPFSBackend` interface was updated to make the responses of the
46
+
`Head` method more explicit. It now returns a `HeadResponse` instead of a
47
+
`files.Node`.
48
+
*`boxo/routing/http/client.Client` is now exported. This means you can now pass
49
+
it around functions, or add it to a struct if you want.
50
+
* 🛠 The `path` package has been massively refactored. With this refactor, we have
51
+
condensed the different path-related and/or Kubo-specific packages under a single generic one. Therefore, there
52
+
are many breaking changes. Please consult the [documentation](https://pkg.go.dev/github.com/ipfs/boxo/path)
53
+
for more details on how to use the new package.
54
+
* Note: content paths created with `boxo/path` are automatically normalized:
55
+
- Replace multiple slashes with a single slash.
56
+
- Eliminate each `.` path name element (the current directory).
57
+
- Eliminate each inner `..` path name element (the parent directory) along with the non-`..` element that precedes it.
58
+
- Eliminate `..` elements that begin a rooted path: that is, replace "`/..`" by "`/`" at the beginning of a path.
59
+
* 🛠 The signature of `CoreAPI.ResolvePath` in `coreiface` has changed to now return
60
+
the remainder segments as a second return value, matching the signature of `resolver.ResolveToLastNode`.
61
+
* 🛠 `routing/http/client.FindPeers` now returns `iter.ResultIter[types.PeerRecord]` instead of `iter.ResultIter[types.Record]`. The specification indicates that records for this method will always be Peer Records.
62
+
* 🛠 The `namesys` package has been refactored. The following are the largest modifications:
63
+
* The options in `coreiface/options/namesys` have been moved to `namesys` and their names
64
+
have been made more consistent.
65
+
* Many of the exported structs and functions have been renamed in order to be consistent with
66
+
the remaining packages.
67
+
*`namesys.Resolver.Resolve` now returns a TTL, in addition to the resolved path. If the
68
+
TTL is unknown, 0 is returned. `IPNSResolver` is able to resolve a TTL, while `DNSResolver`
69
+
is not.
70
+
*`namesys/resolver.ResolveIPNS` has been moved to `namesys.ResolveIPNS` and now returns a TTL
71
+
in addition to the resolved path.
72
+
* ✨ `boxo/ipns` record defaults follow recommendations from [IPNS Record Specification](https://specs.ipfs.tech/ipns/ipns-record/#ipns-record):
73
+
*`DefaultRecordTTL` is now set to `1h`
74
+
*`DefaultRecordLifetime` follows the increased expiration window of Amino DHT ([go-libp2p-kad-dht#793](https://github.com/libp2p/go-libp2p-kad-dht/pull/793)) and is set to `48h`
75
+
* 🛠 The `gateway`'s `IPFSBackend.ResolveMutable` is now expected to return a TTL in addition to
76
+
the resolved path. If the TTL is unknown, 0 should be returned.
77
+
78
+
### Removed
79
+
80
+
* 🛠 `util.MultiErr` has been removed. Please use Go's native support for wrapping errors, or `errors.Join` instead.
81
+
82
+
### Fixed
83
+
84
+
### Security
85
+
27
86
## [v0.13.1]
28
87
29
88
### Added
@@ -240,7 +299,7 @@ None.
240
299
-`InternalKeys`
241
300
- 🛠 `provider/batched.New` has been moved to `provider.New` and arguments has been changed. (https://github.com/ipfs/boxo/pulls/273)
242
301
- A routing system is now passed with the `provider.Online` option, by default the system run in offline mode (push stuff onto the queue).
243
-
- When using `provider.Online` calling the `.Run` method is not required anymore, the background worker is implicitely started in the background by `provider.New`.
302
+
- When using `provider.Online` calling the `.Run` method is not required anymore, the background worker is implicitly started in the background by `provider.New`.
244
303
- You do not have to pass a queue anymore, you pass a `datastore.Datastore` exclusively.
245
304
- 🛠 `provider.NewOfflineProvider` has been renamed to `provider.NewNoopProvider` to show more clearly that is does nothing. (https://github.com/ipfs/boxo/pulls/273)
246
305
- 🛠 `provider.Provider` and `provider.Reprovider` has been merged under one `provider.System`. (https://github.com/ipfs/boxo/pulls/273)
@@ -53,6 +62,7 @@ Boxo powers [Kubo](https://github.com/ipfs/kubo), which is [the most popular IPF
53
62
so its code has been battle-tested on the IPFS network for years, and is well-understood by the community.
54
63
55
64
### Motivation
65
+
56
66
**TL;DR** The goal of this repo is to help people build things. Previously users struggled to find existing useful code or to figure out how to use what they did find. We observed many running Kubo and using its HTTP RPC API. This repo aims to do better. We're taking the libraries that many were already effectively relying on in production and making them more easily discoverable and usable.
57
67
58
68
The maintainers primarily aim to help people trying to build with IPFS in Go that were previously either giving up or relying on the [Kubo HTTP RPC API](https://docs.ipfs.tech/reference/kubo/rpc/). Some of these people will end up being better served by IPFS tooling in other languages (e.g., Javascript, Rust, Java, Python), but for those who are either looking to write in Go or to leverage the set of IPFS tooling we already have in Go we’d like to make their lives easier.
@@ -64,6 +74,7 @@ Boxo is not exhaustive nor comprehensive--there are plenty of useful IPFS protoc
64
74
More details can also be found in the [Rationale FAQ](./docs/FAQ.md#rationale-faq).
65
75
66
76
## Scope
77
+
67
78
### What kind of components does Boxo have?
68
79
69
80
Boxo includes high-quality components useful for interacting with IPFS protocols, public and private IPFS networks, and content-addressed data, such as:
@@ -77,20 +88,23 @@ Boxo includes high-quality components useful for interacting with IPFS protocols
77
88
Boxo aims to provide a cohesive interface into these components. Note that not all of the underlying components necessarily reside in this respository.
78
89
79
90
### Does Boxo == IPFS?
80
-
No. This repo houses some IPFS functionality written in Go that has been useful in practice, and is maintained by a group that has long term commitments to the IPFS project
81
91
82
-
### Is everything related to IPFS in the Go ecosystem in this repo?
92
+
No. This repo houses some IPFS functionality written in Go that has been useful in practice, and is maintained by a group that has long term commitments to the IPFS project
83
93
84
-
No. Not everything related to IPFS is intended to be in Boxo. View it as a starter toolbox (potentially among multiple). If you’d like to build an IPFS implementation with Go, here are some tools you might want that are maintained by a group that has long term commitments to the IPFS project. There are certainly repos that others maintain that aren't included here (e.g., ipfs/go-car) which are still useful to IPFS implementations. It's expected and fine for new IPFS functionality to be developed that won't be part of Boxo.
94
+
### Is everything related to IPFS in the Go ecosystem in this repo?
85
95
96
+
No. Not everything related to IPFS is intended to be in Boxo. View it as a starter toolbox (potentially among multiple). If you’d like to build an IPFS implementation with Go, here are some tools you might want that are maintained by a group that has long term commitments to the IPFS project. There are certainly repos that others maintain that aren't included here (e.g., ipfs/go-car) which are still useful to IPFS implementations. It's expected and fine for new IPFS functionality to be developed that won't be part of Boxo.
86
97
87
98
## Consuming
99
+
88
100
### Getting started
101
+
89
102
See [examples](./examples/README.md).
90
103
91
104
If you are migrating to Boxo, see [Migrating to Boxo](#migrating-to-boxo).
92
105
93
106
### Migrating to Boxo
107
+
94
108
Many Go modules under github.com/ipfs have moved here. Boxo provides a tool to ease this migration, which does most of the work for you:
95
109
96
110
*`cd` into the root directory of your module (where the `go.mod` file is)
@@ -107,10 +121,13 @@ We recommend upgrading to v0.8.0 first, and _then_ upgrading to the latest Boxo
107
121
If you encounter any challenges, please [open an issue](https://github.com/ipfs/boxo/issues/new/choose) and Boxo maintainers will help you.
108
122
109
123
### Deprecations & Breaking Changes
124
+
110
125
See [RELEASE.md](./RELEASE.md).
111
126
112
127
## Development
128
+
113
129
### Should I add my IPFS component to Boxo?
130
+
114
131
We happily accept external contributions! However, Boxo maintains a high quality bar, so code accepted into Boxo must meet some minimum maintenance criteria:
115
132
116
133
* Actively maintained
@@ -128,37 +145,46 @@ We happily accept external contributions! However, Boxo maintains a high quality
128
145
If you have some experimental component that you think would benefit the IPFS community, we suggest you build the component in your own repository until it's clear that there's community demand for it, and then open an issue/PR in this repository to discuss including it in Boxo.
129
146
130
147
### Release Process
148
+
131
149
See [RELEASE.md](./RELEASE.md).
132
150
133
151
### Why is the code coverage so bad?
134
152
135
153
The code coverage of this repo is not currently representative of the actual test coverage of this code. Much of the code in this repo is currently covered by integration tests in [Kubo](https://github.com/ipfs/kubo). We are in the process of moving those tests here, and as that continues the code coverage will significantly increase.
136
154
137
155
## General
156
+
138
157
### Help
139
158
140
159
If you have questions, feel free to open an issue. You can also find the Boxo maintainers in [Filecoin Slack](https://filecoin.io/slack/) at #Boxo-maintainers. (If you would like to engage via IPFS Discord or ipfs.io Matrix, please drop into the #ipfs-implementers channel/room or file an issue, and we'll get bridging from #Boxo-maintainers to these other chat platforms.)
141
160
142
161
### What is the response time for issues or PRs filed?
143
-
TODO: fill this in. New issues and PRs to this repo are usually looked at on a weekly basis as part of [Kubo triage](https://pl-strflt.notion.site/Kubo-Issue-Triage-Notes-7d4983e8cf294e07b3cc51b0c60ede9a).
162
+
163
+
New issues and PRs to this repo are usually looked at on a weekly basis as part of [Kubo triage](https://pl-strflt.notion.site/Kubo-Issue-Triage-Notes-7d4983e8cf294e07b3cc51b0c60ede9a). However, the response time may vary.
144
164
145
165
### What are some projects that depend on this project?
146
-
The exhaustive list is https://github.com/ipfs/boxo/network/dependents. Some notable projects include:
166
+
167
+
The exhaustive list is https://github.com/ipfs/boxo/network/dependents. Some notable projects include:
168
+
147
169
1.[Kubo](https://github.com/ipfs/kubo), an IPFS implementation in Go
148
170
2.[Lotus](https://github.com/filecoin-project/lotus), a Filecoin implementation in Go
149
-
3.[Bifrost Gateway](https://github.com/protocol/bifrost-gateway), a dedicated IPFS gateway
171
+
6.[rainbow](https://github.com/ipfs/rainbow), a specialized IPFS gateway
150
172
4.[ipfs-check](https://github.com/ipfs-shipyard/ipfs-check), checks IPFS data availability
173
+
5.[someguy](https://github.com/ipfs-shipyard/someguy), a dedicated Delegated Routing V1 server and client
174
+
3.[Bifrost Gateway](https://github.com/ipfs/bifrost-gateway), a dedicated IPFS Gateway daemon backed by a remote datastore
151
175
152
176
### Governance and Access
153
-
See [CODEOWNERS](./docs/CODEOWNERS) for the current maintainers list. Governance for graduating additional maintainers hasn't been established. Repo permissions are all managed through [ipfs/github-mgmt](https://github.com/ipfs/github-mgmt).
177
+
178
+
See [CODEOWNERS](./docs/CODEOWNERS) for the current maintainers list. Governance for graduating additional maintainers hasn't been established. Repo permissions are all managed through [ipfs/github-mgmt](https://github.com/ipfs/github-mgmt).
154
179
155
180
### Why is this named "Boxo"?
181
+
156
182
See https://github.com/ipfs/boxo/issues/215.
157
183
158
184
### Additional Docs & FAQs
185
+
159
186
See [the wiki](https://github.com/ipfs/boxo/wiki).
160
187
161
188
### License
162
189
163
190
[SPDX-License-Identifier: Apache-2.0 OR MIT](LICENSE.md)
Copy file name to clipboardExpand all lines: RELEASE.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ The amount of backporting of a fix depends on the severity of the issue and the
27
27
As a result, Boxo maintainers recommend that consumers stay up-to-date with Boxo releases.
28
28
29
29
### Go Compatibility
30
-
At any given point, the Go team supports only the latest two versions of Go released (see https://go.dev/doc/devel/release). Boxo maintainers will strive to maintain compatibilty with the older of the two supported versions, so that Boxo is also compatible with the latest two versions of Go.
30
+
At any given point, the Go team supports only the latest two versions of Go released (see https://go.dev/doc/devel/release). Boxo maintainers will strive to maintain compatibility with the older of the two supported versions, so that Boxo is also compatible with the latest two versions of Go.
31
31
32
32
### Release Criteria
33
33
Boxo releases occur _at least_ on every Kubo release. Releases can also be initiated on-demand, regardless of Kubo's release cadence, whenever there are significant changes (new features, refactorings, deprecations, etc.).
0 commit comments