From d20892f903ba85a7808ad1d64085c88d1fc25c1d Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Mon, 23 Feb 2026 07:16:19 -0500 Subject: [PATCH] docs: update differences scope for jetstream and clustering parity --- differences.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/differences.md b/differences.md index 33a6453..ef0166e 100644 --- a/differences.md +++ b/differences.md @@ -1,7 +1,7 @@ # Go vs .NET NATS Server: Functionality Differences -> Excludes clustering/routes, gateways, leaf nodes, and JetStream. -> Generated 2026-02-22 by comparing `golang/nats-server/server/` against `src/NATS.Server/`. +> Includes clustering/routes, gateways, leaf nodes, and JetStream parity scope. +> Generated 2026-02-23 by comparing `golang/nats-server/server/` against `src/NATS.Server/`. --- @@ -61,9 +61,9 @@ | Type | Go | .NET | Notes | |------|:--:|:----:|-------| | CLIENT | Y | Y | | -| ROUTER | Y | N | Excluded per scope | -| GATEWAY | Y | N | Excluded per scope | -| LEAF | Y | N | Excluded per scope | +| ROUTER | Y | Y | Route handshake + routing primitives implemented | +| GATEWAY | Y | Y | Gateway manager bootstrap implemented | +| LEAF | Y | Y | Leaf node manager bootstrap implemented | | SYSTEM (internal) | Y | N | | | JETSTREAM (internal) | Y | N | | | ACCOUNT (internal) | Y | N | | @@ -127,9 +127,9 @@ Go implements a sophisticated slow consumer detection system: | PING / PONG | Y | Y | | | MSG / HMSG | Y | Y | | | +OK / -ERR | Y | Y | | -| RS+/RS-/RMSG (routes) | Y | N | Excluded per scope | -| A+/A- (accounts) | Y | N | Excluded per scope | -| LS+/LS-/LMSG (leaf) | Y | N | Excluded per scope | +| RS+/RS-/RMSG (routes) | Y | Y | Route protocol primitives implemented | +| A+/A- (accounts) | Y | N | Inter-server account protocol ops still pending | +| LS+/LS-/LMSG (leaf) | Y | Y | Leaf protocol primitives implemented | ### Protocol Parsing Gaps | Feature | Go | .NET | Notes | @@ -191,7 +191,7 @@ Go implements a sophisticated slow consumer detection system: |---------|:--:|:----:|-------| | Per-account subscription limit | Y | Y | `Account.IncrementSubscriptions()` returns false when `MaxSubscriptions` exceeded | | Auto-unsubscribe on max messages | Y | Y | Enforced at delivery; sub removed from trie + client dict when exhausted | -| Subscription routing propagation | Y | N | For clusters | +| Subscription routing propagation | Y | Y | Remote subscription propagation implemented for routes | | Queue weight (`qw`) field | Y | N | For remote queue load balancing | --- @@ -221,7 +221,7 @@ Go implements a sophisticated slow consumer detection system: | Account exports/imports | Y | N | | | Per-account connection limits | Y | Y | `Account.AddClient()` returns false when `MaxConnections` exceeded | | Per-account subscription limits | Y | Y | `Account.IncrementSubscriptions()` enforced in `ProcessSub()` | -| Account JetStream limits | Y | N | Excluded per scope | +| Account JetStream limits | Y | Y | Enforced via account-level stream reservation limits | ### Permissions | Feature | Go | .NET | Notes | @@ -260,7 +260,7 @@ Go implements a sophisticated slow consumer detection system: | Config file parsing | Y | Y | Custom NATS conf lexer/parser ported from Go; supports includes, variables, blocks | | Hot reload (SIGHUP) | Y | Y | Reloads logging, auth, limits, TLS certs on SIGHUP; rejects non-reloadable changes | | Config change detection | Y | Y | SHA256 digest comparison; `InCmdLine` tracks CLI flag precedence | -| ~450 option fields | Y | ~72 | .NET covers core + all single-server options; cluster/JetStream keys silently ignored | +| ~450 option fields | Y | ~72 | .NET covers core + single-server options plus cluster/JetStream parsing and reload boundary validation | ### Missing Options Categories - ~~Logging options~~ — file logging, rotation, syslog, debug/trace, color, timestamps, per-subsystem log control all implemented @@ -288,7 +288,7 @@ Go implements a sophisticated slow consumer detection system: | `/subz` / `/subscriptionsz` | Y | Y | Account filtering, test subject filtering, pagination, and subscription details | | `/accountz` | Y | Stub | Returns empty response | | `/accstatz` | Y | Stub | Returns empty response | -| `/jsz` | Y | Stub | Returns empty response | +| `/jsz` | Y | Y | Returns live JetStream counts/config via `JszHandler` | ### Varz Response | Field Category | Go | .NET | Notes | @@ -302,8 +302,8 @@ Go implements a sophisticated slow consumer detection system: | Connections (current, total) | Y | Y | | | Messages (in/out msgs/bytes) | Y | Y | | | SlowConsumer breakdown | Y | N | Go tracks per connection type | -| Cluster/Gateway/Leaf blocks | Y | N | Excluded per scope | -| JetStream block | Y | N | Excluded per scope | +| Cluster/Gateway/Leaf blocks | Y | Partial | Config projection present; `/gatewayz` and `/leafz` endpoints remain stubs | +| JetStream block | Y | Y | Includes live JetStream config + stream/consumer counts | | TLS cert expiry info | Y | Y | `TlsCertNotAfter` loaded via `X509CertificateLoader` in `/varz` | ### Connz Response