-
Notifications
You must be signed in to change notification settings - Fork 182
chore(deps): bump go-f3
#6019
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
chore(deps): bump go-f3
#6019
Conversation
WalkthroughDependency updates in two Go modules: f3-sidecar and interop-tests/go_app. Versions bumped for direct and indirect dependencies, including go-f3, rust2go, boxo, datastore, go-log, OpenTelemetry, Pion stack, protobuf, and others. No source code changes. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested labels
Suggested reviewers
✨ Finishing Touches🧪 Generate unit tests
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🧹 Nitpick comments (2)
interop-tests/src/tests/go_app/go.mod (1)
3-3: Prefer toolchain pin; keep go directive patchless.To align with Go module best practices and your “fail fast” preference, use a patchless go directive and pin the exact compiler with toolchain.
-go 1.24.5 +go 1.24 +toolchain go1.24.5f3-sidecar/go.mod (1)
3-3: Add toolchain pin; keep go directive patchless.Same recommendation as interop-tests to enforce exact compiler while retaining semantic version in go directive.
-go 1.24.5 +go 1.24 +toolchain go1.24.5
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ Files ignored due to path filters (2)
f3-sidecar/go.sumis excluded by!**/*.suminterop-tests/src/tests/go_app/go.sumis excluded by!**/*.sum
📒 Files selected for processing (2)
f3-sidecar/go.mod(7 hunks)interop-tests/src/tests/go_app/go.mod(5 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: hanabi1224
PR: ChainSafe/forest#5930
File: build.rs:64-77
Timestamp: 2025-08-13T09:43:20.301Z
Learning: hanabi1224 prefers hard compile-time errors in build scripts rather than runtime safeguards or collision detection, believing it's better to fail fast and fix root causes of issues like malformed snapshot names.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
- GitHub Check: tests
- GitHub Check: tests-release
- GitHub Check: Build forest binaries on Linux AMD64
- GitHub Check: cargo-publish-dry-run
- GitHub Check: Build MacOS
- GitHub Check: Build Ubuntu
- GitHub Check: All lint checks
- GitHub Check: Analyze (rust)
- GitHub Check: Analyze (go)
🔇 Additional comments (8)
interop-tests/src/tests/go_app/go.mod (4)
110-116: OTel module versions are consistent (v1.38.0) across all go.mod files; no action required.
17-17: jsync dual licensing confirmed (Apache-2.0 & MIT) — the module root contains bothLICENSE-APACHEandLICENSE-MIT, which are permissive and align with our policy.
119-119: exp/protobuf bumps are indirect only—tests have no direct usage, so no compatibility checks required.
81-81: Fix build errors in interop-tests and re-run WebRTC interop tests
Interop-tests ininterop-tests/src/tests/go_appare failing to build (test/v2: undefinedGoBitswapNodeImpl,GoKadNodeImpl). Resolve these errors (or narrow the test command to only WebRTC packages) and then re-run TURN/ICE interop tests to detect any behavioral shifts.f3-sidecar/go.mod (4)
120-122: Versions are aligned across modules. No action required.
6-6: No cross-module version drift detected.
All shared dependencies in interop-tests/src/tests/go_app/go.mod and f3-sidecar/go.mod resolve to identical versions.
9-9: Install and pin Rust toolchain and enable CGO on CI
Rust commands failed (no/proc/self/exe)—the CI image lacksrustc/cargo. Add and pin the exact Rust toolchain (nightly or stable) matching therust2gopseudo-version and ensure/procis mounted or use a Rust-capable base image.
Also, CGO is currently disabled (CGO_ENABLED=0); if you rely on FFI, setCGO_ENABLED=1and confirmgcc/g++are installed.⛔ Skipped due to learnings
Learnt from: hanabi1224 PR: ChainSafe/forest#5867 File: src/ipld/util.rs:553-558 Timestamp: 2025-08-08T12:10:45.218Z Learning: Forest pins Rust toolchain to 1.89.0 via rust-toolchain.toml; features stabilized in 1.88 (e.g., let-chains) are acceptable in this codebase.
26-26: gnark-crypto v0.19.0 — ensure consistent CPU feature flags (AVX etc.) in CI/build images. Assembly backend refactoring in v0.19.0 may alter instruction paths; verify that all CI and build environments expose identical CPUID features (e.g., avx) to avoid nondeterministic builds. (github.com, cslqm.github.io)
|
|
||
| require ( | ||
| github.com/filecoin-project/go-f3 v0.8.10-0.20250813134250-96230de8cf8c | ||
| github.com/filecoin-project/go-f3 v0.8.10 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
go-f3 → v0.8.10 — check release notes for breaking changes.
Bump looks good; validate any config/API surface changes in sidecar usage.
🏁 Script executed:
#!/bin/bash
set -e
( cd f3-sidecar && go mod tidy && go mod verify && go build ./... )
# List the selected go-f3 version
rg -nP '^\s*github.com/filecoin-project/go-f3\s+v\S+' f3-sidecar/go.modLength of output: 1512
Fix build error in ffi_impl.go due to removed GoF3NodeImpl
Update f3-sidecar/v2/ffi_impl.go (line 27) to use the replacement API from go-f3 v0.8.10—GoF3NodeImpl was removed, so adjust to the new implementation type or constructor as per the v0.8.10 release notes.
🤖 Prompt for AI Agents
In f3-sidecar/v2/ffi_impl.go around line 27, the code references the removed
GoF3NodeImpl from go-f3 v0.8.10; replace that usage with the new
implementation/constructor introduced in v0.8.10 (consult the go-f3 v0.8.10
release notes or package docs to determine the exact replacement API), update
the import if the new type or constructor lives in a different package path, and
adapt any constructor call or method signatures to match the new API so the file
compiles with go-f3 v0.8.10.
| github.com/ihciah/rust2go v0.0.0-20250827134744-0e390b7e49b1 | ||
| github.com/ipfs/go-cid v0.5.0 | ||
| github.com/ipfs/go-datastore v0.8.2 | ||
| github.com/ipfs/go-datastore v0.8.3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Direct dep bumps (datastore, go-log, testify) — run unit tests.
These are safe minors/patches; run the test suite to verify logging and assertions.
Also applies to: 13-13, 17-17
🏁 Script executed:
#!/bin/bash
set -e
( cd f3-sidecar && go test ./... )Length of output: 1114
Fix build failure: undefined GoF3NodeImpl
Tests fail at f3-sidecar/v2/ffi_impl.go:27 with “undefined: GoF3NodeImpl”; define or import the missing GoF3NodeImpl symbol before re-running go test ./... in f3-sidecar.
🤖 Prompt for AI Agents
In f3-sidecar/go.mod around line 11, tests fail because the symbol GoF3NodeImpl
is undefined (error at f3-sidecar/v2/ffi_impl.go:27); fix by either adding the
missing type declaration or importing the package that defines it: 1) If
GoF3NodeImpl is meant to be a local struct/interface, add its definition in the
same package (e.g., create or update v2/ffi_impl.go or v2/ffi_impl_generated.go
with "type GoF3NodeImpl struct { ... }" or the correct signature) and ensure it
matches usages at line 27; 2) If it comes from another package or generated cgo
code, add the correct import or include the generated file (run the generator or
enable the build tag that produces the symbol) so the symbol is available at
build time; then run go test ./... in f3-sidecar to verify the build passes.
| github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect | ||
| github.com/huin/goupnp v1.3.0 // indirect | ||
| github.com/ipfs/boxo v0.33.1 // indirect | ||
| github.com/ipfs/boxo v0.34.0 // indirect |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Transitives: boxo/varint/pion — smoke test network-heavy paths.*
Minor bumps but could impact protocol behavior; run any integration/interop flows that exercise pubsub, QUIC, and WebRTC.
Also applies to: 79-79, 86-86, 95-95, 101-102
🏁 Script executed:
#!/bin/bash
set -e
( cd f3-sidecar && go build ./... )Length of output: 887
🏁 Script executed:
#!/bin/bash
set -e
cd f3-sidecar
rg -n 'GoF3NodeImpl' -C3 .
rg -n 'type GoF3NodeImpl' -C3 .Length of output: 1836
🏁 Script executed:
#!/bin/bash
set -e
cd f3-sidecar
printf "--- ffi_impl.go ---\n"
head -n 20 ffi_impl.go
printf "\n--- ffi_gen.go ---\n"
head -n 20 ffi_gen.goLength of output: 205
🏁 Script executed:
#!/bin/bash
set -e
cd f3-sidecar
echo "--- Directory listing ---"
ls -1
echo "--- Package declarations ---"
grep -n '^package ' *.go
echo "--- ffi_impl.go (lines 1-60) ---"
sed -n '1,60p' ffi_impl.go
echo "--- ffi_gen.go (lines 1-60) ---"
sed -n '1,60p' ffi_gen.goLength of output: 5065
🏁 Script executed:
#!/bin/bash
set -e
cd f3-sidecar
sed -n '1,50p' go.modLength of output: 2136
ffi_impl.go:27 – undefined: GoF3NodeImpl
- The FFI binding in ffi_gen.go (import "C") isn’t being included, so the global GoF3NodeImpl is missing at compile time—ensure your build environment has CGO_ENABLED=1 and a C toolchain so ffi_gen.go is compiled.
- Once the build is restored, smoke-test network-heavy paths (pubsub, QUIC, WebRTC) to validate the boxo/varint/pion* bumps.
🤖 Prompt for AI Agents
f3-sidecar/go.mod lines ~45: ffi_gen.go (which contains import "C") isn't being
compiled so the global GoF3NodeImpl defined there is missing; enable cgo and a C
toolchain and rebuild. Set CGO_ENABLED=1 in your environment, install a C
compiler toolchain (gcc/clang) appropriate for the target platform, clean module
cache/build artifacts (go clean -cache -modcache), then run go build to ensure
ffi_gen.go is included and GoF3NodeImpl is defined; after the build succeeds run
smoke tests exercising pubsub, QUIC and WebRTC paths to validate the bumped
boxo/varint/pion* dependencies.
| github.com/ihciah/rust2go v0.0.0-20250827134744-0e390b7e49b1 | ||
| github.com/ipfs/boxo v0.34.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Direct bumps look fine; verify build and CGO for rust2go pseudo-version.
- rust2go moved to a pseudo-version; ensure your CI runners have the required Rust toolchain/CGO flags, as pseudo-version updates can change build tags or FFI symbols.
- Run mod tidy + build to surface any API drift from boxo/go-datastore/go-log.
Also applies to: 9-10
🏁 Script executed:
#!/bin/bash
set -euo pipefail
mod="interop-tests/src/tests/go_app/go.mod"
# Tidy and verify module graph (requires Go toolchain)
( cd interop-tests/src/tests/go_app && go mod tidy && go mod verify )
# Quick build to catch API breaks
( cd interop-tests/src/tests/go_app && go build ./... )
# Sanity: print pinned versions for key deps
rg -nP '^\s*(github.com/(ihciah/rust2go|ipfs/(boxo|go-datastore|go-log/v2)))\s+v\S+' "$mod" || trueLength of output: 4693
Fix missing FFI bindings after rust2go pseudo-version bump
The upgrade to rust2go v0.0.0-20250827134744-0e390b7e49b1 fails to compile:
• bitswap_impl.go:24 → undefined: GoBitswapNodeImpl
• kad_impl.go:19 → undefined: GoKadNodeImpl
The new pseudo-version changed the generated FFI exports. Update your Go wrappers to match the renamed or replaced symbols (or pin to the prior rust2go version until you adjust the bindings).
🤖 Prompt for AI Agents
In interop-tests/src/tests/go_app/go.mod around lines 6 to 7, the rust2go
pseudo-version was bumped which changed the generated FFI export names causing
undefined symbols GoBitswapNodeImpl and GoKadNodeImpl; either update the Go
wrapper files (bitswap_impl.go and kad_impl.go) to reference the new exported
symbol names produced by the new rust2go version (search the generated bindings
for the renamed types/functions and replace usages accordingly), or pin the
rust2go dependency to the previous working pseudo-version in go.mod until you
have updated the wrappers.
| github.com/multiformats/go-multihash v0.2.3 // indirect | ||
| github.com/multiformats/go-multistream v0.6.1 // indirect | ||
| github.com/multiformats/go-varint v0.0.7 // indirect | ||
| github.com/multiformats/go-varint v0.1.0 // indirect |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
❓ Verification inconclusive
varint v0.1.0 is a breaking pre‑1.0 bump — smoke test transitive users.
Semver-0 → 0.1.0 can include breaking changes; ensure consumers via multiformats stack still compile.
🏁 Script executed:
#!/bin/bash
set -e
( cd interop-tests/src/tests/go_app && go build ./... )Length of output: 4153
Fix build failures in interop-tests after varint bump
Build now fails in interop-tests/src/tests/go_app/test/v2 with:
- bitswap_impl.go:24:2 – undefined: GoBitswapNodeImpl
- kad_impl.go:19:2 – undefined: GoKadNodeImpl
🤖 Prompt for AI Agents
In interop-tests/src/tests/go_app/go.mod (line 76), the varint module bump
caused API/ABI changes so generated Go code in test/v2 references types
(GoBitswapNodeImpl, GoKadNodeImpl) that no longer exist; either pin
github.com/multiformats/go-varint back to the previous working version in go.mod
(replace or require the exact commit/tag used when the Go bindings were
generated) or regenerate the Go bindings/source in
interop-tests/src/tests/go_app/test/v2 so they match the new varint API; update
go.mod accordingly and run go mod tidy then rebuild to confirm the undefined
type errors are resolved.
Summary of changes
Changes introduced in this pull request:
go-f3Reference issue to close (if applicable)
Closes
Other information and links
Change checklist
Summary by CodeRabbit