Интиқоли муштарии BitTorrent аз C ба C++ мегузарад

Китобхонаи libtransmission, ки асоси муштарии Transmission BitTorrent мебошад, ба C++ тарҷума шудааст. Интиқол то ҳол бо татбиқи интерфейсҳои корбар (интерфейси GTK, демон, CLI), ки бо забони C навишта шудааст, ҳатмӣ дорад, аммо ҳоло ассамблея компилятори C++-ро талаб мекунад. Пештар, танҳо интерфейси Qt дар C++ навишта шуда буд (муштарӣ барои macOS дар Objective-C, веб-интерфейс дар JavaScript ва ҳама чизи дигар дар C буд).

Интиқол аз ҷониби Чарлз Керр, роҳбари лоиҳа ва муаллифи интерфейси Transmission дар асоси Qt. Сабаби асосии гузариш ба тамоми лоиҳа ба C++ ин эҳсоси он аст, ки ҳангоми ворид кардани тағирот ба libtransmission шумо ҳамеша чархро ихтироъ кунед, гарчанде ки дар китобхонаи стандартии C++ барои ҳалли мушкилоти шабеҳ вуҷуд доранд (масалан, зарур буд. барои эҷод кардани функсияҳои худ tr_quickfindFirstK() ва tr_ptrArray() дар ҳузури std: :partial_sort() ва std::vector()), инчунин таъмин намудани C++ бо воситаҳои санҷиши навъи пешрафта.

Қайд карда мешавад, ки таҳиягарон дар назди худ ҳадафи фавран аз нав навиштани тамоми libtransmission дар C++ намегузоранд, балки ният доранд, ки гузаришро ба C++ тадриҷан амалӣ созанд, аз гузариш ба тартиб додани лоиҳа бо истифода аз компилятори C++ оғоз кунанд. Дар шакли кунунии худ, компилятори C дигар наметавонад барои васлкунӣ истифода шавад, зеро ба код баъзе конструксияҳои хоси C++ илова карда шудаанд, ба монанди калимаи калидии "auto" ва табдилдиҳии навъи истифода аз оператори "static_cast". Ба нақша гирифта шудааст, ки дастгирии функсияҳои кӯҳнаи C барои мутобиқат боқӣ монад, аммо таҳиягарон ҳоло ташвиқ карда мешаванд, ки ба ҷои qsort() std::sort() ва ба ҷои tr_ptrArray std::векторро истифода баранд. constexpr ба ҷои tr_strdup() ва std::вектор ба ҷои tr_ptrArray.

Манбаъ: opennet.ru

Илова Эзоҳ