BitTorrent 客户端 Transmission 从 C 切换到 C++

libtransmission 库是 Transmission BitTorrent 客户端的基础,已被翻译成 C++。 Transmission 仍然与用 C 语言编写的用户界面(GTK 界面、守护进程、CLI)的实现绑定,但汇编现在需要 C++ 编译器。 以前,只有基于 Qt 的界面是用 C++ 编写的(macOS 的客户端是用 Objective-C 编写的,Web 界面是用 JavaScript 编写的,其他所有内容都是用 C 编写的)。

移植工作是由项目负责人、基于 Qt 的 Transmission 接口的作者 Charles Kerr 进行的。 将整个项目切换到 C++ 的主要原因是感觉在对 libtransmission 进行更改时,你必须不断地重新发明轮子,尽管标准 C++ 库中已经有针对类似问题的现成解决方案(例如,需要在 std::partial_sort() 和 std::vector()) 存在的情况下创建您自己的函数 tr_quickfindFirstK() 和 tr_ptrArray(),并为 C++ 提供更高级的类型检查工具。

值得注意的是,开发人员并没有给自己定下立即用C++重写整个libtransmission的目标,而是打算逐步实现向C++的过渡,从过渡到使用C++编译器编译项目开始。 在当前形式下,C 编译器不能再用于汇编,因为代码中添加了一些特定于 C++ 的构造,例如“auto”关键字和使用“static_cast”运算符的类型转换。 为了兼容性,计划保留对旧 C 函数的支持,但现在鼓励开发人员使用 std::sort() 代替 qsort(),使用 std::vector 代替 tr_ptrArray。 constexpr 代替 tr_strdup() 和 std::vector 代替 tr_ptrArray。

来源: opennet.ru

添加评论