Skip to content

Commit 3cdf48c

Browse files
committed
refactor!: create a new core module
This lets protocols, such as Gossipsub, to be more agnostic to the specific version of go-libp2p they are running on. Instead they depend only on a specific version of an interface. The core module should remain fairly stable. After some time we could consider cutting a v1 release. But for now it will follow a patch or match versioning. If it's a patch compatible change only the patch number will change, if not it will match the version of go-libp2p.
1 parent de7cda5 commit 3cdf48c

File tree

6 files changed

+181
-4
lines changed

6 files changed

+181
-4
lines changed

core/RELEASE.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Release Guidelines
2+
3+
## Recommended Reading
4+
5+
- https://go.dev/doc/modules/managing-source
6+
7+
## Process
8+
9+
1. Collect the relevant commits:
10+
11+
```
12+
git log --pretty=format:"%h %s %an <%ae>" -- core/
13+
```
14+
15+
or
16+
17+
```
18+
jj log --no-graph -T 'commit_id.short() ++ " " ++ description.first_line() ++ " " ++ author ++ "\n"' core
19+
```
20+
21+
2. If it's a patch compatible change, only update the patch number. Otherwise,
22+
match the version number of the last go-libp2p release.
23+
24+
3. `git tag core/$VERSION` With the following loose template (adjust as needed)
25+
26+
```
27+
vX.Y.Z – [Release type: Major | Minor | Patch]
28+
29+
Summary:
30+
- Short sentence describing the purpose of the release (e.g. new feature, bugfixes, breaking changes).
31+
32+
Changes:
33+
- [Added/Changed/Fixed] <package/type/function>: <short description>
34+
- [Added/Changed/Fixed] <package/type/function>: <short description>
35+
- …
36+
37+
Breaking Changes (if any):
38+
- <Describe removed/renamed types, functions, or changed behavior>
39+
- <Mention minimum supported Go version if bumped>
40+
41+
Notes:
42+
- <Optional: migration instructions, links to changelog, docs, or release notes>
43+
```
44+
45+
4. Publish the tag `git push origin core/$VERSION`

core/go.mod

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
module github.com/libp2p/go-libp2p/core
2+
3+
go 1.24.6
4+
5+
require (
6+
github.com/benbjohnson/clock v1.3.5
7+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0
8+
github.com/ipfs/go-cid v0.5.0
9+
github.com/libp2p/go-buffer-pool v0.1.0
10+
github.com/libp2p/go-flow-metrics v0.2.0
11+
github.com/mr-tron/base58 v1.2.0
12+
github.com/multiformats/go-multiaddr v0.16.0
13+
github.com/multiformats/go-multicodec v0.9.1
14+
github.com/multiformats/go-multihash v0.2.3
15+
github.com/multiformats/go-multistream v0.6.1
16+
github.com/stretchr/testify v1.10.0
17+
go.uber.org/mock v0.5.2
18+
google.golang.org/protobuf v1.36.6
19+
)
20+
21+
require (
22+
github.com/davecgh/go-spew v1.1.1 // indirect
23+
github.com/google/go-cmp v0.7.0 // indirect
24+
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
25+
github.com/kr/pretty v0.3.1 // indirect
26+
github.com/minio/sha256-simd v1.0.1 // indirect
27+
github.com/multiformats/go-base32 v0.1.0 // indirect
28+
github.com/multiformats/go-base36 v0.2.0 // indirect
29+
github.com/multiformats/go-multibase v0.2.0 // indirect
30+
github.com/multiformats/go-varint v0.0.7 // indirect
31+
github.com/pmezard/go-difflib v1.0.0 // indirect
32+
github.com/rogpeppe/go-internal v1.13.1 // indirect
33+
github.com/spaolacci/murmur3 v1.1.0 // indirect
34+
golang.org/x/crypto v0.39.0 // indirect
35+
golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 // indirect
36+
golang.org/x/mod v0.25.0 // indirect
37+
golang.org/x/sync v0.15.0 // indirect
38+
golang.org/x/sys v0.33.0 // indirect
39+
golang.org/x/tools v0.34.0 // indirect
40+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
41+
gopkg.in/yaml.v3 v3.0.1 // indirect
42+
lukechampine.com/blake3 v1.4.1 // indirect
43+
)

core/go.sum

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
2+
github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
3+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
4+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
5+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6+
github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8=
7+
github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
8+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc=
9+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40=
10+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
11+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
12+
github.com/ipfs/go-cid v0.5.0 h1:goEKKhaGm0ul11IHA7I6p1GmKz8kEYniqFopaB5Otwg=
13+
github.com/ipfs/go-cid v0.5.0/go.mod h1:0L7vmeNXpQpUS9vt+yEARkJ8rOg43DF3iPgn4GIN0mk=
14+
github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
15+
github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
16+
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
17+
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
18+
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
19+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
20+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
21+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
22+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
23+
github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
24+
github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
25+
github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw=
26+
github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:st3qqfu8+pMfh+9Mzqb2GTiwrAGjIPszEjZmtksN8Jc=
27+
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
28+
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
29+
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
30+
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
31+
github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE=
32+
github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI=
33+
github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0=
34+
github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4=
35+
github.com/multiformats/go-multiaddr v0.16.0 h1:oGWEVKioVQcdIOBlYM8BH1rZDWOGJSqr9/BKl6zQ4qc=
36+
github.com/multiformats/go-multiaddr v0.16.0/go.mod h1:JSVUmXDjsVFiW7RjIFMP7+Ev+h1DTbiJgVeTV/tcmP0=
37+
github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g=
38+
github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk=
39+
github.com/multiformats/go-multicodec v0.9.1 h1:x/Fuxr7ZuR4jJV4Os5g444F7xC4XmyUaT/FWtE+9Zjo=
40+
github.com/multiformats/go-multicodec v0.9.1/go.mod h1:LLWNMtyV5ithSBUo3vFIMaeDy+h3EbkMTek1m+Fybbo=
41+
github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U=
42+
github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM=
43+
github.com/multiformats/go-multistream v0.6.1 h1:4aoX5v6T+yWmc2raBHsTvzmFhOI8WVOer28DeBBEYdQ=
44+
github.com/multiformats/go-multistream v0.6.1/go.mod h1:ksQf6kqHAb6zIsyw7Zm+gAuVo57Qbq84E27YlYqavqw=
45+
github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8=
46+
github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
47+
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
48+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
49+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
50+
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
51+
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
52+
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
53+
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
54+
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
55+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
56+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
57+
go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko=
58+
go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o=
59+
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
60+
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
61+
golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 h1:bsqhLWFR6G6xiQcb+JoGqdKdRU6WzPWmK8E0jxTjzo4=
62+
golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
63+
golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
64+
golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
65+
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
66+
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
67+
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
68+
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
69+
golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
70+
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
71+
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
72+
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
73+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
74+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
75+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
76+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
77+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
78+
lukechampine.com/blake3 v1.4.1 h1:I3Smz7gso8w4/TunLKec6K2fn+kyKtDxr/xcQEN84Wg=
79+
lukechampine.com/blake3 v1.4.1/go.mod h1:QFosUxmjB8mnrWFSNwKmvxHpfY72bmD2tQ0kBMM3kwo=

core/tools.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//go:build tools
2+
3+
package core
4+
5+
import (
6+
_ "go.uber.org/mock/mockgen"
7+
)

go.mod

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ retract v0.36.0 // Accidentally modified the tag.
99
require (
1010
github.com/benbjohnson/clock v1.3.5
1111
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c
12-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0
1312
github.com/flynn/noise v1.1.0
1413
github.com/google/gopacket v1.1.19
1514
github.com/gorilla/websocket v1.5.3
@@ -23,9 +22,9 @@ require (
2322
github.com/klauspost/compress v1.18.0
2423
github.com/koron/go-ssdp v0.0.6
2524
github.com/libp2p/go-buffer-pool v0.1.0
26-
github.com/libp2p/go-flow-metrics v0.2.0
2725
github.com/libp2p/go-libp2p-asn-util v0.4.1
2826
github.com/libp2p/go-libp2p-testing v0.12.0
27+
github.com/libp2p/go-libp2p/core v0.43.0-rc2
2928
github.com/libp2p/go-msgio v0.3.0
3029
github.com/libp2p/go-netroute v0.2.2
3130
github.com/libp2p/go-reuseport v0.4.0
@@ -34,13 +33,11 @@ require (
3433
github.com/marcopolo/simnet v0.0.1
3534
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd
3635
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b
37-
github.com/mr-tron/base58 v1.2.0
3836
github.com/multiformats/go-base32 v0.1.0
3937
github.com/multiformats/go-multiaddr v0.16.0
4038
github.com/multiformats/go-multiaddr-dns v0.4.1
4139
github.com/multiformats/go-multiaddr-fmt v0.1.0
4240
github.com/multiformats/go-multibase v0.2.0
43-
github.com/multiformats/go-multicodec v0.9.1
4441
github.com/multiformats/go-multihash v0.2.3
4542
github.com/multiformats/go-multistream v0.6.1
4643
github.com/multiformats/go-varint v0.0.7
@@ -71,13 +68,17 @@ require (
7168
github.com/beorn7/perks v1.0.1 // indirect
7269
github.com/cespare/xxhash/v2 v2.3.0 // indirect
7370
github.com/davecgh/go-spew v1.1.1 // indirect
71+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect
7472
github.com/francoispqt/gojay v1.2.13 // indirect
7573
github.com/google/uuid v1.6.0 // indirect
7674
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
75+
github.com/libp2p/go-flow-metrics v0.2.0 // indirect
7776
github.com/miekg/dns v1.1.66 // indirect
7877
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
7978
github.com/minio/sha256-simd v1.0.1 // indirect
79+
github.com/mr-tron/base58 v1.2.0 // indirect
8080
github.com/multiformats/go-base36 v0.2.0 // indirect
81+
github.com/multiformats/go-multicodec v0.9.1 // indirect
8182
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
8283
github.com/pion/dtls/v2 v2.2.12 // indirect
8384
github.com/pion/dtls/v3 v3.0.6 // indirect

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl9
108108
github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
109109
github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA=
110110
github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg=
111+
github.com/libp2p/go-libp2p/core v0.43.0-rc2 h1:1X1aDJNWhMfodJ/ynbaGLkgnC8f+hfBIqQDrzxFZOqI=
112+
github.com/libp2p/go-libp2p/core v0.43.0-rc2/go.mod h1:NYeJ9lvyBv9nbDk2IuGb8gFKEOkIv/W5YRIy1pAJB2Q=
111113
github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0=
112114
github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM=
113115
github.com/libp2p/go-netroute v0.2.2 h1:Dejd8cQ47Qx2kRABg6lPwknU7+nBnFRpko45/fFPuZ8=

0 commit comments

Comments
 (0)