Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°Ρ‚Π° Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° PicoLibc 1.1 Π΅ Π½Π°Π»ΠΈΡ‡Π½Π°

ΠšΠΈΠΉΡ‚ ΠŸΠ°ΠΊΠΊΠ°Ρ€Π΄ (Keith Packard), Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° Debian, Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π» Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° X.Org ΠΈ ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π» Π½Π° мноТСство X-Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ XRender, XComposite ΠΈ XRandR, прСдстави пусканС Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° стандартна C-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° PicoLibc 1.1, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π° Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ устройства с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ постоянно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° част ΠΎΡ‚ ΠΊΠΎΠ΄Π° Π΅ заимстван ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° newlib ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Cygwin ΠΈ AVR Libc, Ρ€Π°Π·Π²ΠΈΠ²Π°Π»Π° сС Π·Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ Atmel AVR. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° PicoLibc сС разпространява Π΅ ΠΏΠΎΠ΄ лицСнзия BSD. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС сборка Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ ARM (32-Π±ΠΈΡ‚), i386, RISC-V, x86_64 ΠΈ PowerPC.

ΠšΠΈΡ‚ ΠŸΠ°ΠΊΠΊΠ°Ρ€Π΄ Π·Π°ΠΏΠΎΡ‡Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° слСд ΠΊΠ°Ρ‚ΠΎ Π½Π΅ успя Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈ подходяща вСрсия Π½Π° Libc Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ устройства с ΠΌΠ°Π»ΠΊΠΎ RAM. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π½Π°ΠΏΡ€Π΅Π΄Π²Π° ΠΎΡ‚ ΠΌΠΈΠ½Π°Π»Π°Ρ‚Π° Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ бСшС вСрсия Π½Π° newlib, Π² която Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° stdio бяха Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ с ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° вСрсия ΠΎΡ‚ avrlibc (stdio Π² newlib Π½Π΅ бСшС подходящ ΠΏΠΎΡ€Π°Π΄ΠΈ голямото ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° рСсурси). Въй ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠšΠΈΡ‚Π° Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½Π° с постоянна Ρ€Π°Π±ΠΎΡ‚Π° с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° RISC-V ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° инструмСнти Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ устройства, наскоро Ρ‚ΠΎΠΉ ΠΏΡ€Π΅Ρ€Π°Π·Π³Π»Π΅Π΄Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° libc ΠΈ стигна Π΄ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‡Π΅ с ΠΌΠ°Π»ΠΊΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ комбинацията ΠΎΡ‚ newlib ΠΈ avrlibc ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π΄ΠΎΠ±Ρ€ΠΎ унивСрсално Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ сС Ρ€Π°Π·Π²ΠΈΠ²Π°ΡˆΠ΅ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Ρ‚ΠΎ "newlib-nano", Π½ΠΎ Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΎΠ±ΡŠΡ€ΠΊΠ²Π°Π½Π΅ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Newlib, Ρ‚ΠΎΠΉ бСшС ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ Π½Π° PicoLibc.

Π’ тСкущия си Π²ΠΈΠ΄ Picolibc Π²Π΅Ρ‡Π΅ имашС Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° цСлия ΠΊΠΎΠ΄, прСдоставСн Π½Π΅ ΠΏΠΎΠ΄ лицСнзия BSD (Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Π½Π΅ бСшС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ устройства), ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опрости ситуацията с Π»ΠΈΡ†Π΅Π½Π·Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. РСализацията Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ бСшС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½Π° ΠΎΡ‚ β€˜struct _reent’ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° TLS (thread-local storage). Активиран ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ компактният Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° stdio, заимстван ΠΎΡ‚ ΠΊΠΎΠ΄Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° avrlibc (спСцифичнитС Π·Π° ATmel асСмблСрни вмъквания бяха прСнаписани Π½Π° C). Π—Π° компилацията Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡƒΠΌΡŠΡ‚ Meson, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Π½Π΅ сС ΠΏΡ€ΠΈΠ²ΡŠΡ€Π·Π²Π°Ρ‚ към сцСнарии Π·Π° компилация Π½Π° newlib ΠΈ опрости ΠΏΡ€Π΅Π½ΠΎΡΡŠΡ‚ Π½Π° измСнСния ΠΎΡ‚ newlib. Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ опростСн Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° ΠΊΠΎΠ΄Π° Π·Π° инициализация (crt0), ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ΅Π½ към изпълнимия Ρ„Π°ΠΉΠ» ΠΈ изпълняван ΠΏΡ€Π΅Π΄ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° функцията main().

Π’ вСрсия 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster