TheAngryByrd / TheAngryByrd/fsharp2

Lower core F# expressions, patterns, declarations, and exceptions

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

Nobody has claimed this yet.

wayfinder:task
Dominant language
F#
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Parent: #8
Blocked by: #33 and #34

Outcome

Implement target-agnostic lowering for the core batch-language families.

Acceptance criteria

  • Values, functions, applications, locals, mutation, control flow, pattern matches, decision trees, records, unions, classes, structs, interfaces, object expressions, closures, generic operations, and exceptions lower from typed input.
  • Closure conversion, captured mutation, tail positions, exception regions, and debug anchors are explicit.
  • Lowered output uses stable symbolic operands and identities rather than metadata handles or final layout.
  • Each language family runs through parse, typecheck, lower, emit, load, and execute using small compiler-owned programs.
  • Behavioral comparison permits different valid IL while preserving public API, runtime, exception, and debug semantics.
  • Unsupported families fail before successful publication rather than generating placeholder behavior.

Decision inputs

Issues #5 and #7; ADRs 0006, 0008, 0015, and 0021.

This issue inherits the corpus-neutral acceptance policy in #8.

Contributor guide

No contributing guide indexed for this repository

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 with parent issue #8 and unblockers #33 and #34, then read decision inputs #5 and #7 plus ADRs 0006, 0008, 0015, and 0021. Trace the parse, typecheck, lower, emit, load, and execute stages using compiler-owned programs. Done means the listed language families lower with explicit closure, mutation, exception, tail-position, and debug semantics, while unsupported families fail before publication.

Written by the indexing model from the issue text.

Assessment

Tech stack
fsharp
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.