Implement the generic FSharp2 batch compiler pipeline
@TheAngryByrd がすでに取り組んでいます。
2026年7月18日 から。
評価
この issue はまだ評価されていません。
説明
Outcome
Implement the independently authored FSharp2 batch compiler pipeline behind the compatible command-line and MSBuild surfaces. The existing issue #8 prototype is prior evidence and reusable scaffolding, not the production compiler architecture or language boundary.
The measured prototype result in .agents/docs/research/minimum-fsharp2-prototype-result.md answered the original tracer question negatively: it validated the NativeAOT host, MSBuild selection, retained-service seam, synthetic symbolic linker, transactional publication, and synthetic emitted-output gate, but it did not compile the declared real-world corpus. Later construct-by-construct commits do not change that boundary.
Corpus-neutral acceptance policy
- Production code must not recognize IcedTasks paths, namespaces, types, members, target frameworks, source order, or expected failure locations.
- Primary tests are organized by F# language construct and observable compiler behavior.
- Every supported construct has small positive and negative Compatibility Oracle cases.
- Reaching the next file or error in an external corpus is progress evidence, never ticket completion.
- Unsupported experimental inputs fail explicitly; the official compiler and FSharp.Compiler.Service never provide production fallback.
- External projects are end-to-end integration corpora. They may reveal missing generic behavior but may not define compiler module interfaces.
- Tests cross durable compiler-module interfaces and do not expose internals only to make a corpus-shaped test pass.
Work breakdown
Foundation
- #25 — compiler request, result, and phase contracts
- #26 — differential harness and generic conformance manifest
- #27 — diagnostic policy and compatibility
Frontend and semantic inputs
- #28 — source text, lexing, directives, and layout
- #29 — immutable syntax trees and parser recovery
- #30 — metadata-only target-reference and F# signature import
Semantics and reusable typed state
- #31 — symbols, scopes, signatures, and name resolution
- #32 — core inference, unification, and generalization
- #33 — F# types, members, overloads, and constraints
- #34 — typed checkpoints and semantic fingerprints
Lowering and emission
- #35 — core language lowering
- #36 — computation expressions, sequences, quotations, and resumable code
- #37 — compatible optimization, debug, and tail-call modes
- #38 — generic ECMA-335 metadata and IL emission
- #39 — F# metadata and companion build/debug artifacts
Integration and evidence
- #40 — batch compiler, MSBuild, and transactional artifact contract
- #41 — declaration-granular incremental compilation and reusable state
- #42 — first Experimental Vertical Milestone
GitHub sub-issue relationships are canonical. The dependency lines in each child define the intended implementation waves.
Definition of done
- Every child issue is complete against compiler-owned conformance programs and its declared Compatibility Oracle evidence.
- Standalone, persistent-service, command-line, and MSBuild paths share the same compiler semantics and produce equivalent observable results.
- Supported inputs traverse parsing, resolution, typing, lowering, optimization, emission, publication, loading, and execution without fallback.
- The first real-world milestone passes only after generic subsystem gates pass.
- Governed performance infrastructure remains #24; it admits timings only after compiler correctness.
Outside this workstream
FSharp.Compiler.Service API compatibility, F# Interactive and script execution, the Provider Broker implementation, full cross-platform release packaging, secure hosted evidence storage, and the remaining final Compatibility Gate expansion remain siblings or future children of #1.
- 主要言語
- F#
- スター
- 0
- フォーク
- 0
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
TheAngryByrd/fsharp2 のほかの issue
-
wayfinder:task
難易度 4/5 3〜5日 初心者へのやさしさ 62/100
TheAngryByrd/fsharp2#46 ·
-
wayfinder:task
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
TheAngryByrd/fsharp2#44 · コメント 1 件 ·
-
wayfinder:task
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
TheAngryByrd/fsharp2#42 ·
-
wayfinder:task
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
TheAngryByrd/fsharp2#41 ·
-
wayfinder:task
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
TheAngryByrd/fsharp2#40 ·