You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
API vocabulary: MethodInfo spelled out, sessionId everywhere, legacy registration obsolete
"method" is the JSON-RPC callable named on the wire and a MethodInfo is
always spelled MethodInfo: RpcMethod.FromMethod is FromMethodInfo and
RpcInterfaceMethod.Method is MethodInfo. The session parameter is
spelled sessionId on every overload; BindService, Handler.RegisterInstance
and the JsonRpcService(string) constructor used sessionID. Handler gets a
class summary and SessionSelector's summary says the selection is
independent of ASP.NET Core session state.
Handler.RegisterFuction and UnRegisterFunction keep their names and
behaviour and are obsolete; the message says that BindMethod throws on a
duplicate name where RegisterFuction replaces it. Tests that exercise the
legacy pair suppress CS0618 locally.
The README defines "method" at the top of Defining methods and "session"
at the top of Sessions and context; the package README gets the method
sentence; CHANGELOG and the upgrade guide record the renames.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,6 +29,9 @@ behaviour: a breaking change to either means a new major version.
29
29
30
30
### Changed
31
31
32
+
-`RpcMethod.FromMethod` is `RpcMethod.FromMethodInfo`; `RpcInterfaceMethod.Method` is `RpcInterfaceMethod.MethodInfo`. A `MethodInfo` is always spelled out; "method" means the JSON-RPC method.
33
+
- The session parameter is spelled `sessionId` on every overload (`BindService`, `Handler.RegisterInstance` and the `JsonRpcService` constructor used `sessionID`).
34
+
-`Handler.RegisterFuction` and `UnRegisterFunction` are obsolete; use `ServiceBinder.BindMethod` and `UnbindMethod` (which throw on a duplicate name instead of replacing it).
32
35
- The core no longer depends on Json.NET.
33
36
-`ProcessAsync` no longer serializes the process on one lock per document. Each thread now caches one async scratch (input copy, reader, staged output) in front of the shared pool, which handles only misses and overflow. At 16 workers, the inline rows went from about 4 M to 22.2 M to 32.1 M RPC/s across the registrations, and the row with a real suspension from 3.9 M to 8.96 M (one run per row, 2026-09-25). The library retains one scratch per thread that has run `ProcessAsync` plus 64 shared, with buffers at most 64 KiB each.
34
37
- The request path looks sessions up without creating them. A request for a session id that was never registered answers `-32601` for every call and leaves the registry untouched; sessions are created by binding and by the per-session `Config` setters. Registration adds the session before publishing the registry version, so a thread that misses its snapshot consults the master registry and cannot answer `-32601` for a session that exists.
0 commit comments