Έκδοση της τυπικής βιβλιοθήκης C PicoLibc 1.4.7

Keith Packard, ενεργός προγραμματιστής του Debian, επικεφαλής του έργου X.Org και δημιουργός πολλών επεκτάσεων X, συμπεριλαμβανομένων των XRender, XComposite και XRandR, δημοσιεύεται έκδοση της τυπικής βιβλιοθήκης C PicoLibc 1.4.7, που αναπτύχθηκε για χρήση σε ενσωματωμένες συσκευές με περιορισμένο μόνιμο χώρο αποθήκευσης και RAM. Κατά τη διάρκεια της ανάπτυξης, μέρος του κώδικα δανείστηκε από τη βιβλιοθήκη newlib από το έργο Cygwin και AVR Libc, που αναπτύχθηκε για τους μικροελεγκτές AVR της Atmel. Κώδικας PicoLibc διανέμονται από με άδεια BSD. Η συναρμολόγηση βιβλιοθήκης υποστηρίζεται για αρχιτεκτονικές ARM (32-bit), i386, RISC-V, x86_64 και PowerPC.

Αρχικά, το έργο αναπτύχθηκε με την ονομασία «newlib-nano» και στόχευε στην εκ νέου επεξεργασία ορισμένων από τις λειτουργίες έντασης πόρων του Newlib, οι οποίες ήταν προβληματικές στη χρήση σε ενσωματωμένες συσκευές με μικρή μνήμη RAM. Για παράδειγμα, οι λειτουργίες stdio έχουν αντικατασταθεί με μια συμπαγή έκδοση από τη βιβλιοθήκη avrlibc. Ο κώδικας έχει επίσης καθαριστεί από στοιχεία που δεν έχουν άδεια BSD και δεν χρησιμοποιούνται στην ενσωματωμένη έκδοση. Προστέθηκε μια απλοποιημένη έκδοση του κώδικα προετοιμασίας (crt0) και η υλοποίηση των τοπικών νημάτων έχει μετακινηθεί από το 'struct _reent' στον μηχανισμό TLS (νήμα-τοπική αποθήκευση). Η εργαλειοθήκη Meson χρησιμοποιείται για τη συναρμολόγηση.

Στη νέα έκδοση:

  • Προστέθηκε η δυνατότητα δημιουργίας χρησιμοποιώντας μαθηματικά επαληθευμένο μεταγλωττιστής CompCert.
  • Προστέθηκε υποστήριξη για τον μεταγλωττιστή Clang.
  • Η συμπεριφορά της συνάρτησης «γάμα» έχει ευθυγραμμιστεί με τη συμπεριφορά του Glibc.
  • Η εφαρμογή nano-malloc διασφαλίζει ότι η επιστρεφόμενη μνήμη διαγράφεται.
  • Βελτιωμένη απόδοση του nano-realloc, ειδικά κατά τη συγχώνευση ελεύθερων μπλοκ και την επέκταση του μεγέθους του σωρού.
  • Προστέθηκε ένα σύνολο δοκιμών για τον έλεγχο της σωστής λειτουργίας του malloc.
  • Βελτιώθηκε η υποστήριξη για την πλατφόρμα των Windows και προστέθηκε η δυνατότητα δημιουργίας με χρήση του κιτ εργαλείων mingw.
  • Στα συστήματα ARM, εάν είναι διαθέσιμο, είναι ενεργοποιημένος ο καταχωρητής υλικού TLS (Thread-Local Storage).

Πηγή: opennet.ru