{"id":160720,"date":"2026-02-12T17:11:59","date_gmt":"2026-02-12T15:11:59","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/v-yazyke-nim-predstavlen-yrc-potokobezopasnyj-sborshhik-cziklicheskih-ssylok"},"modified":"2026-02-12T17:11:59","modified_gmt":"2026-02-12T15:11:59","slug":"v-yazyke-nim-predstavlen-yrc-potokobezopasnyj-sborshhik-cziklicheskih-ssylok","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/news\/v-yazyke-nim-predstavlen-yrc-potokobezopasnyj-sborshhik-cziklicheskih-ssylok","title":{"rendered":"No idioma Nim foi apresentado YRC \u2014 um coletor de refer\u00eancias c\u00edclicas seguro para threads","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Andreas Rumpf (Araq), autor da linguagem de programa\u00e7\u00e3o Nim, anunciou um novo algoritmo de gerenciamento de mem\u00f3ria YRC (pronunciado 'Yerk'), que resolve um dos principais problemas dos mecanismos existentes em Nim: a incapacidade de lidar corretamente com refer\u00eancias circulares que cruzam os limites de threads.    <\/p>\n<p>Antes do YRC, os algoritmos propostos em Nim para gerenciamento de mem\u00f3ria apresentavam as seguintes limita\u00e7\u00f5es: ARC \u2014 n\u00e3o suportava multithreading nem o processamento de ciclos; Atomic ARC \u2014 era seguro para threads, mas n\u00e3o processava refer\u00eancias circulares; ORC \u2014 tratava refer\u00eancias circulares, mas apenas de forma correta dentro de um \u00fanico thread (ao usar refer\u00eancias compartilhadas entre threads, ocorriam vazamentos de mem\u00f3ria).       <\/p>\n<p>O YRC proposto combina seguran\u00e7a em rela\u00e7\u00e3o a threads e o processamento de ciclos entre threads, utilizando uma abordagem combinada: para dados ac\u00edclicos, aplica-se contagem de refer\u00eancias at\u00f4mica, e para os circulares \u2014 um barreira de grava\u00e7\u00e3o (write barrier), que \u00e9 ativada apenas ao atribuir ponteiros. Na implementa\u00e7\u00e3o proposta: o coletor \u00e9 acionado conforme a necessidade real (sem pausas stop-the-world); objetos ra\u00edzes RC s\u00e3o definidos explicitamente e agrupados uma \u00fanica vez (n\u00e3o \u00e9 necess\u00e1rio escanear pilhas de threads); a remo\u00e7\u00e3o multithread \u00e9 evitada durante a itera\u00e7\u00e3o (n\u00e3o h\u00e1 uma fase global de sweep); os mutadores leem dados livremente; qualquer thread pode iniciar o coletor de lixo conforme necess\u00e1rio (sem um thread GC dedicado).    <\/p>\n<p>O YRC utiliza informa\u00e7\u00f5es completas sobre eventos incRef\/decRef, que os coletor de lixo rastreadores tradicionais (tracing GC) descartam e, em seguida, s\u00e3o for\u00e7ados a restaurar por meio de escaneamento de pilhas e travessias de gr\u00e1ficos. A implementa\u00e7\u00e3o ocupa apenas 550 linhas de c\u00f3digo e possui verifica\u00e7\u00e3o formal de seguran\u00e7a e aus\u00eancia de deadlocks por meio de especifica\u00e7\u00f5es em TLA+ e prova na ferramenta Lean. O YRC \u00e9 posicionado como 'praticamente o \u00faltimo coletor de ciclos baseado em contagem de refer\u00eancias' (a letra Y vem antes do Z no alfabeto), bem como como o coletor de lixo mais simples e seguro para threads \u2014 segundo o autor, n\u00e3o requer uma s\u00e9rie de mecanismos complexos inerentes aos coletores de lixo rastreadores tradicionais.      <\/p>\n<p>YRC oferece a mesma API que a ORC, realizando destrutores durante a coleta de lixo. O coletor processa apenas os subgrafos de objetos com os quais os threads est\u00e3o trabalhando, sem tocar em estruturas de dados n\u00e3o relacionadas (caches, objetos de longa dura\u00e7\u00e3o) \u2014 uma abordagem semelhante \u00e0 do coletor de lixo 'ideal', sem uso de gera\u00e7\u00f5es. A principal desvantagem \u00e9 o desempenho: YRC apresenta uma desacelera\u00e7\u00e3o de 1,5 a 2,0 vezes em compara\u00e7\u00e3o com a ORC no teste de desempenho orcbench. O autor considera isso um custo aceit\u00e1vel pela completa seguran\u00e7a do thread no processamento de refer\u00eancias circulares.    <\/p>\n<p>YRC j\u00e1 est\u00e1 dispon\u00edvel na vers\u00e3o de desenvolvimento do Nim e \u00e9 ativado com a flag '--mm:yrc'. No entanto, em mensagens posteriores, o autor reconheceu que a implementa\u00e7\u00e3o inicial continha erros graves e n\u00e3o coletava ciclos corretamente. No momento da publica\u00e7\u00e3o, um conjunto de corre\u00e7\u00f5es foi preparado para eliminar os principais erros. O autor continua ajustando as heur\u00edsticas de coleta e corrigindo os erros restantes, enquanto o algoritmo b\u00e1sico e sua verifica\u00e7\u00e3o formal permanecem corretos.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=64785\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0410\u043d\u0434\u0440\u0435\u0430\u0441 \u0420\u0443\u043c\u043f\u0444 (Araq), \u0430\u0432\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Nim, \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e YRC (\u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0441\u0438\u0442\u0441\u044f &#171;&#220;rk&#187;), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0432 Nim: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a, \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0414\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f YRC \u0432 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0432 Nim \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u0438\u043c\u0435\u043b\u0438\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f: ARC &#8212; \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u043d\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u043d\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0446\u0438\u043a\u043b\u043e\u0432; [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-160720","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0410\u043d\u0434\u0440\u0435\u0430\u0441 \u0420\u0443\u043c\u043f\u0444 (Araq), \u0430\u0432\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Nim, \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e YRC (\u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0441\u0438\u0442\u0441\u044f &quot;\u00dcrk&quot;), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0432 Nim: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Erik Peterson\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/news\/v-yazyke-nim-predstavlen-yrc-potokobezopasnyj-sborshhik-cziklicheskih-ssylok\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412 \u044f\u0437\u044b\u043a\u0435 Nim \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d YRC \u2014 \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0410\u043d\u0434\u0440\u0435\u0430\u0441 \u0420\u0443\u043c\u043f\u0444 (Araq), \u0430\u0432\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Nim, \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e YRC (\u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0441\u0438\u0442\u0441\u044f &quot;\u00dcrk&quot;), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0432 Nim: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/news\/v-yazyke-nim-predstavlen-yrc-potokobezopasnyj-sborshhik-cziklicheskih-ssylok\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-02-12T15:11:59+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-02-12T15:11:59+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47No Nim, apresenta-se o YRC \u2014 um coletor de lixo de refer\u00eancias c\u00edclicas seguro para threads | ProHoster","description":"Andreas Rumpf (Araq), o autor da linguagem de programa\u00e7\u00e3o Nim, anunciou um novo algoritmo de gerenciamento de mem\u00f3ria YRC (pronunciado \"\u00dcrk\"), que resolve um dos problemas chave dos mecanismos existentes no Nim: a impossibilidade.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/v-yazyke-nim-predstavlen-yrc-potokobezopasnyj-sborshhik-cziklicheskih-ssylok","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412 \u044f\u0437\u044b\u043a\u0435 Nim \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d YRC \u2014 \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a | ProHoster","og:description":"\u0410\u043d\u0434\u0440\u0435\u0430\u0441 \u0420\u0443\u043c\u043f\u0444 (Araq), \u0430\u0432\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Nim, \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e YRC (\u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0441\u0438\u0442\u0441\u044f &quot;\u00dcrk&quot;), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0432 Nim: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.","og:url":"https:\/\/prohoster.info\/pt\/blog\/news\/v-yazyke-nim-predstavlen-yrc-potokobezopasnyj-sborshhik-cziklicheskih-ssylok","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2026-02-12T15:11:59+00:00","article:modified_time":"2026-02-12T15:11:59+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"160720","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-12 15:13:27","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-02-12 15:11:59","updated":"2026-02-12 15:13:27","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/160720","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=160720"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/160720\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=160720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=160720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=160720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}