Skip to content

Commit 5cca561

Browse files
authored
Merge pull request #10745 from ipfs/release-v0.34.0
Release v0.34.0
2 parents ad1868a + 38f255e commit 5cca561

File tree

119 files changed

+2219
-1331
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+2219
-1331
lines changed

Diff for: .codespell-ignore

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
Adin
2+
nd
3+
Nd
4+
afile
5+
thirdparty
6+
receivedFrom
7+
origN
8+
hel
9+
TotalIn
10+
childs
11+
userA
12+
AssignT
13+
OT
14+
AssignT
15+
fo
16+
recusive
17+
raison
18+
Boddy
19+
ressource
20+
achin
21+
re-using

Diff for: .github/workflows/codeql-analysis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
- name: Setup Go
3535
uses: actions/setup-go@v5
3636
with:
37-
go-version: 1.23.x
37+
go-version: 1.24.x
3838

3939
# Initializes the CodeQL tools for scanning.
4040
- name: Initialize CodeQL

Diff for: .github/workflows/docker-build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
steps:
2929
- uses: actions/setup-go@v5
3030
with:
31-
go-version: 1.23.x
31+
go-version: 1.24.x
3232
- uses: actions/checkout@v4
3333
- run: docker build -t $IMAGE_NAME:$WIP_IMAGE_TAG .
3434
- run: docker run --rm $IMAGE_NAME:$WIP_IMAGE_TAG --version

Diff for: .github/workflows/gateway-conformance.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
- name: Setup Go
5050
uses: actions/setup-go@v5
5151
with:
52-
go-version: 1.23.x
52+
go-version: 1.24.x
5353
- uses: protocol/cache-go-action@v1
5454
with:
5555
name: ${{ github.job }}
@@ -136,7 +136,7 @@ jobs:
136136
- name: Setup Go
137137
uses: actions/setup-go@v5
138138
with:
139-
go-version: 1.23.x
139+
go-version: 1.24.x
140140
- uses: protocol/cache-go-action@v1
141141
with:
142142
name: ${{ github.job }}

Diff for: .github/workflows/gobuild.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
steps:
3131
- uses: actions/setup-go@v5
3232
with:
33-
go-version: 1.23.x
33+
go-version: 1.24.x
3434
- uses: actions/checkout@v4
3535
- run: make cmd/ipfs-try-build
3636
env:

Diff for: .github/workflows/golang-analysis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
submodules: recursive
2828
- uses: actions/setup-go@v5
2929
with:
30-
go-version: "1.23.x"
30+
go-version: "1.24.x"
3131
- name: Check that go.mod is tidy
3232
uses: protocol/[email protected]
3333
with:

Diff for: .github/workflows/golint.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ jobs:
3131
steps:
3232
- uses: actions/setup-go@v5
3333
with:
34-
go-version: 1.23.x
34+
go-version: 1.24.x
3535
- uses: actions/checkout@v4
3636
- run: make -O test_go_lint

Diff for: .github/workflows/gotest.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
- name: Set up Go
3333
uses: actions/setup-go@v5
3434
with:
35-
go-version: 1.23.x
35+
go-version: 1.24.x
3636
- name: Check out Kubo
3737
uses: actions/checkout@v4
3838
- name: Install missing tools
@@ -45,7 +45,7 @@ jobs:
4545
make -j "$PARALLEL" test/unit/gotest.junit.xml &&
4646
[[ ! $(jq -s -c 'map(select(.Action == "fail")) | .[]' test/unit/gotest.json) ]]
4747
- name: Upload coverage to Codecov
48-
uses: codecov/codecov-action@7f8b4b4bde536c465e797be725718b88c5d95e0e # v5.1.1
48+
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0
4949
if: failure() || success()
5050
with:
5151
name: unittests

Diff for: .github/workflows/interop.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ on:
1010
- 'master'
1111

1212
env:
13-
GO_VERSION: 1.23.x
13+
GO_VERSION: 1.24.x
1414

1515
concurrency:
1616
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name == 'push' && github.sha || github.ref }}

Diff for: .github/workflows/sharness.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
- name: Setup Go
2626
uses: actions/setup-go@v5
2727
with:
28-
go-version: 1.23.x
28+
go-version: 1.24.x
2929
- name: Checkout Kubo
3030
uses: actions/checkout@v4
3131
with:
@@ -55,7 +55,7 @@ jobs:
5555
# increasing parallelism beyond 10 doesn't speed up the tests much
5656
PARALLEL: ${{ github.repository == 'ipfs/kubo' && 10 || 3 }}
5757
- name: Upload coverage report
58-
uses: codecov/codecov-action@7f8b4b4bde536c465e797be725718b88c5d95e0e # v5.1.1
58+
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0
5959
if: failure() || success()
6060
with:
6161
name: sharness

Diff for: .github/workflows/spellcheck.yml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Spell Check
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
spellcheck:
7+
runs-on: ubuntu-latest
8+
9+
steps:
10+
- name: Checkout code
11+
uses: actions/checkout@v4
12+
13+
- name: Install Codespell
14+
run: pip install codespell==2.4.0
15+
16+
- name: Run Codespell
17+
uses: codespell-project/actions-codespell@v2
18+
with:
19+
only_warn: 1
20+
ignore_words_file: .codespell-ignore
21+
skip: "*.mod,*.sum,*.pdf,./docs/AUTHORS,./test/sharness/t0275-cid-security-data,./test/sharness/t0280-plugin-dag-jose-data,./bin"

Diff for: CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Kubo Changelogs
22

3+
- [v0.34](docs/changelogs/v0.34.md)
34
- [v0.33](docs/changelogs/v0.33.md)
45
- [v0.32](docs/changelogs/v0.32.md)
56
- [v0.31](docs/changelogs/v0.31.md)

Diff for: Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.23 AS builder
1+
FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.24 AS builder
22

33
ARG TARGETOS TARGETARCH
44

@@ -93,7 +93,7 @@ RUN mkdir /container-init.d \
9393
VOLUME $IPFS_PATH
9494

9595
# The default logging level
96-
ENV IPFS_LOGGING ""
96+
ENV GOLOG_LOG_LEVEL ""
9797

9898
# This just makes sure that:
9999
# 1. There's an fs-repo, and initializes one if there isn't.

Diff for: FUNDING.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"opRetro": {
3+
"projectId": "0x7f330267969cf845a983a9d4e7b7dbcca5c700a5191269af377836d109e0bb69"
4+
}
5+
}

Diff for: README.md

+35-23
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@
1212
<a href="https://ipfs.tech"><img src="https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square" alt="Official Part of IPFS Project"></a>
1313
<a href="https://discuss.ipfs.tech"><img alt="Discourse Forum" src="https://img.shields.io/discourse/posts?server=https%3A%2F%2Fdiscuss.ipfs.tech"></a>
1414
<a href="https://matrix.to/#/#ipfs-space:ipfs.io"><img alt="Matrix" src="https://img.shields.io/matrix/ipfs-space%3Aipfs.io?server_fqdn=matrix.org"></a>
15-
<a href="https://github.com/ipfs/kubo/actions"><img src="https://img.shields.io/github/actions/workflow/status/ipfs/kubo/build.yml?branch=master" alt="ci"></a>
15+
<a href="https://github.com/ipfs/kubo/actions"><img src="https://img.shields.io/github/actions/workflow/status/ipfs/kubo/gobuild.yml?branch=master"></a>
1616
<a href="https://github.com/ipfs/kubo/releases"><img alt="GitHub release" src="https://img.shields.io/github/v/release/ipfs/kubo?filter=!*rc*"></a>
17-
<a href="https://godoc.org/github.com/ipfs/kubo"><img src="https://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square" alt="godoc reference"></a>
1817
</p>
1918

2019
<hr />
2120

2221
## What is Kubo?
2322

24-
Kubo was the first IPFS implementation and is the most widely used one today. Implementing the *Interplanetary Filesystem* - the Web3 standard for content-addressing, interoperable with HTTP. Thus powered by IPLD's data models and the libp2p for network communication. Kubo is written in Go.
23+
Kubo was the first IPFS implementation and is the most widely used one today. Implementing the *Interplanetary Filesystem* - the standard for content-addressing on the Web, interoperable with HTTP. Thus powered by future-proof data models and the libp2p for network communication. Kubo is written in Go.
2524

2625
Featureset
2726
- Runs an IPFS-Node as a network service that is part of LAN and WAN DHT
27+
- Native support for UnixFS (most popular way to represent files and directories on IPFS)
2828
- [HTTP Gateway](https://specs.ipfs.tech/http-gateways/) (`/ipfs` and `/ipns`) functionality for trusted and [trustless](https://docs.ipfs.tech/reference/http/gateway/#trustless-verifiable-retrieval) content retrieval
2929
- [HTTP Routing V1](https://specs.ipfs.tech/routing/http-routing-v1/) (`/routing/v1`) client and server implementation for [delegated routing](./docs/delegated-routing.md) lookups
3030
- [HTTP Kubo RPC API](https://docs.ipfs.tech/reference/kubo/rpc/) (`/api/v0`) to access and control the daemon
@@ -64,12 +64,11 @@ Before opening an issue, consider using one of the following locations to ensure
6464
- [Next milestones](#next-milestones)
6565
- [Table of Contents](#table-of-contents)
6666
- [Security Issues](#security-issues)
67-
- [Minimal System Requirements](#minimal-system-requirements)
6867
- [Install](#install)
68+
- [Minimal System Requirements](#minimal-system-requirements)
6969
- [Docker](#docker)
7070
- [Official prebuilt binaries](#official-prebuilt-binaries)
7171
- [Updating](#updating)
72-
- [Using ipfs-update](#using-ipfs-update)
7372
- [Downloading builds using IPFS](#downloading-builds-using-ipfs)
7473
- [Unofficial Linux packages](#unofficial-linux-packages)
7574
- [ArchLinux](#arch-linux)
@@ -80,6 +79,7 @@ Before opening an issue, consider using one of the following locations to ensure
8079
- [Guix](#guix)
8180
- [Snap](#snap)
8281
- [Ubuntu PPA](#ubuntu-ppa)
82+
- [Fedora](#fedora-copr)
8383
- [Unofficial Windows packages](#unofficial-windows-packages)
8484
- [Chocolatey](#chocolatey)
8585
- [Scoop](#scoop)
@@ -111,28 +111,41 @@ Before opening an issue, consider using one of the following locations to ensure
111111

112112
Please follow [`SECURITY.md`](SECURITY.md).
113113

114+
## Install
115+
116+
The canonical download instructions for IPFS are over at: https://docs.ipfs.tech/install/. It is **highly recommended** you follow those instructions if you are not interested in working on IPFS development.
117+
118+
For production use, Release Docker images (below) are recommended.
119+
114120
### Minimal System Requirements
115121

116-
IPFS can run on most Linux, macOS, and Windows systems. We recommend running it on a machine with at least 4 GB of RAM and 2 CPU cores (kubo is highly parallel). On systems with less memory, it may not be completely stable, and you run on your own risk.
122+
Kubo runs on most Linux, macOS, and Windows systems. For optimal performance, we recommend at least 6 GB of RAM and 2 CPU cores (more is ideal, as Kubo is highly parallel).
117123

118-
## Install
124+
> [!IMPORTANT]
125+
> Larger pinsets require additional memory, with an estimated ~1 GiB of RAM per 20 million items for reproviding to the Amino DHT.
119126
120-
The canonical download instructions for IPFS are over at: https://docs.ipfs.tech/install/. It is **highly recommended** you follow those instructions if you are not interested in working on IPFS development.
127+
> [!CAUTION]
128+
> Systems with less than the recommended memory may experience instability, frequent OOM errors or restarts, and missing data announcement (reprovider window), which can make data fully or partially inaccessible to other peers. Running Kubo on underprovisioned hardware is at your own risk.
121129
122130
### Docker
123131

124-
Official images are published at https://hub.docker.com/r/ipfs/kubo/:
132+
Official images are published at https://hub.docker.com/r/ipfs/kubo/: [![Docker Image Version (latest semver)](https://img.shields.io/docker/v/ipfs/kubo?color=blue&label=kubo%20docker%20image&logo=docker&sort=semver&style=flat-square&cacheSeconds=3600)](https://hub.docker.com/r/ipfs/kubo/)
125133

126-
[![Docker Image Version (latest semver)](https://img.shields.io/docker/v/ipfs/kubo?color=blue&label=kubo%20docker%20image&logo=docker&sort=semver&style=flat-square&cacheSeconds=3600)](https://hub.docker.com/r/ipfs/kubo/)
134+
#### 🟢 Release Images
135+
- These are production grade images. Use them.
136+
- `latest` and [`release`](https://hub.docker.com/r/ipfs/kubo/tags?name=release) tags always point at [the latest stable release](https://github.com/ipfs/kubo/releases/latest). If you use this, remember to `docker pull` periodically to update.
137+
- [`vN.N.N`](https://hub.docker.com/r/ipfs/kubo/tags?name=v) points at a specific [release tag](https://github.com/ipfs/kubo/releases)
127138

128-
- 🟢 Releases
129-
- `latest` and `release` tags always point at [the latest stable release](https://github.com/ipfs/kubo/releases/latest)
130-
- `vN.N.N` points at a specific [release tag](https://github.com/ipfs/kubo/releases)
131-
- These are production grade images.
132-
- 🟠 We also provide experimental developer builds
133-
- `master-latest` always points at the `HEAD` of the `master` branch
134-
- `master-YYYY-DD-MM-GITSHA` points at a specific commit from the `master` branch
139+
#### 🟠 Developer Preview Images
135140
- These tags are used by developers for internal testing, not intended for end users or production use.
141+
- [`master-latest`](https://hub.docker.com/r/ipfs/kubo/tags?name=master-latest) always points at the `HEAD` of the [`master`](https://github.com/ipfs/kubo/commits/master/) branch
142+
- [`master-YYYY-DD-MM-GITSHA`](https://hub.docker.com/r/ipfs/kubo/tags?name=master-2) points at a specific commit from the `master` branch
143+
144+
#### 🔴 Internal Staging Images
145+
- We use `staging` for testing arbitrary commits and experimental patches.
146+
- To build image for current HEAD, force push to `staging` via `git push origin HEAD:staging --force`)
147+
- [`staging-latest`](https://hub.docker.com/r/ipfs/kubo/tags?name=staging-latest) always points at the `HEAD` of the [`staging`](https://github.com/ipfs/kubo/commits/staging/) branch
148+
- [`staging-YYYY-DD-MM-GITSHA`](https://hub.docker.com/r/ipfs/kubo/tags?name=staging-2) points at a specific commit from the `staging` branch
136149

137150
```console
138151
$ docker pull ipfs/kubo:latest
@@ -161,12 +174,6 @@ If you are unable to access [dist.ipfs.tech](https://dist.ipfs.tech#kubo), you c
161174

162175
#### Updating
163176

164-
##### Using ipfs-update
165-
166-
IPFS has an updating tool that can be accessed through `ipfs update`. The tool is
167-
not installed alongside IPFS in order to keep that logic independent of the main
168-
codebase. To install `ipfs-update` tool, [download it here](https://dist.ipfs.tech/#ipfs-update).
169-
170177
##### Downloading builds using IPFS
171178

172179
List the available versions of Kubo (go-ipfs) implementation:
@@ -207,6 +214,7 @@ $ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip
207214
- [Guix](#guix)
208215
- [Snap](#snap)
209216
- [Ubuntu PPA](#ubuntu-ppa)
217+
- [Fedora](#fedora-copr)
210218

211219
#### Arch Linux
212220

@@ -271,6 +279,10 @@ sudo apt update
271279
sudo apt install ipfs-kubo
272280
```
273281

282+
### Fedora COPR
283+
284+
[`taw00/ipfs-rpm`](https://github.com/taw00/ipfs-rpm)
285+
274286
##### Any Ubuntu version
275287

276288
```sh

Diff for: cmd/ipfs/kubo/daemon.go

+14-8
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ import (
1717
"sync"
1818
"time"
1919

20-
multierror "github.com/hashicorp/go-multierror"
21-
2220
cmds "github.com/ipfs/go-ipfs-cmds"
2321
mprome "github.com/ipfs/go-metrics-prometheus"
2422
version "github.com/ipfs/kubo"
@@ -47,6 +45,7 @@ import (
4745
manet "github.com/multiformats/go-multiaddr/net"
4846
prometheus "github.com/prometheus/client_golang/prometheus"
4947
promauto "github.com/prometheus/client_golang/prometheus/promauto"
48+
"go.uber.org/multierr"
5049
)
5150

5251
const (
@@ -421,9 +420,16 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
421420
// Private setups should not use public AutoTLS infrastructure
422421
// as it will leak their existence and PeerID identity to CA
423422
// and they will show up at https://crt.sh/?q=libp2p.direct
424-
// Below ensures we hard fail if someone tries to enable both
425-
if cfg.AutoTLS.Enabled.WithDefault(config.DefaultAutoTLSEnabled) {
426-
return errors.New("private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with AutoTLS.Enabled=true, update config to remove this message")
423+
enableAutoTLS := cfg.AutoTLS.Enabled.WithDefault(config.DefaultAutoTLSEnabled)
424+
if enableAutoTLS {
425+
if cfg.AutoTLS.Enabled != config.Default {
426+
// hard fail if someone tries to explicitly enable both
427+
return errors.New("private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with AutoTLS.Enabled=true, update config to remove this message")
428+
} else {
429+
// print error and disable autotls if user runs on default settings
430+
log.Error("private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.")
431+
cfg.AutoTLS.Enabled = config.False
432+
}
427433
}
428434
}
429435

@@ -678,7 +684,7 @@ take effect.
678684
var errs error
679685
for err := range merge(apiErrc, gwErrc, gcErrc, p2pGwErrc) {
680686
if err != nil {
681-
errs = multierror.Append(errs, err)
687+
errs = multierr.Append(errs, err)
682688
}
683689
}
684690

@@ -816,9 +822,9 @@ func rewriteMaddrToUseLocalhostIfItsAny(maddr ma.Multiaddr) ma.Multiaddr {
816822
first, rest := ma.SplitFirst(maddr)
817823

818824
switch {
819-
case first.Equal(manet.IP4Unspecified):
825+
case first.Equal(&manet.IP4Unspecified[0]):
820826
return manet.IP4Loopback.Encapsulate(rest)
821-
case first.Equal(manet.IP6Unspecified):
827+
case first.Equal(&manet.IP6Unspecified[0]):
822828
return manet.IP6Loopback.Encapsulate(rest)
823829
default:
824830
return maddr // not ip

Diff for: cmd/ipfs/kubo/start.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,10 @@ func insideGUI() bool {
226226
func checkDebug(req *cmds.Request) {
227227
// check if user wants to debug. option OR env var.
228228
debug, _ := req.Options["debug"].(bool)
229-
if debug || os.Getenv("IPFS_LOGGING") == "debug" {
229+
ipfsLogLevel, _ := logging.LevelFromString(os.Getenv("IPFS_LOGGING")) // IPFS_LOGGING is deprecated
230+
goLogLevel, _ := logging.LevelFromString(os.Getenv("GOLOG_LOG_LEVEL"))
231+
232+
if debug || goLogLevel == logging.LevelDebug || ipfsLogLevel == logging.LevelDebug {
230233
u.Debug = true
231234
logging.SetDebugLogging()
232235
}

0 commit comments

Comments
 (0)