{"id":6164,"date":"2026-07-13T15:45:55","date_gmt":"2026-07-13T15:45:55","guid":{"rendered":"https:\/\/hub.paper-checker.com\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/"},"modified":"2026-07-13T15:45:55","modified_gmt":"2026-07-13T15:45:55","slug":"transactional-memory-evolution-history-and-its-role-in-modern-computing","status":"publish","type":"post","link":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/","title":{"rendered":"Mem\u00f3ria transacional: evolu\u00e7\u00e3o, hist\u00f3ria e seu papel na computa\u00e7\u00e3o moderna"},"content":{"rendered":"<p>Como os sistemas multi-core se tornaram o padr\u00e3o, a necessidade de uma programa\u00e7\u00e3o simult\u00e2nea eficiente e segura se intensificou. A Mem\u00f3ria Transacional (TM) surgiu como uma solu\u00e7\u00e3o inovadora para simplificar a sincroniza\u00e7\u00e3o em sistemas multithread, permitindo que os desenvolvedores gerenciem recursos compartilhados de forma eficaz sem a complexidade dos bloqueios.<\/p>\n<p>Este artigo mergulha na hist\u00f3ria, evolu\u00e7\u00e3o e aplica\u00e7\u00f5es atuais da mem\u00f3ria transacional, explorando como ela transforma a programa\u00e7\u00e3o paralela enquanto aborda desafios comuns.<\/p>\n<h2>O que \u00e9 mem\u00f3ria transacional?<\/h2>\n<p>A mem\u00f3ria transacional \u00e9 um mecanismo de controle de simultaneidade que permite que os threads acessem a mem\u00f3ria compartilhada de maneira semelhante \u00e0s transa\u00e7\u00f5es do banco de dados. Se ocorrer um conflito durante uma transa\u00e7\u00e3o (por exemplo, dois threads tentam modificar a mesma mem\u00f3ria), a transa\u00e7\u00e3o \u00e9 revertida e tentada novamente automaticamente.<\/p>\n<p>Em ess\u00eancia, o TM habilita:<\/p>\n<ul>\n<li><strong>Atomicidade:<\/strong> As transa\u00e7\u00f5es s\u00e3o executadas como unidades indivis\u00edveis.<\/li>\n<li><strong>Consist\u00eancia:<\/strong> A mem\u00f3ria compartilhada permanece em um estado v\u00e1lido.<\/li>\n<li><strong>Isolamento:<\/strong> As transa\u00e7\u00f5es s\u00e3o isoladas umas das outras, evitando as condi\u00e7\u00f5es de corrida.<\/li>\n<\/ul>\n<h2>Uma breve hist\u00f3ria da mem\u00f3ria transacional<\/h2>\n<h3>1. A origem (in\u00edcio da d\u00e9cada de 1990)<\/h3>\n<p>O conceito de mem\u00f3ria transacional foi introduzido por Maurice Herlihy e J. Eliot B. Moss em seu artigo de 1993 intitulado &#8220;Mem\u00f3ria transacional: suporte arquitet\u00f4nico para estruturas de dados sem travas&#8221;. A ideia deles visava simplificar a sincroniza\u00e7\u00e3o, eliminando problemas comuns, como deadlocks.<\/p>\n<h3>2. Mem\u00f3ria Transacional de Hardware (HTM)<\/h3>\n<p>No in\u00edcio dos anos 2000, surgiram sistemas de mem\u00f3ria transacional de hardware (HTM). As implementa\u00e7\u00f5es de HTM, como as Extens\u00f5es de Sincroniza\u00e7\u00e3o Transacional (TSX) da Intel, forneceram suporte a hardware nativo para gerenciar transa\u00e7\u00f5es de forma eficiente.<\/p>\n<h4>Vantagens do HTM:<\/h4>\n<ul>\n<li>Reduza a sobrecarga devido \u00e0 acelera\u00e7\u00e3o do hardware.<\/li>\n<li>Alto desempenho para transa\u00e7\u00f5es pequenas e frequentes.<\/li>\n<\/ul>\n<h3>3. Mem\u00f3ria Transacional de Software (STM)<\/h3>\n<p>\u00c0 medida que a HTM enfrentava limita\u00e7\u00f5es de escalabilidade, a mem\u00f3ria transacional de software (STM) ganhou destaque. A STM usa algoritmos de software para implementar a mem\u00f3ria transacional, tornando-a mais flex\u00edvel e adapt\u00e1vel a v\u00e1rios sistemas.<\/p>\n<h4>Exemplos de sistemas STM:<\/h4>\n<ul>\n<li><strong>Clojure:<\/strong> usa o STM para gerenciar o estado compartilhado na programa\u00e7\u00e3o funcional.<\/li>\n<li><strong>Haskell:<\/strong> oferece STM como parte de seu kit de ferramentas de simultaneidade.<\/li>\n<\/ul>\n<h2>Como funciona a mem\u00f3ria transacional<\/h2>\n<p>A mem\u00f3ria transacional opera usando os seguintes princ\u00edpios:<\/p>\n<ul>\n<li><strong>Iniciar transa\u00e7\u00e3o:<\/strong> O thread inicia uma transa\u00e7\u00e3o, marcando a mem\u00f3ria lida e grava.<\/li>\n<li><strong>Detec\u00e7\u00e3o de conflitos:<\/strong> O sistema monitora a mem\u00f3ria compartilhada para conflitos entre transa\u00e7\u00f5es.<\/li>\n<li><strong>Commit ou Rollback:<\/strong>\n<ul>\n<li>Se nenhum conflito ocorrer, a transa\u00e7\u00e3o confirma, aplicando altera\u00e7\u00f5es na mem\u00f3ria.<\/li>\n<li>Se um conflito for detectado, a transa\u00e7\u00e3o ser\u00e1 revertida e a thread tentar\u00e1 novamente a transa\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>Conceitos-chave:<\/h4>\n<ul>\n<li><strong>Concorr\u00eancia otimista:<\/strong> pressup\u00f5e que as transa\u00e7\u00f5es raramente entrar\u00e3o em conflito e ser\u00e3o repetidas quando o fizerem.<\/li>\n<li><strong>Resolu\u00e7\u00e3o de conflitos:<\/strong> garante o isolamento ao reverter transa\u00e7\u00f5es conflitantes.<\/li>\n<\/ul>\n<h2>Benef\u00edcios da mem\u00f3ria transacional<\/h2>\n<ul>\n<li><strong>Sincroniza\u00e7\u00e3o simplificada:<\/strong> TM abstrai bloqueios complexos e reduz erros de programa\u00e7\u00e3o como deadlocks e livelocks.<\/li>\n<li><strong>Desempenho melhorado:<\/strong> Para muitas cargas de trabalho, a TM oferece desempenho compar\u00e1vel a fechaduras refinadas sem a sobrecarga de sincroniza\u00e7\u00e3o manual.<\/li>\n<li><strong>Escalabilidade:<\/strong> TM escala bem com o aumento de n\u00facleos em sistemas multi-core.<\/li>\n<li><strong>Legibilidade:<\/strong> o c\u00f3digo usando o TM \u00e9 mais limpo e f\u00e1cil de entender.<\/li>\n<\/ul>\n<h2>Desafios da mem\u00f3ria transacional<\/h2>\n<ul>\n<li><strong>Vers\u00e3o do conflito:<\/strong> Conflitos frequentes entre transa\u00e7\u00f5es podem levar a retrocessos repetidos e desempenho reduzido.<\/li>\n<li><strong>Suporte a hardware limitado:<\/strong> O HTM n\u00e3o \u00e9 universalmente suportado em todos os processadores.<\/li>\n<li><strong>Opera\u00e7\u00f5es de E\/S:<\/strong> A TM n\u00e3o oferece suporte naturalmente \u00e0 E\/S n\u00e3o determin\u00edstica nas transa\u00e7\u00f5es.<\/li>\n<li><strong>Ado\u00e7\u00e3o de obst\u00e1culos:<\/strong> A transi\u00e7\u00e3o de sistemas existentes para TM requer repensar a l\u00f3gica de sincroniza\u00e7\u00e3o.<\/li>\n<\/ul>\n<h2>Mem\u00f3ria transacional na programa\u00e7\u00e3o moderna<\/h2>\n<h3>1. Programa\u00e7\u00e3o semelhante a um banco de dados em sistemas simult\u00e2neos<\/h3>\n<p>Idiomas como Haskell e Clojure aproveitam o STM para permitir uma abordagem de banco de dados para o gerenciamento de mem\u00f3ria compartilhada. Os desenvolvedores podem raciocinar sobre mudan\u00e7as de estado como transa\u00e7\u00f5es, simplificando a complexidade do c\u00f3digo.<\/p>\n<h3>2. Aplica\u00e7\u00e3o em sistemas de hardware<\/h3>\n<p>Os processadores modernos, incluindo os sistemas Intel e IBM, fornecem suporte em n\u00edvel de hardware para mem\u00f3ria transacional, aprimorando o desempenho para aplicativos computarem.<\/p>\n<h3>3. Pesquisa em algoritmos de TM<\/h3>\n<p>A pesquisa em sistemas de mem\u00f3ria transacional h\u00edbrida (HTM+STM) combina os pontos fortes das abordagens de hardware e software para maior flexibilidade.<\/p>\n<h2>Aulas paralelas: garantindo a integridade em todos os dom\u00ednios<\/h2>\n<p>A precis\u00e3o e o isolamento da mem\u00f3ria transacional na programa\u00e7\u00e3o concorrente refletem a necessidade de precis\u00e3o e integridade em outros campos, como a cria\u00e7\u00e3o de conte\u00fado. Ferramentas como <a href=\"https:\/\/paper-checker.com\">paper-checker.com<\/a> garantem que o trabalho escrito seja original e preciso, evitando a duplica\u00e7\u00e3o e o pl\u00e1gio. Assim como a mem\u00f3ria transacional garante consist\u00eancia e atomicidade no software, essas ferramentas protegem a qualidade e a confiabilidade do conte\u00fado.<\/p>\n<h2>Futuro da mem\u00f3ria transacional<\/h2>\n<p>\u00c0 medida que as arquiteturas multi-core continuam a dominar, a mem\u00f3ria transacional \u00e9 uma promessa significativa para a simplifica\u00e7\u00e3o da programa\u00e7\u00e3o concorrente:<\/p>\n<ul>\n<li><strong>Integra\u00e7\u00e3o com novas linguagens:<\/strong> Linguagens de programa\u00e7\u00e3o modernas, como o Rust, podem incorporar a TM para uma simultaneidade segura e eficiente.<\/li>\n<li><strong>Solu\u00e7\u00f5es h\u00edbridas:<\/strong> Combinando STM e HTM para uma abordagem equilibrada.<\/li>\n<li><strong>Sistemas distribu\u00eddos em nuvem:<\/strong> Os conceitos de TM podem se estender \u00e0 computa\u00e7\u00e3o distribu\u00edda para gerenciar o estado compartilhado de forma eficiente.<\/li>\n<\/ul>\n<h2>Conclus\u00e3o<\/h2>\n<p>A mem\u00f3ria transacional representa um avan\u00e7o significativo na programa\u00e7\u00e3o concorrente, oferecendo aos desenvolvedores uma maneira mais limpa e segura de gerenciar a mem\u00f3ria compartilhada sem bloqueios complexos. Embora persistam desafios como resolu\u00e7\u00e3o de conflitos e limita\u00e7\u00f5es de hardware, os benef\u00edcios da MT \u2013 simplicidade, escalabilidade e desempenho \u2013 tornam uma ferramenta poderosa para sistemas modernos.<\/p>\n<p>Assim como a mem\u00f3ria transacional garante precis\u00e3o e consist\u00eancia na computa\u00e7\u00e3o, ferramentas como <a href=\"https:\/\/paper-checker.com\">paper-checker.com<\/a> fornecem suporte essencial para manter a integridade do conte\u00fado digital. Seja gerenciando sistemas complexos ou garantindo originalidade, a precis\u00e3o continua sendo a chave para o sucesso no mundo acelerado de hoje.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como os sistemas multi-core se tornaram o padr\u00e3o, a necessidade de uma programa\u00e7\u00e3o simult\u00e2nea eficiente e segura se intensificou. A Mem\u00f3ria Transacional (TM) surgiu como uma solu\u00e7\u00e3o inovadora para simplificar a sincroniza\u00e7\u00e3o em sistemas multithread, permitindo que os desenvolvedores gerenciem recursos compartilhados de forma eficaz sem a complexidade dos bloqueios. Este artigo mergulha na hist\u00f3ria, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_locale":"pt_PT","_original_post":"https:\/\/paper-checker.com\/?p=2029","iawp_total_views":1,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-6164","post","type-post","status-publish","format-standard","hentry","category-programming-insights","pt-PT"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Compreendendo a mem\u00f3ria transacional: evolu\u00e7\u00e3o e aplica\u00e7\u00f5es modernas<\/title>\n<meta name=\"description\" content=\"Explore a hist\u00f3ria, o desenvolvimento e o papel da mem\u00f3ria transacional na programa\u00e7\u00e3o concorrente. Aprenda seus benef\u00edcios e desafios para os sistemas modernos.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Compreendendo a mem\u00f3ria transacional: evolu\u00e7\u00e3o e aplica\u00e7\u00f5es modernas\" \/>\n<meta property=\"og:description\" content=\"Explore a hist\u00f3ria, o desenvolvimento e o papel da mem\u00f3ria transacional na programa\u00e7\u00e3o concorrente. Aprenda seus benef\u00edcios e desafios para os sistemas modernos.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/\" \/>\n<meta property=\"og:site_name\" content=\"Paper Checker\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-13T15:45:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hub.paper-checker.com\/wp-content\/uploads\/2024\/12\/home.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alex Harper\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alex Harper\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Compreendendo a mem\u00f3ria transacional: evolu\u00e7\u00e3o e aplica\u00e7\u00f5es modernas","description":"Explore a hist\u00f3ria, o desenvolvimento e o papel da mem\u00f3ria transacional na programa\u00e7\u00e3o concorrente. Aprenda seus benef\u00edcios e desafios para os sistemas modernos.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/","og_locale":"pt_PT","og_type":"article","og_title":"Compreendendo a mem\u00f3ria transacional: evolu\u00e7\u00e3o e aplica\u00e7\u00f5es modernas","og_description":"Explore a hist\u00f3ria, o desenvolvimento e o papel da mem\u00f3ria transacional na programa\u00e7\u00e3o concorrente. Aprenda seus benef\u00edcios e desafios para os sistemas modernos.","og_url":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/","og_site_name":"Paper Checker","article_published_time":"2026-07-13T15:45:55+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/hub.paper-checker.com\/wp-content\/uploads\/2024\/12\/home.jpg","type":"image\/jpeg"}],"author":"Alex Harper","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Alex Harper","Tempo estimado de leitura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/#article","isPartOf":{"@id":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/"},"author":{"name":"Alex Harper","@id":"https:\/\/hub.paper-checker.com\/#\/schema\/person\/c031ad9541e7ce6099d129e5c38b0a03"},"headline":"Mem\u00f3ria transacional: evolu\u00e7\u00e3o, hist\u00f3ria e seu papel na computa\u00e7\u00e3o moderna","datePublished":"2026-07-13T15:45:55+00:00","mainEntityOfPage":{"@id":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/"},"wordCount":1087,"commentCount":0,"publisher":{"@id":"https:\/\/hub.paper-checker.com\/#organization"},"articleSection":["Programming Insights"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/","url":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/","name":"Compreendendo a mem\u00f3ria transacional: evolu\u00e7\u00e3o e aplica\u00e7\u00f5es modernas","isPartOf":{"@id":"https:\/\/hub.paper-checker.com\/#website"},"datePublished":"2026-07-13T15:45:55+00:00","description":"Explore a hist\u00f3ria, o desenvolvimento e o papel da mem\u00f3ria transacional na programa\u00e7\u00e3o concorrente. Aprenda seus benef\u00edcios e desafios para os sistemas modernos.","breadcrumb":{"@id":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/hub.paper-checker.com\/pt\/blog\/transactional-memory-evolution-history-and-its-role-in-modern-computing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hub.paper-checker.com\/"},{"@type":"ListItem","position":2,"name":"Mem\u00f3ria transacional: evolu\u00e7\u00e3o, hist\u00f3ria e seu papel na computa\u00e7\u00e3o moderna"}]},{"@type":"WebSite","@id":"https:\/\/hub.paper-checker.com\/#website","url":"https:\/\/hub.paper-checker.com\/","name":"Paper Checker","description":"","publisher":{"@id":"https:\/\/hub.paper-checker.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hub.paper-checker.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/hub.paper-checker.com\/#organization","name":"Paper Checker","url":"https:\/\/hub.paper-checker.com\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/hub.paper-checker.com\/#\/schema\/logo\/image\/","url":"https:\/\/paper-checker.com\/wp-content\/uploads\/2024\/12\/Group.png","contentUrl":"https:\/\/paper-checker.com\/wp-content\/uploads\/2024\/12\/Group.png","width":30,"height":30,"caption":"Paper Checker"},"image":{"@id":"https:\/\/hub.paper-checker.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/hub.paper-checker.com\/#\/schema\/person\/c031ad9541e7ce6099d129e5c38b0a03","name":"Alex Harper","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/secure.gravatar.com\/avatar\/02cfe7f58fd205f10554c6013c9e050f295a93cbbe1aebbb41f07d53311d48dc?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/02cfe7f58fd205f10554c6013c9e050f295a93cbbe1aebbb41f07d53311d48dc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/02cfe7f58fd205f10554c6013c9e050f295a93cbbe1aebbb41f07d53311d48dc?s=96&d=mm&r=g","caption":"Alex Harper"},"description":"Alex Harper is a software engineer and tech writer specializing in systems programming, data structures, and performance optimization. With expertise in Rust, Python, and C++, Alex simplifies complex concepts into practical insights for developers. Passionate about education and innovation, he enjoys exploring fractal geometry, DIY tech projects, and contributing to open-source communities.","url":"https:\/\/hub.paper-checker.com\/blog\/author\/alex-harper\/"}]}},"_links":{"self":[{"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/posts\/6164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/comments?post=6164"}],"version-history":[{"count":1,"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/posts\/6164\/revisions"}],"predecessor-version":[{"id":6503,"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/posts\/6164\/revisions\/6503"}],"wp:attachment":[{"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/media?parent=6164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/categories?post=6164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hub.paper-checker.com\/wp-json\/wp\/v2\/tags?post=6164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}