Π’ Π΅Π·ΠΈΠΊΠ° Nim Π΅ прСдставСн YRC β€” потокобСзопасСн сборщик Π½Π° Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ

АндрСас Π ΡƒΠΌΠΏΡ„ (Araq), Π°Π²Ρ‚ΠΎΡ€ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Nim, обяви Π½ΠΎΠ² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° YRC (изговаря сС «ÜrkΒ»), ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π° Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π² Nim: Π½Π΅Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ, прСсичащи Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠΈΡ‚Π΅.

ΠŸΡ€Π΅Π΄ΠΈ появата Π½Π° YRC Π² ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π½ΠΈΡ‚Π΅ Π² Nim Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° имашС слСднитС ограничСния: ARC β€” Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΡˆΠ΅ Π½ΠΈΡ‚ΠΎ многопоточност, Π½ΠΈΡ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ; Atomic ARC β€” бСшС бСзопасСн Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π½ΠΎ Π½Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΡˆΠ΅ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ; ORC β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΡˆΠ΅ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ, Π½ΠΎ моТСшС Π΄Π° Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΎ само Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ (ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° сподСлСни Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠΈΡ‚Π΅ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ…Π° изтичания Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚).

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚ YRC ΡΡŠΡ‡Π΅Ρ‚Π°Π²Π° бСзопасност Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠΈΡ‚Π΅, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: Π·Π° Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ Π±Ρ€ΠΎΠ΅Π½Π΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅, Π° Π·Π° Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ β€” Π±Π°Ρ€ΠΈΠ΅Ρ€Π° Π·Π° запис (write barrier), която сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° само ΠΏΡ€ΠΈ присвояванС Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Π’ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π°Ρ‚Π° рСализация: ΠΊΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ сС стартира ΠΏΡ€ΠΈ дСйствитСлна нСобходимост (липса Π½Π° ΠΏΠ°ΡƒΠ·ΠΈ stop-the-world); ΠΊΠΎΡ€Π΅Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ RC са ясно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ вСднъТ (Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сканиранС Π½Π° стСковСтС Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠΈΡ‚Π΅); избягва сС ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° итСрация (няма Π³Π»ΠΎΠ±Π°Π»Π½Π° Ρ„Π°Π·Π° sweep); ΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΈ свободно Ρ‡Π΅Ρ‚Π°Ρ‚ Π΄Π°Π½Π½ΠΈ; всСки ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° стартира сборщика Π½Π° мусор ΠΏΡ€ΠΈ нСобходимост (Π±Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ GC ΠΏΠΎΡ‚ΠΎΠΊ).

YRC ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° пълна информация Π·Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° incRef/decRef, която Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ трасиращи сборщики мусор (tracing GC) ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΡΡ‚ ΠΈ слСд Ρ‚ΠΎΠ²Π° са ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π΅Π½ΠΈ Π΄Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΡ‚ Ρ‡Ρ€Π΅Π· сканиранС Π½Π° стСковС ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄ Π½Π° Π³Ρ€Π°Ρ„Π°. РСализацията Π·Π°Π΅ΠΌΠ° само 550 Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ ΠΈ ΠΈΠΌΠ° Ρ„ΠΎΡ€ΠΌΠ°Π»Π½Π° вСрификация Π½Π° бСзопасността ΠΈ ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π²Π·Π°ΠΈΠΌΠ½ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‡Ρ€Π΅Π· спСцификация Π½Π° Π΅Π·ΠΈΠΊΠ° TLA+ ΠΈ доказатСлство Π² инструмСнта Lean. YRC сС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ Β«ΠΏΠΎΡ‡Ρ‚ΠΈ послСдния сборщик Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Π±Ρ€ΠΎΠ΅Π½Π΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΒ» (Π±ΡƒΠΊΠ²Π°Ρ‚Π° Y ΠΏΡ€Π΅Π΄Ρ…ΠΎΠΆΠ΄Π° Z Π² Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π°), Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΉ-простия бСзопасСн Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° сборщик мусор β€” спорСд Π°Π²Ρ‚ΠΎΡ€Π°, Π½Π΅ изисква мноТСство слоТни ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ, ΠΏΡ€ΠΈΡΡŠΡ‰ΠΈ Π½Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ трасиращи сборщики мусор.

YRC прСдоставя ΡΡŠΡ‰ΠΎΡ‚ΠΎ API, ΠΊΠ°ΠΊΡ‚ΠΎ ORC, с изпълнСниС Π½Π° дСструктори ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π°εžƒεœΎ. Π‘ΡŠΠ±ΠΈΡ€Π°Ρ‡ΡŠΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° само ΠΎΠ½Π΅Π·ΠΈ ΠΏΠΎΠ΄Π³Ρ€Π°Ρ„ΠΈ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, с ΠΊΠΎΠΈΡ‚ΠΎ работят Π½ΠΈΡˆΠΊΠΈΡ‚Π΅, Π±Π΅Π· Π΄Π° засяга Π½Π΅ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ структури ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ (кСшовС, Π΄ΡŠΠ»Π³ΠΎΠΆΠΈΠ²Π΅Π΅Ρ‰ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ) β€” ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° "идСалния" Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π°εžƒεœΎ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° поколСния. ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π΅ производитСлността: YRC ΠΏΠΎΠΊΠ°Π·Π²Π° забавянС ΠΎΡ‚ 1.5-2.0 ΠΏΡŠΡ‚ΠΈ Π² сравнСниС с ORC Π² тСста Π·Π° производитСлност orcbench. ΠΠ²Ρ‚ΠΎΡ€ΡŠΡ‚ смята, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²Π° Ρ†Π΅Π½Π° Π·Π° пълна потокобСзопасна ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ.

YRC Π²Π΅Ρ‡Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ Π² development вСрсията Π½Π° Nim ΠΈ сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° с Ρ„Π»Π°Π³Π° "β€”mm:yrc". Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π² послСдващи ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π°Π²Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΏΡ€ΠΈΠ·Π½Π°, Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° рСализация Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π»Π° сСриозни Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π½Π΅ Π΅ ΡΡŠΠ±ΠΈΡ€Π°Π»Π° Ρ†ΠΈΠΊΠ»ΠΈ ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΎ. Към ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ отстранява основнитС Π³Ρ€Π΅ΡˆΠΊΠΈ. ΠΠ²Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° настройванСто Π½Π° хСвристикитС Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ ΠΈ исправянСто Π½Π° останалитС Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠ°Ρ‚ΠΎ основният Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ ΠΈ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° Ρ„ΠΎΡ€ΠΌΠ°Π»Π½Π° вСрификация остават ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster