
Python ยังคงเติบโตและแข็งแกร่งขึ้นเรื่อยๆ ในฐานะเครื่องมือสำคัญในด้านวิทยาศาสตร์ข้อมูล แบ็กเอนด์ ระบบอัตโนมัติและการสอน และเวอร์ชัน 3.14 มาพร้อมกับการเปลี่ยนแปลงมากมายที่ส่งผลต่อประสิทธิภาพ การทำงานพร้อมกัน และประสบการณ์รายวันในคู่มือนี้ เราจะบอกคุณพร้อมตัวอย่างและบริบทว่าเบื้องหลังคำย่อและโมดูลใหม่ๆ ที่คุณจะเห็นทุกที่คืออะไร และเพราะเหตุใด การปรับปรุงเหล่านี้ส่งผลต่อทั้งผู้เริ่มต้นและทีมที่ปรับใช้ในการผลิต.
นอกเหนือจากเสียงรบกวนตามปกติที่เกิดขึ้นเกี่ยวกับการเปิดตัวแต่ละครั้ง ที่นี่เรายังได้รวบรวมสิ่งที่สำคัญที่สุดที่ได้รับการประกาศและบันทึกไว้อย่างเป็นทางการ พร้อมด้วยรายละเอียดเชิงปฏิบัติที่แบ่งปันโดยนักพัฒนาที่ใช้ 3.14 อยู่แล้ว จากคำอธิบายประกอบแบบขี้เกียจไปจนถึงอินเทอร์พรีเตอร์ในไลบรารีมาตรฐาน รวมถึง t-strings, Zstandard, ดีบักเกอร์ที่ปลอดภัยตัวใหม่ และการปรับปรุง REPL, สิ่งสำคัญต่างๆ ได้รับการอธิบายไว้อย่างชัดเจนที่นี่
ภาพรวม: สิ่งที่เปลี่ยนแปลงจริง ๆ ใน Python 3.14
Python 3.14 เปิดตัวเมื่อวันที่ 7 ตุลาคมที่ผ่านมา โดยรวบรวมการใช้งาน API และการเปลี่ยนแปลงไลบรารีมาตรฐานที่เกี่ยวข้องกับส่วนสำคัญหลายประการ เอกสารประกอบอย่างเป็นทางการยังคงรักษาไฟล์ What's New และ Changelog แบบดั้งเดิมที่สร้างจาก Misc/NEWS.d ซึ่งทำหน้าที่เป็นแผนที่โดยละเอียดเพื่อดูสิ่งที่เพิ่มเข้ามาทีละบรรทัด หากคุณต้องการภาพรวม: การทำงานแบบคู่ขนานที่มีประโยชน์มากขึ้น ความสามารถในการสร้างเทมเพลตและการดีบักใหม่ การแพ็คเกจการบีบอัดที่ทันสมัย และข้อความแสดงข้อผิดพลาดที่มีประโยชน์อีกมากมาย.
ในโลกแห่งความเป็นจริง สิ่งนี้แปลว่าโปรแกรมมีการแย่งชิงเธรดน้อยลง มีตัวเลือกในการประมวลผลแบบขนานมากขึ้นโดยไม่ล็อก GIL มีคำอธิบายประกอบที่น่าแปลกใจน้อยลง และมีเชลล์แบบโต้ตอบที่ช่วยได้มากกว่าที่จะขัดขวาง นอกจากนี้ ชุมชนยังเน้นถึงความก้าวหน้าในทางปฏิบัติ เช่น การใช้สีใน REPL และ PDB การปรับปรุงใน argparse และ unittest และยูทิลิตี้ stdlib ที่ทำให้การทำงานประจำวันง่ายขึ้น.
คำอธิบายประกอบที่เลื่อนออกไป: PEP 649 + PEP 749
หนึ่งในการเปลี่ยนแปลงที่สำคัญที่สุดคือการประเมินคำอธิบายประกอบในฟังก์ชัน คลาส และโมดูลแบบ Lazy Assessment ในปัจจุบัน แทนที่จะถูกประเมินเมื่อกำหนดแล้ว จะถูกเก็บไว้ในฟังก์ชันพิเศษและแก้ไขเมื่อจำเป็น วิธีนี้จะช่วยลดต้นทุนเวลาในการกำหนดนิยาม หลีกเลี่ยงข้อผิดพลาดอันเกิดจากการอ้างอิงล่วงหน้า และทำให้การทำงานกับข้อมูลประเภทใหญ่หรือการนำเข้าข้อมูลราคาแพงเป็นไปได้ง่ายขึ้นมาก.
เพื่อตรวจสอบโมดูลจะปรากฏขึ้น annotationlibโดยมีรูปแบบหลักสามแบบ: VALUE (ประเมินเป็นค่ารันไทม์เหมือนเดิม) FORWARDREF (ชื่อเครื่องหมายยังไม่ได้กำหนด) และ STRING (ส่งคืนคำอธิบายเป็นข้อความ) สำหรับการโยกย้าย บล็อกการย้ายข้อมูลในเอกสารอย่างเป็นทางการจะให้คำแนะนำว่าเมื่อใดจึงควรเปลี่ยนโค้ด แม้ว่าในกรณีส่วนใหญ่จะไม่จำเป็นต้องเปลี่ยนแปลงอะไรก็ตาม.
รายละเอียดที่สำคัญ: หากคุณกำลังใช้ from __future__ import annotationsความหมายเฉพาะของมันยังคงใช้ได้ ดังนั้นโปรดตรวจสอบเครื่องมือพิมพ์ของคุณ เป้าหมายโดยรวมคือการปรับปรุงประสิทธิภาพและการใช้งาน พร้อมทั้งรักษาความเป็นไปได้ของการตรวจสอบภายในเมื่อจำเป็น.
ล่ามย่อยในไลบรารีมาตรฐาน: PEP 734
CPython อนุญาตให้มีอินเทอร์พรีเตอร์หลายตัวผ่านทาง C-API มานานหลายทศวรรษ แต่ 3.14 อนุญาตให้ทุกคนใช้งานได้ด้วย concurrent.interpreters. สิ่งนี้จะเปิดประตูสู่การทำงานพร้อมกันที่ใกล้เคียงกับมนุษย์มากขึ้นและการประมวลผลแบบคู่ขนานหลายคอร์อย่างแท้จริงโดยไม่จำเป็นต้องดึงกระบวนการอยู่เสมอ.
คุณได้รับอะไร? โมเดลอย่าง CSP หรือโมเดลแอคเตอร์ การแยกตัวตามค่าเริ่มต้นพร้อมความสามารถในการแบ่งปันอย่างชัดเจน และการใช้ทรัพยากรน้อยกว่าเมื่อเทียบกับกระบวนการ สำหรับ CPU เข้มข้น เนื่องจากอินเทอร์พรีเตอร์ 3.12 ถูกแยกไว้เพียงพอที่จะทำงานแบบขนาน ปลดล็อกสถานการณ์ที่เคยได้รับผลกระทบจาก GIL.
มีข้อจำกัดอยู่: การเริ่มต้นใช้งานล่ามยังไม่ได้รับการปรับให้เหมาะสม การใช้หน่วยความจำสามารถปรับปรุงได้ ตัวเลือกการแชร์ที่แท้จริงมีน้อย memoryviewและส่วนขยาย PyPI ส่วนใหญ่ไม่มีการสนับสนุนเต็มรูปแบบ ข่าวดีก็คือมาตรฐานนี้รวมการสนับสนุนไว้แล้ว InterpreterPoolExecutor en concurrent.futuresและชุมชนกำลังย้ายชิปใน Cython, pybind11, nanobind หรือ PyO3.
เทมเพลตสาย T: PEP 750
T-strings มาถึงแล้ว กลไกเทมเพลตพร้อมไวยากรณ์ f-string แต่ส่งคืนอ็อบเจ็กต์ Template ด้วยชิ้นส่วนคงที่และการแทรกแยกกัน ไม่ใช่ str ปลาย สิ่งนี้ช่วยให้คุณประมวลผลเนื้อหาได้ก่อนเข้าร่วม ทำความสะอาดอินพุตของผู้ใช้ และประกอบ DSL น้ำหนักเบาได้อย่างปลอดภัยยิ่งขึ้น.
คุณเขียนด้วยคำนำหน้า t แทน fคุณทำซ้ำ Template และคุณประมวลผลแต่ละส่วนหรือการแทรกสอดตามที่คุณต้องการ ตั้งแต่การหลบหนีจาก HTML ไปจนถึงการสร้างโครงสร้างแบบ DOM หรือเทมเพลตที่ยอมรับพจนานุกรมแอตทริบิวต์ คุณจะได้รับความยืดหยุ่นโดยไม่ต้องเสียสละความชัดเจน.
Python 3.14 แนะนำอินเทอร์เฟซที่ปลอดภัยสำหรับการดีบักภายนอก: PEP 768
3.14 แนะนำอินเทอร์เฟซการดีบักแบบไม่ต้องเสียค่าใช้จ่ายซึ่งช่วยให้โปรแกรมดีบักและโปรไฟเลอร์เชื่อมต่อกับกระบวนการ Python ที่กำลังทำงานอย่างปลอดภัย ไม่มีแนวทางแก้ปัญหาที่ไม่ปลอดภัยอีกต่อไป: ตอนนี้มีจุดดำเนินการที่ปลอดภัยในการฉีดโค้ดดีบักโดยไม่เบี่ยงเบนจากเส้นทางอินเทอร์พรีเตอร์ปกติ.
เพื่ออำนวยความสะดวกในเรื่องนี้จึงได้เปิดเผย sys.remote_exec()ซึ่งจะส่งรหัสเพื่อดำเนินการที่จุดปลอดภัยถัดไปในกระบวนการเป้าหมาย PEP อธิบายโปรโตคอลพื้นฐาน รวมถึงการควบคุมความปลอดภัยเพื่อจำกัดการเข้าถึงและป้องกันการละเมิด ซึ่งเป็นสิ่งสำคัญในระบบที่มีความพร้อมใช้งานสูง.
ล่ามประเภทใหม่พร้อมการเรียกแบบ tail ใน C
ความแปลกใหม่ทางเทคนิคอีกประการหนึ่งคืออินเทอร์พรีเตอร์ทางเลือกที่เชื่อมโยงการเรียกแบบหางระหว่างฟังก์ชัน C ขนาดเล็กที่ใช้งานโอปโค้ด แทนที่จะเป็นฟังก์ชันขนาดใหญ่ switch. บนแพลตฟอร์มและคอมไพเลอร์ที่รองรับ (Clang 19+ บน x86-64 และ AArch64) เกณฑ์มาตรฐานเบื้องต้นแสดงให้เห็นการปรับปรุงทางเรขาคณิต 3% ถึง 5%.
เป็นแบบสมัครใจ และขอแนะนำให้เปิดใช้งาน PGO เนื่องจากเป็นการตั้งค่าที่ได้รับการพิสูจน์แล้วว่าสามารถสร้างผลกำไรได้ เปิดใช้งานด้วยตัวเลือกการคอมไพล์ --with-tail-call-interpและคาดว่า GCC จะรองรับในอนาคต.
โหมดฟรีเธรด: PEP 703 และประสิทธิภาพการใช้งานจริง
โหมดปลอด GIL ที่เปิดตัวใน 3.13 ก้าวไปข้างหน้าอย่างก้าวกระโดดใน 3.14: การเปลี่ยนแปลง C-API ที่เสนอโดย PEP 703 เสร็จสมบูรณ์แล้ว และแนวทางแก้ปัญหาชั่วคราวถูกแทนที่ด้วยโซลูชันถาวร ขณะนี้ล่ามแบบปรับตัวเฉพาะทาง (PEP 659) ทำงานอยู่ในโหมดนี้ ซึ่งเมื่อรวมกับการเพิ่มประสิทธิภาพอื่น ๆ จะช่วยลดโทษ.
ในปัจจุบัน การสูญเสียในการประมวลผลแบบเธรดเดียวอยู่ที่ประมาณ 5-10% ขึ้นอยู่กับแพลตฟอร์มและคอมไพเลอร์ ซึ่งถือเป็นราคาที่สมเหตุสมผลเมื่อเทียบกับการเพิ่มขึ้นของการประมวลผลแบบคู่ขนานจริง ใน Windows เมื่อคอมไพล์ส่วนขยายสำหรับการสร้างเธรดอิสระ คุณต้องกำหนด Py_GIL_DISABLEDและในระหว่างรันไทม์คุณสามารถตรวจสอบการตั้งค่าได้ผ่าน sysconfig.get_config_var().
นอกจากนี้ธงยังปรากฏ -X context_aware_warnings เพื่อควบคุมตัวกรองคำเตือนตามบริบท โดยเปิดใช้งานตามค่าเริ่มต้นในการสร้างที่ไม่มี GIL และปิดใช้งานในการสร้างที่มีการบำรุงรักษา ยังมา thread_inherit_context เพื่อให้เธรดที่สร้างขึ้นสืบทอด Context() ของผู้เรียกซึ่งส่งผลต่อตัวกรองของ warnings, decimal และ API อื่นๆ ที่มี contextvars.
ข้อความแสดงข้อผิดพลาดที่มีประโยชน์มากขึ้นใน Python 3.14
ตอนนี้ล่ามจะแนะนำคำหลักเมื่อตรวจพบคำที่คล้ายกับคำหลักใน Python ช่วยให้คุณจับผิดการพิมพ์ได้อย่างรวดเร็ว กรณีเช่นการเขียน "pritn" แทน "print" ได้รับการแก้ไขแล้วด้วยคำแนะนำโดยตรง แม้ว่าจะไม่ครอบคลุมทุกรูปแบบก็ตาม.
มีข้อความเฉพาะสำหรับ elif หลังจาก elseและในนิพจน์เงื่อนไขจะระบุว่ามีสิ่งใดที่หายไป expression หากคุณใส่ประโยคหลัง else o pass/break/continue ก่อนที่ if. ข้อผิดพลาดที่เกิดจากสตริงที่ปิดไม่ถูกต้องและคำนำหน้าที่เข้ากันไม่ได้ในสตริงก็ได้รับการปรับปรุงเช่นกัน.
การปรับปรุงเพิ่มเติม: ข้อความที่ชัดเจนยิ่งขึ้นเมื่อใช้ as ด้วยเป้าหมายที่เข้ากันไม่ได้ในการนำเข้า ยกเว้นการจับคู่รูปแบบ รายละเอียดเมื่อพยายามใส่วัตถุที่ไม่สามารถแฮชได้ dict o setและการแจ้งเตือนเมื่อคุณเข้าสู่ตัวจัดการบริบทแบบซิงโครนัสด้วย async with หรือในทางกลับกัน ทุกสิ่งทุกอย่างรวมกันเพื่อให้ล่ามสามารถบอกคุณได้ว่าอะไร ที่ไหน และทำไม.
การบีบอัดข้อมูลสมัยใหม่ใน stdlib: PEP 784 และ Zstandard
แพคเกจเกิดขึ้น compressionซึ่งส่งออกซ้ำ lzma, bz2, gzip y zlib ในขณะที่ compression.lzma, compression.bz2, compression.gzip y compression.zlib. ชื่อใหม่เหล่านี้เป็นเส้นทางที่ต้องการตั้งแต่เวอร์ชัน 3.14 แม้ว่าเส้นทางแบบคลาสสิกจะไม่ถูกลดความสำคัญลงในตอนนี้ก็ตาม.
ดาวดวงนั้นคือ compression.zstdรองรับ Zstandard แบบดั้งเดิมด้วยการผูกเข้ากับไลบรารี zstd ของ Meta คุณจะได้รับ API ที่รวดเร็วและมีประสิทธิภาพ และการสนับสนุนโดยตรงสำหรับไฟล์ Zstandard ใน tarfile, zipfile y shutilโดยไม่ต้องติดตั้งแพ็กเกจภายนอก.
การสำรวจตนเองแบบอะซิงซิโอจากบรรทัดคำสั่ง
ตอนนี้คุณสามารถตรวจสอบกระบวนการ Python ที่กำลังทำงานด้วยงานอะซิงโครนัสได้โดยใช้ python -m asyncio ps PID y python -m asyncio pstree PID. คำสั่งย่อย ps จะแสดงตารางแบนของงาน ชื่อ และสแต็ก ส่วน pstree จะสร้างโครงสร้างการเรียกแบบอะซิงค์.
สิ่งนี้มีประโยชน์อย่างยิ่งในโปรแกรมที่ยาวหรือถูกบล็อก เนื่องจากตรวจจับได้ว่าคอขวดอยู่ที่ไหน งานใดกำลังรออยู่ และโครูทีนเกี่ยวข้องกันอย่างไร หากมีรอบในกราฟการรอ เครื่องมือจะตรวจจับรอบเหล่านั้นและแสดงรายการเส้นทางที่มีปัญหา.
การควบคุมการเตือนพร้อมกันใน Python 3.14
warnings.catch_warnings คุณสามารถใช้ตัวแปรบริบทสำหรับตัวกรองการแจ้งเตือนได้หากคุณเปิดใช้งานแฟล็ก context_aware_warnings ผ่านทาง -X หรือตัวแปรสภาพแวดล้อม ด้วยวิธีนี้ การจัดการคำเตือนจะสามารถคาดเดาได้เมื่อคุณผสมเธรดหรืองานอะซิงโครนัสและพวกมันไม่ทับซ้อนกัน.
ประสบการณ์ผู้ใช้ Python 3.14: คอนโซล, Argparse, UnitTest และอื่นๆ
ผู้ที่ใช้ 3.14 เป็นรุ่นหลักมาหลายเดือนจะเน้นสีในประสบการณ์รายวัน: การเน้นไวยากรณ์ใน REPL และ PDB พร้อมตัวอย่าง รองรับ Python 3 บน Kodiช่วยเหลือได้ดีขึ้นใน argparse และข้อความที่เป็นมิตรมากขึ้นใน unittest รายละเอียดเหล่านี้ช่วยลดความยุ่งยากและช่วยให้คุณไม่ต้องเสียเวลาไปแก้ไขเองเพื่อดูว่ามีอะไรผิดพลาด.
คอนโซลแบบโต้ตอบจะแนะนำการแก้ไขคำพิมพ์ผิดทั่วไป เช่น "pritn" แบบคลาสสิกที่ตอนนี้จะนำคุณไปสู่ print. นอกจากนี้ ยังมีระบบเติมคำนำเข้าอัตโนมัติที่ชาญฉลาด ช่วยให้คุณค้นพบโมดูลได้โดยไม่ต้องออกจากคำเตือน.
ยูทิลิตี้ที่มีประโยชน์มากปรากฏใน stdlib: วิธีการคัดลอกและย้ายใน pathlib ที่หลีกเลี่ยงการดึง shutil สำหรับพื้นฐานแล้ว date.strptime โดยตรงโดยไม่ต้องผ่าน datetime.strptime().date()และ UUID v7 ซึ่งรวมความสุ่มเข้ากับการเรียงลำดับตามเวลา ทางลัดเล็กๆ น้อยๆ ส่งผลใหญ่หลวงต่อสคริปต์และเครื่องมือภายใน.
argparse เพิ่มคำแนะนำเมื่อคุณทำผิดพลาดใน ทางเลือกช่วยลดเวลาในการดีบัก CLI และใช่แล้ว t-string เริ่มเข้ามาช่วยป้อนระบบนิเวศขนาดเล็กของไลบรารีที่ใช้ประโยชน์จาก t-string เพื่อเทมเพลตที่ปลอดภัยแล้ว หากคุณทำงานกับสตริงที่ซับซ้อนหรืออินพุตของผู้ใช้ คุณจะสังเกตเห็นความแตกต่าง.
การทำงานแบบคู่ขนาน การบล็อกน้อยลง และไม่มีความประหลาดใจกับกระบวนการอีกต่อไป
การเปลี่ยนแปลงหลายประการมีจุดมุ่งหมายเพื่อลดการบล็อคระหว่างเธรด: ด้วยการใช้ซับอินเทอร์พรีเตอร์ใน stdlib และความก้าวหน้าของโหมดปลอด GIL จึงมีตัวเลือกเพิ่มเติมสำหรับการกระจายโหลดโดยไม่ต้องเข้าสู่ภาวะเดดล็อก สำหรับบริการและไลบรารีที่มีงานคู่ขนาน สิ่งนี้จะแปลเป็นการปรับปรุงปริมาณงานที่จับต้องได้.
นอกจากนี้ยังเปลี่ยนพฤติกรรมเริ่มต้นเมื่อสร้างกระบวนการหลายรายการ: สนับสนุน ฟอร์กเซิร์ฟเวอร์ ด้านหน้าของ ส้อม อย่างง่ายดาย ซึ่งช่วยลดความผิดพลาดเล็กน้อยและทำให้เข้าใจความล้มเหลวได้ดีขึ้นในสถานการณ์การประมวลผลหลายรายการ ในทางปฏิบัติ: ซอมบี้ที่ทำซ้ำได้ยากน้อยลงและการวินิจฉัยที่สะอาดขึ้น.
กำหนดการเปิดตัวและความสมบูรณ์ของ Python 3.14
ทีม Python ได้ประกาศเปิดตัวเวอร์ชันอัลฟ่าหลายรายการในระหว่างรอบ 3.14 รวมถึงเวอร์ชันอัลฟ่า 5 จากทั้งหมดเจ็ดเวอร์ชันก่อนเวอร์ชันเบตา ซึ่งออกแบบมาเพื่อทดสอบฟีเจอร์ใหม่ แก้ไขจุดบกพร่อง และปรับปรุงกระบวนการเปิดตัว เฟสเบต้าเริ่มในวันที่ 6 พฤษภาคม 2025 โดยไม่มีฟีเจอร์ใหม่ใดๆ เกิดขึ้น โดยมีความเป็นไปได้ที่จะมีการปรับเปลี่ยนจนกว่าจะเปิดตัวอย่างเป็นทางการในวันที่ 22 กรกฎาคม.
เช่นเคยในช่วงก่อนการเปิดตัวที่เสถียร ไม่แนะนำให้ใช้เวอร์ชันก่อนการเปิดตัวในสภาพแวดล้อมการใช้งานจริง เอกสารอย่างเป็นทางการมีปฏิทินการทำงาน (PEP 745) ตัวติดตามปัญหาบน GitHub และแนวทางสำหรับการมีส่วนร่วมผ่านมูลนิธิซอฟต์แวร์ Python หากคุณตรวจพบจุดบกพร่อง เอกสารที่สร้างโดย Sphinx และลิงก์รายงานจะทำให้เปิดและติดตามได้ง่าย.
ตัวเลขกระพริบตา: 3.14 และปีงู
ความบังเอิญระหว่างหมายเลขเวอร์ชันและการประมาณค่าทางประวัติศาสตร์ของ pi (3.14) ทำให้เกิดเรื่องตลกมากกว่าหนึ่งเรื่องในชุมชน ซึ่งตรงกับปีจันทรคติที่กำหนดโดยงู ตั้งแต่ Liu Xin จนถึง Zu Chongzhi ความหลงใหลในการประมาณค่า pi นั้นแทบจะเก่าแก่พอๆ กับการปรับปรุงประสิทธิภาพตัววนซ้ำ.
นอกเหนือจากเกร็ดความรู้แล้ว เวอร์ชันนี้ยังยกย่องความพยายามร่วมกันของอาสาสมัครและบริษัทหลายร้อยแห่งที่ให้บริการด้านวิศวกรรมอีกด้วย PSF ซึ่งเป็นองค์กรไม่แสวงหากำไร ขอเชิญคุณเข้าร่วม บริจาค และตรวจสอบประวัติและใบอนุญาตที่ครอบคลุมเอกสารและตัวอย่าง.
เอกสารประกอบได้รับการอัปเดตอย่างต่อเนื่องจนกระทั่งเมื่อไม่นานนี้ พร้อมด้วยบันทึกย่อการเผยแพร่และการสร้างใหม่อัตโนมัติโดยใช้ Sphinx หากคุณพบพฤติกรรมที่ไม่คาดคิด ให้ตรวจสอบบันทึกการเปลี่ยนแปลงและสิ่งใหม่ๆ เพื่อดูว่ามีรายละเอียดใหม่ๆ ใดๆ ที่อธิบายการเปลี่ยนแปลงดังกล่าวหรือไม่.
โดยรวมแล้ว Python 3.14 ปรับปรุงประสบการณ์ในแต่ละวันพร้อมวางรากฐานสำหรับอนาคต: การประมวลผลแบบคู่ขนานที่แท้จริงพร้อมความยุ่งยากน้อยลง เทมเพลตที่ปลอดภัยและแสดงออกได้ การดีบักที่ราบรื่น และเครื่องมือที่อธิบายข้อผิดพลาดได้ดีขึ้น หากคุณเคยใช้เวอร์ชัน 3.13 มาก่อน คุณจะสังเกตเห็นการเปลี่ยนแปลงเล็กๆ น้อยๆ และฟีเจอร์ใหม่ๆ แต่ถ้าคุณไม่ได้อัปเดตเป็นเวอร์ชันอื่นๆ สักสองสามเวอร์ชัน การปรับปรุงร่วมกันเหล่านี้จะทำให้การเปลี่ยนไปใช้เวอร์ชันใหม่คุ้มค่า.