Releases: vacp2p/nim-libp2p
v1.9.0
Highlights
- Async exception tracking - Procedures marked
{.async.}
are annotated with the list of exceptions they might raise - Self-signed TLS certificates can be generated. These will be used with Quic and WebTransport
Breaking change
- Python3 and pip are introduced as a dependency due to mbedtls requiring them to generate some of its source code. In a subsequent release, we will attempt to remove this dependency on Python.
- The
LPProtoHandler
type has changed and now specifies raised exceptions in theasync
pragma, namelyasync: (raises: [CancelledError])
. Consequently, all protocol handlers must also specifyasync: (raises: [CancelledError])
.
Example, code constructs like:
proc handler(conn: Connection, proto: string) {.async.} =
try:
...
except CancelledError:
trace "Unexpected cancellation in handler"
should be changed to:
proc handler(conn: Connection, proto: string) {.async: (raises: [CancelledError]).} =
try:
...
except CancelledError as exc:
trace "Unexpected cancellation in handler"
raise exc
Note:
async
pragma addsraises: [CancelledError]
CancelledError
is propagate up the chain
What's Changed
- chore: add isClosedRemotely public bool attribute in lpstream by @Ivansete-status in #1242
- refactor(pubsub): do not raise exceptions on publish by @richard-ramos in #1244
- style: fix code style with nph by @vladopajic in #1246
- chore: list raised exceptions in
utils
module by @vladopajic in #1252 - chore: specify raising exceptions in
daemon
module by @vladopajic in #1249 - chore: add description of public pragma by @vladopajic in #1262
- chore: refactors to remove
.closure.
,.gcsafe
for.async.
procs, and added callback compatibility todaemonapi
by @richard-ramos in #1240 - chore(connmanager): specify raised exceptions by @vladopajic in #1263
- chore: add trace log to analyse remote stream reset by @Ivansete-status in #1253
- chore: list raised exceptions in
switch
services by @vladopajic in #1251 - chore(transports): list raised exceptions by @vladopajic in #1255
- chore(dialer): list raised exceptions by @vladopajic in #1264
- chore(protocol): list raised exceptions by @vladopajic in #1260
- chore(transports): specify raised exceptions by @vladopajic in #1266
- chore(protocols): specify raised exceptions (part 2) by @vladopajic in #1268
- chore: specify raised exceptions in miscellaneous places by @vladopajic in #1269
- chore(relay): specify raised exceptions by @vladopajic in #1274
- feat(tls-certificate): generate and parse libp2p tls certificate by @diegomrsantos in #1209
- chore(protocol): handler to propagate CancelledError by @vladopajic in #1275
- chore(connmanager): propagate CancelledError by @vladopajic in #1276
New Contributors
- @vladopajic made their first contribution in #1246
Full Changelog: v1.8.0...v1.9.0
v1.8.0
Highlights
- opt-in idontwant on publish #1230
What's Changed
- chore(version): update libp2p.nimble to 1.7.1 by @kaiserd in #1223
- Fix PeerStore missing remote endpoints of established connection. by @cheatfate in #1226
- feat(nameresolving): Add
{.async: (raises).}
annotations by @etan-status in #1214 - fix(ci): use nim 2.0 branch by @richard-ramos in #1228
- chore: use latest nimpng and nico by @richard-ramos in #1229
- chore: validate PR titles and commits, and autoassign PRs by @richard-ramos in #1227
- chore(ci): add arm64 for macOS by @diegomrsantos in #1212
- feat(pubsub): add
{.async: (raises).}
annotations by @richard-ramos in #1233 - fix(multiaddress): don't re-export
minprotobuf
by @richard-ramos in #1235 - feat: idontwant on publish by @richard-ramos in #1230
- fix(pubsub): revert
async: raises: []
annotation forTopicHandler
andValidatorHandler
by @richard-ramos in #1237 - fix: use target repository branch as suffix for
nim-libp2p-auto-bump-
by @richard-ramos in #1238
New Contributors
- @richard-ramos made their first contribution in #1228
Full Changelog: v1.7.0...v1.8.0
v1.7.1
What's Changed
- fix:missing raises pragma for one of RendezVous.new by @NagyZoltanPeter in #1222
New Contributors
- @NagyZoltanPeter made their first contribution in #1222
Full Changelog: v1.7.0...v1.7.1
v1.7.0
Highlights
- feat: configurable min and max TTL for rendezvous.
What's Changed
- feat: rendezvous refactor by @SionoiS in #1183
- chore(ci): Enable S3 caching for interop by @AlejandroCabeza in #1193
- fix(CI): free disk space on interop transport job by @AlejandroCabeza in #1206
- fix(ci): Daily workflows report by @AlejandroCabeza in #1200
- docs(test): handle IHAVE / IWANT tests by @AlejandroCabeza in #1202
- fix(ci): nim 2.0 dependency failure by @AlejandroCabeza in #1216
New Contributors
Full Changelog: v1.6.0...v1.7.0
v1.6.0
Highlights
- experimental encryption-less QUIC Transport (only for test purposes, not production ready)
What's Changed
- chore(logs): remove duplicate msg key by @AlejandroCabeza in #1180
- fix(ci): Daily workflow parent's name by @AlejandroCabeza in #1182
- fix(transport): libp2p compilation in Nim version-2-0 by @tersec in #1186
- ci: Enable conditional SAT solving by @AlejandroCabeza in #1177
- chore(CI): rollback nph change by @diegomrsantos in #1187
- Create funding.json by @Cofson in #1188
- fix(transport): tcp accept fixes by @diegomrsantos in #1170
- chore(connmanager): also show peerID and dir when too many conns by @Ivansete-status in #1185
- chore: move mm:refc config and remove skipParentCfg by @diegomrsantos in #1190
- fix(multiaddress): Raise
MaError
instead ofLPError
on&
by @etan-status in #1145 - chore: add support to merge queues by @diegomrsantos in #1192
- feat(transport): add experimental QUIC Transport (not production ready) by @Menduist in #725
- chore: fix devel compilation issues by @diegomrsantos in #1195
New Contributors
Full Changelog: v1.5.0...v1.6.0
v1.5.0
Highlights
- adding an onValidated observer #1128
- we switched to Nim 2.0.x as our main Nim version. We still support Nim 1.6
What's Changed
- fix: run workflows on master by @diegomrsantos in #1144
- chore: enable Nim 2.0.x and fix compilation issues by @diegomrsantos in #1146
- fix: support ipv6 dual stack by @diegomrsantos in #1148
- chore: update os images on ci by @diegomrsantos in #1149
- chore: setting dialing canceled log to trace by @gabrielmer in #1153
- fix(ci): windows-amd64 (Nim version-1-6) by @AlejandroCabeza in #1160
- fix: add gcc 14 support by @diegomrsantos in #1151
- feat: adding onValidated observer by @gabrielmer in #1128
- fix(test): interop transport by @AlejandroCabeza in #1159
- chore: Cleanup CI by @AlejandroCabeza in #1117
- fix: infinite loop when connection is aborted before being accepted by @diegomrsantos in #1164
- fix(yamux): future leak by @lchenut in #1171
- chore(version): update libp2p.nimble to 1.5.0 by @kaiserd in #1166
Full Changelog: v1.4.0...v1.5.0
v1.4.0
Highlights
What's Changed
- chore(formatting): format the whole codebase using nph 0.5.1 by @diegomrsantos in #1118
- feat(gossipsub): support version 1.2.0 by @diegomrsantos in #1106
- fix(tests): testautorelay by @diegomrsantos in #1121
- fix(tests): flaky testdaemon by @diegomrsantos in #1123
- fix(gossipsub): pubsubpeer is created with wrong gossipsub version by @diegomrsantos in #1116
- fix(CI): generate website job by @diegomrsantos in #1124
- fix(readme): update links by @diegomrsantos in #1126
- chore: add .git-blame-ignore-revs by @diegomrsantos in #1130
- fix(CI): rebuild website job by @diegomrsantos in #1125
- chore: improve max outgoing connections log by @gabrielmer in #1129
- chore(yamux): change closedRemotely from Future into AsyncEvent by @lchenut in #1133
- feat(peerEvents): add a peerEvent Identified by @lchenut in #843
- feat: iDontWant is sent only for gossipsub 1.2 or higher by @diegomrsantos in #1135
- feat: add maxSize to TimedCache by @diegomrsantos in #1132
- chore(version): update libp2p.nimble to 1.4.0 by @kaiserd in #1143
New Contributors
- @gabrielmer made their first contribution in #1129
Full Changelog: v1.3.0...v1.4.0
v1.3.0
Highlights
- Improve memory efficiency of seen cache #1073
- add wildcard address resolver #1099
- Send IDONTWANT before validating message #1103
What's Changed
- Improve memory efficiency of seen cache by @arnetheduck in #1073
- salt
idontwant
by @arnetheduck in #1090 - avoid latency/copy when sending low-priority messages to fast peers by @arnetheduck in #1060
- fix: Asynchronous task [sendMsgSlow()] was cancelled [FutureDefect] by @diegomrsantos in #1094
- cleanups by @arnetheduck in #1092
- fix(CI): rename branch from unstable to master in bumper workflow by @diegomrsantos in #1097
- fix(transport): various tcp transport races by @arnetheduck in #1095
- chore(gossipsub): cleanups by @kaiserd in #1096
- fix(yamux): set EoF when remote peer half closes the stream in yamux by @diegomrsantos in #1086
- chore(README): small PRs by @kaiserd in #1098
- Send IDONTWANT before validating message by @arnetheduck in #1103
- scoring.nim: enhance score trace logs by @Ivansete-status in #1107
- chore(peer-score): enhance score trace logs cont' by @kaiserd in #1108
- fix typos by @omahs in #1110
- fix(multicodec): remove unnecessary "!=" operator by @diegomrsantos in #1112
- Update go-libp2p-daemon build version. by @AlejandroCabeza in #1111
- feat(service): add wildcard address resolver by @diegomrsantos in #1099
- fix(services): setup services before peerinfo is updated by @diegomrsantos in #1120
Full Changelog: v1.2.0...v1.3.0
v1.2.0
Nimble will not be able to resolve this version because libp2p.nimble has not been updated to 1.2.0 . You can still use this version with Nimble if you either use the commit hash instead of the version tag, or update libp2p.nimble . We suggest using the latest release version instead. |
What's Changed
highlights
- gossipsub IDontWant #934
- NAT hole-punching support https://docs.libp2p.io/concepts/nat/hole-punching/
- yamux fully supported
Features
- Allow to override TCP connection timeouts by @Menduist in #903
- basic metrics for rendezvous by @vpavlin in #905
- Add GossipSub ping by @Menduist in #912
- GossipSub: IDontWant by @Menduist in #934
- Bandwidth estimate as a parameter by @diegomrsantos in #941
- IDontWant metrics by @Menduist in #946
- GossipSub Rate Limit by @diegomrsantos in #920
- add hole-punching interop tests by @diegomrsantos in #998
- feat: Yamux timeout by @lchenut in #1029
Changes
-
Autonat and HP changes by @diegomrsantos in #899
-
Consider dns as public address by @diegomrsantos in #913
-
GossipSub: remove peer if we can't establish sendConn by @Menduist in #886
-
Transports: handle TransportAbortedError properly by @Menduist in #916
-
Bumper: fix case where target is up to date by @Menduist in #917
-
TCP transport: handle getObservedAddr errors by @Menduist in #918
-
Fix #916 regression causing accept loop lockup by @Menduist in #919
-
Remove all
Result.get()
s &Option
->Opt
by @Menduist in #902 -
Handling Opt[PeerId] in logging by @diegomrsantos in #923
-
standard nimble env vars by @arnetheduck in #921
-
avoid
ProveField
warning incrypto.init
by @etan-status in #915 -
Gossipsub scoring improvements by @diegomrsantos in #909
-
wstransport.nim: avoid re-raising 'TransportOsError' to avoid stopping
switch.accept
by @Ivansete-status in #929 -
avoid a few zeroMem by @arnetheduck in #932
-
Prevent concurrent IWANT of the same message by @diegomrsantos in #943
-
avoid importing
ecnist
when not needed by @arnetheduck in #942 -
Improve rendezvous advertise by @diegomrsantos in #951
-
Split msgs in iwant response if bigger than limit by @diegomrsantos in #944
-
Add a flag if a peer should be disconnected when above rate limit by @diegomrsantos in #954
-
Rate Limit tests by @diegomrsantos in #953
-
Fix WS transport when the connection aborts by @lchenut in #967
-
Revert "Prevent concurrent IWANT of the same message (#943)" by @diegomrsantos in #977
-
Rate limit fixes by @diegomrsantos in #965
-
fix: doc workflow by @diegomrsantos in #985
-
fix chronos v4 compat by @arnetheduck in #982
-
fix: remove unittest2 range by @diegomrsantos in #986
-
fix(dcutr): make the dcutr client inbound and the server outbound by @diegomrsantos in #983
-
Make ObservedAddrManager injectable by @diegomrsantos in #970
-
fix(multiaddress): add quic-v1 multiaddress support by @diegomrsantos in #988
-
fix(dcutr): handle tcp/p2p addresses by @diegomrsantos in #989
-
fix(yamux): doesn't work in a Relayv2 connection by @diegomrsantos in #979
-
fix(identify): do not add p2p and relayed addrs to observed addr manager by @diegomrsantos in #990
-
fix(dcutr): update the DCUtR initiator transport direction to Inbound by @diegomrsantos in #994
-
fix: move workflows for Nim Devel and legacy i386 from "Daily" by @romanzac in #968
-
fix: remove forgotten "matrix-prep" job by @romanzac in #997
-
remove redundant gcsafe annotations by @arnetheduck in #999
-
include connection info when logging identify message by @etan-status in #991
-
libp2p/multiaddress.nim: use of IpAddress instead of ValidIpAddress by @Ivansete-status in #1001
-
improvement(yamux): make the window size configurable by @lchenut in #987
-
improvement(ci): improve ci daily workflows by @diegomrsantos in #1002
-
fix: use a temp var in withValue by @diegomrsantos in #1010
-
fix(hole-punching-interop): update nim to 1.6.16 by @diegomrsantos in #1012
-
fix: compilation issue when
libp2p_expensive_metrics
is enabled. by @diegomrsantos in #1014 -
fix: more metrics issues when libp2p_expensive_metrics is enabled by @diegomrsantos in #1016
-
tests(flaky): Increase check timeouts by @AlejandroCabeza in #995
-
docs: add comments and improve yamux readability by @lchenut in #1006
-
test(flaky): Log checkExpiring failure by @AlejandroCabeza in #1018
-
improvement: enhanced checkExpiring macro with custom timeout by @diegomrsantos in #1023
-
docs(general): Improve docs by @AlejandroCabeza in #1021
-
feat: message prioritization with immediate peer-published dispatch and queuing for other msgs by @diegomrsantos in #1015
-
fix: allFuturesThrowing compilation issue on daily by @diegomrsantos in #1026
-
Fix empty path crash issue for MultiAddresses
unix
,ip6zone
,dns***
. by @cheatfate in #1025 -
fix: move transport interop tests to nim-libp2p repo by @diegomrsantos in #1031
-
use chronos 4.0.0 by @diegomrsantos in #1030
-
fix typo in
ProtoMessage.toString()
by @etan-status in #1033 -
increase tolerance of
simple heartbeat
test by @etan-status in #1034 -
remove unused
MultiBase.encode(..., Cid)
function by @etan-status in #1036 -
move
allFutureThrowing
helper to tests by @etan-status in #1037 -
use new Chronos
trackCounter
APIs for leaks checks in tests by @etan-status in #1038 -
remove unused
LPStreamError
types by @etan-status in #1048 -
change
SecioError
andNoiseError
to descendants ofLPStreamError
by @etan-status in #1047 -
do not log yamux buffers without sanitization (trace log level) by @etan-status in #1046
-
don't forget closing the stream when final ...
v1.1.0
What's Changed
- Add libp2p label to chronicles log topics by @LNSD in #794
- Add Tor Transport support by @diegomrsantos in #765
- Fix after gcsafe requirements change and other issues on devel by @diegomrsantos in #795
- Explicit dependency to unittest2 and update other packages by @diegomrsantos in #797
- Update README by @Menduist in #798
- Allow passing max message size by @dryajov in #800
- Fix Codecov by @Menduist in #802
- Daily CI: run devel with refc by @Menduist in #799
- Store missing pubkey in PeerStore [KeyBook] by @alrevuelta in #804
- Reuseable install_nim action by @Menduist in #803
- WS leak: handleRequest can hang by @Menduist in #796
- Fix: big messages in pubsub by @Menduist in #808
- Starting switch two times does not crash by @diegomrsantos in #810
- Fix website by @Menduist in #812
- Limit number of streams per protocol per peer by @Menduist in #811
- Allow connect with known PeerId in MA by @Menduist in #817
- Fix devel 32bits by @lchenut in #818
- Fix pinning system on devel by @Menduist in #820
- Autonat service by @diegomrsantos in #814
- Fix yamux simultaneous closing by @Menduist in #823
- Handle dial error correctly by @diegomrsantos in #830
- Add Autonat timeout by @diegomrsantos in #829
- Ignore unknown answers by @diegomrsantos in #831
- More autonat tests by @diegomrsantos in #833
- Remove unnecessary async by @diegomrsantos in #836
- Autonat refactoring by @diegomrsantos in #834
- Avoid closing connection on channel EOF by @etan-status in #816
- Fix PubSub subscribe on connection race condition by @Menduist in #809
- Autorelay service by @lchenut in #819
- Happy new year! by @Menduist in #847
- Fix CI for nim devel & 1.6 by @Menduist in #848
- Add expected connections to connmngr by @Menduist in #845
- Autonat service: handle connections limits by @Menduist in #846
- Connect is able to force a new connection by @diegomrsantos in #849
- Add the peerId to the transport.dial by @lchenut in #842
- Add anyCompleted proc by @diegomrsantos in #853
- Dialing addrs concurrently in autonat by @diegomrsantos in #855
- Autonat dials dns addrs by @diegomrsantos in #856
- Autonat doesn't ask an incoming peer by @diegomrsantos in #857
- Move tests flags from 'nimble test' to 'config.nims' by @Menduist in #852
- TCP Transport: enable NO_DELAY for clients by @Menduist in #822
- Fix testrelay by @lchenut in #860
- Fix backward compatibility of #822 by @Menduist in #862
- Interop tests by @Menduist in #864
- Handle when peers ask each other at the same time by @diegomrsantos in #865
- Fix pubsub CI logs by @Menduist in #861
- reexport public types by @arnetheduck in #872
- Upgrade flow refactoring by @Menduist in #807
- Various gossipsub fixes by @Menduist in #827
- Create an ObservedAddrManager and add an AddressMapper in AutonatService and AutoRelayService by @diegomrsantos in #871
- Add getters for conns and streams by @alrevuelta in #878
- GossipSub: Better IWANT handling by @Menduist in #875
- GossipSub: TimedEntry & shortAgent fixes by @Menduist in #858
- Fix traffic metrics by @Menduist in #879
- Transport hole punching by @diegomrsantos in #873
- Does not allow an empty MA by @diegomrsantos in #877
- Fix interop tests by @diegomrsantos in #882
- Invalid MA is ignored by @diegomrsantos in #881
- Dcutr by @diegomrsantos in #824
- Hole Punching by @diegomrsantos in #806
- Fix network protocol metrics typo by @Menduist in #874
- Fix gossipsub dOut handling by @Menduist in #883
- Handle dns addrs in HP service by @diegomrsantos in #890
- Less warnings by @Menduist in #813
- Improve utility tests by @diegomrsantos in #893
- Fix bumper CI by @Menduist in #894
- Refinement of Hole Punching Service by @diegomrsantos in #892
- Try a direct connection only if there isn't one already by @diegomrsantos in #891
- fix missing import by @diegomrsantos in #897
- Fail only if all addresses in PeerRecord are invalid by @diegomrsantos in #898
- Version 1.1.0 by @Menduist in #904
New Contributors
- @LNSD made their first contribution in #794
- @alrevuelta made their first contribution in #804
Full Changelog: v1.0.0...v1.1.0