Implement the generic FSharp2 batch compiler pipeline
@TheAngryByrd đang làm issue này rồi.
Từ ngày 18/7/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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.
- Ngôn ngữ chính
- F#
- Star
- 0
- Fork
- 0
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của TheAngryByrd/fsharp2
-
wayfinder:task
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 62/100
TheAngryByrd/fsharp2#46 ·
-
wayfinder:task
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
TheAngryByrd/fsharp2#44 · 1 bình luận ·
-
wayfinder:task
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
TheAngryByrd/fsharp2#42 ·
-
wayfinder:task
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
TheAngryByrd/fsharp2#41 ·
-
wayfinder:task
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
TheAngryByrd/fsharp2#40 ·