Emscripten 3.0, μια αλυσίδα εργαλείων δημιουργίας για WebAssembly με χρήση LLVM

Πρόσφατα ανακοινώθηκε η κυκλοφορία της νέας έκδοσης του μεταγλωττιστή Emscripten 3.0, το οποίο χαρακτηρίζεται από το ότι επιτρέπει τη μεταγλώττιση κώδικα σε C / C ++ και σε άλλες γλώσσες για τις οποίες είναι διαθέσιμα frontend που βασίζονται σε LLVM, σε ένα χαμηλού επιπέδου καθολικό ενδιάμεσο λογισμικό WebAssembly.

Η κύρια λειτουργία αυτής της μεταγλώττισης είναι η μετέπειτα ενσωμάτωσή της με JavaScript Projects, που εκτελούνται σε πρόγραμμα περιήγησης Ιστού, χρήση στο Node. Js ή δημιουργήστε αυτόνομες εφαρμογές πολλαπλών πλατφορμών που εκτελούνται με το χρόνο εκτέλεσης wasm.

Σχετικά με το Emscripten

Ο κύριος στόχος ανάπτυξη του έργου Emscripten είναι να δημιουργήσετε ένα εργαλείο που σας επιτρέπει να εκτελείτε κώδικα στον Ιστό, ανεξάρτητα από τη γλώσσα προγραμματισμού στην οποία είναι γραμμένο.

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

Εγγραφείτε υποστηρίζει ροή εξόδου βιβλιοθήκης SDL2 μέσω Canvas, και παρέχει επίσης υποστήριξη OpenGL και EGL μέσω WebGL, επιτρέποντάς σας να μετατρέψετε εφαρμογές γραφικών και παιχνίδια σε WebAssembly.

Σχεδόν οποιαδήποτε φορητή βάση κώδικα C ή C ++ μπορεί να μεταγλωττιστεί στο WebAssembly χρησιμοποιώντας το EmscriptenΑπό παιχνίδια υψηλής απόδοσης που χρειάζονται απόδοση γραφικών, αναπαραγωγή ήχων και φόρτωση και επεξεργασία αρχείων, έως πλαίσια εφαρμογών όπως το Qt. Το Emscripten έχει ήδη χρησιμοποιηθεί για τη μετατροπή μιας πολύ μεγάλης λίστας βάσεων κώδικα πραγματικού κόσμου σε WebAssembly, συμπεριλαμβανομένων εμπορικών βάσεων κωδικών όπως το Unreal Engine 4 και το Unity Engine.

Εκτός από τη μεταγλώττιση κώδικα C / C ++, τα έργα αναπτύσσονται ξεχωριστά για να διασφαλιστεί ότι οι διερμηνείς και οι εικονικές μηχανές για Lua, C #, Python, Ruby και Perl ξεκινούν στα προγράμματα περιήγησης. Είναι επίσης δυνατή η εφαρμογή μη-Clang διεπαφών στο LLVM που είναι διαθέσιμο για γλώσσες όπως Swift, Rust, D και Fortran.

Ιδιαίτερα υπάρχουν διαφορές μεταξύ εγγενούς χρόνου εκτέλεσης και Emscripten, που σημαίνει ότι, γενικά, πΕίναι απαραίτητο να κάνετε κάποιες αλλαγές στον εγγενή κώδικα. Τούτου λεχθέντος, πολλές εφαρμογές θα χρειαστεί μόνο να αλλάξουν τον τρόπο με τον οποίο ορίζουν τον κύριο βρόχο τους και επίσης να τροποποιήσουν τον χειρισμό των αρχείων τους για να ικανοποιήσουν τους περιορισμούς του προγράμματος περιήγησης / JavaScript.

Υπάρχουν επίσης περιορισμοί που μπορούν να κάνουν πιο εύκολη τη μετεγκατάσταση ορισμένων κωδικών - διαβάστε τις Οδηγίες φορητότητας για να προσδιορίσετε πού μπορεί να χρειαστεί να ξοδέψετε περισσότερη προσπάθεια.

Κύρια νέα χαρακτηριστικά του Emscripten 3.0

Σε αυτή τη νέα έκδοση που παρουσιάζεται, η βιβλιοθήκη musl C που χρησιμοποιείται στο emscripten έχει ενημερωθεί στην έκδοση 1.2.2 (η έκδοση 1.1.15 χρησιμοποιήθηκε στον κλάδο Emscripten 2.x).

Από τη βιβλιοθήκη parseTools.js αφαιρέθηκε ένα μέρος των συναρτήσεων, οι οποίες χρησιμοποιούνται κυρίως στο έργο: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntToHexType, ComplexTime.

ενώ Στα πρότυπα shell.html και shell_minimal.html, η έξοδος των μηνυμάτων σφάλματος που συμβαίνουν κατά τη λειτουργία emscripten και εκδίδονται από την εφαρμογή μέσω του stderr έχει αλλάξει από προεπιλογή να χρησιμοποιεί console.warn αντί για console.error.

Τονίζεται επίσης ότι πρόσθεσε τη δυνατότητα να καθορίσει μια συγκεκριμένη κωδικοποίηση κειμένου που χρησιμοποιείται στα ονόματα αρχείων. Η κωδικοποίηση μπορεί να καθοριστεί ως επίθημα κατά τη μετάδοση του ονόματος αρχείου, για παράδειγμα "a.rsp.utf-8" ή "a.rsp.cp1251").

Τέλος, εάν ενδιαφέρεστε να μάθετε περισσότερα σχετικά με το Emscripten, μπορείτε να συμβουλευτείτε τις λεπτομέρειες του έργου σε αυτό επίσημη ιστοσελίδα.

Και με τον ίδιο τρόπο, μπορείτε να συμβουλευτείτε τεκμηρίωση στον ιστό σχετικά με τον τρόπο χρήσης του Emscripten, έναν ιστότοπο αναφοράς που μπορούμε να προτείνουμε είναι ο ιστότοπος προγραμματιστών Mozilla: https://developer.mozilla.org.

Επίσης, είναι σημαντικό να αναφέρουμε ότι ο κωδικός του έργου διανέμεται υπό την άδεια MIT. Ο μεταγλωττιστής χρησιμοποιεί εξελίξεις από το έργο LLVM και η βιβλιοθήκη Binaryen χρησιμοποιείται για τη δημιουργία WebAssembly και τη βελτιστοποίηση. Μπορείτε να ελέγξετε τον κωδικό σας πηγή στο GitHub.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.