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パターンから構成されてた。高度な実装の方は全く読めなかった。まだまだ全然修行が足りない。

興味を持ったところから読むのが良さそう。

あ、マニュアル(英語)