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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions