Pustaka C standar PicoLibc 1.1 tersedia

Keith Packard, pengembang aktif Debian, pemimpin proyek X.Org dan pencipta banyak ekstensi X termasuk XRender, XComposite dan XRandR, diperkenalkan rilis perpustakaan C standar baru PicoLibc 1.1, dikembangkan untuk digunakan pada perangkat tertanam dengan penyimpanan permanen dan RAM terbatas. Selama pengembangan, sebagian kode dipinjam dari perpustakaan baru dari proyek Cygwin dan AVR Libc, dikembangkan untuk mikrokontroler Atmel AVR. Kode PicoLibc didistribusikan oleh di bawah lisensi BSD. Rakitan perpustakaan didukung untuk arsitektur ARM (32-bit), i386, RISC-V, x86_64, dan PowerPC.

Keith Packard memulai pengembangan setelah tidak dapat menemukan opsi Libc yang layak yang dapat digunakan pada perangkat tertanam dengan sedikit RAM. Proyek ini telah berkembang sejak tahun lalu. Pada tahap pertama, proyek ini merupakan varian dari newlib, fungsi stdio yang diganti dengan versi ringkas dari avrlibc (stdio di newlib tidak cocok karena konsumsi sumber dayanya yang tinggi). Karena pekerjaan Keith saat ini melibatkan pekerjaan berkelanjutan dengan arsitektur RISC-V dan pengembangan peralatan untuk perangkat tertanam, dia baru-baru ini meninjau keadaan implementasi libc dan menyimpulkan bahwa dengan sedikit penyesuaian, kombinasi newlib dan avrlibc dapat menjadi tujuan umum yang baik. larutan. Awalnya, proyek ini dikembangkan dengan nama “newlib-nano”, tetapi untuk menghindari kebingungan dengan perpustakaan Newlib, proyek tersebut diganti namanya menjadi PicoLibc.

Dalam bentuknya yang sekarang, Picolibc telah melakukan upaya untuk menghapus semua kode yang tidak disertakan di bawah lisensi BSD (kode ini tidak digunakan saat membuat perangkat tertanam), yang secara signifikan menyederhanakan situasi dengan lisensi untuk proyek tersebut. Implementasi aliran lokal telah dipindahkan dari 'struct _reent' ke mekanisme TLS (penyimpanan thread-lokal). Versi ringkas stdio, yang dipinjam dari kode perpustakaan avrlibc, diaktifkan secara default (sisipan assembler khusus ATmel ditulis ulang dalam C). Toolkit Meson digunakan untuk perakitan, yang memungkinkan untuk tidak terikat dengan skrip perakitan newlib dan menyederhanakan transfer perubahan dari newlib. Menambahkan versi sederhana dari kode inisialisasi (crt0), dilampirkan ke file yang dapat dieksekusi dan dieksekusi sebelum kontrol ditransfer ke fungsi main().

Di Picolibc versi 1.1:

  • Menambahkan perpustakaan tambahan untuk mendukung teknologi "semihosting"mengizinkan kode berjalan di lingkungan debugger atau emulator untuk menggunakan mekanisme I/O sistem host;
  • Untuk sistem yang mendukung panggilan sistem buka, tutup, baca, dan tulis, tinystdio menambahkan antarmuka I/O POSIX stdio standar, termasuk fungsi fopen dan fdopen, serta mengikat stdin/stdout/stderr ke deskriptor file yang ditentukan POSIX;
  • Perubahan terkini dari basis kode newlib telah diterapkan. Termasuk tambahan rintisan libm untuk fenv.h, yang dapat digunakan pada sistem tanpa dukungan floating point;
  • Menambahkan contoh pembuatan aplikasi “Hello world” dengan picolibc untuk sistem ARM dan RISC-V;
  • Menghapus direktori newlib, libm dan mathfp, yang berisi kode eksperimental yang tidak digunakan.

Sumber: opennet.ru

Tambah komentar