مكتبة C القياسية PicoLibc 1.1 متاحة

كيث باكارد، مطور دبيان النشط، قائد مشروع X.Org ومبتكر العديد من ملحقات X، بما في ذلك XRender وXComposite وXRandR. المقدمة إطلاق مكتبة C القياسية الجديدة بيكو ليبك 1.1تم تطويره للاستخدام على الأجهزة المدمجة ذات سعة التخزين الدائمة وذاكرة الوصول العشوائي المحدودة. أثناء التطوير، تم استعارة جزء من الكود من المكتبة newlib من مشروع Cygwin و AVR ليبكتم تطويره لوحدات التحكم الدقيقة Atmel AVR. كود بيكو ليبك وزعت من خلال بموجب ترخيص BSD. يتم دعم تجميع المكتبة لبنيات ARM (32 بت) وi386 وRISC-V وx86_64 وPowerPC.

بدأ Keith Packard في التطوير بعد عدم تمكنه من العثور على خيار Libc لائق يمكن استخدامه على الأجهزة المدمجة ذات ذاكرة الوصول العشوائي الصغيرة. لقد تم تطوير المشروع منذ العام الماضي. في المرحلة الأولى، كان المشروع عبارة عن نسخة مختلفة من newlib، حيث تم استبدال وظائف stdio بنسخة مضغوطة من avrlibc (لم يكن stdio في newlib مناسبًا لاستهلاكه العالي للموارد). نظرًا لأن عمل Keith الحالي يتضمن عملًا مستمرًا مع بنية RISC-V وتطوير الأدوات للأجهزة المدمجة، فقد قام مؤخرًا بمراجعة حالة تطبيقات libc وخلص إلى أنه مع القليل من التغيير والتبديل، يمكن أن يكون الجمع بين newlib وavrlibc غرضًا عامًا جيدًا حل. في البداية، تم تطوير المشروع تحت اسم "newlib-nano"، ولكن لتجنب الخلط بينه وبين مكتبة Newlib، تمت إعادة تسميته إلى PicoLibc.

في شكله الحالي، قامت Picolibc بالفعل بإزالة كافة التعليمات البرمجية التي لم يتم توفيرها بموجب ترخيص BSD (لم يتم استخدام هذا الرمز عند إنشاء الأجهزة المدمجة)، مما أدى إلى تبسيط الموقف بشكل كبير مع ترخيص المشروع. تم نقل تنفيذ التدفقات المحلية من "struct _reent" إلى آلية TLS (التخزين المحلي للخيط). يتم تنشيط الإصدار المضغوط من stdio، المستعار من كود مكتبة avrlibc، افتراضيًا (تتم إعادة كتابة إدراجات المجمّع الخاصة بـ ATmel في لغة C). تم استخدام مجموعة أدوات Meson للتجميع، مما جعل من الممكن عدم الارتباط بنصوص تجميع newlib وتبسيط نقل التغييرات من newlib. تمت إضافة نسخة مبسطة من رمز التهيئة (crt0)، مرفقة بالملف القابل للتنفيذ ويتم تنفيذها قبل نقل التحكم إلى الوظيفة main().

في إصدار بيكوليبك 1.1:

  • تمت إضافة مكتبة مساعدة لدعم التقنية "com.semihosting"يسمح بتشغيل التعليمات البرمجية في بيئة مصحح أخطاء أو محاكي لاستخدام آليات الإدخال/الإخراج الخاصة بالنظام المضيف؛
  • بالنسبة للأنظمة التي تدعم مكالمات النظام المفتوحة والإغلاق والقراءة والكتابة، يضيف tinystdio واجهات الإدخال/الإخراج القياسية POSIX stdio، بما في ذلك وظائف fopen وfdopen، بالإضافة إلى ربط stdin/stdout/stderr بواصفات الملفات المحددة بواسطة POSIX؛
  • تم ترحيل التغييرات الأخيرة من قاعدة بيانات newlib. بما في ذلك بذرة libm المضافة لـ fenv.hوالتي يمكن استخدامها على الأنظمة التي لا تدعم الفاصلة العائمة؛
  • تمت إضافة مثال لبناء تطبيق "Hello World" باستخدام picolibc لأنظمة ARM وRISC-V؛
  • تمت إزالة أدلة newlib وlib وmathfp، التي كانت تحتوي على تعليمات برمجية تجريبية غير مستخدمة.

المصدر: opennet.ru

إضافة تعليق