Διατίθεται μεταγλωττιστής Emscripten 3.0, C/C++ σε WebAssembly

Δημοσιεύτηκε η κυκλοφορία του μεταγλωττιστή Emscripten 3.0, επιτρέποντάς σας να μεταγλωττίσετε κώδικα σε C/C++ και σε άλλες γλώσσες για τις οποίες είναι διαθέσιμα τα frontends που βασίζονται σε LLVM σε ενδιάμεσο κώδικα καθολικού χαμηλού επιπέδου WebAssembly, για μετέπειτα ενσωμάτωση με έργα JavaScript, που εκτελούνται σε ένα πρόγραμμα περιήγησης ιστού και χρησιμοποιήστε το στο Node.js ή δημιουργήστε αυτόνομες εφαρμογές πολλαπλών πλατφορμών που εκτελούνται με χρήση χρόνου εκτέλεσης wasm. Ο κωδικός του έργου διανέμεται με την άδεια MIT. Ο μεταγλωττιστής χρησιμοποιεί εξελίξεις από το έργο LLVM και η βιβλιοθήκη Binaryen χρησιμοποιείται για δημιουργία και βελτιστοποίηση WebAssembly.

Ο κύριος στόχος του έργου Emscripten είναι να δημιουργήσει ένα εργαλείο που σας επιτρέπει να εκτελείτε κώδικα στον Ιστό ανεξάρτητα από τη γλώσσα προγραμματισμού στην οποία είναι γραμμένος ο κώδικας. Οι μεταγλωττισμένες εφαρμογές μπορούν να χρησιμοποιούν κλήσεις σε τυπικές βιβλιοθήκες C και C++ (libc, libcxx), επεκτάσεις C++, multithreading βάσει pthreads, API POSIX και πολλές βιβλιοθήκες πολυμέσων. Τα API για ενοποίηση με το Web API και τον κώδικα JavaScript παρέχονται ξεχωριστά.

Το Emscripten υποστηρίζει τη μετάδοση της εξόδου της βιβλιοθήκης SDL2 μέσω Canvas και παρέχει επίσης υποστήριξη για OpenGL και EGL μέσω WebGL, το οποίο σας επιτρέπει να μετατρέπετε εφαρμογές γραφικών και παιχνίδια σε WebAssembly (για παράδειγμα, υπάρχει μια θύρα του κιτ εργαλείων Qt και υποστηρίζει το Unreal Engine 4 και Unit game engines, φυσική μηχανή Bullet). Εκτός από τη μεταγλώττιση κώδικα σε C/C++, έργα αναπτύσσονται ξεχωριστά για να διασφαλιστεί η εκκίνηση διερμηνέων και εικονικών μηχανών σε προγράμματα περιήγησης για τις γλώσσες Lua, C#, Python, Ruby και Perl. Είναι επίσης δυνατή η εφαρμογή μη-Clang frontend στο LLVM, διαθέσιμο για γλώσσες όπως Swift, Rust, D και Fortran.

Σημαντικές αλλαγές στο Emscripten 3.0:

  • Η βιβλιοθήκη musl C που χρησιμοποιείται στο emscripten έχει ενημερωθεί στην έκδοση 1.2.2 (η έκδοση 2 χρησιμοποιήθηκε στον κλάδο Emscripten 1.1.15.x).
  • Ένα τμήμα των συναρτήσεων που χρησιμοποιήθηκαν κυρίως στο έργο έχουν αφαιρεθεί από τη βιβλιοθήκη parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType isVectorType, isStructuralType isVectorType, isStructuralTypeStructuralTypeStreturpe ctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTo kenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Στα πρότυπα shell.html και shell_minimal.html, η έξοδος των μηνυμάτων σφάλματος που εμφανίζονται κατά τη λειτουργία του emscripten και εξάγονται από την εφαρμογή μέσω του stderr αλλάζει από προεπιλογή στη χρήση console.warn αντί για console.error.
  • Προστέθηκε η δυνατότητα καθορισμού μιας συγκεκριμένης κωδικοποίησης κειμένου που χρησιμοποιείται στα ονόματα αρχείων. Η κωδικοποίηση μπορεί να καθοριστεί με τη μορφή επιθέματος κατά τη μετάδοση του ονόματος αρχείου, για παράδειγμα, "a.rsp.utf-8" ή "a.rsp.cp1251").

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο