ພາສາ 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
-
ຄຸນສົມບັດໃໝ່ຫຼາຍຢ່າງຈາກການປັບປຸງ 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 ໄດ້ຄືກັນ.
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, andmpfr_get_d. -
ຟັງຊັນ
mpfr_div_uiອາດຈະໃຫ້ຜົນລັດການປັດເສດທີ່ບໍ່ຖືກຕ້ອງໃນ mpfr 3; ຂໍ້ບົກພ່ອງນີ້ໄດ້ຮັບການແກ້ໄຂແລ້ວໃນ mpfr 4.
Want to help? Learn how to contribute to Fedora Docs ›