ΠΠΈΡ ΠΠ°ΠΊΠΊΠ°ΡΠ΄ (Keith Packard), Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Debian, Π»ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° X.Org ΠΈ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° X-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ XRender, XComposite ΠΈ XRandR,
ΠΠΈΡ ΠΠ°ΠΊΠΊΠ°ΡΠ΄ ΠΏΡΠΈΡΡΡΠΏΠΈΠ» ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ Π΄ΠΎΡΡΠΎΠΉΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Libc, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΠΠ£. ΠΡΠΎΠ΅ΠΊΡ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°. ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ» ΡΠΎΠ±ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ newlib, ΡΡΠ½ΠΊΡΠΈΠΈ stdio Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ· avrlibc (stdio Π² newlib Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°Π» Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ²). Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΠ°Ρ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΠΈΡΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ RISC-V ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅Π» ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ libc ΠΈ ΠΏΡΠΈΡΡΠ» ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ ΠΏΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ newlib ΠΈ avrlibc ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ°Π·Π²ΠΈΠ²Π°Π»ΡΡ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ «newlib-nano», Π½ΠΎ ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Newlib Π±ΡΠ» ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² PicoLibc.
Π ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ Π² Picolibc ΡΠΆΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ BSD (Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ
ΡΡΡΡΠΎΠΉΡΡΠ²), ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΠ»ΠΎ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° Ρ ‘struct _reent’ Π½Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ TLS (
Π Π²Π΅ΡΡΠΈΠΈ Picolibc 1.1:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ «
semihosting «, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΊΠΎΠ΄Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° ΠΈΠ»ΠΈ ΡΠΌΡΠ»ΡΡΠΎΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Ρ ΠΎΡΡ-ΡΠΈΡΡΠ΅ΠΌΡ; - ΠΠ»Ρ ΡΠΈΡΡΠ΅ΠΌ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ open, close, read ΠΈ write, Π² tinystdio Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ POSIX-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° stdio, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ fopen ΠΈ fdopen, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ stdin/stdout/stderr ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ Π² POSIX ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°ΠΌ;
- ΠΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Ρ Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ newlib. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π·Π°Π³Π»ΡΡΠΊΠΈ libm Π΄Π»Ρ
fenv.h , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ; - ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ «Hello world» Ρ picolibc Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ ARM ΠΈ RISC-V;
- Π£Π΄Π°Π»Π΅Π½Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ newlib, libm ΠΈ mathfp, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru