Facebook ṣe agbejade koodu orisun Cinder eyiti Instagram lo

Ti ṣafihan Facebook laipẹ nipasẹ ifiweranṣẹ kan, dasile koodu orisun ti iṣẹ Cinder, eyiti o jẹ orita ti eka CPython ati imuse itọkasi akọkọ ti ede siseto Python.

Kokoro lo ninu awọn amayederun iṣelọpọ ti Facebook lati ṣe agbara Instagram ati pẹlu awọn iṣapeye lati mu ilọsiwaju ṣiṣẹ. A ti tẹ koodu naa lati jiroro lori iṣeeṣe ti ṣiṣipo awọn imudarasi ti a ti ṣetan silẹ si akọkọ ti CPython ati lati ṣe iranlọwọ awọn iṣẹ ilọsiwaju ilọsiwaju CPython miiran.

Facebook nmẹnuba pe kii yoo ṣe atilẹyin Cinder bi iṣẹ akanṣe orisun ṣiṣi lọtọ ati pe koodu ti gbekalẹ ni irisi eyiti o ti lo ni awọn amayederun ti ile-iṣẹ, laisi awọn iwe afikun.

Cinder ko ni igbega ararẹ bi yiyan si CPython boya - ibi-afẹde idagbasoke akọkọ ni lati mu CPython dara funrararẹ.

Koodu Cinder jẹ igbẹkẹle ti o ni igbẹkẹle ati idanwo ni awọn agbegbe iṣelọpọ, ṣugbọn ti o ba jẹ idanimọ awọn iṣoro, wọn yoo nilo lati yanju funrarawọn, nitori Facebook ko ṣe onigbọwọ pe yoo dahun si awọn ifiranṣẹ aṣiṣe ita ati fa awọn ibeere.

Ni akoko kanna, Facebook ko ṣe iyasọtọ ifowosowopo to wulo pẹlu agbegbe ati pe o ṣetan lati jiroro awọn imọran lori bii o ṣe le ṣe Cinder paapaa iyara tabi bi o ṣe le yara mu gbigbe ti awọn ayipada ti a mura silẹ si ilana akọkọ ti CPython.

Awọn iṣapeye akọkọ ti a ṣe ni Cinder ni:

  • Kaṣe ayelujara ti Bytecode: Koko-ọrọ ti ọna naa ni lati ṣe idanimọ awọn ipo ipaniyan opcode aṣoju ti o le ṣe iṣapeye ni agbara ati rọpo opcode yẹn pẹlu awọn aṣayan amọja yiyara.
  • Igbelewọn igbagbogbo: Fun awọn ipe iṣẹ asynchronous ti o wa ni ilọsiwaju lẹsẹkẹsẹ, abajade ti awọn iṣẹ wọnyẹn ti bori taara laisi ṣiṣẹda coroutine kan ati laisi pipe lilu iṣẹlẹ kan. Ninu koodu ti Facebook lo, eyiti o nlo darale, iṣapeye nyorisi isare ti to 5%.
  • Akopọ yiyan ti JIT ni ipele ti awọn ọna ati awọn iṣẹ kọọkan: o ti muu ṣiṣẹ nipasẹ aṣayan “-X jit” tabi oniyipada ayika PYTHONJIT = 1 ati pe o fun ọ laaye lati yara ọpọlọpọ awọn idanwo ṣiṣe nipasẹ awọn akoko 1,5 si 4.
    Atokọ awọn iṣẹ fun eyiti JIT yẹ ki o muu ṣiṣẹ le ṣe ipinnu da lori awọn abajade ti profaili. Ni ọjọ iwaju, atilẹyin fun ikopọ JIT agbara ti o da lori igbekale ti inu ti igbohunsafẹfẹ ipe iṣẹ ni a nireti, ṣugbọn ni akiyesi awọn pato ti awọn ilana ifilọlẹ lori Instagram, akopọ JIT tun dara fun Facebook ni ipele akọkọ.
    JIT kọkọ yipada nipasẹ bycode koodu Python si aṣoju agbedemeji ipele giga (HIR), eyiti o wa ni isunmọ ni isunmọ si bytecode Python, ṣugbọn a ṣe apẹrẹ lati lo ẹrọ iwoye ti o da lori gbigbasilẹ kuku ju ẹrọ foju kan ti o da ni akopọ, ati tun lo alaye iru ati awọn alaye afikun ti o ni ibatan si iṣẹ. Lẹhinna HIR yipada si fọọmu Iyatọ Iyatọ Kan (SSA) ati awọn ipele ti iṣapeye ti o da lori kika itọkasi ati data lilo iranti. Gẹgẹbi abajade, a ṣe ipilẹṣẹ agbedemeji agbedemeji kekere (LIR), eyiti o sunmọ ede apejọ.
  • Ipo ti o muna fun awọn modulu:Iṣiṣẹ naa ni awọn paati mẹta: Iru StrictModule. Onínọmbà aimi kan ti o lagbara lati pinnu pe ipaniyan ti module ko ni kan koodu ni ita module naa.
  • Python Aimi: jẹ alakojo bytecode alakojo ti o nlo awọn asọye iru lati ṣe ipilẹ bytecode ti o jẹ pato si oriṣi kọọkan ati ṣiṣe iyara nipasẹ akopọ JIT. Ni diẹ ninu awọn idanwo, apapọ Static Python ati JIT ṣe afihan ilọsiwaju ilọsiwaju 7x lori aṣoju CPython. Ni ọpọlọpọ awọn ipo, a ṣe ayẹwo awọn abajade bi ẹnipe a lo awọn akopọ MyPyC ati Cython.

Níkẹyìn ti o ba nifẹ lati ni anfani lati gba koodu Cinder tabi kọ ẹkọ diẹ sii nipa rẹ, o le kan si alagbawo naa awọn alaye ninu ọna asopọ atẹle.


Awọn akoonu ti nkan naa faramọ awọn ilana wa ti awọn ilana olootu. Lati jabo aṣiṣe kan tẹ nibi.

Jẹ akọkọ lati sọ ọrọ

Fi ọrọ rẹ silẹ

Adirẹsi imeeli rẹ yoo ko le ṣe atejade. O beere aaye ti wa ni samisi pẹlu *

*

*

  1. Lodidi fun data naa: Miguel Ángel Gatón
  2. Idi ti data naa: SPAM Iṣakoso, iṣakoso ọrọ asọye.
  3. Ofin: Iyọọda rẹ
  4. Ibaraẹnisọrọ data: Awọn data kii yoo ni ifọrọhan si awọn ẹgbẹ kẹta ayafi nipasẹ ọranyan ofin.
  5. Ibi ipamọ data: Alaye data ti o gbalejo nipasẹ Awọn nẹtiwọọki Occentus (EU)
  6. Awọn ẹtọ: Ni eyikeyi akoko o le ni opin, gba pada ki o paarẹ alaye rẹ.