nemrég bejelentették az Emscripten 3.0 fordító új verziójának megjelenését, amelyre jellemző, hogy lehetővé teszi a kód lefordítását C / C ++ és más nyelveken, amelyekhez LLVM-alapú frontendek állnak rendelkezésre, alacsony szintű univerzális köztes WebAssembly-ben.
Ennek az összeállításnak a fő funkciója a JavaScript-projektekkel való későbbi integráció, webböngészőben futtatva, Node-ban történő használat mellett. Js vagy hozzon létre többplatformos önálló alkalmazásokat, amelyek a wasm futtatókörnyezetével futnak.
Az Emscriptenről
A fő cél az Emscripten projekt fejlesztése egy olyan eszköz létrehozása, amely lehetővé teszi kód futtatását a weben, függetlenül attól, hogy milyen programozási nyelven íródott.
A lefordított alkalmazások szabványos C és C ++ könyvtárhívásokat használhatnak (libc, libcxx), C ++ kiterjesztések, pthreads alapú többszálú kezelés, POSIX API és sok multimédiás könyvtár. A webes API-val és a JavaScript-kóddal való integrációhoz szükséges API-k külön állnak rendelkezésre.
Regisztrálj támogatja az SDL2 könyvtár kimenetének Canvason keresztüli streamelését, valamint OpenGL- és EGL-támogatást is biztosít a WebGL-en keresztül, lehetővé téve a grafikus alkalmazások és játékok WebAssembly-re való konvertálását.
Gyakorlatilag bármilyen hordozható C vagy C ++ kódbázis lefordítható WebAssembly-be az Emscripten segítségévelA nagy teljesítményű játékoktól, amelyeknek grafikát kell renderelni, hangokat kell lejátszani, fájlokat betölteni és feldolgozni, az olyan alkalmazáskeretrendszerekig, mint a Qt. Az Emscripten-t már használták a valós kódbázisok nagyon hosszú listájának WebAssembly-re való konvertálására, beleértve a kereskedelmi kódbázisokat, például az Unreal Engine 4-et és a Unity Engine-t.
A C / C ++ kód fordítása mellett külön projekteket fejlesztenek ki annak biztosítására, hogy a Lua, C #, Python, Ruby és Perl értelmezői és virtuális gépei elinduljanak a böngészőkben. Lehetőség van nem Clang interfészek alkalmazására az LLVM-hez is, amelyek olyan nyelveken érhetők el, mint a Swift, Rust, D és Fortran.
Meg kell jegyezni, hogy különbségek vannak a natív futtatókörnyezet és az Emscripten között, ami azt jelenti, hogy általában plNéhány változtatást kell végrehajtani a natív kódon. Ennek ellenére sok alkalmazásnak csak a fő hurok meghatározásának módját kell megváltoztatnia, és módosítania kell a fájlkezelést is, hogy megfeleljen a böngésző/JavaScript korlátozásoknak.
Vannak olyan korlátozások is, amelyek megkönnyíthetik egyes kódok áttelepítését – olvassa el a hordozhatósági irányelveket, hogy meghatározza, hol kell több erőfeszítést költenie.
Az Emscripten 3.0 fő újdonságai
Ebben a bemutatott új verzióban az emscriptenben használt musl C könyvtár az 1.2.2-es verzióra frissült (az Emscripten 1.1.15.x ágban az 2-ös verziót használták).
A parseTools.js könyvtárból eltávolították a projektben főként használt függvények egy részét: RemovePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralype,ComppeypeTpiletipe,CommentypeTpiletipe,CommentypeTpiletipe _IntTo.
míg A shell.html és shell_minimal.html sablonokban a hibaüzenetek kimenete amelyek az emscripten művelet során fordulnak elő, és az alkalmazás által kiadott stderr-en keresztül alapértelmezés szerint a console.warn használatára módosul a console.error helyett.
Azt is kiemelik hozzáadta a fájlnevekben használt konkrét szövegkódolás megadásának lehetőségét. A kódolás megadható utótagként a fájlnév átadásakor, például "a.rsp.utf-8" vagy "a.rsp.cp1251").
Végül, ha többet szeretne megtudni az Emscriptenről, tekintse meg a projekt részleteit abban hivatalos honlapján.
Ugyanígy megtekintheti a weben található dokumentációt az Emscripten használatáról, egy referenciaoldal, amelyet ajánlhatunk a Mozilla fejlesztői webhelye: https://developer.mozilla.org.
Azt is fontos megemlíteni, hogy a projekt kódja az MIT licenc alatt kerül terjesztésre. A fordító az LLVM projekt fejlesztéseit használja, a Binaryen könyvtár pedig a WebAssembly generálására és az optimalizálásra. Ellenőrizheti a kódját forrás a GitHubon.