Python 3.14 thì có gì?
Mở đầu
Python 3.14 đã chính thức được phát hành vào 7/10/2025 vừa rồi với hàng loạt tính năng và cải tiến mới. Document chính thức của bản phát hành có chi tiết và đầy đủ thông tin, bài này mình sẽ tổng quan nhanh về những thay đổi, cải tiến cùng các chức năng mới thôi nhé.
Như phần lớn các bản release thì việc backwards compatibility (việc khi ra mắt version mới thì các version cũ hơn vẫn tương thích) vẫn hoạt động tốt, tuy nhiên có một số standard library được dọn dẹp lại, bạn có thể check out những thứ bị removed và những thứ deprecated. Thông thường, phần lớn những thứ này là các thành phần mà đa số lập trình viên Python cũng ít dùng đến.
Release Changes
Free-Threaded chính thức được hỗ trợ
Thay đổi lớn nhất trong lần này là free-threaded đã chính thức được hỗ trợ. Các bản build Python từ giờ sẽ không còn bị ràng buộc bởi GIL - Global Interpreter Lock. Tính năng này đã được đề cập khi release Python 3.13 tuy nhiên là ở dạng thử nghiệm, với 3.14 hiện tại thì đã thành tính năng chính thức, tuy nhiên là tính năng optional tức có thể tùy chọn bật / tắt khi build Python.
Trước đây, Python bị giới hạn bởi GIL. GIL ngăn không cho nhiều thread chạy cùng lúc trong cùng một tiến trình Python. Mục đích của GIL là để bảo vệ vùng nhớ chung (shared memory), giúp Python đơn giản và an toàn hơn khi thao tác trên cùng dữ liệu, tuy nhiên khiến không tận dụng được hết multi-core CPU, gây ảnh hưởng hiệu suất của chương trình.
Free-threaded giờ đây cho phép nhiều thread chạy song song thực sự trên nhiều CPU core. Thay 1 thread thực sự chạy như khi có GIL, giờ bạn có thể có nhiều thread cùng chạy đồng thời, tận dụng được toàn bộ hiệu năng CPU đa nhân.
Just-in-time (JIT) compiler (experimental) cho MacOS và Windows
Python 3.14 giới thiệu trình biên dịch JIT (mới là thử nghiệm thôi) cho các bản Python trên Windows và MacOS. Hiện tại thì JIT compiler KHÔNG được khuyến khích dùng trong môi trường production.
Nếu bạn muốn test thì hãy set PYTHON_JIT=1
trong biến môi trường. Khi bật JIT, Python có thể chậm hơn 10% hoặc nhanh hơn 20% tùy workload 😆.
Lưu ý: Các trình debug/profiler như
gdb
hoặcperf
không thể theo dõi stack JIT, nhưngpdb
vàprofile
của Python vẫn hoạt động bình thường.
Ngoài ra, free-threaded build KHÔNG hỗ trợ JIT.
Thay đổi về chữ ký bảo mật
Python 3.14 và các bản mới hơn sẽ không còn sử dụng chữ ký GPG (Pretty Good Privacy).
Thay vào đó, người dùng sẽ phải sử dụng Sigstore verification materials. Python đã bắt đầu ký bản phát hành bằng Sigstore từ phiên bản 3.11.
Cải tiến trong Python Interpreter
Python 3.14 mang đến hàng loạt cải tiến cho trình thông dịch, bao gồm:
- PEP 649 & PEP 749: Đánh giá hoãn (deferred evaluation) cho annotation.
- PEP 734: Hỗ trợ nhiều interpreter độc lập trong thư viện chuẩn (standard library).
- PEP 750: Thêm template strings (t-strings)
- PEP 758: Cho phép
except
vàexcept*
không cần ngoặc vuông [] - PEP 765: Kiểm soát luồng trong
finally
block - PEP 768: Giao diện debugger xịn hơn cho CPython
- Interpreter mới vip hơn
- Cải tiến free-threaded mode (như viết ở trên)
- Cải tiến error messages rõ ràng hơn
- Cải tiến garbage collector - GC, dọn rác kiểu incremental
PEP - Python Enhancement Proposal: Đề xuất cải tiến Python, là tài liệu mô tả các tiêu chuẩn, tính năng mới, hoặc quy ước chính thức của Python.
Ví dụ PEP 8 - Style Guide for Python Code bao gồm quy chuẩn về cách viết code Python (indent 4 spaces, đặt tên biến, function, class, v.v.).
Hoãn đánh giá annotation (Deferred Evaluation)
Trước đây, annotation (kiểu dữ liệu khai báo trong function/class/module) được đánh giá ngay khi khai báo. Giờ đây, các annotations được lưu trong annotate functions và chỉ được đánh giá trong trường hợp cần thiết, với exception nếu cái from __future__ import annotations
được dùng trong module.
Việc thay đổi này nhằm cải thiện hiệu suất và khả năng sử dụng của type annotation của Python. Bạn có thể sử dụng module annotationlib
để kiểm tra các defered annotation.
Nhiều Interpreter độc lập trong cùng tiến trình
Một trong những thay đổi thú vị mới là việc thêm vào multiple interpreters trong standard library, bạn có thể check trong PEP 734. Tính năng này đã tồn tại trong Python 20 năm 💀 tuy nhiên là thông qua C-API.
Với Python 3.14, bạn có thể sử dụng trực tiếp module concurrent.interpreters
. Một số tính năng hữu ích của multiple interpreters:
- Hỗ trợ mô hình concurrency human-friendly hơn.
- Hỗ trợ đa luồng thực sự trên nhiều nhân (core) CPU.
- Mỗi interpreter là một tiến trình cô lập (isolated process) không chia sẻ dữ liệu mặc định.
Template String Literals (t-strings)
Khả năng bạn đã biết f-string
, chúng rất tiện lợi, tuy nhiên điểm yếu của nó là giá trị được compute ngay tại thời điểm định nghĩa, vậy nên nếu bạn muốn dùng cùng một mẫu để tạo ra nhiều nội dung khác nhau, bạn phải viết đi viết lại, việc này tương đối phiền phức. Do đó t-string
ra đời để giải quyết vấn đề này, chi tiết trong PEP 750.
Brett Cannon, một core developer của Python đã post một bài giới thiệu tương đối xịn trên blog của anh ấy. Khác với f-string
(trả về chuỗi), t-string
trả về một đối tượng gồm phần tĩnh và phần được interpolated của string.
Bạn có thể sử dụng t-string
để sanitize các SQL string trước khi chạy, hoặc cải thiện các log message, hoặc tạo các DSL nhẹ,...
Cải tiến một số Standard Library
Các thư viện chuẩn - standard library có nhiều điểm nổi bật trong bản release Python 3.14, một số được highlighted trong Python documentation:
- PEP 784: Thêm hỗ trợ Zstandard (thuật toán nén nhanh & hiệu quả)
- Asyncio introspection: Có thể xem trạng thái async qua CLI
- Cảnh báo thread-safe
- Syntax highlight, auto complete và color output trong default REPL
Nén dữ liệu với Zstandard
Nếu bạn có thực hiện nhiều thao tác nén với Python, thì bạn có thể sẽ cảm thấy happy hơn khi Python đã bổ sung hỗ trợ Zstandard ngoài hỗ trợ lưu trữ zip và tar đã có. Việc thực hiện chỉ với vài dòng code:
CLI tương tác Asyncio
Một trong những bổ sung mình thích nhất trong bản release hiện tại, đó là tính năng sử dụng asyncio introspection thông qua CLI (command-line interface). Sử dụng đơn giản vãi.
# Hiển thị danh sách coroutine đang chạy.
python -m asyncio ps PID
# Cũng như trên, nhưng render output dạng tree - hữu ích khi debug
python -m asyncio pstree PID
ps
subcommand sẽ inspect cái process thông qua cái PID và display thông tin về cái asyncio tasks hiện tại, output dạng table - gần giống như cái ps
trên Linux thôi. pstree
thì output dạng cây (tree), đặc biệt hữu ích khi debug các async program bị stuck hoặc chạy lâu (long-running).
Cải tiến một chút REPL (giao diện tương tác)
Giờ đây, Read-Evaluate-Print Loop
hay REPL
trong default shell sẽ có một số tính năng mới như:
- Syntax highlighting
- Auto complete (ngon hơn :v)
- Color output
Bạn có thể thử đổi màu color theme bằng cách gọi API _colorize.set_theme()
interactively hoặc trong PYTHONSTARTUP script.
Kết
Python 3.14 là một bản phát hành rất đáng mong đợi, với nhiều nâng cấp hiệu năng, tính năng hiện đại, và cải thiện trải nghiệm lập trình viên.
Tất nhiên, còn rất nhiều thay đổi nhỏ khác chưa được liệt kê ở đây — bạn có thể xem chi tiết trong trang What’s New in Python 3.14.
Cảm ơn các bạn đã đọc 🥰
Reference
All rights reserved