{"id":54919,"date":"2020-01-08T00:00:00","date_gmt":"2020-01-07T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/vtoroj-kandidat-v-relizy-libmdbx-v1-0-posle-pyati-let-razrabotki"},"modified":"2020-02-18T14:02:59","modified_gmt":"2020-02-18T11:02:59","slug":"vtoroj-kandidat-v-relizy-libmdbx-v1-0-posle-pyati-let-razrabotki","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/vtoroj-kandidat-v-relizy-libmdbx-v1-0-posle-pyati-let-razrabotki","title":{"rendered":"The second candidate for the libmdbx v1.0 releases after five years of development.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex>      <\/p>\n<p>Library <a rel=\"nofollow\" href=\"https:\/\/github.com\/leo-yuriev\/libmdbx\">libmdbx<\/a> is a significantly revamped descendant of LMDB \u2014 an extremely high-performance, compact embedded key-value database.<\/noindex><br \/>\nThe current version v0.5 is a technical release, marking the completion of any enhancements and the transition to the phase of public final testing and stabilization, leading to the formation of the first full release of the library.<\/p>\n<p><noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/ru.bmstu.wiki\/LMDB_(Lightning_Memory-Mapped_Database)\">LMDB<\/a> is a fairly well-known transactional embedded DBMS of the 'key-value' class based on <a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/B%E2%81%BA-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\">B+ tree<\/a> without <a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A3%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B0%D1%8F_%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F\">anticipatory journaling<\/a>, which allows a set of multithreaded processes to work concurrently and extremely efficiently with a locally shared (non-networked) DB. In turn, MDBX is faster and more reliable than LMDB, while libmdbx retains all the key features of its predecessor, such as <a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/ACID\">ACID<\/a> and non-blocking reads with linear scaling across CPU cores, while also adding several new ones.<\/p>\n<p><\/noindex><\/p>\n<p>The description of differences and improvements of libmdbx compared to LMDB deserves a separate article (planned publications on 'Habr' and 'Medium'). Here it is appropriate to mention the most important and notable:<\/p>\n<ul>\n<li>Significantly more attention is paid to code quality, testing, and automated checks.<\/li>\n<li>Substantially more control during operations, from parameter checks to internal audits of database structures.<\/li>\n<li>Auto-compaction and automatic size management of the database.<\/li>\n<li>A unified database format for 32-bit and 64-bit builds.<\/li>\n<li>Estimation of range query sizes.<\/li>\n<li>Support for keys with double size and user-defined page size for the database.<\/li>\n<\/ul>\n<p>The released libmdbx release candidate is the result of a decision (see below) to separate the MDBX and MithrilDB projects in August 2019. At the same time, it was decided to eliminate (rational) maximum technical debt and stabilize the library. In fact, much more has been done in the designated direction than was initially estimated and planned: 2-3 times more.<\/p>\n<ul>\n<li>Support for Mac OS and 'second-tier' platforms: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Support for AIX and HP-UX can be added if necessary.<\/li>\n<li>Code sanitation using Undefined Behavior Sanitizer and Address Sanitizer has been conducted, all warnings during compilation with -Wpedantic have been eliminated, all warnings from Coverity Static Analyzer, etc.<\/li>\n<li>Updating <a rel=\"nofollow\" href=\"https:\/\/github.com\/leo-yuriev\/libmdbx\/blob\/master\/mdbx.h\">API documentation<\/a>.<\/li>\n<li>Amalgamation of the source code for ease of embedding.<\/li>\n<li>CMake support.<\/li>\n<li>Support for nested transactions.<\/li>\n<li>Using bootid to determine the fact of OS reboot (dirty database shutdown).<\/li>\n<li>Comprehensive counting of updated\/old pages and extended transaction information.<\/li>\n<li>MDBX_ACCEDE option for connecting to an already opened database in compatible mode.<\/li>\n<li>Using <a rel=\"nofollow\" href=\"https:\/\/www.gnu.org\/software\/libc\/manual\/html_node\/Open-File-Description-Locks.html\">OFD locks<\/a> when available.<\/li>\n<li>Hot backup in pipe.<\/li>\n<li>A specialized optimized internal sorting algorithm (2-3 times faster than qsort() and up to 30% faster than std::sort()).<\/li>\n<li>Increased maximum key length.<\/li>\n<li>Automatic read-ahead management (database file caching strategy in memory).<\/li>\n<li>More aggressive and faster auto-compaction.<\/li>\n<li>More optimal B+ tree page merging strategy.<\/li>\n<li>Monitoring of non-local file systems (NFS, Samba, etc.) to prevent database corruption from improper usage.<\/li>\n<li>Expanded test suite.<\/li>\n<\/ul>\n<p><noindex><\/p>\n<p>Development of the 'next' version of libmdbx will continue within a separate project <a rel=\"nofollow\" href=\"https:\/\/github.com\/leo-yuriev\/MithrilDB\">MithrilDB<\/a>, while the development vector of the 'current' version of MDBX is aimed at freezing the feature set and stabilization. This decision has been made for three reasons:<\/p>\n<p><\/noindex><\/p>\n<ul>\n<li>Complete incompatibility: achieving all planned features in MithrilDB requires a different (incompatible) database file format and a different (incompatible) API.<\/li>\n<li>New source code: the source code for MithrilDB is ensured to be license-independent from LMDB, and the project is planned to be published under a different (approved <a rel=\"nofollow\" href=\"https:\/\/opensource.org\/\">OSI<\/a> license <a rel=\"nofollow\" href=\"https:\/\/opensource.org\/licenses\/Apache-2.0\">Apache 2.0<\/a>, not <a rel=\"nofollow\" href=\"https:\/\/www.openldap.org\/software\/release\/license.html\">OpenLDAP Foundation<\/a>).<\/li>\n<li>Separation helps avoid potential confusion, bring more clarity, and ensure the independence of project development paths.<\/li>\n<\/ul>\n<p><noindex><\/p>\n<p>MithrilDB, like MDBX, is also based on <a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/B%E2%81%BA-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\">B+ tree<\/a> and will also feature extremely high performance, while eliminating a number of fundamental drawbacks of MDBX and LMDB. In particular, the problem of 'long reads', manifested as 'database bloat' due to garbage collection being blocked by long-reading transactions, will be resolved. Among the new features of MithrilDB, it is worth noting:<\/p>\n<p><\/noindex><\/p>\n<ul>\n<li>Support for hosting databases on multiple heterogeneous media: HDD, SSD, and non-volatile memory.<\/li>\n<li>Optimal strategies for 'valuable' and 'less valuable', for 'hot', 'warm', and 'cold' data.<\/li>\n<li>Using Merkle tree for database integrity control.<\/li>\n<li>Optional use of WAL and significantly higher performance in scenarios with intensive writing and guarantees on data integrity.<\/li>\n<li>Lazy catching up of data on disks.<\/li>\n<\/ul>\n<p>Source: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"http:\/\/www.linux.org.ru\/news\/opensource\/15450965\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 libmdbx \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u043c LMDB \u2014 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f v0.5 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0435\u043b\u0438\u0437\u043e\u043c, \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0444\u0430\u0437\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. LMDB \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0421\u0423\u0411\u0414 \u043a\u043b\u0430\u0441\u0441\u0430 \u00ab\u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 B+ [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54919","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 libmdbx \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u043c LMDB \u2014 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0431\u0430\u0437\u043e\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/vtoroj-kandidat-v-relizy-libmdbx-v1-0-posle-pyati-let-razrabotki\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\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\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437\u044b libmdbx v1.0 \u043f\u043e\u0441\u043b\u0435 \u043f\u044f\u0442\u0438 \u043b\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 libmdbx \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u043c LMDB \u2014 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0431\u0430\u0437\u043e\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/vtoroj-kandidat-v-relizy-libmdbx-v1-0-posle-pyati-let-razrabotki\" \/>\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=\"2020-01-07T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02: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\udd47The second candidate for releases of libmdbx v1.0 after five years of development. | ProHoster","description":"The libmdbx library is a significantly redesigned descendant of LMDB \u2014 an extremely high-performance, compact embedded database.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/vtoroj-kandidat-v-relizy-libmdbx-v1-0-posle-pyati-let-razrabotki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","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\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437\u044b libmdbx v1.0 \u043f\u043e\u0441\u043b\u0435 \u043f\u044f\u0442\u0438 \u043b\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. | ProHoster","og:description":"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 libmdbx \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u043c LMDB \u2014 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0431\u0430\u0437\u043e\u0439.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/vtoroj-kandidat-v-relizy-libmdbx-v1-0-posle-pyati-let-razrabotki","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":"2020-01-07T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:59+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54919","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":null,"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-01-24 13:11:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:55:36","updated":"2026-01-24 13:11:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/54919","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=54919"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/54919\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=54919"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=54919"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=54919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}