Κυκλοφόρησε το προσχέδιο WebAssembly 2.0 

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

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

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

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

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

Σχετικά με το πρόχειρο WebAssembly 2.0

Για το μέρος των τροποποιήσεων που έχουν γίνει από το WebAssembly είναι οι τελικές προτάσεις για το WebAssembly 2.0 είναι SIMD σταθερού πλάτους, λειτουργίες μαζικής μνήμης, τύποι αναφοράς, υποστήριξη JavaScript BigInt για WebAssembly i64, υποστήριξη πολλαπλών τιμών επιστροφής και εισαγωγή/εξαγωγή mutable καθολικές μεταβλητές.

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

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

Διαφορές μεταξύ WebAssembly και WebAssembly 2.0

Επίσης, πρέπει να σημειωθεί ότι υπάρχουν ορισμένες σημαντικές αλλαγές στο 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.copy, table.init και elem.drop).

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


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

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

*

*

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