Ruby
Ruby 2.6
Ruby 2.6 ແມ່ນເວີຊັນທີ່ໝັ້ນຄົງຫຼ້າສຸດຂອງ Ruby. ມີການເພີ່ມຄຸນສົມບັດໃໝ່ ແລະ ການປັບປຸງຫຼາຍຢ່າງ ເພື່ອຮອງຮັບຄວາມຕ້ອງການທີ່ຫຼາກຫຼາຍ ແລະ ຂະຫຍາຍຕົວຂອງ Ruby. ດ້ວຍການອັບເດດຄັ້ງໃຫຍ່ນີ້ ຈາກ Ruby 2.5 ໃນ Fedora 29 ໄປເປັນ Ruby 2.6 ໃນ Fedora 30, ເຮັດໃຫ້ Fedora ກາຍເປັນແພລັດຟອມການພັດທະນາ Ruby ທີ່ດີກວ່າເກົ່າ.
ການປ່ຽນແປງທີ່ໂດດເດັ່ນລວມມີ:
-
ຕອນນີ້ມີການນຳໃຊ້ຕົວລວບລວມຄຳສັ່ງແບບ Just-In-Time (JIT) ໃນຂັ້ນເລີ່ມຕົ້ນແລ້ວ. ຕົວລວບລວມຄຳສັ່ງ JIT ມີຈຸດປະສົງເພື່ອປັບປຸງປະສິດທິພາບການເຮັດວຽກຂອງທຸກໆໂປຣແກຣມ Ruby. ຕົວລວບລວມຄຳສັ່ງ JIT ຂອງ Ruby ມີວິທີການເຮັດວຽກທີ່ແຕກຕ່າງຈາກພາສາອື່ນໆ ໂດຍການຂຽນລະຫັດ C ລົງໃນດິດ ແລະ ເອີ້ນໃຊ້ຂະບວນການຂອງຕົວລວບລວມຄຳສັ່ງ C ທົ່ວໄປ ເພື່ອສ້າງລະຫັດເນທີບ (native code).
ຈຸດປະສົງຫຼັກຂອງການປ່ອຍ JIT ນີ້ແມ່ນເພື່ອໃຫ້ໂອກາດໃນການກວດສອບວ່າ ມັນສາມາດເຮັດວຽກກັບແພລັດຟອມຂອງທ່ານໄດ້ຫຼືບໍ່ ແລະ ເພື່ອຊອກຫາຄວາມສ່ຽງດ້ານຄວາມປອດໄພກ່ອນການປ່ອຍເວີຊັນ 2.6. ຕົວລວບລວມຄຳສັ່ງ JIT ຈະຮອງຮັບເມື່ອ Ruby ຖືກສ້າງດ້ວຍ GCC, Clang ຫຼື Microsoft VC++, ເຊິ່ງຕ້ອງມີພ້ອມໃນເວລາເຮັດວຽກ (runtime). ຖ້າບໍ່ດັ່ງນັ້ນ, ທ່ານຈະຍັງບໍ່ສາມາດໃຊ້ງານມັນໄດ້ໃນຕອນນີ້.
ໃນ Ruby 2.6.0 preview3, ພວກເຮົາສາມາດເຮັດໃຫ້ປະສິດທິພາບໄວຂຶ້ນ 1.7 ເທົ່າ ເມື່ອທຽບກັບ Ruby 2.5 ໃນການທົດສອບການເຮັດວຽກຂອງ CPU ທີ່ເອີ້ນວ່າ Optcarrot. ປະສິດທິພາບໃນການເຮັດວຽກທີ່ໃຊ້ໜ່ວຍຄວາມຈຳສູງ ເຊັ່ນ ແອັບພລິເຄຊັນ Rails ກໍຈະຖືກປັບປຸງໃຫ້ດີຂຶ້ນເຊັ່ນກັນ.
-
ຕອນນີ້ມີໂມດູນທົດລອງໃໝ່
RubyVM::ASTແລ້ວ. ໂມດູນນີ້ມີເມັດທອດparseເຊິ່ງຈະວິເຄາະລະຫັດ ruby ທີ່ເປັນສະຕຣິງ (string) ແລະ ສົ່ງຄືນຄ່າເປັນໂນດ AST (Abstract Syntax Tree), ແລະ ເມັດທອດparse_fileເຊິ່ງຈະວິເຄາະໄຟລ໌ລະຫັດ ruby ແລະ ສົ່ງຄືນຄ່າເປັນໂນດ AST. ນອກຈາກນີ້ ຍັງມີການແນະນຳຄລາດRubyVM::AST::Nodeອີກດ້ວຍ. ທ່ານສາມາດດຶງຂໍ້ມູນຕຳແໜ່ງ ແລະ ໂນດລູກ (children nodes) ຈາກອັອບເຈັກ Node ໄດ້. ຄຸນສົມບັດນີ້ແມ່ນຢູ່ໃນຂັ້ນທົດລອງ. ຄວາມເຂົ້າກັນໄດ້ຂອງໂຄງສ້າງໂນດ AST ແມ່ນຍັງບໍ່ທັນຮັບປະກັນ. -
ຄຸນສົມບັດໃໝ່:
-
ເພີ່ມນາມແຝງ (alias) ໃໝ່
thenໃຫ້ກັບKernel#yield_self. -
ເພີ່ມ
Random.bytes. -
ເພີ່ມ
Binding#source_location. ເມັດທອດນີ້ຈະສົ່ງຄືນຕຳແໜ່ງທີ່ມາຂອງ binding, ເຊິ່ງເປັນອາເຣ (array) ທີ່ມີ 2 ອົງປະກອບຄືFILEແລະLINE. -
ເພີ່ມຕົວເລືອກ
:exceptionເພື່ອໃຫ້Kernel.#systemແຈ້ງຂໍ້ຜິດພາດ (raise error) ແທນທີ່ຈະສົ່ງຄືນຄ່າ false. -
ການໃຊ້
elseໂດຍບໍ່ມີrescueຈະເຮັດໃຫ້ເກີດຂໍ້ຜິດພາດທາງໄວຍາກອນ (syntax error). [ຂັ້ນທົດລອງ] -
ຊື່ຄົງທີ່ (Constant) ສາມາດເລີ່ມຕົ້ນດ້ວຍຕົວອັກສອນພິມໃຫຍ່ທີ່ບໍ່ແມ່ນ ASCII.
-
ມີການແນະນຳຊ່ວງແບບບໍ່ມີທີ່ສິ້ນສຸດ (endless range)
(1..). ມັນເຮັດວຽກຄືກັບວ່າມັນບໍ່ມີຈຸດຈົບ.
-
ໄດ້ມີການປັບປຸງປະສິດທິພາບດັ່ງຕໍ່ໄປນີ້:
-
ເຮັດໃຫ້
Proc#callໄວຂຶ້ນ ເພາະພວກເຮົາບໍ່ຈຳເປັນຕ້ອງສົນໃຈເລື່ອງ$SAFEອີກຕໍ່ໄປ. ການທົດສອບlc_fizzbuzzສະແດງໃຫ້ເຫັນວ່າຄວາມໄວເພີ່ມຂຶ້ນ 40%. -
ເຮັດໃຫ້
block.callໄວຂຶ້ນ ໃນກໍລະນີທີ່ບລັອກ (block) ຖືກສົ່ງຜ່ານພາຣາມີເຕີ. Ruby 2.6 ປັບປຸງປະສິດທິພາບຂອງການເອີ້ນໃຊ້ບລັອກທີ່ສົ່ງຜ່ານມາ. ສາມາດສັງເກດເຫັນການປັບປຸງທີ່ດີຂຶ້ນເຖິງ 2.6 ເທົ່າ ຈາກການທົດສອບ micro-benchmarks. -
ໄດ້ມີການແນະນຳ Transient Heap (
theap).theapແມ່ນການຈັດການ heap ສຳລັບອັອບເຈັກໃນໜ່ວຍຄວາມຈຳທີ່ມີອາຍຸສັ້ນ ເຊິ່ງຖືກຊີ້ໂດຍຄລາດສະເພາະ. ຕົວຢ່າງ: ການສ້າງອັອບເຈັກ Hash ຂະໜາດນ້ອຍ ແລະ ມີອາຍຸສັ້ນ ຈະໄວຂຶ້ນສອງເທົ່າ. ຈາກການທົດສອບrdocເຫັນວ່າປະສິດທິພາບດີຂຶ້ນ 6-7%.
ການປ່ຽນແປງອື່ນໆທີ່ໂດດເດັ່ນຕັ້ງແຕ່ເວີຊັນ 2.5:
-
$SAFEແມ່ນສະຖານະສາກົນຂອງຂະບວນການ (process global state) ແລະ ພວກເຮົາສາມາດຕັ້ງຄ່າເປັນ 0 ໄດ້ອີກຄັ້ງ. -
ການສົ່ງຄ່າ
safe_levelໄປໃຫ້ERB.newແມ່ນຖືກຍົກເລີກການນຳໃຊ້ (deprecated).trim_modeແລະeoutvarຕອນນີ້ໄດ້ກາຍເປັນ keyword arguments. -
ລວມ RubyGems 3.0.0.beta2 ເຂົ້າໄວ້ນຳກັນ.
-
ລວມ Bundler ເປັນ gem ມາດຕະຖານ (default gem).
ເບິ່ງ ປະກາດການປ່ອຍເວີຊັນຈາກຕົ້ນທາງ ສຳລັບຂໍ້ມູນລະອຽດເພີ່ມເຕີມກ່ຽວກັບການປ່ອຍເວີຊັນນີ້.
Want to help? Learn how to contribute to Fedora Docs ›