{"id":121335,"date":"2025-01-14T09:46:13","date_gmt":"2025-01-14T07:46:13","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/dostupen-emscripten-4-0-kompilyator-iz-c-c-v-webassembly"},"modified":"2025-01-14T09:46:13","modified_gmt":"2025-01-14T07:46:13","slug":"dostupen-emscripten-4-0-kompilyator-iz-c-c-v-webassembly","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/news\/dostupen-emscripten-4-0-kompilyator-iz-c-c-v-webassembly","title":{"rendered":"Emscripten 4.0 is beschikbaar, een compiler van C\/C++ naar WebAssembly.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>De release van Emscripten 4.0 is gepubliceerd, waarmee code in C\/C++ en andere talen die front-ends op basis van LLVM hebben, kan worden gecompileerd naar universele low-level tussenliggende code in WebAssembly. Het verkregen resultaat kan worden gebruikt voor integratie met JavaScript-projecten, uitvoering in een webbrowser, gebruik in Node.js of het cre\u00ebren van afzonderlijke cross-platformtoepassingen die worden uitgevoerd met behulp van wasm-runtime. De code van het project wordt verspreid onder de MIT-licentie. De compiler maakt gebruik van de technieken van het LLVM-project, en voor de generatie van WebAssembly en optimalisatie wordt de Binaryen-bibliotheek gebruikt.    <\/p>\n<p>Het hoofddoel van Emscripten is het cre\u00ebren van een tool die het mogelijk maakt om webcode uit te voeren, ongeacht de programmeertaal waarin deze code oorspronkelijk is geschreven. In de gecompileerde applicaties kunnen oproepen naar standaardbibliotheken in C en C++ (libc, libcxx), C++-uitbreidingen, multithreading op basis van pthreads, POSIX-API en vele multimediabibliotheken worden gebruikt. Daarnaast worden API's geleverd voor integratie met Web API en code in JavaScript.    <\/p>\n<p>Emscripten ondersteunt de transformatie van de output van de SDL2-bibliotheek naar Canvas en implementeert ondersteuning voor OpenGL en EGL via de WebGL-API, waardoor grafische applicaties en spellen (bijvoorbeeld er is een poort van de Qt-toolkit, en de spelmotoren Unreal Engine en Unity, evenals de simulatiemotor Bullet worden ondersteund) kunnen worden omgezet naar WebAssembly.     <\/p>\n<p>Naast het compileren van code in C\/C++ worden er ook projecten ontwikkeld om interpreters voor browsers uit te voeren voor <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/nl\/vps\/\"   title=\"virtuele machines\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2133\">virtuele machines<\/a> de talen Lua, C#, Python, Ruby en Perl. Bovendien is het mogelijk om front-ends voor LLVM te gebruiken die anders zijn dan Clang, zoals front-ends voor talen zoals Swift, Rust, D en Fortran.      <\/p>\n<p>De toewijzing van versie 4.0 is gerelateerd aan wijzigingen die de compatibiliteit op ABI-niveau schenden (bij het herbouwen van een project in Emscripten 4.0 is het noodzakelijk om de objectbestanden en bibliotheken die met eerdere versies van Emscripten zijn gebouwd, opnieuw op te bouwen). De belangrijkste wijzigingen in Emscripten 4.0 zijn:  <\/p>\n<ul>\n<li class=\"l\"> De optie &#171;-sWASM_LEAGCY_EXCEPTIONS&#187; is toegevoegd om te kiezen tussen de oude en nieuwe mechanismen voor uitzonderingafhandeling. Standaard wordt het oude mechanisme gebruikt, aangezien niet alle browsers de mogelijkheden van WebAssembly voor de nieuwe uitzonderingafhandelingsbehandelaars hebben ge\u00efmplementeerd.\n<li class=\"l\"> De componenten compiler-rt, libcxx, libcxxabi en libunwind zijn bijgewerkt naar de LLVM 19-tak.\n<li class=\"l\"> De minimaal ondersteunde versie van de Safari-browser in de builds (instelling MIN_SAFARI_VERSION) is verhoogd van 14.1 naar 15.0, wat het mogelijk maakte om standaard meerdere geavanceerde functies van WebAssembly in te schakelen:\n<ul>\n<li class=\"l\"> Het gebruik van nieuwe instructies voor het converteren van type float naar int (nontrapping-fptoint) is ingeschakeld, die in plaats van een uitzondering te genereren bij een overflow van de uitkomst de minimaal of maximaal mogelijke waarde teruggeven (noodzakelijk voor SIMD).\n<li class=\"l\"> De optie WASM_BIGINT is ingeschakeld, waarbij voor de uitwisseling van 64-bits gehele getallen tussen WebAssembly en JavaScript-code het type BigInt wordt gebruikt.\n<li class=\"l\"> De optie BULK_MEMORY is ingeschakeld, waarbij voor de implementatie van C-functies memcpy en memset de WebAssembly-instructies memory.copy en memory.fill worden gebruikt.    <\/ul>\n<li class=\"l\"> In de functie PATH.basename() is padnormalisatie (PATH.normalize()) uitgeschakeld, wat betekent dat de aanroep &#8216;PATH.basename(&#171;a\\\/&#187;)&#8217; nu &#171;.&#187; retourneert in plaats van &#171;a&#187;, en &#8216;PATH.basename(&#171;a\\\/b\\\/..&#187;)&#8217; retourneert &#171;..&#187; in plaats van &#171;a&#187;.\n<li class=\"l\"> Bij het gebruik van de optie &#171;-sMODULARIZE&#187; zijn factory-functies die WebAssembly-modules en objecten voor JavaScript cre\u00ebren en retourneren, nu gemarkeerd met het teken &#171;async&#187; wanneer gecompileerd in de modus WASM_ASYNC_COMPILATION, die standaard wordt toegepast.\n<li class=\"l\"> De mogelijkheid is toegevoegd om JavaScript-bibliotheken op te geven met de optie &#171;-lfoo.js&#187;. In tegenstelling tot de optie &#171;&#8212;js-library&#187; wordt de bibliotheek overal gezocht in de paden die via de optie &#171;-L&#187; zijn opgegeven.\n<li class=\"l\"> Bij het samenstellen in de debugmodus (-O0 of -sASSERTIONS) is standaard de debugversie van de malloc-functie ingeschakeld met actieve assert-controle, die fouten zoals een dubbele aanroep van de free() functie aan het licht brengt.        <\/ul>\n<p>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=62553\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f Emscripten 4.0, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 C\/C++ \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 LLVM, \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 WebAssembly. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 JavaScript-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438, \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 web-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Node.js \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u043d\u043e\u0433\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 wasm runtime. \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 [&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-121335","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=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f Emscripten 4.0, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 C\/C++ \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 LLVM, \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 WebAssembly.\" \/>\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\/nl\/blog\/news\/dostupen-emscripten-4-0-kompilyator-iz-c-c-v-webassembly\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d Emscripten 4.0, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438\u0437 C\/C++ \u0432 WebAssembly | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f Emscripten 4.0, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 C\/C++ \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 LLVM, \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 WebAssembly.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/news\/dostupen-emscripten-4-0-kompilyator-iz-c-c-v-webassembly\" \/>\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=\"2025-01-14T07:46:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-01-14T07:46:13+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\udd47Emscripten 4.0 is beschikbaar, de compiler van C\/C++ naar WebAssembly | ProHoster","description":"De release van het Emscripten toolkit 4.0 is gepubliceerd, waarmee je code in C\/C++ en andere talen, waarvoor frontend op basis van LLVM beschikbaar zijn, kunt compileren naar universele low-level intermediate code WebAssembly.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/news\/dostupen-emscripten-4-0-kompilyator-iz-c-c-v-webassembly","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d Emscripten 4.0, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438\u0437 C\/C++ \u0432 WebAssembly | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f Emscripten 4.0, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 C\/C++ \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 LLVM, \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 WebAssembly.","og:url":"https:\/\/prohoster.info\/nl\/blog\/news\/dostupen-emscripten-4-0-kompilyator-iz-c-c-v-webassembly","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":"2025-01-14T07:46:13+00:00","article:modified_time":"2025-01-14T07:46:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"121335","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-09 17:39:23","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 09:39:24","updated":"2026-02-09 17:39:23","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/121335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=121335"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/121335\/revisions"}],"predecessor-version":[{"id":159377,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/121335\/revisions\/159377"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=121335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=121335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=121335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}