fixedpoint.jp




2017/07/11

Linux v4.13でのbsearch(3)の速度改善

bsearch(3)stdlib.hで定義されているC89の標準関数で、与えられた比較関数を用いて整列済みの配列からキーを二分探索します。

Linuxではlib/bsearch.cで実装されていますが、v4.13向けに取り込まれたパッチでこの関数の時間性能が若干改善するようです: commit 166a0f780a8fdb67f232c85e9905ba84f7247da9

ベンチマークによると、ピボット位置の計算で実行されるインストラクション数が単純に減っています。コードを見比べると、*BSDでの実装やGNU libibertyでの実装とほぼ同じになったと言えます。

参考:

#permalink

2017/07/02

なぜGCCのドキュメントはDebianでnon-freeなのか

Debianでは(多くのディストリビューション同様)、GCCのマニュアル等を含んだドキュメントをパッケージでインストールできます。先月リリースされたDebian 9 ("Stretch")でも、gcc-6-docという名前のパッケージになっています(通常はgcc-docが依存するパッケージとして自動的にインストールされるはずです)。

このgcc-6-docパッケージがnon-freeという分類になっていることは意外かもしれません。実際、GCCのドキュメントは(多くのGNUプロジェクトのドキュメント同様)GNU Free Documentation License (GFDL) v1.3でライセンスされています。このバージョンのGFDLは(ある一定の条件を満たせば)、Creative Commons Attribution-ShareAlike (CC-BY-SA) 3.0ライセンスと併用することが許されています。

しかし、以下の理由でGFDLはDebianのsocial contractに合わないという議論がされています:

  1. GFDLはInvariant Sectionsという特別なセクションがドキュメントに含まれることを認めています。Invariant Sectionsは派生するドキュメントでも削除したり変更したりしないことが求められます。こういった要請自体は(他のfreeなライセンスでも見受けられるように)特に問題ないのですが、このInvariant Sectionsに含めてよい内容は著者ないし出版者の個人的な見解に限られる、という付随する制限が問題視されています。
  2. GFDLは、機械が読み取り可能なドキュメントのTransparent copyを必ず配布、もしくは少なくとも1年間インターネット上に公開してアクセス可能にしておかなければならないと要請しています。これは例えばGPLが求めているよりも厳しい要請です。
  3. GFDLの解釈によっては、ドキュメントがDigital Rights Management (DRM)技術で保護されたメディアで配布されることを認められないかもしれません。

結局、2006年にDebianプロジェクトで投票の結果、Invariant Sections等を持つGFDLでライセンスされたドキュメントはnon-freeとすることが決まりました。ちなみに同年、FSFはGFDLを改良するべくGNU Simpler Free Documentation License (GSFDL)という新しいライセンスのドラフトを公開しました。GSFDLにはCover TextsやInvariant Sectionsについての要件が無いためDebianでもfreeなライセンスと見なされるはずですが、その後特に進展はないようです。

#permalink

Archives

2017: Jun / May / Apr / Mar / Feb / Jan

2016: Dec / Nov / Sep / Aug / Jul / Mar / Feb / Jan

2015: Dec / Oct / Sep / Jul / May / Mar / Feb

2014: Dec / Nov / Oct / Aug / Apr / Mar / Feb / Jan

2013: Dec / Nov / Oct / Sep / Aug / Jun / May / Apr / Mar

2012: Nov / Oct / Sep / Jul / Jun / May / Mar / Feb / Jan

2011: Dec / Nov / Oct / Sep / Jul / Jun / Apr / Mar / Feb / Jan

2010: Dec / Nov / Oct / Sep / Aug / Jul / Jun / May / Apr / Mar / Feb / Jan

2009: Dec / Nov / Oct / Sep / Aug / Jul / Jun / May / Apr / Mar / Feb / Jan

2008: Dec / Nov / Oct / Sep / Aug / Jul / Jun / May / Apr / Mar / Feb / Jan

2007: Dec / Nov / Oct / Sep / Aug / Jul / Jun / May / Apr / Mar / Feb / Jan

2006: Dec / Nov / Oct / Sep


© 2006-2017 fixedpoint.jp