{"id":35694,"date":"2019-10-31T22:05:48","date_gmt":"2019-10-31T19:05:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/razrabotchiki-iz-google-predlozhili-razrabotat-svoyu-libc-dlya-llvm\/"},"modified":"2019-10-31T22:05:48","modified_gmt":"2019-10-31T19:05:48","slug":"razrabotchiki-iz-google-predlozhili-razrabotat-svoyu-libc-dlya-llvm","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/razrabotchiki-iz-google-predlozhili-razrabotat-svoyu-libc-dlya-llvm","title":{"rendered":"Programi\u015bci z Google zaproponowali opracowanie w\u0142asnej libc dla LLVM","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Jeden z programist\u00f3w z firmy Google <noindex><a rel=\"nofollow\" href=\"http:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2019-June\/133269.html\">podni\u00f3s\u0142<\/a><\/noindex> w li\u015bcie dyskusyjnej LLVM temat rozwoju wieloplatformowej standardowej biblioteki C (Libc) w ramach projektu LLVM. Z r\u00f3\u017cnych powod\u00f3w Google nie zadowala aktualna libc (glibc, musl) i firma d\u0105\u017cy do opracowania nowej implementacji, kt\u00f3r\u0105 proponuje rozwija\u0107 jako cz\u0119\u015b\u0107 LLVM.<\/p>\n<p> Osi\u0105gni\u0119cia LLVM s\u0105 ostatnio wykorzystywane jako podstawa do budowy narz\u0119dzi kompilacyjnych Google. Podstawow\u0105 ide\u0105 jest to, \u017ce je\u015bli Google ju\u017c rozpocz\u0105\u0142 rozw\u00f3j swojej libc, to dlaczego nie rozwija\u0107 od razu swojego systemu w ramach LLVM, kt\u00f3ry ju\u017c oferuje swoj\u0105 standardow\u0105 bibliotek\u0119 dla C++ (Libc++), ale nie ma podobnej standardowej biblioteki dla C (Libc).<\/p>\n<p>Rozw\u00f3j planowany jest etapowo, stopniowo zwi\u0119kszaj\u0105c funkcjonalno\u015b\u0107. Pierwsze wersje maj\u0105 by\u0107 przedstawione w postaci warstwy mi\u0119dzy aplikacj\u0105 a systemow\u0105 Libc, z kt\u00f3rej b\u0119d\u0105 czerpane jeszcze nie wdro\u017cone mo\u017cliwo\u015bci. Po osi\u0105gni\u0119ciu okre\u015blonego poziomu funkcjonalno\u015bci nowa Libc b\u0119dzie mog\u0142a by\u0107 stosowana jako pe\u0142ny zamiennik systemowej Libc. Planowane rozpocz\u0119cie od wsparcia architektury x86-64, Linux i statycznego linkowania (dynamiczne \u0142adowanie, kompozycja i dodatkowe architektury b\u0119d\u0105 realizowane w drugim etapie). <\/p>\n<p>Projekt jest na wczesnym etapie rozwoju, ale ju\u017c okre\u015blono podstawowe cele:<\/p>\n<ul>\n<li class=\"l\"> Modularno\u015b\u0107 i rozw\u00f3j zgodny z filozofi\u0105 dostarczania granularnej biblioteki, a nie monolitycznego zestawu;\n<li class=\"l\"> Wsparcie statycznego linkowania w trybach z <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Position-independent_code#PIE\">PIE<\/a><\/noindex> (programy niezale\u017cne od adres\u00f3w) i bez PIE. Dostarczenie CRT (\u015brodowisko uruchomieniowe C) i \u0142adowarki PIE dla statycznie linkowanych plik\u00f3w wykonywalnych;\n<li class=\"l\"> Wsparcie wi\u0119kszo\u015bci funkcji standardowej biblioteki C z dodatkami POSIX i niekt\u00f3rymi specyficznymi rozszerzeniami systemowymi, kt\u00f3re s\u0105 potrzebne w istniej\u0105cych aplikacjach;\n<li class=\"l\"> Ostro\u017cne podej\u015bcie do specyficznych rozszerze\u0144 producent\u00f3w z ich dodawaniem tylko w razie potrzeby. W odniesieniu do wsparcia dla zewn\u0119trznych rozszerze\u0144 proponuje si\u0119 zastosowanie podej\u015bcia projekt\u00f3w Clang i libc++;\n<li class=\"l\"> Wykorzystanie najlepszych praktyk w rozwoju z u\u017cyciem narz\u0119dzi LLVM, takich jak zastosowanie sanitizer\u00f3w i test\u00f3w fuzzerowych od samego pocz\u0105tku.\n<\/ul>\n<p>Jeden z aktywnych programist\u00f3w LLVM <noindex><a rel=\"nofollow\" href=\"https:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2019-June\/133282.html\">zaznaczy\u0142<\/a><\/noindex>, \u017ce dostarczenie libc w sk\u0142adzie narz\u0119dziowego LLVM ma sens, ale zwykle w takiej sytuacji u\u017cywa si\u0119 biblioteki musl, kt\u00f3ra jest dobrze napisana, wspiera r\u00f3\u017cne architektury i zapewnia niezb\u0119dn\u0105 funkcjonalno\u015b\u0107, w tym obs\u0142ug\u0119 linkowania dynamicznego. Uzasadnione mo\u017ce by\u0107 wbudowanie musl w LLVM i rozwijanie go jako zsynchronizowanego z g\u0142\u00f3wnym projektem forka.<\/p>\n<p>Swoj\u0105 opini\u0119 r\u00f3wnie\u017c <noindex><a rel=\"nofollow\" href=\"http:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2019-June\/133308.html\">wyrazi\u0142<\/a><\/noindex> autor projektu Musl, kt\u00f3ry pr\u00f3bowa\u0142 uzasadni\u0107, dlaczego propozycja Google i w\u0142\u0105czenie Libc do dostarczania LLVM s\u0105 bardzo z\u0142ymi pomys\u0142ami:<\/p>\n<ul>\n<li class=\"l\"> Rozw\u00f3j i wsparcie prawid\u0142owego, kompatybilnego i wysokiej jako\u015bci Libc jest bardzo trudnym zadaniem. Problem nie le\u017cy w obj\u0119to\u015bci kodu, lecz w zapewnieniu prawid\u0142owego zachowania oraz trudno\u015bci w realizacji interfejs\u00f3w, bior\u0105c pod uwag\u0119 ogromn\u0105 liczb\u0119 wcze\u015bniej napisanych aplikacji w C\/C++, a tak\u017ce aplikacji w innych j\u0119zykach, kt\u00f3rych runtime wykorzystuje Libc. Podej\u015bcie bez uwzgl\u0119dnienia niuans\u00f3w tylko doprowadzi do tego, \u017ce wiele istniej\u0105cych program\u00f3w nie b\u0119dzie mog\u0142o wsp\u00f3\u0142pracowa\u0107 z Libc, a taki projekt nie b\u0119dzie interesuj\u0105cy dla u\u017cytkownik\u00f3w.\n<li class=\"l\"> Korporacyjny rozw\u00f3j mo\u017ce zepsu\u0107 Libc, ale wprowadzi\u0107 do szerokiego u\u017cytku, co skutkowa\u0107 b\u0119dzie konieczno\u015bci\u0105 dodawania hack\u00f3w w celu zapewnienia kompatybilno\u015bci w aplikacjach. Rozw\u00f3j pod auspicjami korporacyjnego projektu open source b\u0119dzie ci\u0105gn\u0105\u0142 w stron\u0119 potrzeb i rozwi\u0105za\u0144 firmy, kosztem interes\u00f3w spo\u0142eczno\u015bci. Na przyk\u0142ad w przypadku wykrycia problemu spowodowanego b\u0142\u0119dem w innym swoim programie, w kontrolowanym rozwoju \u0142atwiej zapewni\u0107 kompatybilno\u015b\u0107 Libc z tym b\u0142\u0119dem, ni\u017c naprawi\u0107 sam b\u0142\u0105d. Apple w takich celach u\u017cywa forka BSD libc, a Google stosuje fork musl w Fuchsia. Do\u015bwiadczenie developera musl pokazuje, \u017ce kontaktowali si\u0119 z nim g\u0142\u00f3wnie prawnicy w celu wyja\u015bnienia kwestii licencyjnych, ale nigdy nie pytali o szczeg\u00f3\u0142y techniczne przed wprowadzeniem do swoich ga\u0142\u0119zi bezu\u017cytecznych i zak\u0142\u00f3caj\u0105cych dzia\u0142anie zmian.\n<li class=\"l\"> Brak monokultury w rozwoju libc oraz orientacja na standardy rozwijane na podstawie konsensusu, zamiast jednostronnego zarz\u0105dzania, co motywuje tw\u00f3rc\u00f3w aplikacji do korzystania ze standard\u00f3w zamiast przywi\u0105zywania si\u0119 do konkretnych implementacji. Dlatego autor musl sprzeciwia si\u0119 w\u0142\u0105czeniu swojej biblioteki do LLVM oraz wytwarzaniu libc w ramach LLVM, poniewa\u017c w takim przypadku traci si\u0119 niezale\u017cny charakter libc, a konkretna implementacja staje si\u0119 rozwi\u0105zaniem pierwszorz\u0119dnym dla LLVM, a wszystkie pozosta\u0142e \u2014 drugorz\u0119dnymi.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>\u0179r\u00f3d\u0142o: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=50970\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Google \u043f\u043e\u0434\u043d\u044f\u043b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 LLVM \u0442\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0421\u0438-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (Libc) \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LLVM. \u041f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d Google \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 libc (glibc, musl) \u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043d\u0430 \u043f\u0443\u0442\u0438 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u043e\u0432\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c LLVM. \u041d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438 LLVM \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f [&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-35694","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0434\u0438\u043d \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Google \u043f\u043e\u0434\u043d\u044f\u043b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 LLVM \u0442\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\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\/pl\/blog\/news\/razrabotchiki-iz-google-predlozhili-razrabotat-svoyu-libc-dlya-llvm\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0437 Google \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u044e libc \u0434\u043b\u044f LLVM | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0434\u0438\u043d \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Google \u043f\u043e\u0434\u043d\u044f\u043b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 LLVM \u0442\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/razrabotchiki-iz-google-predlozhili-razrabotat-svoyu-libc-dlya-llvm\" \/>\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=\"2019-10-31T19:05:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:05:48+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\udd47Deweloperzy z Google zaproponowali stworzenie swojej libc dla LLVM | ProHoster","description":"Jeden z deweloper\u00f3w z firmy Google podj\u0105\u0142 na li\u015bcie dyskusyjnej LLVM temat opracowywania wieloplatformowej.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/razrabotchiki-iz-google-predlozhili-razrabotat-svoyu-libc-dlya-llvm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0437 Google \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u044e libc \u0434\u043b\u044f LLVM | ProHoster","og:description":"\u041e\u0434\u0438\u043d \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Google \u043f\u043e\u0434\u043d\u044f\u043b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 LLVM \u0442\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439.","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/razrabotchiki-iz-google-predlozhili-razrabotat-svoyu-libc-dlya-llvm","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":"2019-10-31T19:05:48+00:00","article:modified_time":"2019-10-31T19:05:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35694","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-22 00:24:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:57:46","updated":"2026-01-22 00:24:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/35694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=35694"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/35694\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=35694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=35694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=35694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}