Documentation for a newer release is available. View Latest

ພາສາ C

GCC 10.0.1

ຊຸດຄອມໄພເລີ GNU ໄດ້ຮັບການອັບເດດເປັນເວີຊັນ 10.0.1. ເບິ່ງ ເອກະສານຕົ້ນທາງ ສໍາລັບການປ່ຽນແປງທີ່ຜູ້ໃຊ້ສາມາດເຫັນໄດ້. ແພັກເກດຕ່າງໆໃນ Fedora 32 ໄດ້ຖືກສ້າງຂຶ້ນໃໝ່ດ້ວຍຄອມໄພເລີເວີຊັນໃໝ່ນີ້.

ຄຸນສົມບັດໃໝ່ ແລະ ການປັບປຸງທົ່ວໄປ

  • ຟັງຊັນພາຍໃນ (built-in) ໃໝ່:

    • ຕົວດຳເນີນການ preprocessor ພາຍໃນ __has_builtin ສາມາດໃຊ້ເພື່ອສອບຖາມການຮອງຮັບຟັງຊັນພາຍໃນທີ່ສະໜອງໃຫ້ໂດຍ GCC ແລະ ຄອມໄພເລີອື່ນໆທີ່ຮອງຮັບມັນ.

    • __builtin_roundeven ສໍາລັບຟັງຊັນທີ່ກ່ຽວຂ້ອງຈາກ ISO/IEC TS 18661.

  • ຕົວເລືອກແຖວຄໍາສັ່ງ (command-line) ໃໝ່:

    • -fallocation-dce ຖອນຄູ່ຂອງຕົວດຳເນີນການ new ແລະ delete ທີ່ບໍ່ຈຳເປັນອອກ.

    • ຕອນນີ້ສາມາດໃຊ້ -fprofile-partial-training ເພື່ອແຈ້ງໃຫ້ຄອມໄພເລີຊາບວ່າ ເສັ້ນທາງຂອງໂຄ້ດທີ່ບໍ່ໄດ້ຖືກຄຸມໂດຍການຝຶກຝົນ (training run) ບໍ່ຄວນຖືກປັບໃຫ້ເໝາະສົມຕາມຂະໜາດ.

    • -fprofile-reproducible ຄວບຄຸມລະດັບຂອງການຜະລິດຊໍ້າ (reproducibility) ຂອງໂປຣໄຟລ໌ທີ່ເກັບກຳໂດຍ -fprofile-generate. ສິ່ງນີ້ເຮັດໃຫ້ສາມາດສ້າງໂປຣແກຣມຄືນໃໝ່ໃຫ້ໄດ້ຜົນລັດຄືເກົ່າ ເຊິ່ງມີປະໂຫຍດ ຕົວຢ່າງເຊັ່ນ ສໍາລັບແພັກເກດທີ່ແຈກຢາຍ.

  • ການປັບປຸງການເຮັດໃຫ້ເໝາະສົມລະຫວ່າງຂັ້ນຕອນ (Inter-procedural optimization):

    • ການແທນທີ່ສະກາລາລະຫວ່າງຂັ້ນຕອນສໍາລັບການລວມ (IPA-SRA) ໄດ້ຖືກປ່ຽນມາໃຊ້ໃນຮູບແບບໃໝ່ເພື່ອເຮັດວຽກໃນຕອນເຊື່ອມຕໍ່ (link-time).

    • ຕອນນີ້ -finline-functions ຖືກເປີດໃຊ້ທີ່ -O2 ແລະ ໄດ້ຖືກປັບຈູນເພື່ອໃຫ້ໄດ້ຄວາມສົມດຸນລະຫວ່າງຂະໜາດໂຄ້ດ ແລະ ປະສິດທິພາບຕອນລັນ (runtime). ສູດການຄິດໄລ່ (heuristics) ຂອງ Inliner ກໍໄດ້ຮັບການເລັ່ງໃຫ້ໄວຂຶ້ນຢ່າງຫຼວງຫຼາຍ ເພື່ອຫຼີກເວັ້ນຜົນກະທົບທາງລົບຕໍ່ເວລາໃນການຄອມໄພລ໌ຂອງ -flto -O2.

    • ຕອນນີ້ Inliner heuristics ແລະ ການໂຄລນຟັງຊັນສາມາດໃຊ້ຂໍ້ມູນໄລຍະຄ່າ (value-range information) ເພື່ອຄາດການປະສິດທິພາບຂອງການແປງແຕ່ລະຢ່າງໄດ້.

    • ໃນລະຫວ່າງການເຮັດໃຫ້ເໝາະສົມຕອນເຊື່ອມຕໍ່ (link-time optimization), ກົດລະບຽບການນິຍາມອັນດຽວ (One Definition Rule) ຂອງ C++ ຈະຖືກນຳໃຊ້ເພື່ອເພີ່ມຄວາມຊັດເຈນຂອງການວິເຄາະນາມແຝງ (alias analysis) ຕາມປະເພດ.

  • ການປັບປຸງການເຮັດໃຫ້ເໝາະສົມຕອນເຊື່ອມຕໍ່ (Link-time optimization):

    • ໄດ້ມີການເພີ່ມ binary ໃໝ່ lto-dump. ໂປຣແກຣມນີ້ສາມາດສະແດງຂໍ້ມູນຕ່າງໆກ່ຽວກັບໄຟລ໌ວັດຖຸ LTO bytecode.

    • ໄລຍະຂະໜານ (Parallel phase) ຂອງ LTO ສາມາດກວດຫາ jobserver ຂອງ make ທີ່ກຳລັງເຮັດວຽກຢູ່ໂດຍອັດຕະໂນມັດ ຫຼື ສາມາດກັບໄປໃຊ້ຕາມຈຳນວນຄໍ (cores) ທີ່ມີຢູ່.

    • LTO bytecode ສາມາດບີບອັດດ້ວຍອັນກໍຣິດທຶມ zstd. ສະກຣິບ Configure ສາມາດກວດຫາການຮອງຮັບ zstd ໄດ້ໂດຍອັດຕະໂນມັດ.

    • ຕອນນີ້ຄ່າ --param ສ່ວນໃຫຍ່ສາມາດກຳນົດໄດ້ໃນລະດັບຄວາມລະອຽດຂອງໜ່ວຍການແປ (translation unit). ສິ່ງນີ້ລວມເຖິງພາຣາມິເຕີທັງໝົດທີ່ຄວບຄຸມ inliner ແລະ ການເຮັດໃຫ້ເໝາະສົມລະຫວ່າງຂັ້ນຕອນອື່ນໆ. ຕ່າງຈາກເວີຊັນກ່ອນໜ້ານີ້, GCC 10 ຈະບໍ່ສົນໃຈພາຣາມິເຕີທີ່ຄວບຄຸມການເຮັດໃຫ້ເໝາະສົມທີ່ກຳນົດໃນຕອນເຊື່ອມຕໍ່ (link-time) ແລະ ຈະນຳໃຊ້ພາຣາມິເຕີທີ່ກຳນົດໃນຕອນຄອມໄພລ໌ (compile-time) ໃນລັກສະນະດຽວກັນກັບທີ່ເຮັດສໍາລັບແຟລັກການເຮັດໃຫ້ເໝາະສົມ.

  • ການປັບປຸງການເຮັດໃຫ້ເໝາະສົມທີ່ຂັບເຄື່ອນດ້ວຍໂປຣໄຟລ໌ (Profile driven optimization):

    • ພາສາໃໝ່ຂອງໂປຣໄຟລ໌ ແລະ ການປັບປຸງການບຳລຸງຮັກສາ ສະເພາະພາສາໃນລະຫວ່າງການຄອມໄພລ໌ ແລະ ການແບ່ງສ່ວນໂຄ້ດ hot/cold ໄດ້ຖືກປັບປຸງໃຫ້ດີຂຶ້ນ.

    • ການໃຊ້ -fprofile-values, binary ທີ່ຖືກຕິດຕັ້ງເຄື່ອງມື (instrumented) ສາມາດຕິດຕາມຫຼາຍຄ່າ (ສູງສຸດ 4) ສໍາລັບ ຕົວຢ່າງເຊັ່ນ ການເອີ້ນແບບທາງອ້ອມ (indirect calls) ແລະ ໃຫ້ຂໍ້ມູນໂປຣໄຟລ໌ທີ່ຊັດເຈນກວ່າ.

ພາສາໃໝ່ ແລະ ການປັບປຸງສະເພາະພາສາ

  • ຕອນນີ້ເວີຊັນ 2.6 ຂອງຂໍ້ກຳນົດ OpenACC ໄດ້ຮັບການຮອງຮັບໃນຄອມໄພເລີ C, C++ ແລະ Fortran ແລ້ວ. ເບິ່ງພາກສ່ວນສະຖານະການຕິດຕັ້ງໃນໜ້າ wiki ຂອງ OpenACC ແລະ ເອກະສານຄັງສຳຮອງຕອນລັນ ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.

  • ຕອນນີ້ OpenMP ແລະ OpenACC ຮອງຮັບການສົ່ງຕໍ່ວຽກ (offloading) ໄປຍັງ AMD Radeon (GCN) GPUs; ທີ່ຮອງຮັບແມ່ນ Fiji ລຸ້ນທີສາມ (fiji) ແລະ VEGA 10/VEGA 20 ລຸ້ນທີຫ້າ (gfx900 ຫຼື gfx906).

ຕະກູນ C

  • ຄຸນລັກສະນະ (attributes) ໃໝ່.

  • ຄຳເຕືອນໃໝ່.

  • ການເພີ່ມປະສິດທິພາບໃຫ້ກັບຄຳເຕືອນທີ່ມີຢູ່.

ພາສາ C

  • ຄຸນສົມບັດໃໝ່ຫຼາຍຢ່າງຈາກການປັບປຸງ C2X ທີ່ກຳລັງຈະມາເຖິງຂອງມາດຕະຖານ ISO C ແມ່ນໄດ້ຮັບການຮອງຮັບດ້ວຍ -std=c2x ແລະ -std=gnu2x. ບາງຄຸນສົມບັດເຫຼົ່ານີ້ຍັງໄດ້ຮັບການຮອງຮັບໃນຮູບແບບສ່ວນຂະຫຍາຍ (extensions) ເມື່ອຄອມໄພລ໌ສໍາລັບພາສານຸ້ນເກົ່າ. ນອກຈາກຄຸນສົມບັດທີ່ລະບຸໄວ້ແລ້ວ, ບາງຄຸນສົມບັດທີ່ເຄີຍຮອງຮັບໃນຮູບແບບສ່ວນຂະຫຍາຍ ແລະ ຕອນນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນມາດຕະຖານ C ຈະຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນໃນໂໝດ C2X ແລະ ຈະບໍ່ຖືກວິເຄາະດ້ວຍ -std=c2x -Wpedantic.

  • ຕອນນີ້ GCC ຈະໃຊ້ຄ່າເລີ່ມຕົ້ນເປັນ -fno-common. ດ້ວຍເຫດນີ້, ການເຂົ້າເຖິງຕົວປ່ຽນທົ່ວໂລກ (global variable) ຈຶ່ງມີປະສິດທິພາບຫຼາຍຂຶ້ນໃນເປົ້າໝາຍຕ່າງໆ. ໃນພາສາ C, ຕົວປ່ຽນທົ່ວໂລກທີ່ມີການນິຍາມແບບທົດລອງຫຼາຍອັນ ຕອນນີ້ຈະສົ່ງຜົນໃຫ້ເກີດຂໍ້ຜິດພາດໃນຕອນເຊື່ອມຕໍ່ (linker errors). ດ້ວຍ -fcommon ການນິຍາມດັ່ງກ່າວຈະຖືກລວມເຂົ້າກັນໂດຍບໍ່ແຈ້ງເຕືອນໃນລະຫວ່າງການເຊື່ອມຕໍ່.

C++

  • ໄດ້ມີການຕິດຕັ້ງຄຸນສົມບັດຂອງ C++20 ຫຼາຍຢ່າງ.

  • ລາຍງານຂໍ້ບົກພ່ອງ (Defect Reports) ຂອງ C++ ຫຼາຍສະບັບໄດ້ຮັບການແກ້ໄຂແລ້ວ.

  • ຄຳເຕືອນໃໝ່.

  • ຕອນນີ້ G++ ສາມາດກວດຫາການແກ້ໄຂວັດຖຸຄົງທີ່ (constant objects) ໃນການປະເມີນ constexpr (ເຊິ່ງເປັນພຶດຕິກຳທີ່ບໍ່ໄດ້ກຳນົດໄວ້).

  • G++ ຈະບໍ່ສະແດງຄຳເຕືອນ -Wsign-conversion ທີ່ຜິດພາດກັບການແປງປະເພດ (explicit casts) ອີກຕໍ່ໄປ.

  • ການເຮັດໃຫ້ແຄບລົງ (Narrowing) ຕອນນີ້ຖືກກວດພົບໃນຫຼາຍບໍລິບົດຫຼາຍຂຶ້ນ (ຕົວຢ່າງ: ຄ່າຂອງ case).

  • ການຊົມໃຊ້ໜ່ວຍຄວາມຈຳຂອງຄອມໄພເລີໄດ້ຖືກຫຼຸດລົງໃນການປະເມີນ constexpr.

  • ຕອນນີ້ noexcept-specifier ຖືກຈັດການຢ່າງຖືກຕ້ອງໃນຖານະບໍລິບົດຄລາສທີ່ສົມບູນ (complete-class context) ຕາມ [class.mem].

  • ຕອນນີ້ຄຸນລັກສະນະ (attribute) ສາມາດໃຊ້ກັບ namespace ໄດ້ຄືກັນ.

ຄັງສຳຮອງຕອນລັນ (libstdc++)

  • ປັບປຸງການຮອງຮັບ C++2a ແບບທົດລອງ, ລວມທັງ.

  • ຮອງຮັບ RDSEED ໃນ std::random_device.

  • ຫຼຸດການເພິ່ງພາໄຟລ໌ສ່ວນຫົວ (header dependencies), ເຮັດໃຫ້ການຄອມໄພລ໌ໄວຂຶ້ນສໍາລັບບາງໂຄ້ດ.

GNU C Library ເວີຊັນ 2.31

Fedora 32 ໃຫ້ບໍລິການ GNU C Library - glibc - ເວີຊັນ 2.31. ການປ່ຽນແປງທີ່ໂດດເດັ່ນລວມມີ:

ຄຸນສົມບັດໃໝ່

  • ຕອນນີ້ GNU C Library ຮອງຮັບຄຸນສົມບັດທົດສອບມາໂຄຣ _ISOC2X_SOURCE ເພື່ອເປີດໃຊ້ຄຸນສົມບັດຈາກຮ່າງມາດຕະຖານ ISO C2X. ມີພຽງບາງຄຸນສົມບັດຈາກຮ່າງມາດຕະຖານນີ້ເທົ່ານັ້ນທີ່ໄດ້ຮັບການຮອງຮັບໂດຍ GNU C Library, ແລະ ເນື່ອງຈາກຮ່າງນີ້ຍັງຢູ່ໃນລະຫວ່າງການພັດທະນາ, ຊຸດຄຸນສົມບັດທີ່ເປີດໃຊ້ໂດຍມາໂຄຣນີ້ອາດຈະມີການປ່ຽນແປງ. ຄຸນສົມບັດຈາກ C2X ຍັງສາມາດເປີດໃຊ້ໄດ້ໂດຍ _GNU_SOURCE, ຫຼື ໂດຍການຄອມໄພລ໌ດ້ວຍ gcc -std=gnu2x.

  • ຟັງຊັນ <math.h> ທີ່ປັດເສດຜົນລັດຂອງພວກເຂົາໃຫ້ເປັນປະເພດທີ່ແຄບລົງ ຕອນນີ້ມີມາໂຄຣປະເພດທົ່ວໄປ (type-generic macros) ທີ່ກ່ຽວຂ້ອງໃນ <tgmath.h>, ຕາມທີ່ກຳນົດໄວ້ໃນ TS 18661-1:2014 ແລະ TS 18661-3:2015 ທີ່ໄດ້ຮັບການປັບປຸງໂດຍການແກ້ໄຂຄຳຮ້ອງຂໍຄວາມຊັດເຈນ 13 ຂອງ TS 18661-3.

  • ໄດ້ມີການເພີ່ມຟັງຊັນ pthread_clockjoin_np, ເຮັດໃຫ້ສາມາດ join ກັບເທຣດ (thread) ທີ່ສິ້ນສຸດລົງດ້ວຍໂມງສະເພາະໃດໜຶ່ງ. ມັນອະນຸຍາດໃຫ້ລໍຖ້າທຽບກັບ CLOCK_MONOTONIC ແລະ CLOCK_REALTIME. ຟັງຊັນນີ້ແມ່ນສ່ວນຂະຫຍາຍຂອງ GNU.

  • ເພີ່ມທ້ອງຖິ່ນ (locale) ໃໝ່: mnw_MM (ພາສາມອນທີ່ເວົ້າໃນປະເທດມຽນມາ).

  • ຕົວແກ້ໄຂ DNS (stub resolver) ຈະເລືອກສົ່ງບິດ AD (ຂໍ້ມູນທີ່ໄດ້ຮັບການກວດສອບແລ້ວ) ໃນການສອບຖາມ ຖ້າໄດ້ຕັ້ງຕົວເລືອກ trust-ad ຜ່ານຄຳສັ່ງ options ໃນ /etc/resolv.conf (ຫຼື ຖ້າ RES_TRUSTAD ຖືກຕັ້ງໃນ _res.options). ໃນໂໝດນີ້, ບິດ AD ຕາມທີ່ສະໜອງໃຫ້ໂດຍເນມເຊີບເວີ (name server) ຈະມີໃຫ້ກັບແອັບພລິເຄຊັນທີ່ເອີ້ນ res_search ແລະ ຟັງຊັນທີ່ກ່ຽວຂ້ອງ. ໃນໂໝດເລີ່ມຕົ້ນ, ບິດ AD ຈະບໍ່ຖືກຕັ້ງໃນການສອບຖາມ, ແລະ ມັນຈະຖືກລຶບອອກໂດຍອັດຕະໂນມັດໃນການຕອບສະໜອງ, ເຊິ່ງສະແດງເຖິງການຂາດການກວດສອບ DNSSEC. (ດັ່ງນັ້ນ, ເນມເຊີບເວີ ແລະ ເສັ້ນທາງເຄືອຂ່າຍໄປຫາພວກເຂົາຈຶ່ງຖືກຖືວ່າບໍ່ໜ້າເຊື່ອຖື.)

ຄຸນສົມບັດທີ່ຖືກຍົກເລີກ ແລະ ຖືກຖອນອອກ

  • ຕອນນີ້ຟັງຊັນ totalorder ແລະ totalordermag, ລວມທັງຟັງຊັນທີ່ກ່ຽວຂ້ອງສໍາລັບປະເພດເລກຈຸດທົດສະນິຍົມ (floating-point) ອື່ນໆ, ຈະຮັບພາຣາມິເຕີເປັນຕົວຊີ້ (pointer arguments) ເພື່ອຫຼີກເວັ້ນ NaNs ທີ່ສົ່ງສັນຍານ (signaling NaNs) ບໍ່ໃຫ້ຖືກປ່ຽນເປັນ quiet NaNs ໃນການສົ່ງຄ່າພາຣາມິເຕີ. ສິ່ງນີ້ເປັນໄປຕາມການແກ້ໄຂຄຳຮ້ອງຂໍຄວາມຊັດເຈນ 25 ຂອງ TS 18661-1, ຕາມທີ່ນຳໃຊ້ສໍາລັບ C2X. Binary ທີ່ມີຢູ່ເຊິ່ງສົ່ງພາຣາມິເຕີເລກຈຸດທົດສະນິຍົມໂດຍກົງຈະຍັງຄົງເຮັດວຽກໄດ້ຕໍ່ໄປ.

  • ຟັງຊັນ stime ທີ່ລ້າສະໄໝຈະບໍ່ມີໃຫ້ໃຊ້ສໍາລັບ binary ທີ່ເຊື່ອມຕໍ່ໃໝ່ອີກຕໍ່ໄປ, ແລະ ການປະກາດຂອງມັນໄດ້ຖືກຖອນອອກຈາກ <time.h>. ໂປຣແກຣມທີ່ຕັ້ງເວລາລະບົບຄວນໃຊ້ clock_settime ແທນ.

  • ພວກເຮົາວາງແຜນທີ່ຈະຖອນຟັງຊັນ ftime ທີ່ລ້າສະໄໝອອກ, ລວມທັງໄຟລ໌ສ່ວນຫົວ <sys/timeb.h>, ໃນເວີຊັນອະນາຄົດຂອງ glibc. ໃນເວີຊັນນີ້, ໄຟລ໌ສ່ວນຫົວຍັງຄົງມີຢູ່ ແຕ່ການເອີ້ນ ftime ຈະເຮັດໃຫ້ເກີດຄຳເຕືອນຈາກຄອມໄພເລີ. ທຸກໂປຣແກຣມຄວນໃຊ້ gettimeofday ຫຼື clock_gettime ແທນ.

  • ຟັງຊັນ gettimeofday ຈະບໍ່ລາຍງານຂໍ້ມູນກ່ຽວກັບເຂດເວລາທົ່ວທັງລະບົບ (system-wide time zone) ອີກຕໍ່ໄປ. ຄຸນສົມບັດໃນຍຸກ 4.2-BSD ນີ້ໄດ້ຖືກຍົກເລີກມາເປັນເວລາຫຼາຍປີແລ້ວ, ເນື່ອງຈາກມັນບໍ່ສາມາດຈັດການກັບຄວາມຊັບຊ້ອນທັງໝົດຂອງເຂດເວລາໃນໂລກໄດ້, ແຕ່ມາຮອດປັດຈຸບັນພວກເຮົາໄດ້ຮອງຮັບມັນຕາມຄວາມສາມາດ. ການປ່ຽນແປງທີ່ຈຳເປັນເພື່ອຮອງຮັບ time_t ແບບ 64 ບິດ ໃນສະຖາປັດຕະຍະກຳ 32 ບິດ ເຮັດໃຫ້ສິ່ງນີ້ບໍ່ສາມາດເຮັດໄດ້ອີກຕໍ່ໄປ.

  • ຟັງຊັນ settimeofday ຍັງສາມາດໃຊ້ເພື່ອຕັ້ງເຂດເວລາທົ່ວທັງລະບົບໄດ້ ເມື່ອລະບົບປະຕິບັດການຮອງຮັບມັນ. ນີ້ແມ່ນຍ້ອນວ່າ Linux kernel ໄດ້ນຳໃຊ້ API ນີ້ຄືນໃໝ່ ໃນບາງສະຖາປັດຕະຍະກຳ, ເພື່ອອະທິບາຍຄ່າຊົດເຊີຍ (offset) ທີ່ຄ້າຍຄືກັບເຂດເວລາທົ່ວທັງລະບົບລະຫວ່າງໂມງຊອບແວທີ່ບຳລຸງຮັກສາໂດຍ kernel, ແລະ ໂມງ "RTC" ທີ່ຮັກສາເວລາເມື່ອລະບົບຖືກປິດ.

  • SPARC ISA v7 ບໍ່ໄດ້ຮັບການຮອງຮັບອີກຕໍ່ໄປ. v8 ຍັງຄົງໄດ້ຮັບການຮອງຮັບ, ແຕ່ສະເພາະໃນກໍລະນີທີ່ມີການຕິດຕັ້ງຄຳສັ່ງ CAS ເພີ່ມເຕີມເທົ່ານັ້ນ (ຕົວຢ່າງ: ໂປຣເຊສເຊີ LEON ຍັງຄົງໄດ້ຮັບການຮອງຮັບ, ແຕ່ໂປຣເຊສເຊີ SuperSPARC ແມ່ນບໍ່ຮອງຮັບ).

  • ຖ້າເກີດຄວາມຫຼົ້ມເຫຼວໃນການຜູກມັດແບບຊ້າ (lazy binding failure) ໃນລະຫວ່າງ dlopen, ໃນລະຫວ່າງການປະຕິບັດງານຂອງ ELF constructor, ຕອນນີ້ຂະບວນການ (process) ຈະຖືກຍົກເລີກ. ກ່ອນໜ້ານີ້, dynamic loader ຈະສົ່ງຄືນຄ່າ NULL ຈາກ dlopen, ໂດຍມີຂໍ້ຜິດພາດ lazy binding ຖືກເກັບໄວ້ໃນຂໍ້ຄວາມ dlerror. ໂດຍທົ່ວໄປແລ້ວ, ສິ່ງນີ້ບໍ່ປອດໄພເພາະວ່າການຕັ້ງຄ່າ stack ຄືນໃໝ່ໃນການເອີ້ນຟັງຊັນໃດໜຶ່ງນັ້ນບໍ່ສາມາດເຮັດໄດ້.

  • ສໍາລັບ MIPS hard-float ABIs, GNU C Library ຈະຖືກຕັ້ງຄ່າໃຫ້ຕ້ອງການ stack ທີ່ສາມາດປະຕິບັດງານໄດ້ (executable stack) ເວັ້ນເສຍແຕ່ຈະຖືກຕັ້ງຄ່າຢ່າງຊັດເຈນໃນຕອນສ້າງວ່າຕ້ອງການ kernel ເວີຊັນ 4.8 ຫຼື ໃໝ່ກວ່າ. ນີ້ແມ່ນຍ້ອນວ່າການປະຕິບັດງານ floating-point branches ໃນ stack ທີ່ບໍ່ສາມາດປະຕິບັດງານໄດ້ໃນ Linux kernel ກ່ອນເວີຊັນ 4.8 ສາມາດນຳໄປສູ່ການຢຸດເຮັດວຽກຂອງແອັບພລິເຄຊັນສໍາລັບບາງການຕັ້ງຄ່າ MIPS. ໃນຂະນະທີ່ປັດຈຸບັນ PT_GNU_STACK ຍັງບໍ່ໄດ້ຖືກນຳໃຊ້ຢ່າງແຜ່ຫຼາຍໃນ MIPS, GCC ເວີຊັນໃນອະນາຄົດຄາດວ່າຈະເປີດໃຊ້ stack ທີ່ບໍ່ສາມາດປະຕິບັດງານໄດ້ໂດຍຄ່າເລີ່ມຕົ້ນດ້ວຍ PT_GNU_STACK ແລະ ດັ່ງນັ້ນຈຶ່ງມີແນວໂນ້ມທີ່ຈະເຮັດໃຫ້ເກີດການຢຸດເຮັດວຽກໃນ kernel ເວີຊັນເກົ່າ.

  • ຕົວຫຸ້ມການເອີ້ນລະບົບ (System call wrappers) ສໍາລັບການເອີ້ນລະບົບເວລາ ຕອນນີ້ຈະໃຊ້ການເອີ້ນລະບົບ time64 ໃໝ່ເມື່ອມີໃຫ້ໃຊ້. ໃນເປົ້າໝາຍ 32 ບິດ, ຕົວຫຸ້ມເຫຼົ່ານີ້ຈະພະຍາຍາມເອີ້ນລະບົບໃໝ່ກ່ອນ ແລະ ຈະກັບໄປໃຊ້ການເອີ້ນລະບົບເວລາ 32 ບິດແບບເກົ່າ ຖ້າບໍ່ມີການເອີ້ນລະບົບໃໝ່. ສິ່ງນີ້ອາດຈະເຮັດໃຫ້ເກີດບັນຫາໃນສະພາບແວດລ້ອມທີ່ບໍ່ສາມາດຈັດການກັບການເອີ້ນລະບົບທີ່ບໍ່ຮອງຮັບໄດ້ຢ່າງຖືກຕ້ອງໂດຍການສົ່ງຄືນ -ENOSYS. Seccomp sandboxes ຈະໄດ້ຮັບຜົນກະທົບຈາກບັນຫານີ້.

ການປ່ຽນແປງທີ່ກ່ຽວຂ້ອງກັບຄວາມປອດໄພ

  • CVE-2019-19126: ld.so ບໍ່ສາມາດລະເລີຍຕົວປ່ຽນສະພາບແວດລ້ອມ LD_PREFER_MAP_32BIT_EXEC ໃນລະຫວ່າງການປະຕິບັດງານໂປຣແກຣມຫຼັງຈາກການປ່ຽນແປງດ້ານຄວາມປອດໄພ, ເຮັດໃຫ້ຜູ້ໂຈມຕີໃນທ້ອງຖິ່ນສາມາດຈຳກັດທີ່ຢູ່ການຈັບຄູ່ (mapping addresses) ທີ່ເປັນໄປໄດ້ສໍາລັບຄັງສຳຮອງທີ່ຖືກໂຫລດ ແລະ ດ້ວຍເຫດນີ້ຈຶ່ງສາມາດຂ້າມຜ່ານ ASLR ສໍາລັບໂປຣແກຣມ setuid ໄດ້. ລາຍງານໂດຍ Marcin Kościelnicki.

ສໍາລັບຂໍ້ມູນລະອຽດກ່ຽວກັບ glibc-2.31 ເບິ່ງ ເອກະສານຂ່າວຕົ້ນທາງ; ກະລຸນາສັງເກດວ່າທ່ານອາດຈະຕ້ອງເລື່ອນລົງເພື່ອຊອກຫາເວີຊັນ 2.31 ເນື່ອງຈາກເອກະສານມີການອັບເດດຢ່າງຕໍ່ເນື່ອງ.

mpfr 4.0.2

Fedora 32 ໃຫ້ບໍລິການ GNU MPFR library ເວີຊັນ 4.0.2. ການປ່ຽນແປງທີ່ໂດດເດັ່ນລວມມີ:

  • ຕອນນີ້ mpfr ຮອງຮັບການໃຊ້ແຄຊ໌ຮ່ວມກັນ (shared caches) ສໍາລັບແອັບພລິເຄຊັນທີ່ເຮັດວຽກແບບຫຼາຍເທຣດ (multithreaded), ເຊິ່ງຊ່ວຍຫຼຸດຜ່ອນການຊົມໃຊ້ໜ່ວຍຄວາມຈຳ.

  • ປັບປຸງການເຮັດແຄຊ໌: ຮັບປະກັນການເພີ່ມຄວາມຊັດເຈນຢ່າງໜ້ອຍ 10% ເພື່ອຫຼີກເວັ້ນການຄິດໄລ່ໃໝ່ຫຼາຍເກີນໄປ, ເຊິ່ງຊ່ວຍຫຼຸດຜ່ອນການຊົມໃຊ້ CPU.

  • ມີການໃຊ້ພູລ (pool) mpz_t ທີ່ມີຄວາມຊັດເຈນຕໍ່າເພື່ອຫຼຸດຜ່ອນຈຳນວນການຈອງໜ່ວຍຄວາມຈຳ, ເຊິ່ງຊ່ວຍຫຼຸດຜ່ອນການຊົມໃຊ້ CPU.

  • ຫຼາຍຟັງຊັນເຮັດວຽກໄດ້ໄວຂຶ້ນແລ້ວ; ຕົວຢ່າງ:, mpfr_add, mpfr_sub, mpfr_mul, mpfr_div, mpfr_sqrt, mpfr_set_d, and mpfr_get_d.

  • ຟັງຊັນ mpfr_div_ui ອາດຈະໃຫ້ຜົນລັດການປັດເສດທີ່ບໍ່ຖືກຕ້ອງໃນ mpfr 3; ຂໍ້ບົກພ່ອງນີ້ໄດ້ຮັບການແກ້ໄຂແລ້ວໃນ mpfr 4.

ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ເຂົ້າເບິ່ງບັນທຶກການປ່ອຍຕົ້ນທາງສໍາລັບເວີຊັນ 4.0.0, 4.0.1, ແລະ 4.0.2.