文件历史

2 次代码提交

作者 SHA1 备注 提交日期
Asim Aslam db4401d306 client/service: rename the in-process fast-path to Local + service knob (#4855)
goreleaser / goreleaser (push) Has been cancelled
Renames the fast-path option to the cleaner Local across the stack (it's
still unreleased) and adds a service-level knob:

- client.Local() (was client.LocalDispatch) enables the in-process
  fast-path; Options.Local is the field. The internal/network package it
  dispatches through is the "local network".
- service.Local() (aliased micro.Local()) turns it on for a whole
  service's client in one place — every co-located unary call (agent tool
  calls, flow dispatch, gateway -> service) takes the fast-path, no
  per-call wiring. Same o.Client.Init(...) pattern the Broker option uses.

Off by default; a no-op for distributed deployments since the fast-path
falls back to the network for anything not co-located.


Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-15 17:02:57 +01:00
Asim Aslam 08a3edcff4 client/server: in-process dispatch fast-path (opt-in) (#4854)
When caller and callee run in the same process, a unary Call pays the
full network tax — pool.Get, dial, codec-over-socket, and the transport
pump — even though the handler table is right there. This adds an opt-in
fast-path that dispatches directly.

- internal/network: a neutral registry (transport.Message in/out) so
  client and server wire up without importing each other. A running server
  registers a dispatcher under its name on Start, deregisters on Stop.
- server: localDispatch serves a request in-process through the same
  router (identical wrappers/codecs/error mapping) over an in-memory
  socket — no dial, no pipe, no gob.
- client: LocalDispatch() opt-in. In call(), a unary request whose body and
  response are raw frames (codec/bytes.Frame — the agent/MCP/flow shape)
  dispatches locally; everything else falls back to the network path
  unchanged.

Correctness test proves the fast-path returns byte-identical replies to
the network path; benchmark shows ~545µs -> ~28µs (~20x) and ~3.6x fewer
allocations. Off by default. Covers #4817 (path b); the zero-copy typed
path remains a follow-up.


Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-15 16:41:10 +01:00