EinfĂźhrung in ARC / ORC in Nim

Nim wechselt zu effizienteren Speicherverwaltungsmodellen: ARC und ORC. Lassen Sie uns genau herausfinden, wie sie die Funktionsweise des Speichers ändern.





EinfĂźhrung



Hallo! In diesem Artikel werde ich versuchen zu erklären, was ARC und ORC sind und wie sie sich auf die Leistung oder andere Teile von Nim auswirken. Ich werde nicht tief in die Aspekte des Software-Teils eintauchen, aber ich werde versuchen, eine mehr oder weniger allgemeine Erklärung zu geben.



: Nim (GC). GC , ( ) .



GC Nim refc ( mark & sweep ), , markAndSweep, boehm, go, regions.



Nim' , , (owned ref) :





, Nim ARC



ARC?



ARC , (Automatic Reference Counting) (move semantics). , ARC Nim , ARC Swift, — Nim ARC .



. ( runtime) , . , .



ARC GC Nim , ARC — (, , , .), . ARC C++ (RAII)



, , ARC expandArc, Nim 1.4.



Nim:



proc main = 
  let mystr = stdin.readLine()

  case mystr
  of "":
    echo "!"
  of "":
    echo "!"
    quit()
  else:
    discard

main()


nim c --gc:arc --expandArc:main example.nim.



--expandArc: main

var mystr
try:
  mystr = readLine(stdin)
  case mystr
  of "":
    echo ["!"]
  of "":
    echo ["!"]
    quit(0)
  else:
    discard
finally:
  `=destroy`(mystr)
-- end of expandArc ------------------------


— Nim main try: finally ( finally , try ) =destroy mystr, .



ARC: (scope-based MM). — . , , , . Nim' : , , , , block, for while .



ARC hooks — , , // . , , , FFI.



refc ARC ( ):



  • ( ) — .



  • — , .



  • — refc, (thread-local heap), ARC . — . RFC , ARC.



  • FFI — , refc "" (.. ) , ARC. , ARC , (.dll, .so, Python' )



  • — hard realtime



  • (copy elision), Nim (cursor inference) — ()





, ARC Nim , , , .



, ARC , , , --gc:arc, (.nims .cfg).





! - ? ARC , , , . — , , . : 3 (A, B, C), , :





, , — , , .



Nim' mark & sweep refc GC, ARC - . :



ORC — Nim



ORC , ARC. GC, (local tracing phase) GC, (global tracing).



async Nim ORC, Nim' , .



ORC ARC () — ORC , hard realtime ( ) — .



ORC --gc:orc, , ORC GC Nim'



! ?



— — Nim 1.4. .



! — , !



/ :






All Articles