Glibc 2.31 System Library Release

Pagkatapos ng anim na buwan ng pag-unlad nalathala release ng system library GNU C Library (glibc) 2.31, na ganap na sumusunod sa mga kinakailangan ng mga pamantayan ng ISO C11 at POSIX.1-2008. Kasama sa bagong release ang mga pag-aayos mula sa 58 developer.

Mula sa mga ipinatupad sa Glibc 2.31 mga pagpapabuti maaari mong tandaan:

  • Nagdagdag ng _ISOC2X_SOURCE macro upang paganahin ang mga kakayahan na tinukoy sa draft na pamantayang ISO sa hinaharap C2X. Pinagana rin ang mga feature na ito kapag ginagamit ang _GNU_SOURCE macro o kapag bumubuo sa gcc gamit ang flag na β€œ-std=gnu2x”;
  • Para sa mga function na tinukoy sa header file na "math.h" na nagpapaikot sa kanilang mga resulta sa isang mas maliit na uri, ang kaukulang generic type na mga macro ay iminungkahi sa file na "tgmath.h", ayon sa kinakailangan ng mga detalye ng TS 18661-1:2014 at TS 18661-3: 2015;
  • Idinagdag ang pthread_clockjoin_np() function, na naghihintay para makumpleto ang thread, na isinasaalang-alang ang timeout (kung ang timeout ay nangyari bago makumpleto, ang function ay magbabalik ng error). Unlike pthread_timedjoin_np(), sa pthread_clockjoin_np() posibleng tukuyin ang uri ng timer para sa pagkalkula ng timeout - CLOCK_MONOTONIC (isinasaalang-alang ang oras na ginugol ng system sa sleep mode) o CLOCK_REALTIME;
  • Sinusuportahan na ngayon ng DNS resolver ang trust-ad option sa /etc/resolv.conf at ang RES_TRUSTAD flag sa _res.options, kapag nakatakda, ang DNSSEC flag ay ipinapadala sa mga kahilingan sa DNS AD (na-authenticate na data). Sa mode na ito, ang AD flag na itinakda ng server ay magiging available sa mga application na tumatawag sa mga function tulad ng res_search(). Bilang default, kung ang mga iminungkahing opsyon ay hindi nakatakda, hindi tinukoy ng glibc ang AD flag sa mga kahilingan at awtomatiko itong iki-clear sa mga tugon, na nagpapahiwatig na ang mga DNSSEC check ay nawawala;
  • Ang pagbuo ng working system call bindings para sa Glibc ay hindi na nangangailangan ng pag-install ng Linux kernel header file. Ang pagbubukod ay ang 64-bit na arkitektura ng RISC-V;
  • Tinanggal kahinaan CVE-2019-19126, na nagpapahintulot sa iyo na i-bypass ang proteksyon
    ASLR sa mga program na may setuid flag at tukuyin ang layout ng address sa mga naka-load na library sa pamamagitan ng pagmamanipula ng LD_PREFER_MAP_32BIT_EXEC na variable ng kapaligiran.

Mga pagbabagong sumisira sa compatibility:

  • ang totalorder(), totalordermag(), at mga katulad na function para sa iba pang mga floating-point type ay tumatanggap na ngayon ng mga pointer bilang argumento para maalis ang mga babala tungkol sa pag-convert ng mga value sa state NaN, alinsunod sa mga rekomendasyon ng TS 18661-1 na iminungkahi para sa hinaharap na pamantayan ng C2X.
    Ang mga kasalukuyang executable na direktang pumasa sa mga argumento ng floating point ay patuloy na tatakbo nang walang pagbabago;

  • Ang matagal nang hindi na ginagamit na stime function ay hindi na available para sa mga binary na naka-link sa glibc, at ang kahulugan nito ay inalis mula sa oras.h. Upang itakda ang oras ng system, gamitin ang function na clock_settime. Sa hinaharap, plano naming tanggalin ang hindi na ginagamit na function ng ftime, gayundin ang sys/timeb.h header file (gettimeofday o clock_gettime ang dapat gamitin sa halip na ftime);
  • Ang gettimeofday function ay hindi na nagpapasa ng impormasyon tungkol sa system-wide time zone (ang tampok na ito ay may kaugnayan sa mga araw ng 4.2-BSD at hindi na ginagamit sa loob ng maraming taon). Ang argument na 'tzp' ay dapat na ngayong magpasa ng null pointer, at ang localtime() function ay dapat gamitin upang makakuha ng impormasyon ng time zone batay sa kasalukuyang oras. Ang pagtawag sa gettimeofday na may hindi zero na argumentong 'tzp' ay magbabalik ng mga walang laman na field na tz_minuteswest at tz_dsttime sa istraktura ng timezone. Ang gettimeofday function mismo ay hindi na ginagamit sa ilalim ng POSIX (clock_gettime ay inirerekomenda sa halip na gettimeofday), ngunit walang planong alisin ito sa glibc;
  • hindi na sinusuportahan ng settimeofday ang sabay-sabay na pagpasa ng mga parameter para sa pagtatakda ng oras at offset sa pagwawasto ng oras. Kapag tumatawag sa settimeofday, ang isa sa mga argumento (oras o offset) ay dapat na ngayong itakda sa null, kung hindi, ang function na tawag ay mabibigo na may EINVAL error. Tulad ng gettimeofday, ang settimeofday function ay hindi na ginagamit sa POSIX at inirerekomendang palitan ng clock_settime function o ang adjtime na pamilya ng mga function;
  • Ang suporta para sa arkitektura ng SPARC ISA v7 ay hindi na ipinagpatuloy (ang suporta sa v8 ay pinananatili sa ngayon, ngunit para lamang sa mga processor na sumusuporta sa mga tagubilin sa CAS, tulad ng mga LEON processor, hindi SuperSPARC processor).
  • Kung nabigo ang pagpapares sa "tamad", kung saan ang linker ay hindi naghahanap ng mga simbolo ng isang function hanggang sa unang tawag sa function na iyon, pinipilit na ngayon ng dlopen function na wakasan ang proseso (dating nagbabalik ng NULL sa pagkabigo);
  • Para sa MIPS hard-float ABI, ang executable stack ay ginagamit na ngayon, maliban kung ang build ay tahasang naghihigpit sa paggamit ng Linux kernel 4.8+ sa pamamagitan ng "-enable-kernel=4.8.0" na parameter (na may mga kernel hanggang 4.8, ang mga pag-crash ay sinusunod para sa ilang mga pagsasaayos ng MIPS);
  • Ang mga binding sa paligid ng mga tawag sa system na nauugnay sa pagmamanipula ng oras ay inilipat upang gamitin ang time64 system call, kung mayroon (sa mga 32-bit na system, ang glibc ay unang sumusubok na gumamit ng mga bagong tawag sa system na nagmamanipula ng 64-bit na uri para sa oras, at kung mayroong wala, bumabalik sa mga lumang 32-bit na tawag).

Pinagmulan: opennet.ru

Magdagdag ng komento