Γνωρίστε τη νέα έκδοση του Cosmopolitan 2.0, της βασικής βιβλιοθήκης C σε πολλαπλές πλατφόρμες

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

Το δοχείο για να δημιουργήσετε γενικά εκτελέσιμα αρχεία βασίζεται στο συνδυασμό συγκεκριμένων τμημάτων και κεφαλίδων από διαφορετικά συστήματα λειτουργικά συστήματα σε ένα αρχείο, συνδυάζοντας πολλές διαφορετικές μορφές που χρησιμοποιούνται σε Unix, Windows και macOS.

Για να επιβεβαιώσω ότι ένα μόνο εκτελέσιμο τρέχει σε συστήματα Windows και Unix, χρησιμοποιείται ένα τέχνασμα για την κωδικοποίηση αρχείων Windows PE ως σενάριο φλοιού, εκμεταλλευόμενος το γεγονός ότι το Thompson Shell δεν χρησιμοποιεί τον δείκτη σεναρίου "#!".

Για τη δημιουργία προγραμμάτων που περιλαμβάνουν πολλαπλά αρχεία (συνδυάζοντας όλους τους πόρους σε ένα μόνο αρχείο), υποστηρίζεται η δημιουργία ενός εκτελέσιμου αρχείου με τη μορφή ενός ειδικά διαμορφωμένου αρχείου ZIP. Περίγραμμα της προτεινόμενης μορφής (παράδειγμα εφαρμογής hello.com):

Η κλήση qemu-x86_64 παρέχεται για επιπλέον φορητότητα και επιτρέπει στον κώδικα που έχει μεταγλωττιστεί για την αρχιτεκτονική x86_64 να εκτελείται σε πλατφόρμες που δεν είναι x86, όπως πλακέτες Raspberry Pi και συσκευές Apple εξοπλισμένες με επεξεργαστές ARM. Το έργο μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία αυτόνομων εφαρμογών που λειτουργούν χωρίς λειτουργικό σύστημα (γυμνό μέταλλο). Σε τέτοιες εφαρμογές, ένας bootloader είναι προσαρτημένος στο εκτελέσιμο αρχείο και το πρόγραμμα λειτουργεί ως εκκινήσιμο λειτουργικό σύστημα.

Οι κύριες καινοτομίες του Cosmopolitan 2.0

Σε αυτήν τη νέα έκδοση τονίζεται ότι το σχήμα για την πρόσβαση σε εσωτερικούς πόρους έχει αλλάξει σε από ένα αρχείο zip (κατά το άνοιγμα αρχείων, χρησιμοποιούνται πλέον οι συνήθεις διαδρομές /zip/… αντί του προθέματος zip:..). Ομοίως, για πρόσβαση σε δίσκους στα Windows, είναι δυνατό να χρησιμοποιήσετε διαδρομές όπως "/c/…" αντί για "C:/…".

Προτείνεται ένας νέος φορτωτής APE (Στην πραγματικότητα Portable Executable), το οποίο ορίζει τη μορφή των καθολικών εκτελέσιμων αρχείων. Ο νέος bootloader χρησιμοποιεί το mmap για να εκχωρήσει το πρόγραμμα στη μνήμη και δεν αλλάζει πλέον το περιεχόμενο εν κινήσει. Εάν είναι απαραίτητο, το γενικό εκτελέσιμο αρχείο μπορεί να μετατραπεί σε κανονικά εκτελέσιμα αρχεία που συνδέονται με μεμονωμένες πλατφόρμες.

Στο Linux, είναι δυνατή η χρήση της μονάδας πυρήνα binfmt_misc για την εκτέλεση προγραμμάτων APE. Σημειώνεται ότι η χρήση του binfmt_misc είναι η ταχύτερη μέθοδος εκκίνησης, επιπλέον Μια υλοποίηση του η λειτουργικότητα των κλήσεων συστήματος pledge() και unveil(), που αναπτύχθηκαν από το έργο OpenBSD, καθώς και η παροχή ενός API για τη χρήση δεδομένων κλήσεων σε προγράμματα C, C++, Python και Redbean, καθώς και ένα βοηθητικό πρόγραμμα από το premt.com για την απομόνωση αυθαίρετων διαδικασιών.

Μπορούμε επίσης να το βρούμε για Linux, η απόδοση των κλήσεων clock_gettime και gettimeofday έχει αυξηθεί έως και 10 φορές λόγω της χρήσης του μηχανισμού vDSO (Virtual Dynamic Shared Object), ο οποίος επιτρέπει τη μεταφορά του χειριστή κλήσεων συστήματος στο χώρο χρήστη και την παράκαμψη του περιβάλλοντος του διακόπτη.

Η κατασκευή χρησιμοποιεί Landlock Make, μια έκδοση του GNU Make με αυστηρότερο έλεγχο εξάρτησης και χρήση της κλήσης συστήματος Landlock για την απομόνωση του προγράμματος από το υπόλοιπο σύστημα και τη βελτίωση της αποτελεσματικότητας της προσωρινής αποθήκευσης. Προαιρετικά, διατηρείται η δυνατότητα μεταγλωττιστή και το συνηθισμένο GNU Make.

Από την άλλη, αναδεικνύει και το υλοποιημένες συναρτήσεις για multithreading: _spawn() και _join(), που είναι καθολικές δεσμεύσεις σε συγκεκριμένα API για διαφορετικά λειτουργικά συστήματα. Γίνονται επίσης εργασίες για την υλοποίηση υποστήριξης για νήματα POSIX.

Από τις άλλες αλλαγές που ξεχωρίζουν:

  • Προστέθηκε υποστήριξη για τις επιλογές «–ftrace» και «–strace» σε εκτελέσιμα για αποστολή πληροφοριών σχετικά με όλες τις κλήσεις λειτουργίας και συστήματος στο stderr.
  • Προστέθηκε υποστήριξη για την κλήση συστήματος closefrom() συμβατή με Linux 5.9+, FreeBSD 8+ και OpenBSD.
  • Οι μαθηματικές συναρτήσεις για την εργασία με μιγαδικούς αριθμούς έχουν μετακινηθεί από τη βιβλιοθήκη Musl.
  • Πολλές μαθηματικές συναρτήσεις έχουν επιταχυνθεί.
  • Προτείνεται η συνάρτηση nointernet(), η οποία απενεργοποιεί τις δυνατότητες του δικτύου.
  • Προστέθηκαν νέες λειτουργίες για την αποτελεσματική προσθήκη συμβολοσειρών: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf και vappendf.
  • Προστέθηκε μια προστατευμένη έκδοση της οικογένειας συναρτήσεων kprintf(), που έχει σχεδιαστεί για να λειτουργεί με αυξημένα προνόμια.
  • Σημαντικά βελτιωμένη απόδοση των υλοποιήσεων SSL, SHA, curve25519 και RSA.

Τέλος, εάν ενδιαφέρεστε να μάθετε περισσότερα για αυτό, θα πρέπει να γνωρίζετε ότι ο κώδικας του έργουή διανέμεται με την άδεια ISC (απλοποιημένη έκδοση του MIT/BSD).


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

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

*

*

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