Rhyddhau Llyfrgell System Glib 2.31

Ar ôl chwe mis o ddatblygiad cyhoeddi rhyddhau llyfrgell system Llyfrgell GNU C (glibc) 2.31, sy'n cydymffurfio'n llawn â gofynion safonau ISO C11 a POSIX.1-2008. Mae'r datganiad newydd yn cynnwys atgyweiriadau gan 58 o ddatblygwyr.

O'r rhai a weithredwyd yn Glbc 2.31 gwelliannau gallwch nodi:

  • Ychwanegwyd macro _ISOC2X_SOURCE i alluogi galluoedd a ddiffinnir yn safon ISO drafft y dyfodol C2X. Mae'r nodweddion hyn hefyd wedi'u galluogi wrth ddefnyddio'r macro _GNU_SOURCE neu wrth adeiladu gcc gyda'r faner “-std=gnu2x”;
  • Ar gyfer swyddogaethau a ddiffinnir yn y ffeil pennawd "math.h" sy'n talgrynnu eu canlyniadau i fath llai, cynigir y macros math generig cyfatebol yn y ffeil "tgmath.h", fel sy'n ofynnol gan y manylebau TS 18661-1:2014 a TS 18661-3: 2015;
  • Ychwanegwyd swyddogaeth pthread_clockjoin_np(), sy'n aros i'r edefyn gwblhau, gan ystyried yr amser terfyn (os bydd y terfyn amser yn digwydd cyn ei gwblhau, bydd y swyddogaeth yn dychwelyd gwall). Yn wahanol pthread_timedjoin_np(), yn pthread_clockjoin_np() mae'n bosibl diffinio'r math o amserydd ar gyfer cyfrifo'r terfyn amser - CLOCK_MONOTONIC (yn cymryd i ystyriaeth yr amser a dreulir gan y system yn y modd cysgu) neu CLOCK_REALTIME;
  • Mae'r datryswr DNS bellach yn cefnogi'r opsiwn trust-ad yn /etc/resolv.conf a'r faner RES_TRUSTAD yn _res.options, pan fydd wedi'i osod, trosglwyddir baner DNSSEC mewn ceisiadau DNS AD (data wedi'i ddilysu). Yn y modd hwn, mae'r faner AD a osodwyd gan y gweinydd ar gael i gymwysiadau sy'n galw swyddogaethau fel res_search (). Yn ddiofyn, os na chaiff yr opsiynau a awgrymir eu gosod, nid yw glibc yn nodi'r faner AD mewn ceisiadau ac mae'n ei chlirio'n awtomatig mewn ymatebion, gan nodi bod gwiriadau DNSSEC ar goll;
  • Nid yw adeiladu rhwymiadau galwadau system weithio ar gyfer Glibc bellach yn gofyn am osod y ffeiliau pennyn cnewyllyn Linux. Yr eithriad yw pensaernïaeth RISC-V 64-did;
  • Wedi'i ddileu bregusrwydd CVE-2019-19126, sy'n eich galluogi i osgoi'r amddiffyniad
    ASLR mewn rhaglenni gyda'r faner setuid a phennu cynllun y cyfeiriad mewn llyfrgelloedd wedi'u llwytho trwy drin y newidyn amgylchedd LD_PREFER_MAP_32BIT_EXEC.

Newidiadau sy'n torri cydnawsedd:

  • mae totalorder(), totalordermag(), a swyddogaethau tebyg ar gyfer mathau eraill o bwyntiau arnawf bellach yn derbyn awgrymiadau fel dadleuon i ddileu rhybuddion am drosi gwerthoedd yn y wladwriaeth NaN, yn unol ag argymhellion TS 18661-1 a gynigir ar gyfer safon C2X yn y dyfodol.
    Bydd gweithredyddion presennol sy'n pasio dadleuon pwynt arnawf yn uniongyrchol yn parhau i redeg heb eu haddasu;

  • Nid yw'r swyddogaeth amser hir-anghymeradwy ar gael bellach ar gyfer deuaidd sy'n gysylltiedig â glibc, ac mae ei ddiffiniad wedi'i ddileu o time.h. I osod amser y system, defnyddiwch y swyddogaeth clock_settime. Yn y dyfodol, rydym yn bwriadu dileu'r swyddogaeth ftime anghymeradwy, yn ogystal â'r ffeil pennawd sys/timeb.h (dylid defnyddio gettimeofday neu clock_gettime yn lle ftime);
  • Nid yw swyddogaeth gettimeofday bellach yn trosglwyddo gwybodaeth am y parth amser system gyfan (roedd y nodwedd hon yn berthnasol yn nyddiau 4.2-BSD ac mae wedi'i diystyru ers blynyddoedd lawer). Dylai'r ddadl 'tzp' yn awr gael ei basio pwyntydd null, a dylid defnyddio'r swyddogaeth localtime() i gael gwybodaeth parth amser yn seiliedig ar yr amser presennol. Bydd galw gettimeofday gyda dadl 'tzp' heb fod yn sero yn dychwelyd y meysydd tz_minuteswest a tz_dsttime gwag yn strwythur y gylchfa amser. Mae'r swyddogaeth gettimeofday ei hun yn anghymeradwy o dan POSIX (argymhellir clock_gettime yn lle gettimeofday), ond nid oes unrhyw gynlluniau i'w dynnu o glibc;
  • Nid yw settimeofday bellach yn cefnogi pasio paramedrau ar yr un pryd ar gyfer gosod yr amser a'r gwrthbwyso cywiro amser. Wrth alw settimeofday, rhaid gosod un o'r dadleuon (amser neu wrthbwyso) i null, fel arall bydd yr alwad ffwythiant yn methu gyda gwall EINVAL. Fel gettimeofday, mae swyddogaeth settimeofday yn anghymeradwy yn POSIX ac argymhellir ei disodli gan y swyddogaeth clock_settime neu'r teulu swyddogaethau adjtime;
  • Mae cefnogaeth i saernïaeth SPARC ISA v7 wedi dod i ben (mae cefnogaeth v8 yn cael ei chadw am y tro, ond dim ond ar gyfer proseswyr sy'n cefnogi cyfarwyddiadau CAS, fel proseswyr LEON, nid proseswyr SuperSPARC).
  • Os bydd paru yn methu yn "ddiog", lle nad yw'r cysylltydd yn chwilio am symbolau swyddogaeth tan yr alwad gyntaf i'r swyddogaeth honno, mae'r ffwythiant dlopen bellach yn gorfodi'r broses i derfynu (yn dychwelyd NULL ar fethiant yn flaenorol);
  • Ar gyfer yr ABI fflôt caled MIPS, mae'r pentwr gweithredadwy bellach yn cael ei ddefnyddio, oni bai bod yr adeiladwaith yn cyfyngu'n benodol ar y defnydd o'r cnewyllyn Linux 4.8+ trwy'r paramedr “-enable-kernel=4.8.0” (gyda chnewyllyn hyd at 4.8, damweiniau yw a arsylwyd ar gyfer rhai ffurfweddiadau MIPS);
  • Mae'r rhwymiadau o amgylch galwadau system sy'n ymwneud â thrin amser wedi'u symud i ddefnyddio'r alwad system time64, os yw'n bresennol (ar systemau 32-did, mae glibc yn gyntaf yn rhoi cynnig ar alwadau system newydd sy'n trin y math o amser 64-bit, ac os nad oes rhai, yn cwympo yn ôl at yr hen alwadau 32-bit).

Ffynhonnell: opennet.ru

Ychwanegu sylw