標準 C ライブラリ PicoLibc 1.1 が利用可能

Keith Packard 氏は、現役の Debian 開発者であり、X.Org プロジェクトのリーダーであり、XRender、XComposite、XRandR を含む多くの X 拡張機能の作成者です。 紹介された 新しい標準 C ライブラリのリリース ピコリビック 1.1、限られた量の永続ストレージと RAM を備えた組み込みデバイスで使用するために開発されました。 開発中にコードの一部をライブラリから借用しました 新しいライブラリ Cygwin プロジェクトからの AVR ライブラリ、Atmel AVR マイクロコントローラー用に開発されました。 PicoLibc コード によって配布 BSD ライセンスに基づいて。 ライブラリ アセンブリは、ARM (32 ビット)、i386、RISC-V、x86_64、および PowerPC アーキテクチャでサポートされています。

Keith Packard は、RAM が少ない組み込みデバイスで使用できる適切な Libc オプションが見つからなかったことから開発を開始しました。 このプロジェクトは昨年から開発が進められてきました。 最初の段階では、このプロジェクトは newlib のバリアントであり、stdio の機能が avrlibc のコンパクト バージョンに置き換えられていました (newlib の stdio はリソース消費量が多いため適していませんでした)。 Keith の現在の仕事には、RISC-V アーキテクチャの継続的な作業と組み込みデバイス用ツールの開発が含まれているため、最近 libc 実装の状態をレビューし、少し調整するだけで newlib と avrlibc の組み合わせが優れた汎用性を発揮できると結論付けました。解決。 当初、このプロジェクトは「newlib-nano」という名前で開発されましたが、Newlib ライブラリとの混同を避けるために、PicoLibc という名前に変更されました。

現在の形式では、Picolibc は、BSD ライセンスで提供されていないすべてのコードを削除する作業をすでに行っており (このコードは、組み込みデバイス用にビルドするときに使用されませんでした)、これにより、プロジェクトのライセンスに関する状況が大幅に簡素化されました。 ローカル ストリームの実装は、「struct _reent」から TLS メカニズムに移動されました (スレッドローカルストレージ)。 avrlibc ライブラリ コードから借用した stdio のコンパクト バージョンは、デフォルトでアクティブになります (ATmel 固有のアセンブラ挿入は C で書き換えられます)。 アセンブリには Meson ツールキットが使用されました。これにより、newlib アセンブリ スクリプトに縛られず、newlib からの変更の転送が簡素化されました。 初期化コード (crt0) の簡易バージョンが追加されました。これは実行可能ファイルに添付され、制御が main() 関数に移される前に実行されます。

Picolibc バージョン 1.1 の場合:

  • テクノロジーをサポートする補助ライブラリを追加しました。」セミホスティング「デバッガまたはエミュレータ環境で実行されているコードがホスト システムの I/O メカニズムを使用できるようにします。
  • open、close、read、write システム コールをサポートするシステムの場合、tinystdio は、fopen および fdopen 関数を含む標準化された POSIX stdio I/O インターフェイスを追加し、stdin/stdout/stderr を POSIX 定義のファイル記述子にバインドします。
  • newlib コードベースからの最近の変更が引き継がれています。 追加された libm スタブを含む fenv.h、浮動小数点サポートのないシステムでも使用できます。
  • ARM および RISC-V システム用の picolibc を使用した「Hello world」アプリケーションの構築例を追加しました。
  • 未使用の実験コードが含まれていた newlib、libm、および mathfp ディレクトリを削除しました。

出所: オープンネット.ru

コメントを追加します