Facebook aperta sourced Cinder, furca CPython usus est a Instagram

Facebook fontem codicem edidit pro Project Cinder, furca CPython 3.8.5, principale referens exsecutionem linguae programmationis Pythonis. Cinder infrastructura in Facebook productionis ad potentiam Instagram et optimizations includit ut meliorem efficiendi rationem includit.

Codex divulgatus est de facultate praeparata optimizations portandi ad CPython compagem principalem et ad alia opera adiuvanda quae in CPython perficiendi meliori implicantur. Facebook non intendit Cinder sustinere in forma separati principii apertae et signum exhibetur in forma qua in infrastructura societatis adhibetur, sine additamento et documentis. Etiam Cinder ut jocus ad CPython promovere non nituntur - praecipuum propositum evolutionis est desiderium ipsum CPython emendandi.

Cinder codice notatur satis certa et probata in ambitus productionis, sed si problemata identificantur, te ipsum solvendi habebis, cum Facebook non spondeat se respondere errori externo nuntios et petitiones trahere. Eodem tempore, Facebook non excludit cooperationem cum communitate constructivam et paratus est ad ideas tractandas quomodo Cinder vel citius facere vel quomodo accelerare mutationes praeparatorum ad principalem partem CPythonis transferendam.

Praecipuae optimizationes effectae in Cinder:

  • Inline caching of bytecode ("umbra bytecode"). Ratio methodi est cognoscere condiciones ubi opcode typica efficitur, qui optimized potest, et dynamice substituere talem opcode cum velocioribus optionibus specialibus (exempli gratia, saepe functiones appellatas reponens).
  • Studiose coroutine iudicium. Munus enim async vocat quae statim discursum est (expectare non sequitur in insidiis et munus ad reditum enuntiatum priorum pervenit), effectus talium functionum directe substituitur sine coroutine creando vel involutum eventum ansam. In Facebook codice, qui graviter utitur async/exspecta, optimatio consequitur in celeritate circiter 5%.
  • JIT compilatio selectiva in ambitu methodorum et functionum singularium (ratio-at-a-temporis). Enabled per "-X jit" optionis seu PYTHONJIT=1 environment variabilis et sinit te accelerare exsecutionem multorum probatorum per 1.5-4 temporibus. Cum JIT compilatio tantum pertinet ad functiones frequenter exsecutas, non expedit ea uti ad functiones raro adhibitas, quarum compilatio supra caput nonnisi ad exsecutionem programmatis retardare potest.

    Via optio "-X jit-list-file=/path/to/jitlist.txt" vel ambitus variabilis "PYTHONJITLISTFILE=/path/to/jitlist.txt" tabellam denotare potes cum indice functionum pro quibus JIT adhiberi potest (iter format .to.module:funcname vel path.to.module:ClassName.method_name). Elenchus functionum pro quibus JIT efficere potest, in proficuis proventuum determinari potest. In futurum, subsidium dynamicae JIT compilatio expectatur in analysi interna frequentiae functionis vocatorum, sed habita ratione specialium processuum deducendi in Instagram, JIT compilatio apta est etiam pro Facebook in scaena initiali.

    JIT primus Python bytecode vertit in repraesentationem intermediam altam (HIR), quae prope Pythonem bytecode est, sed ordinatur ut actis mandari fundato machinae virtualis pro uno ACERVUS fundato utatur, ac etiam informationibus et additis speciebus utitur. perficientur discrimine singula (ut referat numerationem). HIR tunc ad SSA (signa assignationis unius assignationis) convertitur et per vestigia optimiizationis percurrit qui rationem referentiae eventi computandi et memoriae datae consummationis rationem considerant. Quam ob rem, humili gradu repraesentatio media (LIR) generatur, lingua collecta prope. Post aliud tempus optimizationum LIR-fundatur, instructiones conventus generantur utentes bibliotheca asmjit.

  • Modus stricti pro modulis. Munus officia tria includit: Typus StrictModule. Stabilis analyser qui statuere potest moduli exsecutionem in codice extra illius moduli nullam habere ictum. Modulus oneratus qui determinat modulorum in stricto modo (signum significat "__strictum"), compescit absentiam intersectionum cum aliis modulis, et onerat stricte modulos in sys.modules sicut obiectum StrictModule.
  • Python Static est experimentalis bytecodei compilator qui annotationes typo utitur ad generandum genus specialium bytecode qui velocius JIT compilationem currit. In nonnullis probatis, coniunctio Pythonis Static et JIT demonstrat emendationes perficiendas usque ad 7 tempora ad vexillum CPython comparatum. Multis in adiunctis eventus aestimantur prope MyPyC et Cython compilatores utentes.

Source: opennet.ru

Add a comment