معیاری سی لائبریری PicoLibc 1.1 دستیاب ہے۔

کیتھ پیکارڈ، فعال ڈیبین ڈویلپر، X.Org پروجیکٹ کے رہنما اور XRender، XComposite اور XRandR سمیت کئی X ایکسٹینشنز کے خالق، متعارف کرایا ایک نئی معیاری سی لائبریری کا اجراء PicoLibc 1.1، محدود مستقل اسٹوریج اور RAM کے ساتھ سرایت شدہ آلات پر استعمال کے لیے تیار کیا گیا ہے۔ ترقی کے دوران، کوڈ کا کچھ حصہ لائبریری سے لیا گیا تھا۔ نیو لیب سائگ وین پروجیکٹ سے اور AVR LibcAtmel AVR مائیکرو کنٹرولرز کے لیے تیار کیا گیا ہے۔ PicoLibc کوڈ نے بانٹا BSD لائسنس کے تحت۔ لائبریری اسمبلی ARM (32-bit)، i386، RISC-V، x86_64 اور PowerPC آرکیٹیکچرز کے لیے معاون ہے۔

کیتھ پیکارڈ نے ایک مہذب Libc آپشن تلاش کرنے سے قاصر ہونے کے بعد ترقی شروع کی جسے ایمبیڈڈ ڈیوائسز پر تھوڑی سی RAM کے ساتھ استعمال کیا جا سکتا ہے۔ یہ منصوبہ گزشتہ سال سے ترقی کر رہا ہے۔ پہلے مرحلے میں، پروجیکٹ نیو لیب کی ایک قسم تھی، جس میں stdio کے افعال کو avrlibc کے کمپیکٹ ورژن سے تبدیل کیا گیا تھا (نیو لیب میں stdio اس کے زیادہ وسائل کے استعمال کے لیے موزوں نہیں تھا)۔ چونکہ کیتھ کے موجودہ کام میں RISC-V فن تعمیر اور ایمبیڈڈ ڈیوائسز کے لیے ٹولنگ کی ترقی کے ساتھ جاری کام شامل ہے، اس لیے اس نے حال ہی میں libc کے نفاذ کی حالت کا جائزہ لیا اور یہ نتیجہ اخذ کیا کہ تھوڑی سی موافقت کے ساتھ، newlib اور avrlibc کا امتزاج ایک اچھا عام مقصد ہوسکتا ہے۔ حل ابتدائی طور پر، یہ پروجیکٹ "نیولیب-نانو" کے نام سے تیار کیا گیا، لیکن نیو لیب لائبریری کے ساتھ الجھن سے بچنے کے لیے اس کا نام تبدیل کر کے PicoLibc رکھ دیا گیا۔

اپنی موجودہ شکل میں، Picolibc پہلے ہی تمام کوڈ کو ہٹانے کا کام کر چکا ہے جو BSD لائسنس کے تحت فراہم نہیں کیا جاتا ہے (یہ کوڈ ایمبیڈڈ ڈیوائسز بنانے کے وقت استعمال نہیں کیا جاتا تھا)، جس نے پروجیکٹ کے لائسنس کے ساتھ صورتحال کو نمایاں طور پر آسان بنا دیا ہے۔ مقامی اسٹریمز کے نفاذ کو 'struct _reent' سے TLS میکانزم میں منتقل کر دیا گیا ہے (تھریڈ-لوکل اسٹوریج)۔ stdio کا کمپیکٹ ورژن، avrlibc لائبریری کوڈ سے لیا گیا ہے، بطور ڈیفالٹ چالو ہوتا ہے (ATmel کے لیے مخصوص اسمبلر داخلے C میں دوبارہ لکھے جاتے ہیں)۔ میسن ٹول کٹ کو اسمبلی کے لیے استعمال کیا گیا تھا، جس کی وجہ سے نیو لیب اسمبلی اسکرپٹس سے منسلک نہ ہونا اور نیو لیب سے تبدیلیوں کی منتقلی کو آسان بنانا ممکن ہوا۔ ابتدائی کوڈ (crt0) کا ایک آسان ورژن شامل کیا گیا، جو قابل عمل فائل کے ساتھ منسلک ہے اور کنٹرول کو مین() فنکشن میں منتقل کرنے سے پہلے عمل میں لایا گیا ہے۔

Picolibc ورژن 1.1 میں:

  • ٹیکنالوجی کو سپورٹ کرنے کے لیے ایک معاون لائبریری شامل کی گئی"سیمی ہوسٹنگ"ڈیبگر یا ایمولیٹر ماحول میں چلنے والے کوڈ کو میزبان سسٹم کے I/O میکانزم کو استعمال کرنے کی اجازت دیتا ہے۔
  • سسٹم کالز کو کھولنے، بند کرنے، پڑھنے اور لکھنے کے لیے سپورٹ کرنے والے سسٹمز کے لیے، tinystdio معیاری POSIX stdio I/O انٹرفیس شامل کرتا ہے، بشمول fopen اور fdopen فنکشنز کے ساتھ ساتھ stdin/stdout/stderr کو POSIX- متعین فائل ڈسکرپٹرز کا پابند کرنا؛
  • نیو لیب کوڈبیس سے حالیہ تبدیلیاں کی گئی ہیں۔ شامل کردہ libm stubs کے لیے fenv.h، جو فلوٹنگ پوائنٹ سپورٹ کے بغیر سسٹمز پر استعمال کیا جا سکتا ہے۔
  • ARM اور RISC-V سسٹمز کے لیے picolibc کے ساتھ "Hello world" ایپلیکیشن بنانے کی ایک مثال شامل کی گئی۔
  • newlib، libm اور mathfp ڈائریکٹریز کو ہٹا دیا، جس میں غیر استعمال شدہ تجرباتی کوڈ شامل تھے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں