Eldono de Sistemo Biblioteko Glibc 2.31

Post ses monatoj da evoluo eldonita eldono de la sistembiblioteko Biblioteko GNU C (glibc) 2.31, kiu plene konformas al la postuloj de ISO C11 kaj POSIX.1-2008. La nova eldono inkluzivas korektojn de 58 programistoj.

Efektivigite en Glibc 2.31 plibonigoj vi povas noti:

  • Aldonita makroo _ISOC2X_SOURCE por ebligi kapablojn difinitajn en la skizo de estonta ISO-normo C2X. Ĉi tiuj funkcioj ankaŭ estas ebligitaj kiam oni uzas la makroon _GNU_SOURCE aŭ kiam oni konstruas en gcc kun la flago “-std=gnu2x”;
  • Por funkcioj difinitaj en la titoldosiero "math.h" kiuj rondigas siajn rezultojn al pli malgranda tipo, la ekvivalentaj senmarkaj makrooj estas proponitaj en la dosiero "tgmath.h", kiel postulas la specifoj TS 18661-1:2014 kaj TS. 18661-3: 2015;
  • Aldonita pthread_clockjoin_np() funkcio, kiu atendas ke la fadeno finiĝos, konsiderante la tempodaŭron (se la tempotempo okazas antaŭ kompletigo, la funkcio resendos eraron). Male al pthread_timedjoin_np(), en pthread_clockjoin_np() eblas difini la tipon de temporigilo por kalkuli la tempodaŭron - CLOCK_MONOTONIC (enkalkulas la tempon pasigitan de la sistemo en dormreĝimo) aŭ CLOCK_REALTIME;
  • La DNS-solvilo nun subtenas la trust-ad-opcion en /etc/resolv.conf kaj la RES_TRUSTAD-flagon en _res.options, kiam agordita, la DNSSEC-marko estas transdonita en DNS-petoj AD (aŭtentikigitaj datumoj). En ĉi tiu reĝimo, la AD-flago agordita de la servilo fariĝas disponebla por aplikaĵoj, kiuj vokas funkciojn kiel res_search(). Defaŭlte, se la proponitaj opcioj ne estas fiksitaj, glibc ne specifas la AD-flagon en petoj kaj aŭtomate malplenigas ĝin en respondoj, indikante ke DNSSEC-ĉekoj mankas;
  • Konstrui funkciajn sistemajn alvokojn por Glibc ne plu postulas instali la Linukso-kernajn kapdosierojn. La escepto estas la 64-bita RISC-V arkitekturo;
  • Forigita vundebleco CVE-2019-19126, kiu permesas vin preteriri la protekton
    ASLR en programoj kun la setuid flago kaj determini la adresaranĝon en ŝarĝitaj bibliotekoj per manipulado de la mediovariablo LD_PREFER_MAP_32BIT_EXEC.

Ŝanĝoj kiuj rompas kongruecon:

  • totalorder(), totalordermag(), kaj similaj funkcioj por aliaj glitkomaj tipoj nun akceptas montrilojn kiel argumentojn por forigi avertojn pri konvertado de valoroj en stato NaN, konforme al la rekomendoj de TS 18661-1 proponita por la estonta C2X-normo.
    Ekzistantaj ekzekutaĵoj, kiuj rekte pasas glitkomajn argumentojn, daŭre ruliĝos sen modifo;

  • La longtempe malrekomendita stime-funkcio ne plu disponeblas por glibc-ligitaj binaroj, kaj ĝia difino estis forigita de time.h. Por agordi la sisteman tempon, uzu la funkcion clock_settime. En la estonteco, ni planas forigi la malrekomenditan ftime-funkcion, same kiel la sys/timeb.h-kapodosieron (gettimeofday aŭ clock_gettime devus esti uzataj anstataŭ ftime);
  • La funkcio gettimeofday ne plu transdonas informojn pri la tutsistema horzono (ĉi tiu funkcio estis grava en la tagoj de 4.2-BSD kaj estis malrekomendita dum multaj jaroj). La 'tzp' argumento nun devus esti pasita nula montrilo, kaj la localtime() funkcio devus esti uzata por akiri horzonajn informojn surbaze de la nuna tempo. Voki gettimeofday kun ne-nula argumento 'tzp' resendos malplenajn kampojn tz_minuteswest kaj tz_dsttime en la horzona strukturo. La funkcio gettimeofday mem estas malrekomendita sub POSIX (clock_gettime estas rekomendita anstataŭ gettimeofday), sed ne estas planoj forigi ĝin de glibc;
  • settimeofday ne plu subtenas samtempan transdonon de parametroj por agordi la tempon kaj la temp-korektan ofseton. Dum vokado de settimeofday, unu el la argumentoj (tempo aŭ ofseto) nun devas esti agordita al nulo, alie la funkciovoko malsukcesos kun EINVAL-eraro. Kiel gettimeofday, la funkcio settimeofday estas malrekomendita en POSIX kaj rekomendas esti anstataŭigita per la funkcio clock_settime aŭ la adjtime familio de funkcioj;
  • Subteno por la SPARC ISA v7-arkitekturo estis nuligita (v8-subteno estas retenita nuntempe, sed nur por procesoroj kiuj apogas CAS-instrukciojn, kiel ekzemple LEON-procesoroj, ne SuperSPARC-procesoroj).
  • Se parigo malsukcesas en "mallaborema", en kiu la ligilo ne serĉas simbolojn de funkcio ĝis la unua voko al tiu funkcio, la dlopen-funkcio nun devigas la procezon ĉesiĝi (antaŭe resendante NULL ĉe malsukceso);
  • Por la MIPS malmola flosilo ABI, la rulebla stako nun estas uzata, krom se la konstruo eksplicite limigas la uzon de la Linukso-kerno 4.8+ per la parametro "-enable-kernel=4.8.0" (kun kernoj ĝis 4.8, kraŝoj estas observite por kelkaj MIPS-agordoj);
  • La ligadoj ĉirkaŭ sistemvokoj rilataj al tempomanipulado estis movitaj por uzi la time64 sistemvokon, se ĉeestas (sur 32-bitaj sistemoj, glibc unue provas novajn sistemvokojn kiuj manipulas la 64-bitan tempospecon, kaj se ekzistas neniu, falas. reen al la malnovaj 32-bitaj vokoj).

fonto: opennet.ru

Aldoni komenton