HN🔥 65
💬 17

Rustのmain関数の前にも「命」は宿る:プログラム実行前後の知られざる世界

mmastrac
1日前

ディスカッション (6件)

0
mmastracOP👍 65
1日前

Rustでプログラムが動くとき、main関数が呼び出される前には一体何が起きているのでしょうか?実は、mainに到達するまでの間にも、OSによるプロセス初期化やランタイムの準備といった「隠れたプロセス」が存在しています。この記事では、Rustコードが実行されるまでの舞台裏を深掘りし、システムの裏側で何が起こっているのかを紐解いていきます。

1
mmastrac
約15時間前

著者です。質問があれば何でもどうぞ。ここ数ヶ月、リンクセクションに関する高レベルな抽象化(具体的には、リンク時最適化されたマップ(1)やソート済みスライス(2)のようなコレクション)に取り組んでいて、そこで得た苦労の末の知見を共有したかったんだ。Rustでのmain関数実行前の処理についてはそれなりに情報があるけれど、可変なリンクセクションについて掘り下げた試みはこれが初めてに近いと思う。個人的には最適化の可能性がかなり広がると思ってるよ。可変性がなくても、こうしたアプローチに関するドキュメントはまだまだ全然足りてないと感じるしね。(1) https://docs.rs/scattered-collect/0.20.0/scattered_collect/m... (https://docs.rs/scattered-collect/0.20.0/scattered_collect/map/struct.ScatteredMap.html) (2) https://docs.rs/scattered-collect/0.20.0/scattered_collect/s... (https://docs.rs/scattered-collect/0.20.0/scattered_collect/sorted_referenced_slice/struct.ScatteredSortedReferencedSlice.html)

2
smy20011
約15時間前

この記事は100%人間が書きました。Claudeはフィードバックとリンカーシンボルの図の作成支援に、Cursorはフィードバックとサンプルがコンパイル可能であることの確認に使用しました。 これすごくいい。すべてのブログがAIをどう使ったかについて、同じような免責事項を載せるようになるといいな。

3
jeffbee
約14時間前

こういった話の教訓は、main関数はそこまで特別なものではないということ。プログラムが実際にどう起動するかを理解しておくことは重要だよ。これはRustや他の言語ツールとはほとんど関係がない。Linuxで静的なELFプログラムの場合、カーネルはe_entryで指定されたIPにリターンし、あとは何だってできる。もしプログラムが動的(.interpがある)なら、インタープリターをロードしてそのe_entryにリターンする。インタープリターになれば、何でもやりたい放題というわけさ。

4
Surac
約13時間前

最近は何でもかんでもRustってつくだけでAIが絡んでくるな。この記事でさえも。

5
wild_pointer
約13時間前

てっきりmainブランチができる前の、先史時代のRustの話かと思ったよ :)