PigzのWindows移植:驚くほどスムーズなクロスプラットフォーム移行

2025-06-23
PigzのWindows移植:驚くほどスムーズなクロスプラットフォーム移行

Unixスタイルの圧縮ツールであるPigzのWindowsへの移植は、驚くほど簡単でした。この記事では、pthreadsスレッドライブラリやdirent関数などの違い、Cライブラリ関数名の小さな違いなど、発生した課題について詳しく説明しています。著者は、既存の互換性パッチとPremakeビルドシステムを巧みに活用してこれらの問題を解決しました。Premakeを使用することで、Visual Studioプロジェクトファイルの作成とメンテナンスが簡素化され、最終的にWindows上でPigzを正常に実装することができました。

続きを読む
開発

SumatraPDF開発者、16年ぶりにstd::functionを放棄、独自コールバック関数を作成

2025-06-15
SumatraPDF開発者、16年ぶりにstd::functionを放棄、独自コールバック関数を作成

SumatraPDFの開発者は、16年間のC++開発を経て、デバッグの困難さから`std::function`とラムダ式を放棄しました。コンパイラが自動生成するラムダ関数の名前が分かりにくく、クラッシュレポートの解析が困難だったためです。そこで、よりシンプルで分かりやすいカスタムコールバック関数`Func0`と`Func1`を作成しました。`std::function`ほど機能は豊富ではありませんが、メモリ使用量とコンパイル速度において大きな利点があり、デバッグも容易です。この記事では`Func0`と`Func1`の設計と実装の詳細、そしてこのアプローチがSumatraPDFに適している理由について説明します。

続きを読む