Διατίθεται τυπική προεπισκόπηση WebAssembly 2.0

Το W3C δημοσίευσε ένα προσχέδιο μιας νέας προδιαγραφής που τυποποιεί το ενδιάμεσο λογισμικό WebAssembly 2.0 και το σχετικό API του, επιτρέποντας τη δημιουργία εφαρμογών υψηλής απόδοσης που είναι φορητές σε προγράμματα περιήγησης και πλατφόρμες υλικού. Το WebAssembly παρέχει ενδιάμεσο κώδικα χαμηλού επιπέδου, ανεξάρτητο από το πρόγραμμα περιήγησης, για την εκτέλεση εφαρμογών που έχουν μεταγλωττιστεί από διάφορες γλώσσες προγραμματισμού. Χρησιμοποιώντας το JIT για WebAssembly, μπορείτε να επιτύχετε επίπεδα απόδοσης κοντά στον εγγενή κώδικα.

Η τεχνολογία WebAssembly μπορεί να χρησιμοποιηθεί για την εκτέλεση εργασιών υψηλής απόδοσης στο πρόγραμμα περιήγησης, όπως κωδικοποίηση βίντεο, επεξεργασία ήχου, γραφικά και τρισδιάστατο χειρισμό, ανάπτυξη παιχνιδιών, κρυπτογραφικές λειτουργίες και μαθηματικούς υπολογισμούς, επιτρέποντας κώδικα γραμμένο σε μεταγλωττισμένες γλώσσες όπως η C/C++ .

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

Το W3C δημοσίευσε τρία προσχέδια προδιαγραφών για το WebAssembly 2.0:

  • WebAssembly Core - Περιγράφει μια εικονική μηχανή χαμηλού επιπέδου για την εκτέλεση ενδιάμεσου κώδικα WebAssembly. Οι πόροι που σχετίζονται με το WebAssembly παραδίδονται σε μορφή ".wasm", παρόμοια με τα αρχεία ".class" στην Java, που περιέχουν στατικά δεδομένα και τμήματα κώδικα για εργασία με αυτά τα δεδομένα.
  • Διεπαφή JavaScript WebAssembly - Παρέχει ένα API για ενοποίηση με JavaScript. Σας επιτρέπει να λαμβάνετε τιμές και να μεταβιβάζετε παραμέτρους στις συναρτήσεις WebAssembly. Η εκτέλεση του WebAssembly ακολουθεί το μοντέλο ασφαλείας JavaScript και όλη η αλληλεπίδραση με το κύριο σύστημα πραγματοποιείται με τον ίδιο τρόπο όπως η εκτέλεση κώδικα JavaScript.
  • WebAssembly Web API - Καθορίζει μια διεπαφή προγραμματισμού που βασίζεται στον μηχανισμό Promise για την αίτηση και την εκτέλεση πόρων ".wasm". Η μορφή πόρων WebAssembly έχει βελτιστοποιηθεί για να ξεκινήσει η εκτέλεση χωρίς να περιμένει την πλήρη φόρτωση του αρχείου, γεγονός που βελτιώνει την ανταπόκριση των εφαρμογών Ιστού.

Οι κύριες αλλαγές στο WebAssembly 2.0 σε σύγκριση με την πρώτη έκδοση του προτύπου:

  • Υποστήριξη για τον τύπο διανύσματος v128 και τις σχετικές διανυσματικές οδηγίες που σας επιτρέπουν να εκτελείτε ενέργειες σε πολλαπλές αριθμητικές τιμές παράλληλα (SIMD, πολλαπλά δεδομένα μιας εντολής).
  • Δυνατότητα εισαγωγής και εξαγωγής μεταβλητών καθολικών μεταβλητών, επιτρέποντας καθολική σύνδεση για τιμές όπως δείκτες στοίβας στη C++.
  • Νέες οδηγίες μετατροπής float σε int που, αντί να ρίχνουν μια εξαίρεση όταν το αποτέλεσμα ξεχειλίζει, επιστρέφουν την ελάχιστη ή τη μέγιστη δυνατή τιμή (απαραίτητη για το SIMD).
  • Οδηγίες για επέκταση πρόσημου ακεραίων (αύξηση του βάθους bit ενός αριθμού διατηρώντας το πρόσημο και την τιμή).
  • Υποστήριξη για μπλοκ και συναρτήσεις που επιστρέφουν πολλαπλές τιμές (επιπλέον της μετάδοσης πολλών παραμέτρων σε συναρτήσεις).
  • Υλοποίηση των συναρτήσεων JavaScript BigInt64Array και BigUint64Array για μετατροπή μεταξύ του τύπου JavaScript BigInt και της αναπαράστασης WebAssembly ακεραίων 64-bit.
  • Υποστήριξη για τύπους αναφοράς (funcref και externref) και τις σχετικές οδηγίες τους (select, ref.null, ref.func και ref.is_null).
  • Οδηγίες Memory.copy, memory.fill, memory.init και data.drop για αντιγραφή δεδομένων μεταξύ περιοχών μνήμης και εκκαθάριση περιοχών μνήμης.
  • Οδηγίες για άμεση πρόσβαση και τροποποίηση πινάκων (table.set, table.get, table.size, table.grow). Δυνατότητα δημιουργίας, εισαγωγής και εξαγωγής πολλών πινάκων σε μία ενότητα. Λειτουργίες για αντιγραφή/συμπλήρωση πινάκων σε λειτουργία δέσμης (table.copy, table.init και elem.drop).

Πηγή: opennet.ru

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