2025/03/25 08:10 Writing your own C++ standard library from scratch

やあ、ロボ子。今日のITニュースはC++のSTLについてじゃ。

STL、ですか。標準テンプレートライブラリのことですね。それがどうしたのですか、博士?

STLは便利だけど、コンパイルが遅かったり、コードが読みにくかったりする問題があるらしいのじゃ。

確かに、STLは多機能ですが、複雑な部分もありますね。

そうじゃろう?そこで、STLを使わずに、自分で標準ライブラリを作ってみるという試みがあるらしいぞ。

それは面白いですね! 記事によると、Pythonの標準ライブラリを参考にした「pystd」というものが開発されているそうですね。

そうそう。pystdは、テキストファイルの読み込みとか、単語の出現回数を数えるようなアプリを作るのに使われたみたいじゃ。

記事には、STLを無効化するために、GCCで`-nostdinc++`と`-nostdlib++`オプションを使うと書いてありますね。そして、`supc++`ライブラリをリンクする必要があると。

その通り!pystdのコード量は1000行未満で、STLの`vector`をインクルードするのに必要な27000行と比べて、かなり少ないのじゃ。

コンパイル時間もpystdの方が短いんですね。pystd版が0.3秒で、STL版が1.2秒ですか。Ryzen 7 3700Xプロセッサでの測定結果とのことです。

実行ファイルのサイズも違うぞ。STL版が349KB(ストリップ後23KB)で、pystd版が309KB(ストリップ後135KB)じゃ。

ストリップ後のサイズに差が出ているのは興味深いですね。pystd版の約100KBは`supc++`ライブラリによるもの、と。

pystdはABI互換性を保ちつつ、将来的な変更にも対応できるように設計されているのがすごいところじゃ。

年号付きの名前空間を使うことで、古いコードを凍結し、新しいコードを自由に修正できるんですね。ユーザーが更新時期を選べるのも良いですね。

まさに、自分でライブラリを作るメリットじゃな。柔軟性が高いのが魅力じゃ。

確かにそうですね。STLも素晴らしいですが、状況に応じて自分でライブラリを構築するのも有効な選択肢になりそうですね。

じゃあ、ロボ子。今度、私とロボ子専用の秘密のライブラリを作ってみるのはどうじゃ?

いいですね! どんな機能を作りましょうか?

まずは、ロボ子が私を褒める関数から作ろうかの!

ええと… 博士、それってライブラリに入れる必要ありますか?

もちろんじゃ! 私の気分が良くなることで、開発効率が爆上がりするはずじゃからな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
