Keith Packard,活躍的 Debian 開發人員、X.Org 專案的領導者以及許多 X 擴充的創建者,包括 XRender、XComposite 和 XRandR,
Keith Packard 在無法找到可用於 RAM 較少的嵌入式裝置上的合適 Libc 選項後開始開發。該項目自去年以來一直在開發。在第一階段,該專案是newlib的變體,其中stdio的功能被avrlibc的精簡版本所取代(newlib中的stdio不適合其高資源消耗)。由於Keith 目前的工作涉及RISC-V 架構的持續工作以及嵌入式設備工具的開發,因此他最近回顧了libc 實現的狀態,並得出結論認為,通過稍加調整,newlib 和avrlibc 的組合可能是一個很好的通用目的解決方案。最初,該專案以「newlib-nano」的名稱開發,但為了避免與 Newlib 庫混淆,它被重新命名為 PicoLibc。
在目前的形式中,Picolibc 已經完成了刪除 BSD 授權下未提供的所有程式碼的工作(在建置嵌入式裝置時未使用該程式碼),這大大簡化了專案授權的情況。本機流的實作已從“struct _reent”轉移到 TLS 機制(
在 Picolibc 版本 1.1 中:
- 添加了輔助庫以支持該技術”
半主機 「允許在偵錯器或模擬器環境中運行的程式碼使用主機系統的 I/O 機制; - 對於支援 open、close、read 和 write 系統調用的系統,tinystdio 新增了標準化的 POSIX stdio I/O 接口,包括 fopen 和 fdopen 函數,以及將 stdin/stdout/stderr 綁定到 POSIX 定義的檔案描述符;
- newlib 程式碼庫的最新變更已延續。包括新增的 libm 存根
芬芙.h ,可以在不支援浮點的系統上使用; - 新增了針對 ARM 和 RISC-V 系統使用 picolibc 建立「Hello world」應用程式的範例;
- 刪除了 newlib、libm 和 mathfp 目錄,其中包含未使用的實驗程式碼。
來源: opennet.ru