Reject framework-dependent apphosts in the NativeAOT host validator

オープン
#46 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
62/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
fsharp
領域
testing, tooling

調査の方向性

Start with tools/FSharp2.Conformance/NativeAotHostValidator.cs and read ADRs 0002, 0010, and 0011, along with PR #45. Review the “Conformance Fallback fails when the sentinel runs” test and its test apphost. Done means renamed framework-dependent apphosts and single-file bundles are rejected on Windows, Linux, and macOS, while real NativeAOT hosts still pass and negative tests cover both forms.

索引モデルが issue の本文から書いたものです。

説明

wayfinder:task

Parent: #8

Outcome

Make NativeAotHostValidator reject a framework-dependent apphost and a single-file bundle. Today it can accept either one as a NativeAOT host.

Current state

NativeAotHostValidator.Validate (tools/FSharp2.Conformance/NativeAotHostValidator.cs) checks only two things: the image format (PE, ELF, or Mach-O), and 3 sidecar files named from the host stem.

  • A framework-dependent apphost is a native image with no CLR header. The image stores the name of its managed .dll. If the file name is changed, the stem check finds no sidecar, and the validator accepts the file.
  • A single-file bundle has the managed assemblies appended to the apphost. It also passes the check.
  • The test Conformance Fallback fails when the sentinel runs depends on this gap. It copies the test apphost to fallback-sentinel-<guid> and asserts that the validator accepts it.

This gap exists for PE on master. PR #45 extends the same check to ELF and Mach-O.

Acceptance criteria

  • The validator rejects a renamed framework-dependent apphost on Windows, Linux, and macOS.
  • The validator rejects a single-file bundle.
  • A real NativeAOT host still passes on each platform.
  • The fallback sentinel test uses a native test executable, or an explicit test-only switch. It does not rely on the gap.
  • Negative tests cover each rejected form.

Decision inputs

ADRs 0002, 0010, and 0011. The gap was found in the review of PR #45.

主要言語
F#
スター
0
フォーク
0
PR マージ指標
30日以内にマージされた PR はありません

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

TheAngryByrd/fsharp2 のほかの issue

TheAngryByrd/fsharp2 の issue をすべて見る

似ている issue

Testing & QA の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。