*

Bashシェルが使えるようになったWindows 10

   

toolchainの議論を含めて興味深い話題なので少しコメント。

Cygwin開発者の受け止め方としては、頓挫した以前のSFU (Service for UNIX)と同じ話という意見が主流な様だが、少し事情が異なるは、やはりUbuntu 14.04のx86_64バイナリをそのままapt-get等で導入できる点が大きい。

SFUとcygwin/mingwについて述べるのとは多少次元の異なることではあるが、Linuxとは違うバイナリを用意しなくてはいけないことがあり、これがインストーラの件を含めて、少なからず導入障壁になっていた。また、NTFSとWindowsのAPIが、Linux的なPOSIX仕様と動作やデフォルト状態に違いがあるということも大きな問題の一つで、これはこれでかなり根が深い。加えて、VirtualBox や VMware Player などの方が 主ストレージの VM を 複製・管理すれば良いう簡便さで、開発環境としては現時点で大きく有利だ。

それで、今回のトピックをポストした趣旨となるが、Ubuntu Bashに於けるfork()関数の動きに着目している。

過去WindowsではLinux的なPOSIX仕様のfork()を実現することが中々できなかった。 改善はされてきているものの、これはWindows 8に至っても細かい点が異なるのは同様で、今回のUbuntu BashがWindows10からいうことになっているのも、真偽は定かではないが、それが背景の一つにあるのではという話しが出ていた。

これまでWindowsでのfork()の動きで問題になっている点は、mingwなどの実装に見られるPIPEやファイルディスクリプタ(Windowsではファイルハンドル)の動作の差異なのだが、Linuxで普通に動くオープンソースのツールの一部が、Windowsではそのまま動かないために修正が必要になる原因となっている。ただ、Windows10になれば、この問題が解決ということにはなっていないのが実情なので(この辺りのWindows API仕様が明確でないという事情があり、CygwinはUndocumentな機能を使って実装しているという話しもあるようだ)、今回のUbuntu Bashの実装がまだまだ不明なので、より使える情報が出てくることが期待されている。

 - 未分類