Gjuha Nim introdukton YRC — njĂ« mbledhĂ«s tĂ« cikleve referuese qĂ« Ă«shtĂ« i sigurt pĂ«r shumicĂ«n e proceseve

Andreas Rumpf (Araq), autori i gjuhĂ«s programore Nim, njoftoi njĂ« algoritĂ«m tĂ« ri pĂ«r menaxhimin e memories YRC (artikulohet "Ürk"), i cili zgjidh njĂ« nga problemet kyçe tĂ« mekanizmave ekzistues nĂ« Nim: paaftĂ«sia pĂ«r tĂ« trajtuar saktĂ«sisht lidhjet ciklike qĂ« kalojnĂ« kufijtĂ« e rrjedhave.

Para shfaqjes së YRC në algoritmet e propozuara për menaxhimin e memories në Nim, kishte këto kufizime: ARC - nuk mbështeste as shumëprezencën dhe as trajtimin e cikleve; Atomic ARC - ishte i sigurt për rrjedhat, por nuk trajtonte lidhjet ciklike; ORC - trajtonte lidhjet ciklike, por mund te bënte këtë saktësisht vetëm brenda një rrjedhe (kur përdoren lidhje të përbashkëta midis rrjedhave, ndodhnin humbje memoriesh).

YRC i propozuar kombinon sigurinë për rrjedhat dhe trajtimin e cikleve midis rrjedhave, përmes përdorimit të një qasjeje të kombinuar: për të dhënat e pa ciklike përdoret llogaritja atomike e lidhjeve, ndërsa për ato ciklike - barrierën e shkruar (write barrier), e cila aktivizohet vetëm gjatë caktimit të treguesve. Në implementimin e propozuar: kolektori aktivizohet sipas nevojës reale (pa ndalime 'stop-the-world'); objektet rrjedhëse RC janë të përcaktuara qartë dhe bashkohen një herë (nuk kërkohet skanimi i stekëve të rrjedhave); shmangen fshirjet shumëprezente gjatë iterimit (nuk ka një fazë globale sweep); mutatorët lexojnë lirshëm të dhënat; çdo rrjedhë mund të aktivizojë mbledhësin e mbetjeve sipas nevojës (pa një rrjedhë të dedikuar GC).

YRC përdor informacionin e plotë mbi ngjarjet incRef/decRef, të cilin mbledhësit e mbetjeve tradicionalë që ndjekin (tracing GC) e hedhin dhe pastaj janë të detyruar ta rikthejnë përmes skanimit të stekëve dhe kalimit nëpër graf. Implementimi zë vetëm 550 rreshta kodi dhe ka verifikim formal të sigurisë dhe mungesës së bllokimeve të ndërsjellta përmes specifikimit në gjuhën TLA+ dhe provës në mjete Lean. YRC pozicionohet si "gati mbledhësi përfundimtar i cikleve në bazë të llogaritjes së lidhjeve" (leta Y i paraprin Z në alfabet), si dhe mbledhësi më i thjeshtë i mbetjeve të sigurt për rrjedhat - sipas autorit, ai nuk kërkon shumë mekanizma të komplikuar, të pranishëm në mbledhësit tradicionalë që ndjekin.

YRC ofron tĂ« njĂ«jtin API si ORC, me realizimin e shkatĂ«rruesve gjatĂ« mbledhjes sĂ« mbeturinave. MbledhĂ«si pĂ«rpunon vetĂ«m ata nĂ«ngrafĂ« objektesh me tĂ« cilat punojnĂ« rrjedhat, pa prekur strukturat e dhĂ«nash tĂ« papĂ«rfshira (keshat, objektet me jetĂ«gjatĂ«si tĂ« gjatĂ«) – njĂ« qasje, e ngjashme me mbledhĂ«sin e mbeturinave ‘ideal’ gjeneracional pa pĂ«rdorimin e brezave. Disavantazhi kryesor Ă«shtĂ« performanca: YRC tregon ngadalĂ«sim prej 1.5-2.0 herĂ« nĂ« krahasim me ORC nĂ« testin e performancĂ«s orcbench. Autori e konsideron kĂ«tĂ« njĂ« çmim tĂ« pranueshĂ«m pĂ«r pĂ«rpunimin e plotĂ« tĂ« sigurt pĂ«r rrjedhat tĂ« referencave ciklike.

YRC tashmĂ« Ă«shtĂ« nĂ« dispozicion nĂ« versionin zhvillimor tĂ« Nim dhe aktivizohet me flamurin ‘—mm:yrc’. MegjithatĂ«, nĂ« mesazhet e mĂ«vonshme, autori pranoi se realizimi fillestar pĂ«rmbante gabime tĂ« rĂ«nda dhe nuk mbledh ciklet siç duhet. NĂ« momentin e publikimit, Ă«shtĂ« pĂ«rgatitur njĂ« set korrigjimesh qĂ« eliminon gabimet kryesore. Autori vazhdon tĂ« konfiguronte heuristikat e mbledhjes dhe tĂ« rregullonte gabimet e mbetura, ndĂ«rkohĂ« qĂ« algoritmi bazĂ« dhe verifikimi i tij formal mbeten tĂ« saktĂ«.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster