Οι προγραμματιστές της Google θέλουν να αναπτύξουν το δικό τους libc για το LLVM

LLVM_Logo

Ένας από τους προγραμματιστές της Google έθεσε στη λίστα αλληλογραφίας LLVM το θέμα της ανάπτυξης μια τυπική βιβλιοθήκη C πολλαπλών πλατφορμών (Libc) στο πλαίσιο του έργου LLVM.

Για διάφορους λόγους, Η Google δεν είναι ικανοποιημένη με το τρέχον libc (glibc, musl) και η εταιρεία βρίσκεται στο δρόμο για την ανάπτυξη μιας νέας εφαρμογής, το οποίο προτείνεται να αναπτυχθεί ως μέρος του LLVM. Οι εξελίξεις του LLVM χρησιμοποιήθηκαν πρόσφατα ως βάση για την κατασκευή εργαλείων Google.

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

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

Σχεδιάζεται να ξεκινήσει με υποστήριξη για αρχιτεκτονική x86-64, Linux και στατική σύνδεση (δυναμική φόρτωση, συσκευασία και πρόσθετες αρχιτεκτονικές θα εφαρμοστούν δεύτερη).

Το έργο βρίσκεται ακόμη στο αρχικό στάδιο ανάπτυξης, αλλά οι βασικοί στόχοι έχουν ήδη καθοριστεί:

  • Αρθρωτότητα και ανάπτυξη σύμφωνα με τη φιλοσοφία της παροχής μιας λεπτομερούς βιβλιοθήκης, αντί για μονολιθικό σύνολο.
  • Υποστήριξη στατικής σύνδεσης σε λειτουργίες με PIE (εκτελέσιμα ανεξάρτητα από τη θέση) και όχι PIE. Παρέχετε CRT (Cruntime) και PIE loader για στατικά συνδεδεμένα εκτελέσιμα αρχεία.
  • Υποστηρίζει τις περισσότερες λειτουργίες της βιβλιοθήκης C τυπικό με πρόσθετα POSIX και ορισμένες επεκτάσεις ειδικά για το σύστημα που ζητούνται σε υπάρχουσες εφαρμογές.
  • Προσεκτική στάση απέναντι σε συγκεκριμένες επεκτάσεις παροχέα και προσθέτοντάς τα μόνο όταν είναι απαραίτητο. Για την υποστήριξη επεκτάσεων τρίτων, προτείνεται η χρήση της προσέγγισης έργων Clang και libc++.
  • Χρήση βέλτιστων πρακτικών στην ανάπτυξη με χρήση εργαλείων LLVMόπως η εφαρμογή απολυμαντικών και η έγκαιρη αφαίρεση στοιχείων.

Ένας από τους ενεργούς προγραμματιστές του LLVM το ανέφερε παράδοση libc ως μέρος της εργαλειοθήκης LLVM δεν στερούνται νοήματος, αλλά συνήθως με τέτοια ανάγκη χρησιμοποιούν τη βιβλιοθήκη musl, που είναι καλογραμμένο, υποστηρίζει πολλαπλές αρχιτεκτονικές και παρέχει την απαραίτητη λειτουργικότητα, συμπεριλαμβανομένης της δυναμικής σύνδεσης.

Η ενσωμάτωση του Musl στο LLVM και η ανάπτυξή του ως συγχρονισμένη διχάλα με το κύριο έργο μπορεί να δικαιολογηθεί.

Η άποψή του εκφράστηκε επίσης από τον συγγραφέα του έργου Musl, ο οποίος προσπάθησε να υποστηρίξει γιατί η πρόταση της Google και η συμπερίληψη του Libc στην παράδοση του LLVM είναι πολύ κακές ιδέες:

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

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

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

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

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

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

Η Apple χρησιμοποιεί το πιρούνι libc BSD για αυτούς τους σκοπούς και η Google χρησιμοποιεί το πιρούνι Fuchsia. Η εμπειρία του προγραμματιστή Musl δείχνει ότι οι δικηγόροι επικοινώνησαν μαζί του κυρίως για να διευκρινίσουν ζητήματα αδειοδότησης.

πηγή: http://lists.llvm.org


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

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

*

*

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