Python 3.15 ออกแล้ว เพิ่ม lazy import ใช้ UTF-8 เป็นค่าเริ่มต้น และอัปเกรด JIT ให้เร็วขึ้น
Python 3.15 ออก 9 ต.ค. 2026 เพิ่ม lazy import, frozendict และตัวโปรไฟล์ Tachyon ใช้ UTF-8 เป็นค่าเริ่มต้น JIT เร็วขึ้น 7–12% ส่วน Python 3.10 หมดซัพพอร์ตแล้ว
โดย กองบรรณาธิการ THAI DATA อ่าน 5 นาที

สรุปประเด็นสำคัญ
- ทีมพัฒนา Python ออก Python 3.15.0 เมื่อ 9 ตุลาคม 2026 รวม 5,643 commits จากผู้ร่วมพัฒนา 1,012 คน และจะได้แพตช์แก้บั๊กราวทุก 2 เดือนเป็นเวลา 2 ปี กับแพตช์ความปลอดภัยถึงราว ตุลาคม 2031
- ฟีเจอร์หลักคือ lazy import (PEP 810) ที่เลื่อนการโหลดโมดูลไปจนกว่าจะใช้จริง ชนิดข้อมูลใหม่ frozendict (PEP 814) และ sentinel (PEP 661) และตัวโปรไฟล์แบบสุ่มตัวอย่าง Tachyon ที่เก็บได้สูงสุด 1,000,000 ครั้งต่อวินาที
- Python 3.15 ใช้ UTF-8 เป็น encoding เริ่มต้น (PEP 686) ไม่ว่าระบบจะตั้ง locale เป็นอะไร โค้ดที่เปิดไฟล์โดยไม่ระบุ encoding บน Windows ภาษาไทยอาจอ่านไฟล์เก่าผิด ปิดได้ด้วย PYTHONUTF8=0
- ตัวคอมไพล์ JIT แบบทดลองเร็วขึ้นเฉลี่ย 7–8% บน x86-64 Linux และ 11–12% บน AArch64 macOS ตามชุดทดสอบ pyperformance
- Python 3.10 หมดระยะซัพพอร์ตเมื่อ 1 ตุลาคม 2026 โดย 3.10.22 เป็นแพตช์ความปลอดภัยรุ่นสุดท้าย
ทีมพัฒนา Python ออก Python 3.15.0 เมื่อวันที่ 9 ตุลาคม 2026 รุ่นนี้เพิ่ม lazy import ที่ช่วยให้โปรแกรมเริ่มทำงานเร็วขึ้น เปลี่ยน encoding เริ่มต้นเป็น UTF-8 ทุกระบบ และอัปเกรดตัวคอมไพล์ JIT แบบทดลองให้เร็วขึ้น ขณะเดียวกัน Python 3.10 เพิ่งหมดระยะซัพพอร์ตไปเมื่อ 1 ตุลาคม 2026
หน้าประกาศบน python.org ระบุว่า Python 3.15 รวม 5,643 commits จากผู้ร่วมพัฒนา 1,012 คน ก่อนออกรุ่นจริงมี release candidate รอบที่ 3 เมื่อ 2 ตุลาคม ตามตาราง PEP 790 รุ่นนี้จะได้แพตช์แก้บั๊กราวทุก 2 เดือนเป็นเวลา 2 ปี และได้แพตช์ความปลอดภัยแบบซอร์สโค้ดจนถึงราวตุลาคม 2031

ฟีเจอร์หลักของ Python 3.15
| ฟีเจอร์ | ทำอะไร |
|---|---|
| PEP 810 lazy import | คีย์เวิร์ด lazy เลื่อนการโหลดโมดูลจนกว่าจะใช้จริง |
| PEP 686 UTF-8 เป็นค่าเริ่มต้น | open() ที่ไม่ระบุ encoding ใช้ UTF-8 ทุกระบบ |
| PEP 814 frozendict | dict แบบแก้ไขไม่ได้ ใช้เป็นคีย์หรือใน set ได้ถ้าข้อมูลข้างในแฮชได้ |
| PEP 661 sentinel | ชนิดข้อมูลสำหรับสร้างค่าพิเศษที่ไม่ซ้ำกับค่าอื่น |
| PEP 798 | ใช้การ unpack ใน comprehension ได้ |
| PEP 799 Tachyon | ตัวโปรไฟล์แบบสุ่มตัวอย่างในแพ็กเกจ profiling ใหม่ |
| PEP 831 | เปิด frame pointer เป็นค่าเริ่มต้น ช่วยเครื่องมือดูประสิทธิภาพระดับระบบ |
| PEP 803, 820, 793 | Stable ABI สำหรับ Python แบบ free-threaded |
ไบนารีทางการบน Windows 64 บิตเปลี่ยนไปใช้ tail-calling interpreter และไบนารีบน macOS ติดตั้งส่วนรองรับ free-threading มาให้เป็นค่าเริ่มต้น
lazy import ใน Python 3.15 ช่วยเรื่องอะไร
เอกสาร What's New อธิบายว่าแอปพลิเคชัน Python ขนาดใหญ่มักเริ่มทำงานช้า เพราะทุก import ต้องหาไฟล์ อ่าน คอมไพล์ และรันโค้ดระดับบนสุดของโมดูล แม้บางโมดูลจะไม่ได้ใช้ในรอบนั้นเลย ที่ผ่านมานักพัฒนาแก้ด้วยการย้าย import เข้าไปในฟังก์ชัน ซึ่งทำให้โค้ดอ่านยาก
Python 3.15 เพิ่ม soft keyword ชื่อ lazy ใช้ได้ทั้ง import และ from … import โมดูลจะถูกโหลดจริงเมื่อเรียกใช้ชื่อนั้นครั้งแรก
lazy import json
lazy from pathlib import Path
print("Starting up...") # json และ pathlib ยังไม่ถูกโหลดเต็ม
data = json.loads('{"key": "value"}') # json ถูกโหลดตรงนี้
ถ้าโหลดโมดูลไม่สำเร็จ ข้อผิดพลาดจะเกิดตอนใช้งานครั้งแรก และ traceback จะแสดงทั้งจุดที่เรียกใช้และบรรทัด import เดิม ผู้ดูแลระบบยังเปิดให้ทุก import เป็นแบบ lazy โดยไม่ต้องแก้ซอร์สโค้ดได้ด้วยตัวเลือก -X lazy_imports=all หรือตัวแปรสภาพแวดล้อม PYTHON_LAZY_IMPORTS

UTF-8 เป็นค่าเริ่มต้นใน Python 3.15: จุดที่ระบบภาษาไทยต้องระวัง
ตั้งแต่ Python 3.15 คำสั่งอ่านเขียนไฟล์ที่ไม่ระบุ encoding เช่น open('data.txt') จะใช้ UTF-8 เสมอ ไม่ขึ้นกับ locale ของเครื่อง เดิม encoding เริ่มต้นขึ้นกับ locale ซึ่ง Windows ที่ใช้ภาษาไทยมักใช้โค้ดเพจ windows-874 (Microsoft ระบุว่าเป็น Thai (Windows)) โปรแกรมเก่าที่อ่านไฟล์ข้อความหรือ CSV ภาษาไทยที่บันทึกแบบนี้โดยไม่ระบุ encoding จึงอาจได้ข้อความเพี้ยนหรือเกิด UnicodeDecodeError หลังอัปเกรด
เอกสารของ Python แนะนำให้ระบุ encoding ทุกครั้งเพื่อให้โค้ดทำงานเหมือนกันทุกรุ่น ใช้ encoding='locale' เมื่อต้องการ encoding ตามเครื่องจริง หาจุดที่ใช้ค่าเริ่มต้นด้วย -X warn_default_encoding หรือตัวแปร PYTHONWARNDEFAULTENCODING และถ้าจำเป็นต้องย้อนพฤติกรรมเดิมชั่วคราว ให้ปิด UTF-8 mode ด้วย PYTHONUTF8=0 หรือ -X utf8=0
JIT, Tachyon และสิ่งที่ถูกถอดออก
- JIT เร็วขึ้น ชุดทดสอบ pyperformance ให้ค่าเฉลี่ยเรขาคณิตเร็วขึ้น 7–8% เหนือ interpreter มาตรฐานบน x86-64 Linux และ 11–12% เหนือ tail-calling interpreter บน AArch64 macOS แต่ผลรายตัวยังกว้างตั้งแต่ช้าลงราว 15% ไปจนถึงเร็วขึ้นกว่า 100% JIT ยังเป็นฟีเจอร์ทดลอง และใช้ LLVM 21 ตอนคอมไพล์ CPython เท่านั้น ผู้ใช้ทั่วไปไม่ต้องติดตั้ง LLVM
- Tachyon ตัวโปรไฟล์ใหม่ใน
profiling.samplingเกาะกับโปรเซส Python ที่รันอยู่ได้โดยไม่ต้องแก้โค้ดหรือรีสตาร์ต สุ่มเก็บ stack ได้สูงสุด 1,000,000 ครั้งต่อวินาที เหมาะกับการหาคอขวดบนระบบจริง ส่วนโมดูลprofileเดิมถูกประกาศเลิกใช้และจะถูกถอดใน Python 3.17 - ถอดของเก่าออก เช่น คลาส
CGIHTTPRequestHandlerและตัวเลือก--cgiของpython -m http.serverโมดูลsre_compile,sre_constants,sre_parseและฟังก์ชันglob.glob0()/glob.glob1()ที่ประกาศเลิกใช้มาตั้งแต่ 3.13 - ข้อควรระวังบน macOS 27 หน้าประกาศเตือนว่าแอป GUI ที่ใช้ tkinter เช่น IDLE อาจค้างเมื่อเปิดหน้าต่างโต้ตอบบน macOS 27.0 ซึ่งกระทบ Python ทุกรุ่น ไม่ใช่เฉพาะ 3.15
ทำไมเรื่องนี้สำคัญ: Python 3.10 หมดซัพพอร์ตแล้ว
Python ออกรุ่นใหม่ปีละครั้ง และแต่ละรุ่นได้รับการสนับสนุนราว 5 ปี เมื่อ Python 3.15 ออก หน้าสถานะรุ่นของ Python Developer's Guide ระบุว่า 3.10 เข้าสู่สถานะ end-of-life ตั้งแต่ 1 ตุลาคม 2026 และ PEP 619 ระบุว่า 3.10.22 เป็นแพตช์ความปลอดภัยรุ่นสุดท้าย ระบบที่ยังรัน 3.10 จะไม่ได้รับการแก้ช่องโหว่ใหม่จากทีม Python อีก
| รุ่น | ออกรุ่นแรก | สิ้นสุดการสนับสนุน | สถานะ ณ 12 ต.ค. 2026 |
|---|---|---|---|
| Python 3.10 | 4 ต.ค. 2021 | 1 ต.ค. 2026 | หมดซัพพอร์ต |
| Python 3.11 | 24 ต.ค. 2022 | ต.ค. 2027 | แพตช์ความปลอดภัยเท่านั้น |
| Python 3.12 | 2 ต.ค. 2023 | ต.ค. 2028 | แพตช์ความปลอดภัยเท่านั้น |
| Python 3.13 | 7 ต.ค. 2024 | ต.ค. 2029 | แพตช์ความปลอดภัยเท่านั้น |
| Python 3.14 | 7 ต.ค. 2025 | ต.ค. 2030 | แก้บั๊ก |
| Python 3.15 | 9 ต.ค. 2026 | ต.ค. 2031 | แก้บั๊ก |

รุ่นที่จะหมดซัพพอร์ตเป็นลำดับถัดไปคือ Python 3.11 ในเดือนตุลาคม 2027 ส่วนรุ่นถัดจาก Python 3.15 (ตาราง PEP 826) มีกำหนดออกวันที่ 6 ตุลาคม 2027 ตามหน้าสถานะรุ่นเดียวกัน
สิ่งที่องค์กรไทยควรทำ
- สำรวจระบบที่ยังใช้ Python 3.10 หรือเก่ากว่า ทั้งบนเซิร์ฟเวอร์ คอนเทนเนอร์ ฟังก์ชันบนคลาวด์ และงานตั้งเวลา แล้ววางแผนย้ายไปรุ่นที่ยังได้รับการสนับสนุน โดยตรวจก่อนว่าไลบรารีที่ใช้รองรับรุ่นปลายทาง ไม่จำเป็นต้องข้ามไป Python 3.15 ทันที
- ทดสอบเรื่อง encoding ก่อนอัปเกรด รันชุดทดสอบด้วย
-X warn_default_encodingเพื่อหาโค้ดที่เปิดไฟล์โดยไม่ระบุ encoding โดยเฉพาะงานนำเข้า CSV หรือไฟล์ข้อความภาษาไทยจากระบบเก่า - ลอง lazy import กับแอปที่เริ่มช้า เช่น CLI หรือ serverless function ที่ import ไลบรารีหนัก วัดเวลาเริ่มต้นก่อนและหลังใช้
-X lazy_imports=allในสภาพแวดล้อมทดสอบ - อย่าเปิด JIT บนระบบจริงทันที ผลเฉลี่ยดีขึ้น แต่บางงานช้าลง ให้วัดกับงานจริงของตัวเองก่อน
- ติดตามข่าวภาษาโปรแกรมและเครื่องมือพัฒนาอื่น ๆ เช่น Java 27 ได้ที่หมวดซอฟต์แวร์
คำถามที่พบบ่อย
Python 3.15 ออกเมื่อไร และได้รับการสนับสนุนถึงเมื่อไร?
Python 3.15.0 ออกเมื่อวันที่ 9 ตุลาคม 2026 ตาม PEP 790 จะได้รุ่นแก้บั๊กราวทุก 2 เดือนเป็นเวลา 2 ปี จากนั้นได้เฉพาะแพตช์ความปลอดภัยแบบซอร์สโค้ดจนถึงราวตุลาคม 2031 หรือ 5 ปีหลังออกรุ่นแรก
lazy import ใน Python 3.15 คืออะไร?
lazy import คือคีย์เวิร์ดใหม่ lazy ที่ใส่หน้า import เช่น lazy import json แล้ว Python จะยังไม่โหลดโมดูลจนกว่าจะเรียกใช้ชื่อนั้นครั้งแรก ช่วยให้โปรแกรมที่ import โมดูลจำนวนมากเริ่มทำงานเร็วขึ้น และเปิดให้ทุก import เป็นแบบ lazy ได้ด้วย -X lazy_imports=all หรือตัวแปร PYTHON_LAZY_IMPORTS
การเปลี่ยนเป็น UTF-8 ใน Python 3.15 กระทบโค้ดเดิมอย่างไร?
ใน Python 3.15 คำสั่งอย่าง open() ที่ไม่ระบุ encoding จะใช้ UTF-8 เสมอ แทน encoding ตาม locale ของเครื่อง โค้ดที่อ่านไฟล์ข้อความภาษาไทยแบบเก่าบน Windows โดยไม่ระบุ encoding อาจอ่านผิดหรือเกิดข้อผิดพลาด ควรระบุ encoding ให้ชัด หรือปิดชั่วคราวด้วย PYTHONUTF8=0 หรือ -X utf8=0
องค์กรควรอัปเกรดเป็น Python 3.15 ทันทีหรือไม่?
ยังไม่จำเป็นสำหรับระบบที่ใช้งานจริง ควรรอให้ไลบรารีหลักรองรับ Python 3.15 และทดสอบเรื่อง UTF-8 กับฟังก์ชันที่ถูกถอดออกก่อน แต่ระบบที่ยังใช้ Python 3.10 ควรย้ายโดยเร็ว เพราะ 3.10 หมดซัพพอร์ตเมื่อ 1 ตุลาคม 2026 แล้ว และไม่มีแพตช์ความปลอดภัยอีก
แหล่งอ้างอิง
- Python Release Python 3.15.0 — Python Software Foundation
- What's new in Python 3.15 — Python Software Foundation
- PEP 790 – Python 3.15 Release Schedule — Python Software Foundation
- Status of Python versions — Python Developer's Guide
- PEP 619 – Python 3.10 Release Schedule — Python Software Foundation
บุคคล องค์กร และสถานที่ในข่าวนี้
เลือกชื่อเพื่ออ่านข่าวทั้งหมดที่กล่าวถึง ตัวเลขคือจำนวนข่าว
- องค์กรและบริษัท
- Microsoft36
พบข้อมูลคลาดเคลื่อน? แจ้งกองบรรณาธิการ