# 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 หมดซัพพอร์ตแล้ว

- ประเภท: ข่าว · หมวด: Software & DevOps
- เผยแพร่: 2026-10-12T12:41:00.000Z · อัปเดต: 2026-10-12T12:41:00.000Z
- โดย: กองบรรณาธิการ THAI DATA, THAI DATA IT BUSINESS ENTERPRISE
- ที่มา: https://thaidata.co.th/software/python-3-15-release-jit-lazy-imports-utf-8/

## สรุปประเด็นสำคัญ

- ทีมพัฒนา 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.0 บน python.org ลงวันที่ 9 ตุลาคม 2026 พร้อมรายการฟีเจอร์หลัก](https://thaidata-co-th.s3.ap-southeast-1.amazonaws.com/thaidata.co.th/images/articles/python-3-15-release-jit-lazy-imports-utf-8/python-3-15-release-page.webp?v=7d85cef0) _(ภาพ: Python Software Foundation (ภาพหน้าจอ))_

## ฟีเจอร์หลักของ 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` โมดูลจะถูกโหลดจริงเมื่อเรียกใช้ชื่อนั้นครั้งแรก

```python
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`

![ส่วนอธิบาย Explicit lazy imports (PEP 810) ในเอกสาร What's new in Python 3.15](https://thaidata-co-th.s3.ap-southeast-1.amazonaws.com/thaidata.co.th/images/articles/python-3-15-release-jit-lazy-imports-utf-8/python-3-15-whats-new-lazy-imports.webp?v=e70c0c2c) _(ภาพ: Python Software Foundation (ภาพหน้าจอ))_

## 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.10 ถึง 3.15](https://thaidata-co-th.s3.ap-southeast-1.amazonaws.com/thaidata.co.th/images/articles/python-3-15-release-jit-lazy-imports-utf-8/python-3-10-to-3-15-support-timeline.webp?v=cf741e3b) _(ภาพ: THAI DATA (ข้อมูล: Python Developer's Guide))_

รุ่นที่จะหมดซัพพอร์ตเป็นลำดับถัดไปคือ 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](/software/java-27-release-g1-default-post-quantum-tls/) ได้ที่[หมวดซอฟต์แวร์](/software/)

## คำถามที่พบบ่อย

### 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](https://www.python.org/downloads/release/python-3150/) — Python Software Foundation
- [What's new in Python 3.15](https://docs.python.org/3.15/whatsnew/3.15.html) — Python Software Foundation
- [PEP 790 – Python 3.15 Release Schedule](https://peps.python.org/pep-0790/) — Python Software Foundation
- [Status of Python versions](https://devguide.python.org/versions/) — Python Developer's Guide
- [PEP 619 – Python 3.10 Release Schedule](https://peps.python.org/pep-0619/) — Python Software Foundation
