Skip to content

ext_net: raw TCP/UDP sockets as tape-recorded nondeterministic inputs #414

Description

@InauguralPhysicist

Why. No raw sockets is the biggest "real standalone program" blocker on the roadmap — network protocols are only writable via the canned HTTP extension. The differentiating design: every read/accept/timeout enters through the trace-tape seam, so EigenScript becomes the only language whose stdlib gives network programs record/replay debugging by default — "replay last night's flaky failure exactly" is something Go's net and Python's socket cannot say.

What.

  • src/ext_net.c (opt-in extension like ext_http): net_listen / net_accept / net_send / net_recv / net_dial, with timeouts.
  • Every nondeterministic result is a tape record per the eigenscript-extend-vm nondet-builtin checklist — recording and replay are part of the definition of done, not a follow-up.
  • examples/net_echo.eigs.
  • Forcing function: liferaft nodes talking over real sockets, a seeded kill replayed byte-for-byte (its sim harness is the transcript oracle).
  • This is also the upstream seam EigenOS M13 (e1000 NIC) will eventually target.

Acceptance. Echo example records under EIGS_TRACE and replays without the network present; liferaft real-socket demo green; extension absent from the default 420K build.

Effort: weeks. Source: 2026-07-04 survey (stdlib dimension).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions