{"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\/it\/blog\/news\/razrabotchiki-iz-google-predlozhili-razrabotat-svoyu-libc-dlya-llvm","title":{"rendered":"Gli sviluppatori di Google hanno proposto di sviluppare la propria libc per LLVM","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Uno degli sviluppatori di Google <noindex><a rel=\"nofollow\" href=\"http:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2019-June\/133269.html\">ha sollevato<\/a><\/noindex> nella mailing list LLVM il tema dello sviluppo di una libreria standard C multipiattaforma (Libc) nell'ambito del progetto LLVM. Per vari motivi, Google non \u00e8 soddisfatta delle attuali libc (glibc, musl) e l'azienda \u00e8 sulla strada per lo sviluppo di una nuova implementazione, che si propone di sviluppare come parte di LLVM.<\/p>\n<p> Le intuizioni di LLVM sono state recentemente utilizzate come base per costruire gli strumenti di compilazione di Google. L'idea principale \u00e8 che se Google ha gi\u00e0 iniziato a sviluppare la propria libc, perch\u00e9 non sviluppare subito il proprio sistema all'interno di LLVM, che offre gi\u00e0 la propria libreria standard per C++ (Libc++), ma non ha una libreria standard equivalente per C (Libc).<\/p>\n<p>Lo sviluppo \u00e8 previsto in fasi, aumentando gradualmente la funzionalit\u00e0. Le prime versioni si propone di realizzarle sotto forma di interfaccia tra l'applicazione e la Libc di sistema, da cui verranno tratte funzionalit\u00e0 ancora non implementate. Una volta raggiunto un certo livello di funzionalit\u00e0, la nuova Libc potr\u00e0 essere utilizzata come sostituzione completa della Libc di sistema. Si prevede di iniziare con il supporto per l'architettura x86-64, Linux e il collegamento statico (il caricamento dinamico, il linking e ulteriori architetture saranno implementati in un secondo momento). <\/p>\n<p>Il progetto \u00e8 ancora nelle fasi iniziali di sviluppo, ma sono gi\u00e0 stati definiti obiettivi di base:<\/p>\n<ul>\n<li class=\"l\"> Modularit\u00e0 e sviluppo in conformit\u00e0 con la filosofia di fornire una libreria granulare, piuttosto che un insieme monolitico;\n<li class=\"l\"> Supporto per il collegamento statico nelle modalit\u00e0 con <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Position-independent_code#PIE\">PIE<\/a><\/noindex> (eseguibili indipendenti dalla posizione) e senza PIE. Fornitura di CRT (C runtime) e caricatore PIE per file eseguibili staticamente collegati;\n<li class=\"l\"> Supporto per la maggior parte delle funzioni della libreria standard C con aggiunte POSIX e alcune estensioni specifiche per sistemi richieste nelle applicazioni esistenti;\n<li class=\"l\"> Attenzione particolare agli ampliamenti specifici per i produttori e la loro aggiunta solo se necessario. Per quanto riguarda il supporto delle estensioni di terze parti, si propone di adottare l'approccio dei progetti Clang e libc++;\n<li class=\"l\"> Uso delle pratiche esemplari nello sviluppo utilizzando gli strumenti di LLVM, come l'applicazione di sanitizer e test di fuzzing fin dall'inizio.\n<\/ul>\n<p>Uno degli sviluppatori attivi di LLVM <noindex><a rel=\"nofollow\" href=\"https:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2019-June\/133282.html\">ha indicato<\/a><\/noindex>, che la fornitura della libc come parte degli strumenti LLVM non sia priva di senso, ma di solito, in tale necessit\u00e0, si utilizza la libreria musl, che \u00e8 scritta con qualit\u00e0, supporta diverse architetture e fornisce la funzionalit\u00e0 necessaria, incluso il supporto per il linking dinamico. L'integrazione di musl in LLVM e il suo sviluppo come fork sincronizzato con il progetto principale pu\u00f2 essere giustificata.<\/p>\n<p>La propria opinione ha anche <noindex><a rel=\"nofollow\" href=\"http:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2019-June\/133308.html\">espresso<\/a><\/noindex> l'autore del progetto Musl, che ha cercato di argomentare perch\u00e9 la proposta di Google e l'inclusione della Libc nella fornitura di LLVM siano idee molto sbagliate:<\/p>\n<ul>\n<li class=\"l\"> Lo sviluppo e la manutenzione di una Libc corretta, compatibile e di alta qualit\u00e0 \u00e8 un compito molto difficile. Il problema non risiede nel volume del codice, ma nell'assicurare un comportamento corretto e nelle difficolt\u00e0 di implementazione delle interfacce, considerando l'enorme numero di applicazioni scritte in C\/C++, cos\u00ec come le applicazioni in altri linguaggi il cui runtime utilizza la Libc. Un approccio diretto senza considerare le sfumature porter\u00e0 solo a rendere molte delle applicazioni esistenti incompatibili con la Libc, ma in tal caso un progetto del genere non sar\u00e0 interessante per i consumatori.\n<li class=\"l\"> Lo sviluppo aziendale pu\u00f2 rovinare la Libc, ma sar\u00e0 spinto per un uso diffuso, il che porter\u00e0 alla necessit\u00e0 di aggiungere hack per garantire la compatibilit\u00e0 nelle applicazioni. Lo sviluppo sotto l'egida di un progetto open source aziendale tirer\u00e0 la coperta dalla parte delle esigenze e delle soluzioni dell'azienda, a scapito degli interessi della comunit\u00e0. Ad esempio, nel caso venga individuato un problema causato da un errore in un'altra propria applicazione, in uno sviluppo controllato \u00e8 pi\u00f9 semplice garantire la compatibilit\u00e0 della Libc con questo errore piuttosto che correggere l'errore stesso. Apple utilizza a tal fine un fork della BSD libc, mentre Google applica in Fuchsia un fork di musl. L'esperienza del sviluppatore di musl indica che le persone che lo hanno contattato erano principalmente avvocati per chiarire questioni di licenza, ma mai per chiedere dettagli tecnici prima di apportare cambiamenti inutili e che interferiscono con il funzionamento nelle loro ramificazioni.\n<li class=\"l\"> L'assenza di monocoltura nello sviluppo di libc e l'orientamento verso standard sviluppati tramite il consenso, invece della gestione centralizzata, motivate gli sviluppatori di applicazioni a usare standard anzich\u00e9 legarsi a implementazioni specifiche. Proprio per questo, l'autore di musl \u00e8 contrario all'inclusione della sua libreria in LLVM, cos\u00ec come allo sviluppo di libc all'interno di LLVM, poich\u00e9 in tal modo si perderebbe il carattere indipendente di libc e una specifica implementazione diventerebbe una soluzione di primo livello per LLVM, mentre tutte le altre sarebbero di secondo livello.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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\udd47Gli sviluppatori di Google hanno proposto di sviluppare la propria libc per LLVM | ProHoster","description":"Uno degli sviluppatori di Google ha sollevato nella mailing list LLVM il tema dello sviluppo multipiattaforma.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/razrabotchiki-iz-google-predlozhili-razrabotat-svoyu-libc-dlya-llvm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/35694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=35694"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/35694\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=35694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=35694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=35694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}