{"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\/no\/blog\/news\/dostupen-emscripten-4-0-kompilyator-iz-c-c-v-webassembly","title":{"rendered":"Emscripten 4.0 er tilgjengelig, en kompilator fra C\/C++ til WebAssembly","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Versjonen av Emscripten 4.0 er offentliggjort, og den lar deg kompilere kode skrevet i C\/C++ og andre spr\u00e5k som har frontender bygget p\u00e5 LLVM, til et universelt lavniv\u00e5 mellomliggende WebAssembly-kode. Det resulterende produktet kan brukes til integrasjon med JavaScript-prosjekter, kj\u00f8res i nettleseren, benyttes i Node.js eller skape selvstendige plattformuavhengige applikasjoner som kj\u00f8res ved hjelp av wasm-runtime. Prosjektkoden er lisensiert under MIT. Kompilatoren bruker bidrag fra LLVM-prosjektet, og for generering av WebAssembly og optimalisering brukes biblioteket Binaryen.    <\/p>\n<p>Hovedm\u00e5let med Emscripten er \u00e5 lage et verkt\u00f8y som lar kode kj\u00f8res p\u00e5 nettet uavhengig av programmeringsspr\u00e5ket koden opprinnelig er skrevet i. De kompilert applikasjonene kan bruke standardbibliotekene libc og libcxx (libc, libcxx), C++-utvidelser, multithreading basert p\u00e5 pthreads, POSIX-APIer, og mange multimedia-biblioteker. Separate APIer tilbys for integrasjon med Web API-er og kode skrevet i JavaScript.    <\/p>\n<p>Emscripten st\u00f8tter oversettelse av SDL2-bibliotekets utdata gjennom Canvas, samt implementerer st\u00f8tte for OpenGL og EGL gjennom WebGL-API-et, noe som muliggj\u00f8r konvertering av grafiske applikasjoner og spill til WebAssembly (for eksempel er det en port av Qt-verkt\u00f8ysettet, og spillmotorene Unreal Engine og Unity er st\u00f8ttet, samt simuleringsmotoren Bullet).     <\/p>\n<p>I tillegg til kompilering av C\/C++-kode, utvikles prosjekter for \u00e5 kj\u00f8re tolker i nettleserne for <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/no\/vps\/\"   title=\"virtual machines\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2133\">virtual machines<\/a> spr\u00e5k som Lua, C#, Python, Ruby, og Perl. I tillegg er det mulig \u00e5 bruke frontender til LLVM som er forskjellige fra Clang, for eksempel frontender for spr\u00e5k som Swift, Rust, D, og Fortran.      <\/p>\n<p>Tildelingen av versjonsnummer 4.0 er knyttet til endringer som bryter ABI-kompatibilitet (ved ombygging av prosjektet i Emscripten 4.0 m\u00e5 objektfiler og biblioteker bygget med tidligere versjoner av Emscripten ombygges). De viktigste endringene i Emscripten 4.0 er:  <\/p>\n<ul>\n<li class=\"l\"> Alternativem\u00e5ten &#171;-sWASM_LEAGCY_EXCEPTIONS&#187; er lagt til for \u00e5 velge mellom den gamle og den nye unntaksh\u00e5ndteringsmetoden. Som standard fortsetter den \u00e5 bruke den gamle metoden, ettersom ikke alle nettlesere har implementert WebAssembly-funksjonene som er n\u00f8dvendige for \u00e5 h\u00e5ndtere de nye unntaksh\u00e5ndtererne.\n<li class=\"l\"> Komponentene compiler-rt, libcxx, libcxxabi og libunwind er oppdatert til LLVM 19-grenen.\n<li class=\"l\"> Den minimalt st\u00f8ttede versjonen av Safari-nettleseren (innstillingen MIN_SAFARI_VERSION) har blitt hevet fra 14.1 til 15.0, noe som gj\u00f8r det mulig \u00e5 aktivere flere avanserte funksjoner i WebAssembly som standard.\n<ul>\n<li class=\"l\"> Bruken av nye instruksjoner for \u00e5 konvertere float til int (nontrapping-fptoint) er inkludert, som i stedet for \u00e5 generere et unntak ved overflyt returnerer det minimale eller maksimale mulige verdiene (n\u00f8dvendig for SIMD).\n<li class=\"l\"> Alternativet WASM_BIGINT er aktivert, som gir mulighet for utveksling av 64-biters heltallsverdier mellom WebAssembly og JavaScript-kode ved hjelp av typen BigInt.\n<li class=\"l\"> Alternativet BULK_MEMORY er aktivert, som gj\u00f8r at WebAssembly-instruksjonene memory.copy og memory.fill brukes til implementering av C-funksjoner memcpy og memset.    <\/ul>\n<li class=\"l\"> I funksjonen PATH.basename() er normalisering av stier (PATH.normalize()) deaktivert, dvs. kallet &#8216;PATH.basename(&#171;a\/ .&#187;)&#8217; vil n\u00e5 returnere &#171;.&#187; i stedet for &#171;a&#187;, og &#8216;PATH.basename(&#171;a\/b\/..&#187;)&#8217; vil returnere &#171;..&#187; i stedet for &#171;a&#187;.\n<li class=\"l\"> N\u00e5r alternativet &#171;-sMODULARIZE&#187; brukes, er fabrikkfunksjonene som oppretter og returnerer forekomster av WebAssembly-moduler og objekter for JavaScript, n\u00e5 merket med &#171;async&#187; n\u00e5r de kompileres i MODUS WASM_ASYNC_COMPILATION, som er aktivert som standard.\n<li class=\"l\"> Muligheten til \u00e5 spesifisere JavaScript-biblioteker ved \u00e5 bruke alternativet &#171;-lfoo.js&#187; er lagt til. I motsetning til alternativet &#171;&#8212;js-library&#187; s\u00f8ker biblioteket i alle stiene som er angitt med alternativet &#171;-L&#187;.\n<li class=\"l\"> N\u00e5r du kompilerer i feils\u00f8kingsmodus (-O0 eller -sASSERTIONS) er det standard \u00e5 bruke en feils\u00f8kingsversjon av malloc-funksjonen med aktivert assert-sjekking, som avdekker feil som dobbel anrop av free()-funksjonen.        <\/ul>\n<p>Kilde: <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.5 - 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\/no\/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.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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 tilgjengelig, kompilator fra C\/C++ til WebAssembly | ProHoster","description":"Utgivelsen av Emscripten-verkt\u00f8ysettet 4.0 er kunngjort, som gj\u00f8r det mulig \u00e5 kompilere kode skrevet i C\/C++ og andre spr\u00e5k med frontend-er basert p\u00e5 LLVM til universell lavniv\u00e5 mellomkode i WebAssembly.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/news\/dostupen-emscripten-4-0-kompilyator-iz-c-c-v-webassembly","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/121335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=121335"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/121335\/revisions"}],"predecessor-version":[{"id":159377,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/121335\/revisions\/159377"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=121335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=121335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=121335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}