Mỗi mùa thu, cộng đồng Python lại đón một phiên bản lớn mới, và năm 2026 cũng không ngoại lệ. Ngày 9/10/2026, nhóm phát triển CPython công bố Python 3.15.0 bản chính thức. Đây không phải một bản cập nhật "cho có": nhiều thay đổi lần này chạm trực tiếp vào cách chúng ta viết, đóng gói và vận hành ứng dụng Python hằng ngày, từ thời gian khởi động chương trình cho tới cách đọc ghi file văn bản.

Chuyện gì đã xảy ra?

Theo bài công bố trên blog chính thức của Python, bản 3.15 gom hơn 5.600 commit từ hơn một nghìn người đóng góp kể từ 3.14. Danh sách thay đổi trải dài từ trình thông dịch, thư viện chuẩn, hệ thống kiểu cho tới C API và quy trình build. Dưới đây là những điểm đáng chú ý nhất với lập trình viên ứng dụng.

Những điểm mới nổi bật

Lazy import tường minh (PEP 810)

Đây có lẽ là tính năng được chờ đợi nhất. Python 3.15 cho phép đánh dấu một câu lệnh import là "lười", nghĩa là module chỉ thực sự được nạp khi lần đầu được sử dụng. Với các công cụ dòng lệnh hoặc ứng dụng có nhiều phụ thuộc nặng, điều này giúp rút ngắn đáng kể thời gian khởi động mà không cần các mẹo như import bên trong hàm.

lazy import pandas
 
def report():
    return pandas.DataFrame()  # pandas chỉ được nạp ở đây

UTF-8 trở thành mã hóa mặc định (PEP 686)

Từ 3.15, Python dùng UTF-8 làm mã hóa mặc định thay vì phụ thuộc vào locale của hệ điều hành. Với lập trình viên Việt Nam, đây là tin vui: lỗi kiểu UnicodeDecodeError khi đọc file có tiếng Việt trên Windows sẽ ít gặp hơn hẳn. Tuy vậy, mã nguồn cũ nào vô tình dựa vào mã hóa của hệ thống (ví dụ cp1252) cần được kiểm tra lại.

Kiểu dữ liệu mới: frozendict và sentinel

Python bổ sung kiểu dựng sẵn frozendict (PEP 814) – một dictionary bất biến, rất hữu ích cho cấu hình, khóa cache hay dữ liệu chia sẻ giữa các luồng. Kiểu sentinel (PEP 661) cung cấp cách chuẩn để tạo các giá trị đánh dấu đặc biệt, thay cho thói quen dùng object() thiếu rõ ràng.

JIT nhanh hơn và công cụ profiling mới

Trình biên dịch JIT thử nghiệm tiếp tục được cải tiến. Nhóm phát triển cho biết mức tăng trung bình khoảng 7–8% so với trình thông dịch chuẩn trên Linux x86-64 và khoảng 11–12% trên macOS AArch64. Thư viện chuẩn cũng có gói profiling riêng (PEP 799) kèm Tachyon, một profiler lấy mẫu thống kê tần suất cao, giúp tìm điểm nghẽn hiệu năng mà ít ảnh hưởng tới chương trình đang chạy.

Hệ thống kiểu và free-threading

Về typing, TypedDict hỗ trợ khai báo kiểu cho các khóa bổ sung (PEP 728), cùng với TypeForm (PEP 747) để chú thích các biểu thức kiểu. Ở tầng thấp hơn, stable ABI cho bản build free-threaded (không GIL) được bổ sung, và bộ cài macOS nay cài sẵn hỗ trợ free-threading. Đây là bước quan trọng để các thư viện có phần mở rộng C dễ hỗ trợ Python đa luồng thực sự hơn.

Vì sao điều này quan trọng?

Với doanh nghiệp, ba thay đổi có tác động rõ nhất là lazy import, UTF-8 mặc định và free-threading:

  • Lazy import giúp CLI, serverless function và job ngắn hạn khởi động nhanh hơn, giảm chi phí cold start.
  • UTF-8 mặc định giảm lỗi khó chịu khi xử lý dữ liệu đa ngôn ngữ, nhưng cũng là một thay đổi hành vi cần kiểm thử.
  • Free-threading ngày càng trưởng thành, mở đường cho các workload CPU-bound tận dụng nhiều lõi mà không phải chuyển sang multiprocessing.

Ngoài ra, việc bật frame pointer mặc định (PEP 831) giúp các công cụ quan sát hệ thống như perf hay profiler liên tục hoạt động chính xác hơn trên môi trường production.

Nên làm gì tiếp theo?

  1. Cài Python 3.15 trong môi trường thử nghiệm và chạy toàn bộ bộ test hiện có.
  2. Rà soát các đoạn đọc ghi file không chỉ định encoding để chắc chắn hành vi mới không gây sai lệch dữ liệu.
  3. Kiểm tra các thư viện phụ thuộc, đặc biệt là gói có phần mở rộng C, đã có bản hỗ trợ 3.15 chưa.
  4. Thử nghiệm lazy import cho các module nặng ở công cụ CLI để đo mức cải thiện thời gian khởi động.
  5. Nếu dùng macOS, lưu ý cảnh báo của nhóm phát triển về việc IDLE và ứng dụng tkinter có thể bị treo trên macOS 27.0; nên cân nhắc trước khi nâng cấp hệ điều hành.

Kết luận

Python 3.15 cho thấy ngôn ngữ này vẫn đang tiến hóa mạnh mẽ ở cả hai phía: trải nghiệm lập trình (lazy import, frozendict, thông báo lỗi tốt hơn) và hiệu năng (JIT, free-threading). Với dự án mới, đây là thời điểm tốt để bắt đầu với 3.15. Với hệ thống đang chạy production, hãy dành thời gian kiểm thử kỹ, đặc biệt là thay đổi về mã hóa mặc định, trước khi nâng cấp chính thức.

Nguồn tham khảo