Facebook ityhilwe kutshanje ngeposi, ikhupha ikhowudi yemvelaphi yeprojekthi yeCinder, oko ikukuthi ifolokhwe yesebe le-CPython kunye nolwenziwo oluphambili lolwimi lwePython yolwimi.
Isilonda isetyenziswe kwiziseko zophuhliso ze-Facebook ukwenza amandla kwi-Instagram kwaye kubandakanya ukwandiswa ukuphucula ukusebenza. Ikhowudi ipapashiwe ukuxoxa ngamathuba okufuduka okwenziweyo okulungiselelwe kwindawo ephambili ye-CPython kunye nokunceda ezinye iiprojekthi zokuphucula ukusebenza kweCPython.
I-Facebook ikhankanya ukuba ayizukuxhasa iCinder njengeprojekthi eyahlukileyo evulelekileyo kwaye ikhowudi iboniswe ngohlobo apho isetyenziswa khona kwinkampani, ngaphandle kwamaxwebhu ongezelelweyo.
I-Cinder ayizikhuthazi njengenye ye-CPython nokuba yeyiphi-eyona njongo iphambili yokuphucula kukuphucula i-CPython uqobo.
Ikhowudi yeCinders ithathwa njengenokuthenjwa ngokufanelekileyo kwaye kuvavanywa kwindawo yemveliso, kodwa ukuba iingxaki zichongiwe, kuya kufuneka zisonjululwe zodwa, kuba i-Facebook ayiqinisekisi ukuba iyakuphendula imiyalezo yemposiso yangaphandle kwaye utsale izicelo.
Kwangelo xesha, u-Facebook akayikhupheli ngaphandle intsebenziswano eyakhayo noluntu kwaye ukulungele ukuxoxa ngezimvo zokwenza iCinder ngokukhawuleza nangakumbi okanye ukukhawulezisa ukuhanjiswa kotshintsho olulungiselelwe kwisakhelo esiphambili se-CPython.
Olona manyano luphambili luphunyezwe kwiCinder zezi:
- I-Bytecode caching ekwi-Intanethi: Umongo wendlela kukuchonga iimeko eziqhelekileyo zokuphunyezwa kwe-opcode ezinokuthi zenziwe zilungelelaniswe ngamandla kwaye zitshintshe i-opcode ngokhetho olukhethekileyo olukhawulezayo.
- Uvavanyo lwarhoqo: Kwiifowuni zomsebenzi we-asynchronous ezenziwa ngokukhawuleza, isiphumo saloo misebenzi sigqitywe ngokuthe ngqo ngaphandle kokwenza i-coroutine kwaye ngaphandle kokubhengeza umsitho womsitho. Kwikhowudi esetyenziswa nguFacebook, ayisebenzisa kakhulu, ukwenziwa ngcono kukhokelela ekukhawuleziseni malunga neepesenti ezintlanu.
- Ukudityaniswa okukhethiweyo kweJIT kwinqanaba leendlela ezizodwa kunye nemisebenzi: inikwe amandla kukhetho lwe "-X jit" okanye umahluko wendalo PYTHONJIT = 1 kwaye ikuvumela ukuba ukhawulezise iimvavanyo ezininzi zokwenza umsebenzi ngo-1,5 ukuya kumaxesha ama-4.
Uluhlu lwemisebenzi ekufuneka yenziwe i-JIT inokumiselwa ngokusekwe kwiziphumo zeprofayili. Kwixesha elizayo, inkxaso yokuhlanganiswa okunamandla kweJIT esekwe kuhlalutyo lwangaphakathi lomsebenzi wefowuni kulindeleke, kodwa kuthathelwa ingqalelo iinkqubo ezithile zokuphehlelelwa kwi-Instagram, ukuhlanganiswa kweJIT kufanelekile nakuFacebook kwinqanaba lokuqala.
I-JIT kuqala iguqula i-bytecode yePython iye kummeli okwinqanaba eliphakathi (HIR), esondele ngokufanelekileyo kwi-bytecode yePython, kodwa yenzelwe ukusebenzisa umatshini osekwe kwirekhodi endaweni yomatshini osekwe ngokuqinileyo, kwaye ikwasebenzisa uhlobo lolwazi kunye neenkcukacha ezongezelelweyo ezichaphazelekayo ekusebenzeni. I-HIR emva koko iguqulelwa kwifom ye-Static single Allocation (SSA) kwaye ihamba ngamanqanaba okwenziwa ngokusekwe kubalo lwereferensi kunye nedatha yokusebenzisa imemori. Ngenxa yoko, ukwenziwa kwenqanaba eliphakathi eliphakathi (i-LIR) elivelisiweyo, elikufutshane nolwimi lwendibano. - Imo engqongqo yeemodyuli:Ukusebenza kunamacandelo amathathu: Uhlobo lweStrictModule. Isicazululi esimileyo esikwaziyo ukumisela ukuba ukwenziwa kwemodyuli akuchaphazeli ikhowudi engaphandle kwale modyuli.
- IPatic engatshintshiyo: ngumlingisi we-bytecode wokulinga osebenzisa izichazi zohlobo ukuvelisa i-bytecode ekhethekileyo kuhlobo ngalunye kwaye ibaleke ngokukhawuleza ngokudityaniswa kweJIT. Kwezinye iimvavanyo, ukudityaniswa kweStatic Python kunye neJIT kubonisa ukuya kuthi ga ekuphuculweni kokusebenza kwe-7x ngaphezulu kweCPython eqhelekileyo. Kwiimeko ezininzi, iziphumo ziyavavanywa ngokungathi kusetyenziswa iikhomputha ze-MyPyC kunye neCython.
Gqibela ukuba unomdla wokukwazi ukufumana ikhowudi yeCinder okanye ufunde okungakumbi ngayo, unokuqhagamshelana ne iinkcukacha kwikhonkco elilandelayo.