Skip to content

Compare LLVM and Whale results with shared semantic fixtures #773

Description

@LunaStev

Motivation

The CLI currently reserves --whale but reports it as unimplemented. Existing semantic execution fixtures primarily exercise LLVM; there is no shared adapter-based comparison path for coexistence with Whale.

Starting points: src/cli.rs, tests/fixtures/typed_conversions/main.wave, tests/codegen_regressions.rs.

Scope

Design a harness that builds/runs the same source, input and target through backend adapters and compares defined stdout, exit and memory results. An LLVM baseline and explicit missing-backend outcomes can be implemented first; actual two-backend execution depends on a Whale adapter. Keep this scoped to language semantics, separate from ABI fixture design (#368) and the wider migration tracker (#93).

Difficulty: very hard.

Completion criteria

  • Run identical fixtures under the same selected semantic/target contract.
  • Cover conversions, aggregates and control flow.
  • Distinguish unsupported capability, missing backend, compilation failure and semantic mismatch.
  • Retain a minimal reproducible fixture for discrepancies; do not report skipped Whale runs as parity.

Design decision needed: Agree on adapter interfaces, common target/feature coverage and comparison rules before implementation.

Please mention @LunaStev to discuss the design before starting implementation.

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

    cross-platformIssues related to making Wave work seamlessly across multiple operating systems.discussionIssues that require a technical or community discussion.enhancementA request for a new feature or improvement.help wantedThe issue requires extra attention or help from others.needs testingIssues that require additional testing or verification.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions