Feb 14, 1-2 PM (15)
Feb 14, 2-3 PM (11)
Feb 14, 3-4 PM (6)
Feb 14, 4-5 PM (18)
Feb 14, 5-6 PM (28)
Feb 14, 6-7 PM (16)
Feb 14, 7-8 PM (5)
Feb 14, 8-9 PM (5)
Feb 14, 9-10 PM (7)
Feb 14, 10-11 PM (23)
Feb 14, 11-12 AM (27)
Feb 15, 12-1 AM (8)
Feb 15, 1-2 AM (4)
Feb 15, 2-3 AM (7)
Feb 15, 3-4 AM (1)
Feb 15, 4-5 AM (1)
Feb 15, 5-6 AM (0)
Feb 15, 6-7 AM (2)
Feb 15, 7-8 AM (1)
Feb 15, 8-9 AM (5)
Feb 15, 9-10 AM (3)
Feb 15, 10-11 AM (2)
Feb 15, 11-12 PM (13)
Feb 15, 12-1 PM (27)
Feb 15, 1-2 PM (6)
Feb 15, 2-3 PM (10)
Feb 15, 3-4 PM (15)
Feb 15, 4-5 PM (6)
Feb 15, 5-6 PM (8)
Feb 15, 6-7 PM (3)
Feb 15, 7-8 PM (20)
Feb 15, 8-9 PM (6)
Feb 15, 9-10 PM (10)
Feb 15, 10-11 PM (21)
Feb 15, 11-12 AM (23)
Feb 16, 12-1 AM (2)
Feb 16, 1-2 AM (8)
Feb 16, 2-3 AM (15)
Feb 16, 3-4 AM (6)
Feb 16, 4-5 AM (1)
Feb 16, 5-6 AM (6)
Feb 16, 6-7 AM (2)
Feb 16, 7-8 AM (14)
Feb 16, 8-9 AM (33)
Feb 16, 9-10 AM (70)
Feb 16, 10-11 AM (52)
Feb 16, 11-12 PM (50)
Feb 16, 12-1 PM (71)
Feb 16, 1-2 PM (91)
Feb 16, 2-3 PM (64)
Feb 16, 3-4 PM (39)
Feb 16, 4-5 PM (30)
Feb 16, 5-6 PM (29)
Feb 16, 6-7 PM (24)
Feb 16, 7-8 PM (23)
Feb 16, 8-9 PM (10)
Feb 16, 9-10 PM (21)
Feb 16, 10-11 PM (33)
Feb 16, 11-12 AM (32)
Feb 17, 12-1 AM (24)
Feb 17, 1-2 AM (3)
Feb 17, 2-3 AM (8)
Feb 17, 3-4 AM (2)
Feb 17, 4-5 AM (4)
Feb 17, 5-6 AM (8)
Feb 17, 6-7 AM (7)
Feb 17, 7-8 AM (18)
Feb 17, 8-9 AM (38)
Feb 17, 9-10 AM (87)
Feb 17, 10-11 AM (36)
Feb 17, 11-12 PM (38)
Feb 17, 12-1 PM (79)
Feb 17, 1-2 PM (39)
Feb 17, 2-3 PM (50)
Feb 17, 3-4 PM (61)
Feb 17, 4-5 PM (43)
Feb 17, 5-6 PM (30)
Feb 17, 6-7 PM (19)
Feb 17, 7-8 PM (13)
Feb 17, 8-9 PM (23)
Feb 17, 9-10 PM (11)
Feb 17, 10-11 PM (59)
Feb 17, 11-12 AM (44)
Feb 18, 12-1 AM (21)
Feb 18, 1-2 AM (13)
Feb 18, 2-3 AM (16)
Feb 18, 3-4 AM (18)
Feb 18, 4-5 AM (16)
Feb 18, 5-6 AM (15)
Feb 18, 6-7 AM (19)
Feb 18, 7-8 AM (53)
Feb 18, 8-9 AM (93)
Feb 18, 9-10 AM (35)
Feb 18, 10-11 AM (36)
Feb 18, 11-12 PM (62)
Feb 18, 12-1 PM (41)
Feb 18, 1-2 PM (118)
Feb 18, 2-3 PM (61)
Feb 18, 3-4 PM (37)
Feb 18, 4-5 PM (16)
Feb 18, 5-6 PM (40)
Feb 18, 6-7 PM (33)
Feb 18, 7-8 PM (37)
Feb 18, 8-9 PM (47)
Feb 18, 9-10 PM (31)
Feb 18, 10-11 PM (44)
Feb 18, 11-12 AM (25)
Feb 19, 12-1 AM (14)
Feb 19, 1-2 AM (6)
Feb 19, 2-3 AM (6)
Feb 19, 3-4 AM (3)
Feb 19, 4-5 AM (3)
Feb 19, 5-6 AM (3)
Feb 19, 6-7 AM (17)
Feb 19, 7-8 AM (83)
Feb 19, 8-9 AM (52)
Feb 19, 9-10 AM (115)
Feb 19, 10-11 AM (99)
Feb 19, 11-12 PM (94)
Feb 19, 12-1 PM (71)
Feb 19, 1-2 PM (50)
Feb 19, 2-3 PM (72)
Feb 19, 3-4 PM (115)
Feb 19, 4-5 PM (36)
Feb 19, 5-6 PM (77)
Feb 19, 6-7 PM (48)
Feb 19, 7-8 PM (11)
Feb 19, 8-9 PM (27)
Feb 19, 9-10 PM (22)
Feb 19, 10-11 PM (37)
Feb 19, 11-12 AM (39)
Feb 20, 12-1 AM (34)
Feb 20, 1-2 AM (18)
Feb 20, 2-3 AM (21)
Feb 20, 3-4 AM (18)
Feb 20, 4-5 AM (19)
Feb 20, 5-6 AM (1)
Feb 20, 6-7 AM (5)
Feb 20, 7-8 AM (26)
Feb 20, 8-9 AM (25)
Feb 20, 9-10 AM (79)
Feb 20, 10-11 AM (91)
Feb 20, 11-12 PM (52)
Feb 20, 12-1 PM (59)
Feb 20, 1-2 PM (48)
Feb 20, 2-3 PM (26)
Feb 20, 3-4 PM (42)
Feb 20, 4-5 PM (42)
Feb 20, 5-6 PM (31)
Feb 20, 6-7 PM (13)
Feb 20, 7-8 PM (16)
Feb 20, 8-9 PM (10)
Feb 20, 9-10 PM (28)
Feb 20, 10-11 PM (43)
Feb 20, 11-12 AM (14)
Feb 21, 12-1 AM (2)
Feb 21, 1-2 AM (0)
Feb 21, 2-3 AM (6)
Feb 21, 3-4 AM (2)
Feb 21, 4-5 AM (3)
Feb 21, 5-6 AM (1)
Feb 21, 6-7 AM (2)
Feb 21, 7-8 AM (9)
Feb 21, 8-9 AM (3)
Feb 21, 9-10 AM (0)
Feb 21, 10-11 AM (1)
Feb 21, 11-12 PM (22)
Feb 21, 12-1 PM (2)
Feb 21, 1-2 PM (0)
4,667 commits this week Feb 14, 2026 - Feb 21, 2026
clean ups and tidies
in this commit we have tidied long standing expected changes:

1.1 Removed dead crates** — `netsim-ffi/`, `netsim-async/`, `wrappers/` deleted. Workspace updated to `["netsim-core", "netsim"]`.

**1.2 Fixed `set_download_bandwidth` bug** — `netsim-core/src/network/mod.rs:119` was calling `set_upload_bandwidth` instead of `set_download_bandwidth`. Fixed.

**1.3 Fixed `Vec<u8>` / `String` `bytes_size`** — Were returning `capacity + 24` (heap overhead). Now return `len()` — the actual bytes that would travel over a network.

**1.4 Stabilised multiplexer timing** — Removed the `dbg!` macro, fixed the unused variable warning, changed the timing test from exact-equality to `>= 5ms` (which is the correct semantic for a wall-clock test).

**1.5 Drop counters** — `SenderBufferFull` is no longer silently swallowed. Each node now has an `Arc<AtomicU64>` drop counter incremented on each dropped packet. `SimSocket::packets_dropped()` exposes it.

2.1 `configure_link` API** — Full stack: `Network::configure_link(a, b)` in core → `Command::ConfigureLink` → `SimContext::configure_link(a, b)` in netsim. Returns a `SimLinkBuilder` / `LinkBuilder` with `.set_latency()`, `.set_bandwidth()`, `.set_packet_loss()`, `.apply()`.

**2.2 `PacketLoss`** — New `PacketLoss` enum (`None` / `Rate(f64)`) in `netsim-core/src/measure/packet_loss.rs`. Wired into `Link` and checked in `Network::send()` before any routing work is done for dropped packets.

**2.3 `SimStats` observability** — `Network::stats()` returns a `NetworkStats` snapshot. `SimContext::stats()` sends a synchronous `Command::Stats` to the multiplexer and returns a `SimStats` with per-node stats (buffer usage, bandwidth, drop count) and per-link stats (latency, bandwidth, packet loss, bytes in transit).

**2.4 Examples rewritten**:
- `netsim/examples/basic.rs` — two nodes, custom latency/bandwidth/packet loss, send and receive
- `netsim/examples/congestion.rs` — narrow link, flood with packets, observe drop counter
- `netsim/examples/monitoring.rs` — multi-node network, print live `SimContext::stats()` snapshot
chore(deps): bump github.com/blinklabs-io/adder from 0.35.0 to 0.37.0
Bumps [github.com/blinklabs-io/adder](https://github.com/blinklabs-io/adder) from 0.35.0 to 0.37.0.
- [Release notes](https://github.com/blinklabs-io/adder/releases)
- [Commits](https://github.com/blinklabs-io/adder/compare/v0.35.0...v0.37.0)

---
updated-dependencies:
- dependency-name: github.com/blinklabs-io/adder
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 (#88)
Bumps [filippo.io/edwards25519](https://github.com/FiloSottile/edwards25519) from 1.1.0 to 1.1.1.
- [Commits](https://github.com/FiloSottile/edwards25519/compare/v1.1.0...v1.1.1)

---
updated-dependencies:
- dependency-name: filippo.io/edwards25519
  dependency-version: 1.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): bump github.com/ethereum/go-ethereum from 1.16.8 to 1.17.0 (#87)
Bumps [github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum) from 1.16.8 to 1.17.0.
- [Release notes](https://github.com/ethereum/go-ethereum/releases)
- [Commits](https://github.com/ethereum/go-ethereum/compare/v1.16.8...v1.17.0)

---
updated-dependencies:
- dependency-name: github.com/ethereum/go-ethereum
  dependency-version: 1.17.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
build(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 (#540)
Bumps [filippo.io/edwards25519](https://github.com/FiloSottile/edwards25519) from 1.1.0 to 1.1.1.
- [Commits](https://github.com/FiloSottile/edwards25519/compare/v1.1.0...v1.1.1)

---
updated-dependencies:
- dependency-name: filippo.io/edwards25519
  dependency-version: 1.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
build(deps): bump github.com/ethereum/go-ethereum from 1.16.8 to 1.17.0 (#539)
Bumps [github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum) from 1.16.8 to 1.17.0.
- [Release notes](https://github.com/ethereum/go-ethereum/releases)
- [Commits](https://github.com/ethereum/go-ethereum/compare/v1.16.8...v1.17.0)

---
updated-dependencies:
- dependency-name: github.com/ethereum/go-ethereum
  dependency-version: 1.17.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
build(deps): bump golang.org/x/net from 0.49.0 to 0.50.0 (#536)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.49.0 to 0.50.0.
- [Commits](https://github.com/golang/net/compare/v0.49.0...v0.50.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.50.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): Bump github.com/ethereum/go-ethereum from 1.16.8 to 1.17.0
Bumps [github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum) from 1.16.8 to 1.17.0.
- [Release notes](https://github.com/ethereum/go-ethereum/releases)
- [Commits](https://github.com/ethereum/go-ethereum/compare/v1.16.8...v1.17.0)

---
updated-dependencies:
- dependency-name: github.com/ethereum/go-ethereum
  dependency-version: 1.17.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): Bump filippo.io/edwards25519 from 1.1.0 to 1.1.1
Bumps [filippo.io/edwards25519](https://github.com/FiloSottile/edwards25519) from 1.1.0 to 1.1.1.
- [Commits](https://github.com/FiloSottile/edwards25519/compare/v1.1.0...v1.1.1)

---
updated-dependencies:
- dependency-name: filippo.io/edwards25519
  dependency-version: 1.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
build(deps): bump docker/build-push-action from 6.18.0 to 6.19.2 (#538)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.18.0 to 6.19.2.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/263435318d21b8e681c14492fe198d362a7d2c83...10e90e3645eae34f1e60eeb005ba3a3d33f178e8)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.19.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
build(deps): bump blinklabs-io/go from 1.25.6-1 to 1.25.7-1 (#537)
Bumps [blinklabs-io/go](https://github.com/blinklabs-io/docker-go) from 1.25.6-1 to 1.25.7-1.
- [Release notes](https://github.com/blinklabs-io/docker-go/releases)
- [Commits](https://github.com/blinklabs-io/docker-go/compare/v1.25.6-1...v1.25.7-1)

---
updated-dependencies:
- dependency-name: blinklabs-io/go
  dependency-version: 1.25.7-1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
build(deps): bump github.com/blinklabs-io/gouroboros (#535)
Bumps [github.com/blinklabs-io/gouroboros](https://github.com/blinklabs-io/gouroboros) from 0.153.1 to 0.157.0.
- [Release notes](https://github.com/blinklabs-io/gouroboros/releases)
- [Commits](https://github.com/blinklabs-io/gouroboros/compare/v0.153.1...v0.157.0)

---
updated-dependencies:
- dependency-name: github.com/blinklabs-io/gouroboros
  dependency-version: 0.157.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): Bump github.com/blinklabs-io/gouroboros (#436)
Bumps [github.com/blinklabs-io/gouroboros](https://github.com/blinklabs-io/gouroboros) from 0.153.1 to 0.157.0.
- [Release notes](https://github.com/blinklabs-io/gouroboros/releases)
- [Commits](https://github.com/blinklabs-io/gouroboros/compare/v0.153.1...v0.157.0)

---
updated-dependencies:
- dependency-name: github.com/blinklabs-io/gouroboros
  dependency-version: 0.157.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): Bump google.golang.org/grpc from 1.78.0 to 1.79.1 (#435)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.78.0 to 1.79.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.78.0...v1.79.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.79.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): Bump docker/build-push-action from 6.18.0 to 6.19.2 (#434)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.18.0 to 6.19.2.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/263435318d21b8e681c14492fe198d362a7d2c83...10e90e3645eae34f1e60eeb005ba3a3d33f178e8)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.19.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): Bump blinklabs-io/go from 1.25.6-1 to 1.25.7-1 (#433)
Bumps [blinklabs-io/go](https://github.com/blinklabs-io/docker-go) from 1.25.6-1 to 1.25.7-1.
- [Release notes](https://github.com/blinklabs-io/docker-go/releases)
- [Commits](https://github.com/blinklabs-io/docker-go/compare/v1.25.6-1...v1.25.7-1)

---
updated-dependencies:
- dependency-name: blinklabs-io/go
  dependency-version: 1.25.7-1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>