Το Wasmer 2.0, ένα κιτ εργαλείων για τη δημιουργία εφαρμογών που βασίζονται σε WebAssembly, είναι διαθέσιμο

Το έργο Wasmer κυκλοφόρησε τη δεύτερη σημαντική κυκλοφορία του, αναπτύσσοντας έναν χρόνο εκτέλεσης για την εκτέλεση λειτουργικών μονάδων WebAssembly που μπορούν να χρησιμοποιηθούν για τη δημιουργία καθολικών εφαρμογών που μπορούν να εκτελούνται σε διαφορετικά λειτουργικά συστήματα, καθώς και για την εκτέλεση μη αξιόπιστου κώδικα μεμονωμένα. Ο κώδικας του έργου είναι γραμμένος σε Rust και διανέμεται με την άδεια MIT.

Η φορητότητα επιτυγχάνεται με τη μεταγλώττιση του κώδικα εφαρμογής σε ενδιάμεσο κώδικα WebAssembly χαμηλού επιπέδου, ο οποίος μπορεί να εκτελεστεί σε οποιοδήποτε λειτουργικό σύστημα ή να ενσωματωθεί σε προγράμματα σε άλλες γλώσσες προγραμματισμού. Τα προγράμματα είναι ελαφριά κοντέινερ που εκτελούν ψευδοκώδικα WebAssembly. Αυτά τα κοντέινερ δεν είναι συνδεδεμένα με το λειτουργικό σύστημα και μπορούν να περιλαμβάνουν κώδικα που γράφτηκε αρχικά σε οποιαδήποτε γλώσσα προγραμματισμού. Η εργαλειοθήκη Emscripten μπορεί να χρησιμοποιηθεί για τη μεταγλώττιση στο WebAssembly. Για τη μετάφραση του WebAssembly σε κώδικα μηχανής της τρέχουσας πλατφόρμας, υποστηρίζει τη σύνδεση διαφόρων backend μεταγλώττισης (Singlepass, Cranelift, LLVM) και μηχανών (με χρήση JIT ή δημιουργίας κώδικα μηχανής).

Ο έλεγχος πρόσβασης και η αλληλεπίδραση με το σύστημα παρέχονται χρησιμοποιώντας το WASI (WebAssembly System Interface) API, το οποίο παρέχει διεπαφές προγραμματισμού για εργασία με αρχεία, υποδοχές και άλλες λειτουργίες που παρέχονται από το λειτουργικό σύστημα. Οι εφαρμογές είναι απομονωμένες από το κύριο σύστημα σε περιβάλλον sandbox και έχουν πρόσβαση μόνο στη δηλωμένη λειτουργικότητα (ένας μηχανισμός ασφαλείας που βασίζεται στη διαχείριση δυνατοτήτων - για ενέργειες με κάθε έναν από τους πόρους (αρχεία, κατάλογοι, υποδοχές, κλήσεις συστήματος, κ.λπ.), η αίτηση πρέπει να έχει τις κατάλληλες εξουσίες).

Για να εκκινήσετε ένα κοντέινερ WebAssembly, απλώς εγκαταστήστε το Wasmer στο σύστημα χρόνου εκτέλεσης, το οποίο παρέχεται χωρίς εξωτερικές εξαρτήσεις ("curl https://get.wasmer.io -sSfL | sh") και εκτελέστε το απαραίτητο αρχείο ("wasmer test.wasm" ). Τα προγράμματα διανέμονται με τη μορφή κανονικών λειτουργικών μονάδων WebAssembly, η διαχείριση των οποίων μπορεί να γίνει με τη χρήση του διαχειριστή πακέτων WAPM. Το Wasmer είναι επίσης διαθέσιμο ως βιβλιοθήκη που μπορεί να χρησιμοποιηθεί για την ενσωμάτωση κώδικα WebAssembly σε προγράμματα Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir και Java.

Η πλατφόρμα σάς επιτρέπει να επιτύχετε απόδοση εκτέλεσης εφαρμογών κοντά σε εγγενείς συγκροτήσεις. Χρησιμοποιώντας το Native Object Engine για τη λειτουργική μονάδα WebAssembly, μπορείτε να δημιουργήσετε κώδικα μηχανής ("wasmer compile -native" για τη δημιουργία προμεταγλωττισμένων αρχείων αντικειμένων .so, .dylib και .dll), ο οποίος απαιτεί ελάχιστο χρόνο εκτέλεσης για την εκτέλεση, αλλά διατηρεί όλη την απομόνωση του sandbox χαρακτηριστικά. Είναι δυνατή η παροχή προμεταγλωττισμένων προγραμμάτων με ενσωματωμένο Wasmer. Το Rust API και το Wasm-C-API προσφέρονται για τη δημιουργία πρόσθετων και επεκτάσεων.

Μια σημαντική αλλαγή στον αριθμό έκδοσης του Wasmer σχετίζεται με την εισαγωγή μη συμβατών αλλαγών στο εσωτερικό API, οι οποίες, σύμφωνα με τους προγραμματιστές, δεν θα επηρεάσουν το 99% των χρηστών της πλατφόρμας. Μεταξύ των αλλαγών που διακόπτουν τη συμβατότητα, υπάρχει επίσης μια αλλαγή στη μορφή των σειριακών μονάδων Wasm (οι μονάδες που έχουν σειριοποιηθεί στο Wasmer 1.0 δεν θα μπορούν να χρησιμοποιηθούν στο Wasmer 2.0). Άλλες αλλαγές:

  • Υποστήριξη για οδηγίες SIMD (Single Instruction, Multiple Data), που επιτρέπει την παραλληλοποίηση των λειτουργιών δεδομένων. Οι τομείς στους οποίους η χρήση του SIMD μπορεί να βελτιώσει σημαντικά την απόδοση περιλαμβάνουν μηχανική εκμάθηση, κωδικοποίηση και αποκωδικοποίηση βίντεο, επεξεργασία εικόνας, προσομοίωση φυσικής διαδικασίας και χειρισμό γραφικών.
  • Υποστήριξη για τύπους αναφοράς, επιτρέποντας στις μονάδες Wasm να έχουν πρόσβαση σε πληροφορίες σε άλλες μονάδες ή στο υποκείμενο περιβάλλον.
  • Έχουν γίνει σημαντικές βελτιστοποιήσεις απόδοσης. Η ταχύτητα του χρόνου εκτέλεσης LLVM με αριθμούς κινητής υποδιαστολής έχει αυξηθεί κατά περίπου 50%. Οι κλήσεις συναρτήσεων έχουν επιταχυνθεί σημαντικά με τη μείωση των καταστάσεων που απαιτούν πρόσβαση στον πυρήνα. Η απόδοση της γεννήτριας κώδικα Cranelift έχει αυξηθεί κατά 40%. Μειωμένος χρόνος αφαίρεσης δεδομένων.
    Το Wasmer 2.0, ένα κιτ εργαλείων για τη δημιουργία εφαρμογών που βασίζονται σε WebAssembly, είναι διαθέσιμο
    Το Wasmer 2.0, ένα κιτ εργαλείων για τη δημιουργία εφαρμογών που βασίζονται σε WebAssembly, είναι διαθέσιμο
  • Για να αντικατοπτρίζει με μεγαλύτερη ακρίβεια την ουσία, τα ονόματα των κινητήρων έχουν αλλάξει: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Πηγή: opennet.ru

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