ట్రాన్స్మిషన్ బిట్టొరెంట్ క్లయింట్కు ఆధారమైన లిబ్ట్రాన్స్మిషన్ లైబ్రరీ C++లోకి అనువదించబడింది. C భాషలో వ్రాయబడిన వినియోగదారు ఇంటర్ఫేస్ల (GTK ఇంటర్ఫేస్, డెమోన్, CLI) అమలుతో ట్రాన్స్మిషన్ ఇప్పటికీ బైండింగ్లను కలిగి ఉంది, అయితే అసెంబ్లీకి ఇప్పుడు C++ కంపైలర్ అవసరం. ఇంతకుముందు, Qt-ఆధారిత ఇంటర్ఫేస్ మాత్రమే C++లో వ్రాయబడింది (macOS కోసం క్లయింట్ ఆబ్జెక్టివ్-Cలో ఉంది, వెబ్ ఇంటర్ఫేస్ జావాస్క్రిప్ట్లో ఉంది మరియు మిగతావన్నీ Cలో ఉన్నాయి).
Qt ఆధారంగా ట్రాన్స్మిషన్ ఇంటర్ఫేస్ యొక్క ప్రాజెక్ట్ లీడర్ మరియు రచయిత చార్లెస్ కెర్ ద్వారా పోర్టింగ్ జరిగింది. స్టాండర్డ్ C++ లైబ్రరీలో ఇలాంటి సమస్యలకు రెడీమేడ్ సొల్యూషన్స్ ఉన్నప్పటికీ, లిబ్ట్రాన్స్మిషన్లో మార్పులు చేస్తున్నప్పుడు మీరు నిరంతరం చక్రాన్ని తిరిగి ఆవిష్కరించవలసి ఉంటుందనే భావన మొత్తం ప్రాజెక్ట్ను C++కి మార్చడానికి ప్రధాన కారణం (ఉదాహరణకు, ఇది అవసరం. std: :partial_sort() మరియు std::vector() సమక్షంలో మీ స్వంత ఫంక్షన్లను tr_quickfindFirstK() మరియు tr_ptrArray() సృష్టించడానికి, అలాగే C++ని మరింత అధునాతన రకం తనిఖీ సౌకర్యాలతో అందించడం.
డెవలపర్లు మొత్తం లిబ్ట్రాన్స్మిషన్ను తక్షణమే C++లో తిరిగి వ్రాయాలనే లక్ష్యాన్ని నిర్దేశించుకోలేదు, అయితే C++ కంపైలర్ని ఉపయోగించి ప్రాజెక్ట్ను కంపైల్ చేయడానికి పరివర్తనతో ప్రారంభించి, క్రమంగా C++కి పరివర్తనను అమలు చేయాలని భావిస్తారు. "స్వయంచాలక" కీవర్డ్ మరియు "static_cast" ఆపరేటర్ని ఉపయోగించి టైప్ మార్పిడులు వంటి కొన్ని C++-నిర్దిష్ట నిర్మాణాలు కోడ్కు జోడించబడినందున, దాని ప్రస్తుత రూపంలో, C కంపైలర్ ఇకపై అసెంబ్లీ కోసం ఉపయోగించబడదు. పాత C ఫంక్షన్లకు మద్దతు అనుకూలత కోసం అలాగే ఉండేలా ప్లాన్ చేయబడింది, అయితే డెవలపర్లు ఇప్పుడు qsort()కి బదులుగా std::sort()ని మరియు tr_ptrArrayకి బదులుగా std::vectorని ఉపయోగించమని ప్రోత్సహించబడ్డారు. tr_strdup()కి బదులుగా constexpr మరియు tr_ptrArrayకి బదులుగా std:: వెక్టర్.
మూలం: opennet.ru