Το Wasmer 3.0 έρχεται με βελτιώσεις σε WASI, API, διαχείριση μνήμης και πολλά άλλα

Wasmer

Το Wasmer είναι ένας γρήγορος και ασφαλής χρόνος εκτέλεσης WebAssembly που επιτρέπει σε εξαιρετικά ελαφριά κοντέινερ να τρέχουν οπουδήποτε: από επιτραπέζιους υπολογιστές έως συσκευές cloud, edge και IoT

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

La δυνατότητα εκτέλεσης της ίδιας εφαρμογής σε διαφορετικές πλατφόρμες παρέχεται με τη μεταγλώττιση του κώδικα σε ενδιάμεσο κώδικα WebAssembly χαμηλού επιπέδου που μπορεί να εκτελεστεί σε οποιοδήποτε λειτουργικό σύστημα ή να ενσωματωθεί σε προγράμματα σε άλλες γλώσσες προγραμματισμού. Τα προγράμματα είναι ελαφριά κοντέινερ που εκτελούν ψευδοκώδικα WebAssembly.

Αυτά τα κοντέινερ δεν είναι συνδεδεμένα με το λειτουργικό σύστημα και μπορούν να περιέχουν κώδικα αρχικά γραμμένου σε οποιαδήποτε γλώσσα προγραμματισμού.

Για να μεταφράσετε το WebAssembly σε τρέχοντα κώδικα μηχανής πλατφόρμας, εσείς υποστηρίζει τη σύνδεση διαφορετικών backends κατασκευής (Singlepass, Cranelift, LLVM) και κινητήρες (με χρήση JIT ή παραγωγής κωδικού μηχανής). Ο έλεγχος πρόσβασης και η αλληλεπίδραση με το σύστημα παρέχονται από το WASI (WebAssembly System Interface) API, το οποίο παρέχει διεπαφές προγραμματισμού για εργασία με αρχεία, υποδοχές και άλλες λειτουργίες που παρέχονται από το λειτουργικό σύστημα.

Η πλατφόρμα σας επιτρέπει να επιτύχετε απόδοση εκτέλεσης εφαρμογής κοντά σε αυτήν των εγγενών εκδόσεων.

Οι κύριες καινοτομίες του Wasmer 3.0

Σε αυτή τη νέα έκδοση του Wasmer 3.0, το δυνατότητα δημιουργίας εγγενών εκτελέσιμων αρχείων για οποιαδήποτε πλατφόρμα. Η εντολή "wasmer create-exe» έχει επανασχεδιαστεί πλήρως για να μετατρέψει ένα ενδιάμεσο αρχείο κώδικα WebAssembly σε αυτόνομα εκτελέσιμα για πλατφόρμες Linux, Windows και macOS που μπορούν να εκτελεστούν χωρίς εγκατάσταση του Wasmer.

Μια άλλη καινοτομία που παρουσιάζεται είναι ότι το δυνατότητα εκτέλεσης πακέτων WAPM που βρίσκεται στον κατάλογο wapm.io χρησιμοποιώντας την εντολή "wasmer run". Για παράδειγμα, εκτελέστε "wasmer run python/python» θα κατεβάσει το πακέτο python από το αποθετήριο wapm.io και θα το εκτελέσει.

Το Wasmer Rust API έχει επανασχεδιαστεί πλήρως, αλλάζοντας τον τρόπο που χειρίζεται τη μνήμη και παρέχοντας τη δυνατότητα αποθήκευσης αντικειμένων Wasm με ασφάλεια στη δομή Store.

Σε αυτή τη νέα έκδοση του Wasmer 3.0 επισημαίνεται επίσης το βελτιωμένη εφαρμογή WASI API (Διασύνδεση συστήματος WebAssembly), εκτός από τη διόρθωση προβλημάτων στο WASI API για εργασία με το σύστημα αρχείων. Οι εσωτερικοί τύποι έχουν επανασχεδιαστεί χρησιμοποιώντας WAI (WebAssembly Interfaces), κάτι που θα επιτρέψει μια σειρά νέων λειτουργιών να υλοποιηθούν στο μέλλον.

Εκτός από αυτό, οι κινητήρες έχουν επίσης απλοποιηθεί, αφού αντί για ξεχωριστούς κινητήρες για JIT, δυναμική και στατική σύνδεση (Universal, Dylib, StaticLib), τώρα προσφέρει έναν κοινό κινητήρα και φορτώνει και αποθηκεύει κώδικα που ελέγχεται στο επίπεδο ρύθμισης παραμέτρων.

Για την αποσειροποίηση τεχνουργημάτων, χρησιμοποιείται το πλαίσιο rkyv, που παρέχει μια λειτουργία μηδενικής αντιγραφής, δηλαδή δεν απαιτεί πρόσθετη εκχώρηση μνήμης και εκτελεί αποσειροποίηση χρησιμοποιώντας μόνο την αρχική προσωρινή μνήμη.

Του άλλες αλλαγές που ξεχωρίζουν από αυτήν τη νέα έκδοση:

  • Η χρήση του rkyv αύξησε σημαντικά την ταχύτητα εκκίνησης.
  • Ο μεταγλωττιστής Singlepass έχει βελτιωθεί για να υποστηρίζει συναρτήσεις πολλαπλών τιμών, να βελτιώνει την αξιοπιστία και να προσθέτει υποστήριξη για πλαίσια χειρισμού εξαιρέσεων.
  • Το σύνολο των εξαρτημάτων wasmer-js έχει υλοποιηθεί για την εκτέλεση του Wasmer σε ένα πρόγραμμα περιήγησης ιστού και την αλληλεπίδραση μαζί του από JavaScript χρησιμοποιώντας τη βιβλιοθήκη wasm-bindgen.
  • Μια νέα δομή έχει προταθεί. MemoryView που επιτρέπει την ανάγνωση και εγγραφή δεδομένων σε μια περιοχή γραμμικής μνήμης.

Τέλος, πρέπει να αναφερθεί ότι τα προγράμματα διανέμονται με τη μορφή συνηθισμένων μονάδων WebAssembly, τα οποία μπορούν να διαχειρίζονται με τη χρήση του διαχειριστή πακέτων WAPM. Το Wasmer είναι επίσης διαθέσιμο ως βιβλιοθήκη που μπορεί να χρησιμοποιηθεί για την ενσωμάτωση κώδικα WebAssembly σε προγράμματα Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir και Java.

Ο κώδικας του έργου είναι γραμμένος σε Rust και διανέμεται με την άδεια του MIT και μπορείτε να ελέγξετε περισσότερα για αυτό, Στον ακόλουθο σύνδεσμο.


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

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

*

*

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