Standart C kütüphanesi PicoLibc 1.1 mevcut

Aktif Debian geliştiricisi, X.Org projesinin lideri ve XRender, XComposite ve XRandR dahil birçok X uzantısının yaratıcısı Keith Packard, gönderilen yeni bir standart C kütüphanesinin piyasaya sürülmesi PicoLibc 1.1, sınırlı kalıcı depolama ve RAM'e sahip gömülü cihazlarda kullanılmak üzere geliştirilmiştir. Geliştirme sırasında kodun bir kısmı kütüphaneden ödünç alındı yeni kitap Cygwin projesinden ve AVR KitaplığıAtmel AVR mikrodenetleyicileri için geliştirildi. PicoLibc kodu tarafından dağıtıldı BSD lisansı altındadır. Kitaplık derlemesi ARM (32 bit), i386, RISC-V, x86_64 ve PowerPC mimarileri için desteklenir.

Keith Packard, az RAM'e sahip gömülü cihazlarda kullanılabilecek uygun bir Libc seçeneği bulamayınca geliştirmeye başladı. Proje geçen yıldan bu yana gelişiyor. İlk aşamada proje, newlib'in bir çeşidiydi; stdio'nun işlevleri, avrlibc'nin kompakt bir sürümüyle değiştirildi (newlib'deki stdio, yüksek kaynak tüketimi nedeniyle uygun değildi). Keith'in mevcut çalışması RISC-V mimarisi ile devam eden çalışmayı ve gömülü cihazlara yönelik araçların geliştirilmesini içerdiğinden, yakın zamanda libc uygulamalarının durumunu gözden geçirdi ve küçük bir değişiklikle newlib ve avrlibc kombinasyonunun iyi bir genel amaçlı olabileceği sonucuna vardı. çözüm. Başlangıçta proje “newlib-nano” adı altında geliştirildi, ancak Newlib kütüphanesiyle karıştırılmaması için PicoLibc olarak yeniden adlandırıldı.

Picolibc, mevcut haliyle, BSD lisansı kapsamında sağlanmayan tüm kodları kaldırmak için zaten çalışmalar yaptı (bu kod, gömülü cihazlar için oluşturulurken kullanılmadı), bu da proje lisansıyla ilgili durumu önemli ölçüde basitleştirdi. Yerel akışların uygulanması 'struct _reent'ten TLS mekanizmasına taşındı (yerel iş parçacığı depolama). Avrlibc kitaplık kodundan ödünç alınan stdio'nun kompakt sürümü varsayılan olarak etkinleştirilir (ATmel'e özgü birleştirici ekleri C dilinde yeniden yazılır). Montaj için Meson araç seti kullanıldı; bu, newlib montaj komut dosyalarına bağlı kalmamayı ve değişikliklerin newlib'den aktarılmasını basitleştirmeyi mümkün kıldı. Yürütülebilir dosyaya eklenen ve kontrol main() işlevine aktarılmadan önce yürütülen başlatma kodunun (crt0) basitleştirilmiş bir sürümü eklendi.

Picolibc sürüm 1.1'de:

  • Teknolojiyi desteklemek için yardımcı kütüphane eklendi "yarı barındırma"bir hata ayıklayıcı veya emülatör ortamında çalışan kodun ana sistemin G/Ç mekanizmalarını kullanmasına izin verir;
  • Tinystdio, sistem çağrılarını açma, kapatma, okuma ve yazma işlemlerini destekleyen sistemler için fopen ve fdopen işlevlerinin yanı sıra stdin/stdout/stderr'yi POSIX tanımlı dosya tanımlayıcılarına bağlama dahil olmak üzere standartlaştırılmış POSIX stdio I/O arayüzleri ekler;
  • Newlib kod tabanındaki son değişiklikler aktarıldı. Şunun için eklenen libm taslakları dahil: fenv.hKayan nokta desteği olmayan sistemlerde kullanılabilen;
  • ARM ve RISC-V sistemleri için picolibc ile “Merhaba dünya” uygulamasının oluşturulmasına bir örnek eklendi;
  • Kullanılmayan deneysel kodu içeren newlib, libm ve mathfp dizinleri kaldırıldı.

Kaynak: opennet.ru

Yorum ekle