Skip to content

Effect, Effect.Console and Test.Assert surfaces over the WASI library #95

Description

@biuld

Part of #76 (Phase 3). Remeasured 2026-10-03 on master at fe40d17: 258 passing files stop at Effect.Console, 43 at Effect, and 4 at Test.Assert — 305 files, by first blocking stage. No passing file blocks on Prelude, because stdlib/lib/Prelude.purs exists and resolves; its missing surface is latent rather than a first blocker, which is why #94 measures 0 by this convention.

We already have the runtime: WASI.Console wraps wasi:cli/stdout/stderr, and WASI-02/03 are Verified with execution tests. What is missing is the module surface the corpus expects.

Do

  • Effect and Effect.Console as a source-level surface over the existing WASI console, exporting log, logShow, warn, error and the Effect type the corpus imports.
  • Keep WASI.Console as the platform layer and have Effect.Console be a thin binding over it, so the WASI capability gates stay in one place.
  • Test.Assert over the same execution model: assert, assertEqual, assertThrows, assertFailure. A failing assertion must be observable as a non-zero exit, so passing assertion files score cleanly.

Note on DEC-11

docs/decision/DEC-11-primitive-ffi-stdlib-wrappers.md fixes the wrapper-versus-raw-import split. Effect.Console is a wrapper; the raw import stays inside WASI.Console. Do not collapse them.

Acceptance

Effect, Effect.Console, and Test.Assert exist, execute under Wasmtime, and the 305 blocked files drop toward zero.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:stdlibThe PureScript standard library under stdlib/libenhancementNew feature or requestgate:L6/M7Blocks runtime and the standard library (D-04 L6, M7)

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions