BitTorrent クライアントの送信が C から C++ に切り替わります

Transmission BitTorrent クライアントの基礎である libtransmission ライブラリは C++ に翻訳されています。 送信には、C 言語で記述されたユーザー インターフェイス (GTK インターフェイス、デーモン、CLI) の実装とのバインディングがまだありますが、アセンブリには C++ コンパイラが必要になります。 以前は、Qt ベースのインターフェイスのみが C++ で書かれていました (macOS のクライアントは Objective-C で、Web インターフェイスは JavaScript で、その他はすべて C で書かれていました)。

移植は、プロジェクト リーダーであり Qt ベースの Transmission インターフェイスの作者である Charles Kerr によって実行されました。 プロジェクト全体を C++ に切り替える主な理由は、標準 C++ ライブラリには同様の問題に対する既製の解決策があるにもかかわらず、libtransmission に変更を加えるときに常に車輪の再発明が必要であると感じたことです (たとえば、 std::partial_sort() および std::vector()) の存在下で独自の関数 tr_quickfindFirstK() および tr_ptrArray() を作成し、より高度な型チェック機能を C++ に提供します。

開発者は、すぐに libtransmission 全体を C++ で書き直すという目標を設定していませんが、C++ コンパイラーを使用したプロジェクトのコンパイルへの移行から始めて、C++ への移行を段階的に実装する予定であることに注意してください。 現在の形式では、「auto」キーワードや「static_cast」演算子を使用した型変換などの C++ 固有の構成要素がコードに追加されているため、C コンパイラはアセンブリに使用できなくなりました。 互換性を保つために古い C 関数のサポートは継続される予定ですが、開発者は現在、qsort() の代わりに std::sort() を使用し、tr_ptrArray の代わりに std::vector を使用することが推奨されています。 tr_strdup() の代わりに constexpr、tr_ptrArray の代わりに std::vector を使用します。

出所: オープンネット.ru

コメントを追加します