Πρώτη έκδοση του wasm3, ενός γρήγορου διερμηνέα WebAssembly

Διαθέσιμος πρώτη έκδοση wasm3, ένας πολύ γρήγορος ενδιάμεσος διερμηνέας κώδικα WebAssembly που προορίζεται κυρίως για χρήση στην εκτέλεση εφαρμογών WebAssembly σε μικροελεγκτές και πλατφόρμες που δεν διαθέτουν υλοποίηση JIT για WebAssembly, δεν έχουν αρκετή μνήμη για εκτέλεση JIT ή δεν μπορούν να δημιουργήσουν τις σελίδες εκτελέσιμης μνήμης που απαιτούνται για την υλοποίηση JIT . Ο κώδικας του έργου είναι γραμμένος σε C και διανέμονται από υπό την άδεια του MIT.

Πάσες Wasm3 δοκιμές συμβατό με την προδιαγραφή WebAssembly 1.0 και μπορεί να χρησιμοποιηθεί για την εκτέλεση πολλών εφαρμογών WASI, παρέχοντας απόδοση μόνο 4-5 φορές χαμηλότερη από τις μηχανές JIT (απογειώνω, ανύψωση γερανού) και 11.5 φορές χαμηλότερη από την εκτέλεση εγγενούς κώδικα. Σε σύγκριση με άλλους διερμηνείς WebAssembly (wac, ζωή, wasm-micro-runtime), το wasm3 αποδείχθηκε ότι ήταν 15.8 φορές πιο γρήγορο.

Για να εκτελέσετε το wasm3, χρειάζεστε 64 Kb μνήμης κώδικα και 10 Kb μνήμης RAM, που σας επιτρέπει να χρησιμοποιήσετε το έργο για να εκτελέσετε εφαρμογές που έχουν μεταγλωττιστεί στο WebAssembly σε μικροελεγκτές, όπως Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) και ATmega1284, καθώς και σε πλακέτες και υπολογιστές που βασίζονται σε αρχιτεκτονικές x86, x64, ARM, MIPS, RISC-V και Xtensa. Τα υποστηριζόμενα λειτουργικά συστήματα περιλαμβάνουν Linux (συμπεριλαμβανομένων δρομολογητών που βασίζονται στο OpenWRT), Windows, macOS, Android και iOS. Είναι επίσης δυνατή η μεταγλώττιση του wasm3 σε ενδιάμεσο κώδικα WebAssembly για εκτέλεση του διερμηνέα στο πρόγραμμα περιήγησης ή για ένθετη εκτέλεση (self-hosting).

Η υψηλή απόδοση επιτυγχάνεται με τη χρήση τεχνολογίας στον διερμηνέα Massey Meta Machine (M3), το οποίο μεταφράζει προς τα εμπρός τον bytecode σε πιο αποτελεσματικές λειτουργίες δημιουργίας κώδικα ψευδομηχανής για τη μείωση της επιβάρυνσης αποκωδικοποίησης bytecode και μετατρέπει το μοντέλο εκτέλεσης εικονικής μηχανής που βασίζεται σε στοίβα σε μια πιο αποτελεσματική προσέγγιση που βασίζεται σε καταχωρητές. Οι λειτουργίες στο M3 είναι συναρτήσεις C των οποίων τα ορίσματα είναι καταχωρητές εικονικής μηχανής που μπορούν να αντιστοιχιστούν σε καταχωρητές CPU. Οι συχνές ακολουθίες πράξεων βελτιστοποίησης μετατρέπονται σε συνοπτικές πράξεις.

Επιπλέον, μπορεί να σημειωθεί αποτελέσματα της έρευνας διάδοση
WebAssembly στο Web. Αφού ανέλυσαν 948 χιλιάδες από τους πιο δημοφιλείς ιστότοπους σύμφωνα με τις αξιολογήσεις Alexa, οι ερευνητές διαπίστωσαν ότι το WebAssembly χρησιμοποιείται σε 1639 ιστότοπους (0.17%), δηλ. σε 1 στους 600 ιστότοπους. Συνολικά, λήφθηκαν 1950 λειτουργικές μονάδες WebAssembly στους ιστότοπους, εκ των οποίων οι 150 ήταν μοναδικές. Κατά την εξέταση του εύρους χρήσης του WebAssembly, βγήκαν απογοητευτικά συμπεράσματα - σε περισσότερες από το 50% των περιπτώσεων, το WebAssembly χρησιμοποιήθηκε για κακόβουλους σκοπούς, για παράδειγμα, για εξόρυξη κρυπτονομισμάτων (55.7%) και απόκρυψη του κώδικα κακόβουλων σεναρίων (0.2%) . Οι νόμιμες χρήσεις του WebAssembly περιλαμβάνουν την εκτέλεση βιβλιοθηκών (38.8%), τη δημιουργία παιχνιδιών (3.5%) και την εκτέλεση προσαρμοσμένου κώδικα μη JavaScript (0.9%). Στο 14.9% των περιπτώσεων, το WebAssembly χρησιμοποιήθηκε για την ανάλυση του περιβάλλοντος για την αναγνώριση του χρήστη (δακτυλικά αποτυπώματα).

Πρώτη έκδοση του wasm3, ενός γρήγορου διερμηνέα WebAssembly

Πηγή: opennet.ru

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