nylig utgivelsen av den nye versjonen av Emscripten 3.0-kompilatoren ble annonsert, som er kjennetegnet ved å tillate at kode kompileres i C/C++ og andre språk som LLVM-baserte grensesnitt er tilgjengelige for, i en universal mellomvare WebAssembly på lavt nivå.
Hovedfunksjonen til denne kompileringen er for dens påfølgende integrasjon med JavaScript-prosjekter, kjøres i en nettleser og bruk i Node. Js eller lag frittstående applikasjoner på tvers av plattformer som kjører med wasm runtime.
Om Emscripten
Hovedmålet utvikling av Emscripten-prosjektet er å lage et verktøy som lar deg kjøre kode på nettet, uavhengig av programmeringsspråket det er skrevet på.
Kompilerte applikasjoner kan bruke standard C- og C++-biblioteksanrop (libc, libcxx), C++-utvidelser, pthreads-basert multithreading, POSIX API og mange multimediebiblioteker. APIer for integrasjon med web-API og JavaScript-kode leveres separat.
Melde deg på støtter streaming av SDL2-bibliotekutgang via Canvas, og gir også støtte for OpenGL og EGL gjennom WebGL, slik at du kan konvertere grafikkapplikasjoner og spill til WebAssembly.
Praktisk talt enhver bærbar C- eller C++-kodebase kan kompileres til WebAssembly ved hjelp av EmscriptenFra spill med høy ytelse som trenger å gjengi grafikk, spille av lyder og laste og behandle filer, til applikasjonsrammeverk som Qt. Emscripten har allerede blitt brukt til å konvertere en veldig lang liste med virkelige kodebaser til WebAssembly, inkludert kommersielle kodebaser som Unreal Engine 4 og Unity Engine.
I tillegg til å kompilere C/C++-kode, utvikles prosjekter separat for å sikre at tolker og virtuelle maskiner for Lua, C #, Python, Ruby og Perl starter i nettleserne. Det er også mulig å bruke ikke-Clang-grensesnitt på LLVM tilgjengelig for språk som Swift, Rust, D og Fortran.
Det skal bemerkes at det er forskjeller mellom native runtime og Emscripten, som betyr at generelt f.eksDet er nødvendig å gjøre noen endringer i den opprinnelige koden. Når det er sagt, trenger mange applikasjoner bare å endre måten de definerer hovedsløyfen på og også endre filhåndteringen for å imøtekomme nettleser-/JavaScript-begrensninger.
Det er også begrensninger som kan gjøre noe kode enklere å migrere - les retningslinjene for portabilitet for å finne ut hvor du kan trenge å bruke mer innsats.
De viktigste nye funksjonene i Emscripten 3.0
I denne nye versjonen som presenteres, har musl C-biblioteket brukt i emscripten blitt oppdatert til versjon 1.2.2 (versjon 1.1.15 ble brukt i Emscripten 2.x-grenen).
Fra parseTools.js-biblioteket ble en del av funksjonene fjernet, som hovedsakelig brukes i prosjektet: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntToHex, IEEyptime.Euctile
Mens I malene shell.html og shell_minimal.html, utdataene fra feilmeldingene som oppstår under emscripten-operasjonen og utstedt av applikasjonen gjennom stderr den endres som standard til å bruke console.warn i stedet for console.error.
Det er også fremhevet at lagt til muligheten til å spesifisere en spesifikk tekstkoding som brukes i filnavn. Koding kan spesifiseres som et suffiks når filnavnet sendes, for eksempel "a.rsp.utf-8" eller "a.rsp.cp1251").
Til slutt, hvis du er interessert i å lære mer om Emscripten, kan du se detaljene om prosjektet i sin offesiell nettside.
Og på samme måte kan du konsultere dokumentasjon på nettet om hvordan du bruker Emscripten, en referanseside som vi kan anbefale er Mozilla-utviklernettstedet: https://developer.mozilla.org.
Det er også viktig å nevne at prosjektkoden er distribuert under MIT-lisensen. Kompilatoren bruker utviklinger fra LLVM-prosjektet og Binaryen-biblioteket brukes til å generere WebAssembly og optimalisering. Du kan sjekke koden din kilde på GitHub.