purefunctor / purefunctor/purescript-iris

[backend] Productise code generation

Open
#342 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0.1.x enhancement
Dominant language
Rust
Stars
102
Forks
11
Avg merge
3h 30m
Merged PRs (30d)
138

Description

Architecture

This is a fresh implementation from origin/main; the earlier NbE and SSA experiments are scoping evidence only.

flowchart LR
    checked[Checked tree] --> nbe[NbE tree]
    nbe --> nbePasses[NbE passes]
    nbePasses --> javascriptTree[JavaScript tree]
    nbePasses --> ssa[SSA tree]
    ssa --> ssaPasses[SSA passes]
    ssaPasses --> javascriptTree
    javascriptTree --> javascript[JavaScript]

The shared JavaScript crate owns a backend-neutral JavaScript tree and renderer. It does not depend on the NbE or SSA IR crates.

Scope

Add CLI/build integration, output layout, linker/module discovery, and source mapping after both paths execute the corpus. Crate-level build queries are prerequisites and are not deferred to this issue. Decide whether both paths remain user-facing or the direct path becomes an oracle/reference backend.

Acceptance criteria

  • A clean checkout can compile and execute a multi-module fixture without test-only host state.
  • Output and foreign-module discovery have a documented layout.
  • Source maps cover representative generated forms.
  • All backend categories pass unfiltered with no pending snapshots.

Dependencies

  • #338
  • #341

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading dependencies #338 and #341, then trace the checked-tree to JavaScript flow and the shared JavaScript crate described in the architecture. Define the CLI/build, output layout, linker and module-discovery boundaries before implementation. Done means a clean checkout runs the multi-module fixture, documents output and foreign-module discovery, produces representative source maps, and passes all backend categories without pending snapshots.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, rust
Domain
build-system, cli, compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.