Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9293

dotnet/runtimeのディレクトリツリー構造

$
0
0

始めに

2019/11頃、github上にdotnet/runtimeというリポジトリが誕生した。
これは、それまで分かれていたdotnetのランタイムとクラスライブラリを統合する目的で作られたものとなる。

構成されるファイルについては、大半が既存のリポジトリからのインポートによるものとなるが、ここでどのようなディレクトリ構造になっているか、大雑把ではあるが書いておこうと思う。

ディレクトリ構造

おおまかに以下のようになる。

  • docs
    • クラスライブラリやランタイムに関するドキュメントをまとめたディレクトリ
    • ソースそのものに興味がある場合を除いて、まずここから調べるのが良い
    • 特にdocs/design/coreclr/botrはdotnetの動く仕組みについての解説等が載っているため、読み物として読むのも面白い
    • 統合前のリポジトリにあったmdファイル等は大体この下
  • eng
    • dotnet/arcadeのファイル
    • ビルド、パッケージング、インテグレーションのための共通ツール群
    • dotnet/arcadeリポジトリから持ってきているものなので、通常見る必要は無い
  • src
    • ライブラリのソースコード等
    • またここから分かれているが後述
    • 移行に当たり、デフォルトで表示されるブランチはほぼ空となっているが、tagを参照することにより以前の状態を参照することは可能
  • tools-local
    • dotnet/runtimeリポジトリ限定で使うスクリプト群

その他、リポジトリ構成に関するイシューを見ると、aspnet/Extensionsmonoの一部も取り込むようだが、現時点(2019/12)では確認できなかった。

src以下の構造

  • src/coreclr
    • 主にdotnet/coreclrにあったものをインポートしたもの
    • JIT、GC、プラットフォーム別に実装が必要な部分等、ランタイム部分やネイティブ成分が多めだとこのディレクトリ以下にあると思っていい
    • src/librariesに実装が見当たらない場合、大体 src/coreclr/src/System.Private.CoreLib以下にあることが多い
  • src/libraries
    • 主にdotnet/corefxにあったものをインポートしたもの
    • クラスライブラリの内、マネージドで済むものと、bait and switchに必要なリファレンス用ライブラリがここに含まれる
    • netstandard時に参照されるライブラリも大体ここ
  • src/installer
    • 主にcore-setupにあったものをインポートしたもの
    • dotnetコマンドや、publish時に生成される実行可能ファイルのベースとなるcorehostのソースや、一部パッケージングに関わる部分のソースがここに含まれている

終りに

来たるべき.NET 5に向けてリポジトリの統合をしたわけだが、一緒のリポジトリになることでこれまで散在していた記述等もまとめられることになったので、個人的には良かったと思う。特にdocs以下が一つにまとめられたのは良かったと思う。

また、これまでクラスライブラリレベルの修正は複数リポジトリにまたがって行われることが多かった(特にcorefxとcoreclr)が、この統合により、一つのPRに纏められるようになり、追跡もしやすくなる。

リポジトリ統合関連のイシューを見ると、まだ変更点はありそう(aspnet/AspNetCoreがdotnet/aspnetcoreとか、dotnet/sdkとか)だが、一番大きなdotnet/runtimeの統合を完了したので、今後更に何らかの動きがあるかもしれない。


Viewing all articles
Browse latest Browse all 9293

Trending Articles