Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° GNU C Library (glibc) 2.36, ΠΊΠΎΡΡΠΎ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ ISO C11 ΠΈ POSIX.1-2017. ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π²ΠΊΠ»ΡΡΠ²Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ ΠΎΡ 59 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ.
ΠΡΠΊΠΎΠΈ ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ Π² Glibc 2.36, Π²ΠΊΠ»ΡΡΠ²Π°Ρ:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π·Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ DT_RELR (ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅), ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ PIE (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΎΡ ΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅). ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ»Π΅ΡΠΎ DT_RELR Π² ELF ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΡΠΈΡΡΠ° "-z pack-relative-relocs" Π² Π»ΠΈΠ½ΠΊΠ΅ΡΠ°, Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° binutils 2.38.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ pidfd_open, pidfd_getfd ΠΈ pidfd_send_signal, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° pidfd, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠΌΠ°Π³Π° ΠΏΡΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° PID Π·Π° ΠΏΠΎ-ΡΠΎΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (pidfd Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΠΈ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ PID ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ΅Π½ ΠΊΡΠΌ Π΄ΡΡΠ³ ΠΏΡΠΎΡΠ΅Ρ, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅ΠΊΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ, ΡΠ²ΡΡΠ·Π°Π½ Ρ ΡΠΎΠ·ΠΈ PID, ΠΏΡΠΈΠΊΠ»ΡΡΠΈ).
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux ΡΡΠ½ΠΊΡΠΈΡΡΠ° process_madvise() Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π°, Π·Π° Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Ρ Π΄Π° ΠΈΠ·Π΄Π°Π΄Π΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ madvise() ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΡΡΠ³ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠ°ΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΡΠ΅Π»Π΅Π²ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° pidfd. Π§ΡΠ΅Π· madvise() ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ°ΡΠ΅ ΡΠ΄ΡΠΎΡΠΎ Π·Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°; Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠ΄ΡΠΎΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° madvise() ΠΎΡ Π΄ΡΡΠ³ ΠΏΡΠΎΡΠ΅Ρ Π² ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅, Π΅ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π° Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΡΠΎΡΠ΅Ρ, Π½ΠΎ ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ° ΠΎΡ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠΎΠ½ΠΎΠ² ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠΈ.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° process_mrelease(), ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠΊΠΎΡΠΈΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π·Π° ΠΏΡΠΎΡΠ΅Ρ, Π·Π°Π²ΡΡΡΠ²Π°Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ. ΠΡΠΈ Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΠ²Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π΅ ΡΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π±Π°Π²Π΅Π½ΠΈ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ, ΠΏΡΠ΅ΡΠ΅ΠΉΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΡΠ°Π½Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΊΠ°ΡΠΎ oomd (ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ systemd). Π§ΡΠ΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° process_mrelease ΡΠ°ΠΊΠΈΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΌΠΎΠ³Π°Ρ ΠΏΠΎ-ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ Π΄Π° Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°Ρ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΎΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ.
- ΠΡΠΌ Π²Π³ΡΠ°Π΄Π΅Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° DNS ΡΠ΅Π·ΠΎΠ»Π²Π΅ΡΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΡΠΈΡΡΠ° βno-aaaaβ, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° DNS Π·Π°ΡΠ²ΠΊΠΈ Π·Π° AAAA Π·Π°ΠΏΠΈΡΠΈ (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° IPv6 Π°Π΄ΡΠ΅Ρ ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° Ρ ΠΎΡΡ), Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° NSS ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ getaddrinfo(), Π·Π° ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. Π’Π°Π·ΠΈ ΠΎΠΏΡΠΈΡ Π½Π΅ Π·Π°ΡΡΠ³Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½ΠΈΡ Π½Π° IPv6 Π°Π΄ΡΠ΅ΡΠΈ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π² /etc/hosts ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ getaddrinfo() Ρ ΡΠ»Π°Π³Π° AI_PASSIVE.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux Π±ΡΡ Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ fsopen, fsmount, move_mount, fsconfig, fspick, open_tree ΠΈ mount_setattr, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π½ΠΎΠ² API Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΎ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ (ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠΏΠ΅ΡΠ±Π»ΠΎΠΊΠ°, ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅, ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ ΠΊΡΠΌ ΡΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅), ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠ° Π±ΠΈΠ»ΠΈ ΠΈΠ·Π²ΡΡΡΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΎΠ±ΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ mount(). ΠΡΠ΄Π΅Π»Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΏΠ΅ΡΠ±Π»ΠΎΠΊΠ°, Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΡΠΈΠΈ, ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π² Π΄ΡΡΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΡΠ΄Π΅Π»Π½Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠΎΡΠ½ΠΎ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠΉΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠ°ΡΠΎ Π½Π°ΡΠ»Π°Π³Π²Π°Π½ΠΈΡ.
- localedef ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° Π»ΠΎΠΊΠ°Π», ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π² UTF-8 ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π²ΠΌΠ΅ΡΡΠΎ ASCII.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ mbrtoc8 ΠΈ c8rtomb ΠΊΡΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ISO C2X N2653 ΠΈ C++20 P0482R6.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΈΠΏΠ° char8_t, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡ ISO C2X N2653.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ arc4random, arc4random_buf ΠΈ arc4random_uniform, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ getrandom ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° /dev/urandom, ΠΊΠΎΠΈΡΠΎ Π²ΡΡΡΠ°Ρ Π²ΠΈΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΠΈΡΠ»Π°.
- ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux, ΡΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ LoongArch, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ Loongson 3 5000, ΠΈ ΠΏΡΠΈΠ»Π°Π³Π° Π½ΠΎΠ²ΠΈΡ RISC ISA, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° MIPS ΠΈ RISC-V. Π ΡΠ΅Π³Π°ΡΠ½Π°ΡΠ° ΡΠΈ ΡΠΎΡΠΌΠ° Π΅ Π½Π°Π»ΠΈΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΡΠ°ΠΌΠΎ Π·Π° 64-Π±ΠΈΡΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° LoongArch (LA64). ΠΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅, ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΏΠΎΠ½Π΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° binutils 2.38, GCC 12 ΠΈ Linux ΡΠ΄ΡΠΎ ββ5.19.
- ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ Π·Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ Π½Π΅Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΠΎΠ±ΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ LD_TRACE_PRELINKING ΠΈ LD_USE_LOAD_BIAS ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π»ΠΈΠ½ΠΊΠ΅ΡΠ°, ΡΠ° ΠΎΡΡ Π²ΡΡΠ»Π΅Π½ΠΈ ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΈ Π² Π±ΡΠ΄Π΅ΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅.
- ΠΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ ΠΊΠΎΠ΄ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° LD_ASSUME_KERNEL. ΠΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π° ΠΏΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Glibc, ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΡΠ΅Π· ELF ΠΏΠΎΠ»Π΅ΡΠΎ NT_GNU_ABI_TAG.
- ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° LD_LIBRARY_VERSION Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru