Glibc 2.36 Системийн номын сангийн хувилбар

Зургаан сарын турш хөгжүүлсний дараа ISO C2.36 болон POSIX.11-1 стандартын шаардлагад бүрэн нийцсэн GNU C Library (glibc) 2017 системийн номын сан гарсан. Шинэ хувилбарт 59 хөгжүүлэгчийн засварууд багтсан болно.

Glibc 2.36-д хэрэгжүүлсэн зарим сайжруулалтууд нь:

  • Шинэ DT_RELR (харьцангуй нүүлгэн шилжүүлэлт) хаягийн нүүлгэн шилжүүлэлтийн форматын дэмжлэгийг нэмсэн бөгөөд энэ нь хуваалцсан объектууд болон PIE (Байршилаас хамааралгүй гүйцэтгэх файлууд) горимд холбогдсон гүйцэтгэх файлуудын харьцангуй нүүлгэн шилжүүлэлтийн хэмжээг багасгах боломжийг олгодог. ELF файлуудын DT_RELR талбарыг ашиглахын тулд binutils 2.38 хувилбарт танилцуулсан холбогч дахь "-z pack-relative-relocs" сонголтыг дэмжих шаардлагатай.
  • Линукс платформын хувьд pidfd_open, pidfd_getfd болон pidfd_send_signal функцууд хэрэгжсэн бөгөөд энэ нь хянаж буй файлд хандах процессыг илүү нарийвчлалтай тодорхойлохын тулд PID дахин ашиглах нөхцөл байдлыг зохицуулахад тусалдаг pidfd функцэд хандах боломжийг олгодог (pidfd нь тодорхой процесстой холбоотой бөгөөд өөрчлөгддөггүй, харин PID нь үүнийг хийх боломжтой. PID-тэй холбоотой одоогийн процесс дууссаны дараа өөр процесст хавсаргана).
  • Линукс платформын хувьд нэг процесст өөр процессын өмнөөс madvise() системийн дуудлагыг гаргах боломжийг олгохын тулд process_madvise() функц нэмэгдсэн бөгөөд pidfd ашиглан зорилтот процессыг тодорхойлох боломжтой болсон. Madvise()-ээр дамжуулан та процессын санах ойн менежментийг оновчтой болгохын тулд санах ойтой ажиллах онцлогуудын талаар цөмд мэдээлэх боломжтой; жишээлбэл, дамжуулагдсан мэдээлэл дээр үндэслэн цөм нэмэлт чөлөөт санах ойг гаргаж авах боломжтой. Оновчлоход шаардлагатай мэдээлэл нь одоогийн процесст тодорхойгүй боловч тусдаа арын хяналтын процессоор зохицуулагддаг, ашиглагдаагүй санах ойг процессоос устгах ажлыг бие даан эхлүүлэх боломжтой нөхцөлд өөр процессоор madvise() руу залгах шаардлагатай байж болно.
  • Линукс платформын хувьд process_mrelease() функцийг нэмсэн бөгөөд энэ нь гүйцэтгэлийг дуусгах процессын санах ойг гаргахыг хурдасгах боломжийг олгодог. Хэвийн нөхцөлд нөөцийг чөлөөлөх, процессыг зогсоох нь агшин зуурынх биш бөгөөд янз бүрийн шалтгааны улмаас хойшлогдож, oomd (systemd-с өгсөн) гэх мэт хэрэглэгчийн орон зайн санах ойн эрт хариу үйлдлийн системд саад учруулж болзошгүй. Ийм системүүд process_mrelease гэж дуудснаар санах ойг албадан процессоос эргүүлэн авах үйл явцыг илүү таамаглаж чадна.
  • "no-aaaa" сонголтын дэмжлэгийг DNS шийдэгчийн суулгасан хэрэгжүүлэлт дээр нэмсэн бөгөөд энэ нь NSS-г гүйцэтгэх үед AAAA бичлэгийн DNS хүсэлтийг (IPv6 хаягийг хостын нэрээр тодорхойлох) идэвхгүй болгох боломжийг олгодог. Асуудлыг оношлоход хялбар болгохын тулд getaddrinfo() гэх мэт функцууд. Энэ сонголт нь /etc/hosts-д тодорхойлсон IPv6 хаягийн холболт болон AI_PASSIVE туг бүхий getaddrinfo() руу залгахад нөлөөлөхгүй.
  • Линукс платформын хувьд fsopen, fsmount, move_mount, fsconfig, fspick, open_tree болон mount_setattr функцууд нэмэгдсэн нь холболтын нэрийн зайд суурилсан файлын системийн холболтыг удирдах шинэ цөмийн API-д хандах боломжийг олгосон. Санал болгож буй функцууд нь өмнө нь нийтлэг mount() функцийг ашиглан гүйцэтгэсэн угсралтын янз бүрийн үе шатуудыг (суперблок боловсруулах, файлын системийн тухай мэдээлэл авах, холбох, холбох цэгт хавсаргах) тусад нь боловсруулах боломжийг олгодог. Тусдаа функцууд нь илүү төвөгтэй холбох хувилбаруудыг гүйцэтгэх боломжийг олгодог бөгөөд суперблокыг дахин тохируулах, сонголтуудыг идэвхжүүлэх, холбох цэгийг өөрчлөх, өөр нэрийн орон зай руу шилжих зэрэг үйлдлүүдийг тусад нь гүйцэтгэх боломжийг олгодог. Нэмж дурдахад, тусдаа боловсруулалт нь алдааны кодын гаралтын шалтгааныг үнэн зөв тодорхойлж, олон давхаргат файлын системүүдийн олон эх сурвалжийг тохируулах боломжийг олгодог, тухайлбал overlayf.
  • localedef нь ASCII-ийн оронд UTF-8 кодчилолоор хангагдсан локал тодорхойлолтын файлуудыг боловсруулахад дэмжлэг үзүүлдэг.
  • Олон байт mbrtoc8 болон c8rtomb кодчилолуудыг ISO C2X N2653 болон C++20 P0482R6 техникийн үзүүлэлтүүд рүү хөрвүүлэх функцүүдийг нэмсэн.
  • ISO C8X N2 стандартын төсөлд тодорхойлсон char2653_t төрлийн дэмжлэгийг нэмсэн.
  • arc4random, arc4random_buf, arc4random_uniform функцуудыг getrandom системийн дуудлага болон өндөр чанарын хуурамч санамсаргүй тоонуудыг буцаадаг /dev/urandom интерфейсээр хангадаг функцүүдийг нэмсэн.
  • Линукс платформ дээр ажиллахдаа Loongson 3 5000 процессоруудад хэрэглэгддэг LoongArch зааврын багц архитектурыг дэмжиж, MIPS болон RISC-V-тэй адил шинэ RISC ISA-г хэрэгжүүлдэг. Одоогийн хэлбэрээр зөвхөн LoongArch (LA64)-ийн 64 битийн хувилбарыг дэмжих боломжтой. Ажиллахын тулд танд ядаж binutils 2.38, GCC 12 болон Linux kernel 5.19 хувилбарууд хэрэгтэй.
  • Урьдчилан холбох механизм, түүнчлэн түүнтэй холбоотой LD_TRACE_PRELINKING болон LD_USE_LOAD_BIAS орчны хувьсагч болон холбогч чадамжийг хуучирсан бөгөөд дараагийн хувилбарт устгах болно.
  • Линуксийн цөмийн хувилбарыг шалгах, LD_ASSUME_KERNEL орчны хувьсагчийг зохицуулах кодыг устгасан. Glibc-г бүтээхэд дэмждэг цөмийн хамгийн бага хувилбарыг NT_GNU_ABI_TAG ELF талбараар тодорхойлно.
  • LD_LIBRARY_VERSION орчны хувьсагч Линукс платформ дээр зогссон.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх