v0.9.0 (2023-10-31)
- console: remove ticket separator to improve usability (#1754) (f6c6932)
- deps: iroh-sync (261debf)
- do not block on dropping UDP sockets (#1755) (cadb89b)
- do not block on netcheck (#1745) (8e6f5a9)
- do not wait_idle on endpoint close (#1753) (f4735c6), closes #1752
- iroh-net: correctly set the time in which a probe is created (#1722) (d44a7dc)
- iroh: handle rpc args in any position (#1739) (0ca61ad), closes #1639
- net: do not dial regions in parallel (#1736) (c851fe1)
- update ahash (#1708) (118c1d7), closes #1707
- console: blob share ticket (#1746) (fa9fa83)
- iroh: add ticket prefixes and a
doctor ticket-inspect
command (#1711) (2d292e3) - iroh: pass a runtime to Doc client to spawn close task on drop (#1758) (0c145d5)
v0.8.0 (2023-10-23)
iroh::baomap
is nowiroh_bytes::store
.- Doc opening and closing is now more complete
iroh::client::Doc.leave()
will stop listening to changesiroh::client::DocsClient.drop_doc()
will delete a doc
doc export
exports the latest entry at a given key (#1629) (b815576)- actually transfer newer entries for identical keys (#1630) (ef8c64b), closes /github.com/n0-computer/iroh/pull/1630/files#diff-be755583e5a892a8b9a6329e59cfc17e9633447fb7992db74eef670ba1508ccbR378 #1535
- avoid FuturesUnordered (#1647) (5813e09), closes #1646
- iroh-bytes: handle case of 0 sent bytes in send stats (#1625) (550303c)
- iroh-net: bring the doctor command up to date (#1656) (16773b0)
- iroh-net: direct address management (#1653) (90f73f7)
- iroh-net: enforce storing a single derp region per peer (#1607) (bfcce3d), closes #1576
- iroh-net: ping via relay, enable relay ping in derp only mode (#1632) (eec5425), closes #1576
- iroh-net: temp fix for progress bar when downloading a hash seq (#1658) (1b5760d)
- iroh: cleanly exit on Eof (#1695) (196ad7a), closes #1694
- iroh: do not exit on ctrl+c (#1691) (a658d4a), closes #1690
- net: correct packet math for poll_recv (#1698) (c603a9e)
- net: correctly track dial errors (#1706) (92bb5b4), closes #1702
- console: improve the output of
node connections
andnode connection
(#1683) (d0c7cac) - iroh-net: cache for crypto keys (#1677) (f8f08a0)
- iroh-sync: Sync propagation (#1613) (d07e225)
- update dependencies (#1661) (133ca8a), closes #1442
- improve derp connection establishment (#1631) (615381c)
- no more channels for UDP send/recv (#1579) (d6657bd)
v0.7.0 (2023-10-11)
iroh::downloader
: remove hash fromproviders
in two missed cases (#1584) (068f0bd)- actually allow to disable DERP (#1560) (cf9abc0), closes #1558
- avoid blockage in endpoint handling (#1569) (ccdf0c9), closes #1568
- cli,console: default to 'hash' mode for the keys command (#1617) (c3571e1)
- derper: update config to auto generate keys (#1599) (8fb46d4)
- feature flags for iroh-io dependency (#1588) (c1c7d15)
- iroh-net: dialer bug (#1533) (16939c8)
- iroh-net: Do not unwrap sending on response channel (#1529) (974b66e), closes #1528
- iroh-net: reverse ip-port mapping stores only direct addresses in the peermap (#1606) (176d632), closes /datatracker.ietf.org/doc/html/rfc2460#section-6 /datatracker.ietf.org/doc/html/rfc2460#section-7
- mark initially created endpoints inactive (#1539) (9b61ab7), closes #1538
- metrics: labels need to be lowercase underscore format (#1574) (81c6f04)
- net: avoid deadlock on stayin_alive calls (#1537) (34fa30a)
- net: stop deleting endpoints we want to keep (#1567) (96cd106)
doc import
&doc export
commands (#1563) (3c0195c)- add blobs from byte streams (#1550) (e138400)
- iroh-sync: store peers per doc (#1564) (31f08bb)
- iroh: export path and config related tooling (#1570) (c284793)
- iroh: improve displaying content in the repl (#1577) (2fd31b7)
- iroh: show content as hex when utf8 fails (#1596) (872f3b1)
- iroh: use reflink if possible (#1581) (e2ee678)
- leave and drop docs (#1589) (d7a3dd3), closes #1497
- log me (#1561) (7e79227)
- sync: Implement prefix deletion (#1535) (e7fc8be), closes #1504
- Use
BlobFormat
and properly support adding raw blobs (#1518) (f3ed0ba), closes #1496
v0.6.0 (2023-09-25)
v0.6.0 is a big step toward iroh 1.0. It introduces documents, the See our docs pages for a detailed look at the new iroh.
Documents are mutable key-value stores that authors read from, write to, and sync with, subscribing to live updates in real time. For more on documents, see the docmuents, uh, documentation
this release includes iroh console
an admin, debugging, and API exploration tool. It's a REPL that can give live feedback as documents change, users sync, etc. For a detailed rundown on console commands, see the iroh command documentation
- avoid double conns, better state tracking (#1505) (d8cc9df), closes #1491
- Debug for BlobReader (#1479) (c6935bd)
- iroh: do not log full messages for rpc (#1453) (d4983c5)
- print enum variant name for RPC debug logs (#1503) (39a3a33)
- sync: fix
PeerData
encoding, neighbor events, better & predictable tests (#1513) (779e470), closes #1506 #1512
- content hashes iterator for sync store (#1501) (8fe3f71), closes #1496
- Improve content propagation in sync (#1480) (49bde4f)
- iroh-net: implement network monitoring (#1472) (a89078f)
- iroh: downloader (#1420) (c217283), closes #1334 #1362 #1413
- streaming blob reads over RPC (#1477) (6397d46)
- sync: track incoming sync requests, allow subscriptions without sync, close inactive replicas (#1491) (6c07ad3)
v0.6.0-alpha.1 (2023-09-05)
This release includes important fixes and improvements based on recent testing. Document sync is now more correct and faster!
- iroh-net: dns fallback to default config (#1438) (b89f4e1), closes #1436
- iroh: update example to use correct subscription API (#1452) (2522fca), closes #1451
- get list of
ConnectionInfo
s or an individual node'sConnectionInfo
(#1435) (bdf966e) - iroh-sync: validate timestamps and move validation up (#1439) (4e8ff56)
v0.6.0-alpha.0 (2023-08-28)
This is the first alpha preview of iroh v0.6.0. iroh v0.6.0 is targeting a Sept 25th release date.
v0.6.0 is a big step toward iroh 1.0. It introduces documents, the See our docs pages for a detailed look at the new iroh.
Documents are mutable key-value stores that authors read from, write to, and sync with, subscribing to live updates in real time. For more on documents, see the docmuents, uh, documentation
this release includes iroh console
an admin, debugging, and API exploration tool. It's a REPL that can give live feedback as documents change, users sync, etc. For a detailed rundown on console commands, see the iroh command documentation
- ci: correctly detect forks (#1327) (80c54aa)
- enable derp metrics (#1268) (faad31a)
- iroh-bytes: Hash should be serialized as array not bytes (#1410) (116eea9)
- iroh-bytes: range spec seq identification of single blobs (#1421) (c3e701f)
- iroh-net: do not panic on RIB issues (#1313) (8ede947)
- iroh-net: portmapper priority follows described priority strategy (#1324) (f60101a)
- iroh-net: remove
transparent
attribute from mapping debug + log bump (#1339) (2878e79) - iroh-net: split packets on send (#1380) (57a2dee)
- iroh-net: use base32 encoding in the derper config for SecretKey (#1385) (b8a1de8)
- iroh: atomically write keyfile (7752b5a)
- iroh: pass derp map when setting up provider (#1347) (391db92)
- iroh: Try to fix flaky test_token_passthrough test (#1419) (a1d4a4d)
- netcheck: Build test ProbePlan from fake interface data (#1266) (f671aa5), closes #1263
- Remove obsolete and unused module (#1279) (4c67385)
- tests: bring back MagicEndpoint connect-close test (#1282) (4b1f79c), closes #1183
- add iroh-sync and integrate into iroh node (#1333) (3f141be), closes #1216 #1149 #1344 #1356 #1366 #1334 #1354 #1354
- Iroh console (REPL) and restructured CLI (#1356) (b73d950), closes #1216 /github.com/clap-rs/clap/discussions/5070#discussioncomment-6721310
- iroh-bytes: remove unneeded u64 length prefix (#1408) (6d9eac7)
- iroh-gossip (#1149) (7f8463f)
- iroh-net: add
DEV_DERP_ONLY
env variable for testing the derp relay (#1378) (34c97bb) - iroh-net: Nat-PMP probes and mappings (#1283) (5c38730)
- iroh-net: PCP mappings (#1261) (84e2f72)
- methods to check if a hash is complete or partial (#1359) (8006629)
- tests: Improve test_utils to warn about multi-runtime tests (#1280) (62522dc)
v0.5.1 (2023-08-28)
First you have to find one another, before you can interact.
This release is all about finding and connecting with your peers. Before iroh could only connect with peers that were directly reachable, eg. static IP address or local LAN peers. Thanks to NATs and the various complications of IPv4 and IPv6 these are not that many machines in the world, and especially mobile devices are hard to discover.
So we are proud to present the first version of iroh with builtin NAT traversal, hole punching and automatic relaying when everything fails.
If you want to find out the details on how all of this works, header over to the Iroh Hole Punching doc.
Of course that is not all, we have also fixed some pesky bugs, as well added some more features, like generic collections and pluggable authentication.
On a practical side, iroh is now split into multiple crates:
iroh
- The CLI and main library entry point.iroh-bytes
- The core data transfer protocol, including resume.iroh-net
- Nat traversal, peer management and general networking tools.iroh-metrics
- Metrics collection using prometheus
This should open up more possibilities when integrating just the pieces you need from iroh into your app.
[Note: this ended up being 0.5.1 for iroh and iroh-net due to a publish issue with iroh-net@0.5.0]
- add entry in peer_map for unknown ping sender (648210c)
- allow dialing by peer id only (6fb17d1)
- avoid dualstack bindings (34322a6)
- avoid polling future after completion (1f812fd)
- avoid using tokio::block_in_place (db5ad3e)
- better handling of ipv4 only setups (547662b)
- checkout correct branch on netsim comment (#934) (fa2ae68)
- ci: Also run doc tests (#1095) (97d24a6)
- ci: move chuck out of the workspace (0b8d22d)
- cleanup ping sending logic (7896d37)
- clippy: Clean up clippy again (#1061) (4e1ba3e)
- compile on linux (02d8803)
- correct ipv4 and ipv6 port mappings on rebind and endpoints (6a1e405)
- correct ref on checkout (#936) (f58df87)
- cross builds (#1174) (739ee07)
- database: Handle finding beetle data directory (#960) (909ea9a)
- default netsim branch (#1208) (01da61d)
- derper: small derper fixes (#1083) (4fb925a)
- derp: Filter DNS results by address family (#1227) (b6f9df3)
- derp: remove client cleanup bug (f6287c1)
- do not use magicsock for rpc (7717243)
- don't crash the derper (#1110) (e1752bc)
- don't spam re-connect attempts if something goes wrong connecting to a derp server (#1113) (92e8fc3)
- endpoint update scheduler (93ca0e4)
- ensure endpoints are always discovered or timeout (58538e0)
- ensure provider building waits for an endpoint update (c858f36)
- fetch PR details on issue comment (#931) (9272adb)
- format socket addr so that it does not need to be escaped (#1019) (7c87b94)
- handle hairpining timeout properly (#1049) (3867b72)
- handle multiple transmit destinations (050e49f)
- improve binding and rebinding of sockets (156560a)
- improve connectivity (8e2d947)
- improve local addr output and start fixing cli tests (f76d650)
- iroh-net: allow derp only connections to upgrade (25b35a3)
- iroh-net: better logic for initial derp connection (6e6b97e)
- iroh-net: handle non git environments in build (a645cbe)
- iroh-net: no * deps (b1ff368)
- iroh: error when path does not exist (#1146) (c1b674f), closes #1068
- iroh: pass derp-map on get-options (b7fd889)
- make sure to clean up any lingering processes (#1214) (f782fef)
- make sure to use the config by default in iroh doctor report (#1057) (fcc74b8)
- netcheck: Do not read from main Conn sockets (#1017) (5e997a4)
- netcheck: If no STUN sockets supplied allow bind to fail (#1041) (726cace)
- netcheck: Integrate https and icmp probes in probeplan (#1220) (a0ae228)
- netcheck: Make ICMP ping optional (#1137) (ac6bb1a)
- netcheck: reduce locking and improved task tracking (5a733ff)
- netcheck: Stable derp-region sorting (#1250) (899efd2)
- netsim branch CI default (#1205) (a8435eb)
- online stun test (#1065) (bec1bbe)
- process incoming IP packets in a separate task (#1020) (96b882a), closes #1021
- release netsim should ignore some tests (#1096) (9b981c4)
- remove build-data dependency (26e9937), closes #1035
- remove derp route on peergone (cefc8ba)
- send early ping if needed (d0755c7)
- show all listening addrs (b84ed59)
- store udpstate (f0bde56)
- switch to derive_more_preview (a0392c6), closes #1035
- update bao-tree dependency to get rid of ouroboros in dependency tree (#1104) (7840e1c)
- update Cargo.lock after rebase (56fd099)
- update integration tests (#1082) (36cd904)
- use correct endpoint for derp connections (07d919f)
- use listen_addresses instead of local_address (#1044) (c4a1890)
- use simulated time in timer tests (b80ef52)
hp::derp::http::server::Server
& TLS in the derper! (#1077) (6f40e14)- add api to list collections (7b0a7c7)
- add configuration for derp regions (96903e7)
- Add iroh doctor utility (#986) (4fc70f5), closes #1008
- add MagicEndpoint to iroh-net (4597cb3)
- add metrics to the derp server (#1260) (d1b4e18)
- allow node to accept different ALPNs (34e02d0)
- begin impl Server side of derp, starting with the server side of the client connection (#826) (94590ae)
- ci: allow running netsim from another branch (#1186) (0f77e4e)
- ci: record dump uploads (#1101) (e289465)
- conn: improve shutdown of IO loop (dbe0228)
- derp mesh network & derper cli & config cleanup (#1130) (3dca612)
- disable bailing out when temp dir is missing (#1251) (eae79e8)
- docs: Check rustdoc more strictly (#1185) (6a58800)
- impl From for DerpMap (01641a7)
- implement ICMP pings (6c19faa)
- integration metrics and viz dump (#1089) (2f65bc1)
- iroh-net: add more details to tracked endpoints (dfd946e)
- iroh-net: implement
HomeRouter
detection (b14049e) - iroh-net: PCP probe (659a54a), closes #910
- iroh-net: Upnp port mapping (#1117) (701e9b7)
- iroh: pass a callback to subscribe (#1219) (c325603), closes #1139
- logging: Improve logging output of provider and get (#932) (6ae709e)
- metrics collection (#900) (d4a01f7)
- prefer configured port to be used for ipv4 (3a292e5)
- print local endpoints on provide (b3c22bd)
- provider: add 'CollectionAdded' Provider event (#1131) (8b6a5bc)
- reduce dependency bloat for derper (07d7205)
- remove AuthToken (96d9378)
- specify a DERP region for the peer you are trying to connect to (#1222) (456f963)
- unify MSRV to 1.66 (090f6d8)
v0.4.1 (2023-04-03)
- Fix for error when transferring large files (#920)
v0.4.0 (2023-03-29)
- Avoid other output between contents when printing (#786) (9076443)
- ci: format output as table (#791) (7fb888d)
- ci: move from sendme to iroh (#788) (6a5c13e)
- Do not send duplicate NotFound responses (#802) (c0d4984)
- fix netsim bin paths (#881) (3291291)
- Improve listening addr output (#789) (33c0482)
- Output writing (#804) (eb18a89)
- provider: ensure postcard buffers are appropriately sized (c28e0a8)
- update to new default-net (e2584c0)
- use absolute paths everywhere (#836) (b2730ee)
- Add run_ticket to dial all addresses stored in a Ticket (#888) (91c7e2a)
- ci netsim integration tests (#877) (8fe1d81)
- ci: push data to metro (#794) (1a68106)
- cmd to list provide addrs (#859) (2c0663a)
- custom configs for netsim (#862) (1078762)
- get-ticket: Contact provider on all listening addrs (#893) (adbb2bf)
- net: implement local address detection (#822) (9323e10)
- provider: emit events about outgoing transfers (f05ec8c)
- release builds (#863) (7b91c9a)
- Set multiple addrs in the ticket (#820) (9ac4cf6)
- Show more numbers in human readable form (#790) (a0b7c26)
- ticket: Ensure a ticket always has at least one address (#892) (0c17958)
- use chunk groups feature (#798) (d68f05d)
Thus far, Iroh has been built as an implementation of the InterPlanetary File System (IPFS) focused on interoperability with Kubo, the reference implementation of IPFS. Starting with this release Iroh breaks interoperability with Kubo. Iroh will still be an IPFS implementation in a loose sense of the term, but moving forward our exclusive focus is on hitting numbers that make Iroh a reliable piece of technology that just works. Rather than delete the IPFS implementation we’ve built so far we will rename the project to Beetle, and put it into maintenance mode. Our rationale is outlined in this blog post
This is the first release in our ground up rebuild of Iroh. This sets an initial foundation of functionality that we intend to layer onto as we go.
The following crates are removed:
- iroh-api
- iroh-bitswap
- iroh-car
- iroh-embed
- iroh-gateway
- iroh-localops
- iroh-metrics
- iroh-one
- iroh-p2p
- iroh-resolver
- iroh-rpc-client
- iroh-rpc-types
- iroh-share
- iroh-store
- iroh-util
- iroh-unixfs
The following crates still exist, but have completely different APIs:
- iroh