glibcのソースを入手してみた。
K&Rを読んでるとライブラリの再実装を行っているものが多い。しかし、K&Rでは初歩の初歩の実装を扱っているだけで全く足りないので、本物のソースを入手することにした。
GNU C Library - GNU Project - Free Software Foundation (FSF)
20MB。フロッピーディスク20枚分。でけぇよ・・・。
そんなわけで、恒例のwc。
% find -type f -exec wc -l {} \; | awk '{lines+=$1;print $0}END{print lines}' ...(略 1965 ./FAQ 856 ./README.libm 13377 ./ChangeLog.16 2461839
246万行・・・。め、目が回る。
c,S,hだけに絞ってみる。
% find -name '*.[cSh]' -type f -exec wc -l {} \; | awk '{lines+=$1;print $0}END{print lines}' ...(略 369 ./intl/bindtextdom.c 1306 ./intl/loadmsgcat.c 185 ./intl/finddomain.c 1304827
それでも半分ある。130万行・・・。
glibcの中で一番大きなウェイトを占めているのは入出力関連。ファイルとかネットワークとか。つまり、stdioを読むことは至難の技であると思われる。
とりあえずrandを読んでみた。K&Rな実装と相当高度そうな実装の2パターンから構成されてた。高度な実装の方は全く読めなかった。まだまだ全然修行が足りない。
興味を持ったところから読むのが良さそう。
あ、マニュアル(英語)
- The GNU C Library
- これ全部読んだら死ねる。