いけむランド

はてダからやってきました

社会に出る前に知っておくべき cygwin 1.7 のこと


[追記] 公式文書を訳してみました。


cygwin の 1.5 と 1.7 のパッケージの差分より 1.7 から使えるようになった新機能を中心にざっとまとめておく。*1


比較したのは以下の 2 つのパッケージでそれぞれ展開したディレクトリツリーを diff -r で眺めた。

ネームサービス関係

  • /usr/include/arpa/nameser.h
  • /usr/include/arpa/nameser_compat.h
  • /usr/include/resolv.h
    • ns_* の接頭辞を持つ定数、関数などが実装された。

ファイルシステムの拡張属性関係

ネットワーク関係

  • /usr/include/cygwin/if.h
  • /usr/include/cygwin/in.h
  • /usr/include/cygwin/in6.h
  • /usr/include/cygwin/socket.h
  • /usr/include/ifaddrs.h
  • /usr/include/netdb.h
    • addrinfo 関係
  • /usr/include/netinet/in.h

POSIX 関数の実装

クロック関係

  • /usr/include/cygwin/time.h
    • clock_getres と nanosleep の宣言が何故かなくなっている。

clock_setres は日本語情報がないと Twitter でぼやいていたら、id:nattou_curry_2 さんが訳してくれました。ありがとうございます。

環境関係

  • /usr/include/envlock.h
    • env に関係する関数? (使ったことがないのでよくわかりません。)

リエントラント

  • /usr/include/reent.h
    • リエントラント関数がいくつか実装された。

C 標準ヘッダ

  • /usr/include/stdint.h
    • int32_t が long から int になっているけど、バイナリの互換性は大丈夫なのだろうか?
  • /usr/include/stdio.h
    • こちらでもいくつかのリエントラント関数が実装された。
  • /usr/include/stdlib.h
  • /usr/include/string.h

ファイル関係

その他の有用なヘッダ

  • /usr/include/glob.h
    • glob_pattern_p (これも使ったことがないのでよくわかりません。)
  • /usr/include/strings.h
  • /usr/include/sys/termios.h
  • /usr/include/wchar.h
    • 多バイト文字列操作関数 (とそれらのリエントラント関数) がいくつか実装された。
  • /usr/include/wordexp.h

まとめ

Windows 2000 以降の環境のみを考慮するように設計され直されたようで、ネットワーク周りの実装がかなり強化された。
特に addrinfo は最近流行のネットワークアプリケーションやライブラリでよく使われており、cygwin 自体でこれを実装するようになったことでより多くの Linux 向けソフトウェアの移植が期待できるだろう。

*1:タイトルはホッテントリメーカーより