TopGit
Đánh giá repo GitHub

CPython: Python programming language source code

python/cpython
CTopGit review image for python/cpython
Review by Topgit.dev for python/cpython, with GitHub repository stats and README context.
Nhận định nhanh

CPython chính là Python programming language source code — phần mã nguồn C và Python tạo ra binary python3 mà hầu hết các bản cài Python đang chạy. Đây không phải một wrapper hay một bản distro, mà là bản triển khai tham chiếu (reference implementation) của chính ngôn ngữ Python. Đáng clone nếu bạn đang patch trình thông dịch hoặc build Python từ source; không liên quan nếu bạn chỉ cần chạy pip install.

Sao
★ 77.8k
Fork
⑂ 37.2k
Ngôn ngữ
Python
Giấy phép
Xem trong repo
Chủ đề
—
Cập nhật
Nov 2026
Trang chủ
GitHub

Bên trong CPython monorepo

CPython là repo trên GitHub chứa toàn bộ mã nguồn của trình thông dịch Python — runtime viết bằng C, trình biên dịch, máy ảo bytecode, và toàn bộ standard library, tất cả nằm chung một cây thư mục. Clone repo này là bạn có Include/, Modules/ và Lib/ nằm cạnh nhau, cùng các script build (configure, Makefile) để biến mã nguồn đó thành một bản python3 chạy được. README ghi rõ phiên bản đang phát triển: Python 3.16.0 alpha 0.

Build option, PGO và tối ưu LTO

  • ✓Cờ --enable-optimizations của ./configure tự bật Profile Guided Optimization, và có thể tự bật luôn Link Time Optimization trên các nền tảng được hỗ trợ.
  • ✓PGO hoạt động bằng cách build một bản interpreter có instrument trước, chạy một workload huấn luyện qua nó, rồi build lại binary cuối cùng dựa trên dữ liệu profile đó — thực hiện qua make profile-opt.
  • ✓LTO là tùy chọn riêng, bật qua --with-lto, cho phép trình biên dịch tối ưu xuyên qua ranh giới file .o mà một bản build thông thường coi là tách biệt.
  • ✓Debug build có quy trình riêng: tạo một thư mục con, chạy ../configure --with-pydebug từ trong đó, để cây debug không đụng độ với bản build ở top-level.
  • ✓make altinstall cài một binary có hậu tố phiên bản (python3.X) thay vì ghi đè python3 — đây là cách nhiều phiên bản Python cùng tồn tại dưới một prefix.
  • ✓Hai pipeline CI canh gác mọi thay đổi vào main: GitHub Actions và Azure Pipelines, cả hai đều gắn badge ngay đầu README.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao ↗

Build Python từ source trên Unix và macOS

Trên Unix, Linux, BSD, macOS và Cygwin, toàn bộ quy trình chỉ gồm bốn lệnh: ./configure, make, make test, sudo make install. Bước cuối cài kết quả dưới tên python3, không phải python — nhớ tính trước PATH của bạn. Chạy ./configure --help trước tiên, vì có rất nhiều option, và build một bản cài đầy đủ thường cần thêm các thư viện bên thứ ba mà danh sách dependency trong devguide liệt kê chi tiết. Trên macOS có thêm các cờ configure riêng cho framework build và universal build (tài liệu ở Mac/README.rst), còn Windows đi theo một đường hoàn toàn khác qua PCbuild/readme.txt thay vì luồng configure/make của Unix. Không phải module standard library nào cũng build hoặc chạy được trên mọi nền tảng — README nói thẳng điều này mà không liệt kê cụ thể module nào.

Chạy test suite

make test ở thư mục top-level chạy bộ test suite của chính interpreter; các thông báo skip test do thiếu optional feature là bình thường, nhưng traceback, core dump, hay một test fail được báo cáo nghĩa là có gì đó thật sự hỏng. Các test tốn tài nguyên bị loại theo mặc định — bật lại bằng make buildbottest. Khi một test cụ thể fail, chạy lại ở chế độ verbose: make test TESTOPTS="-v test_os test_gdb" là ví dụ lấy thẳng từ README. Chạy song song nhiều phiên bản Python quy về một quyết định: chọn một phiên bản "primary" rồi cài bằng make install, còn mọi phiên bản khác dùng make altinstall để binary giữ hậu tố phiên bản thay vì đè lên nhau.

Điểm mạnh

  • ✓Một repo duy nhất chứa cả interpreter, trình biên dịch và standard library, nên một fix hay một build chỉ chạm vào một cây source thay vì nhiều dự án phối hợp.
  • ✓PGO và LTO đều là cờ configure chính thức, không phải một patch set ai đó maintain riêng bên ngoài.
  • ✓Hai hệ CI độc lập build nhánh main ở mỗi lần push, nên một bản build hỏng lộ ra rất nhanh.
  • ✓Bản phân phối không chứa code GPL nào — README nói thẳng điều này — mở đường cho việc dùng trong dự án proprietary.

Hỗ trợ nền tảng và dependency khi build

  • △Đây là source, không phải trình cài đặt Python — người dùng cuối chỉ muốn chạy Python nên lấy bản cài từ python.org, không phải build từ repo này.
  • △Build một bản cài đầy đủ cần các thư viện bên thứ ba tùy nền tảng, và README đẩy danh sách cụ thể sang trang devguide bên ngoài thay vì ghi thẳng trong repo.
  • △Windows không nằm trong cùng luồng ./configure — đó là một đường build riêng qua PCbuild, tài liệu ở một file hoàn toàn khác.
  • △README hiện đang ở phiên bản 3.16.0 alpha 0 — đây là bản pre-release, về bản chất chưa ổn định trên nhánh main, không phải thứ nên build cho production.
  • △Không phải module standard library nào cũng build hoặc chạy được trên mọi nền tảng, và README không nói rõ module nào bị ảnh hưởng ở đâu.

Các implementation Python khác

PyPy — bản triển khai thay thế của Python dùng JIT compile, thường nhanh hơn CPython với code CPU-bound chạy dài.MicroPython — viết lại từ đầu, nhắm tới vi điều khiển và phần cứng nhúng hạn chế tài nguyên, nơi CPython quá nặng.IronPython — triển khai Python trên nền .NET CLR thay vì một runtime C độc lập.Jython — biên dịch Python sang JVM bytecode, hữu ích khi cần nhúng Python vào ứng dụng Java.

Câu hỏi thường gặp về CPython

Python được phát hành theo giấy phép nào — có tương thích GPL không?

CPython miễn phí và mã nguồn mở, phát hành theo giấy phép permissive riêng (xem file LICENSE trong repository để biết điều khoản chính xác). README nói rõ bản phân phối không chứa code GNU General Public License (GPL) nào, và dù có vài interface tùy chọn tới code GNU, phần lõi phân phối không theo giấy phép GPL.

Tôi có thể dùng CPython trong dự án proprietary hoặc thương mại không?

CPython dùng được trong dự án proprietary hoặc thương mại — README nói thẳng bản phân phối không chứa code GPL, nên không có gì trong đó bắt code của bạn phải theo copyleft. Một vài interface tùy chọn có chạm tới code GNU, nhưng chúng không bắt buộc cho một bản build thông thường.

Làm sao build Python với Profile Guided Optimization (PGO)?

Chạy ./configure --enable-optimizations trước make, lệnh này tự đặt các target build mặc định để bật PGO. Bên dưới, quy trình build một bản interpreter có instrument, chạy một workload huấn luyện qua nó, rồi build lại binary tối ưu cuối cùng từ dữ liệu profile đó — đúng các bước mà make profile-opt chạy trực tiếp.

Làm sao cài nhiều phiên bản Python trên cùng một hệ thống?

Chọn một phiên bản làm "primary" rồi cài bằng make install, lệnh này tạo symlink prefix/bin/python3. Mọi phiên bản khác cài bằng make altinstall, giữ binary có hậu tố phiên bản để chúng cùng tồn tại dưới một prefix mà không đè lên nhau.

Mã nguồn CPython có chứa code theo giấy phép GPL nào không?

Bản phân phối của CPython không chứa code GNU General Public License (GPL) nào — README nói rõ điều này. Có một số interface tới code GNU, nhưng README mô tả chúng là hoàn toàn tùy chọn, không thuộc phần build lõi.

Cần những build dependency nào để compile CPython trên Linux?

README của CPython không liệt kê build dependency cho Linux ngay trong file — thay vào đó nó trỏ sang trang dependency của devguide để lấy danh sách package theo từng distro. Điều README nói rõ là một bản cài đầy đủ cần nhiều thư viện bên thứ ba tùy nền tảng và configure option, và không phải module standard library nào cũng build được trên mọi nền tảng.

Vấn đề mà nó giải quyết

Python với tư cách ngôn ngữ và CPython với tư cách interpreter không phải hai dự án tách biệt có nhà riêng — repo này chính là nơi "Python" như một khái niệm và "python3" như một binary đang chạy gặp nhau. Không có một cây source canonical, build được, sẽ chẳng có chỗ nào để báo bug ở interpreter, đề xuất thay đổi ngôn ngữ, hay build Python cho một nền tảng mà bản cài chính thức chưa hỗ trợ.

Use case tốt nhất

  • •Build một interpreter Python tùy chỉnh có PGO và LTO cho một môi trường deploy nhạy cảm về hiệu năng.
  • •Bisect hoặc patch trực tiếp một bug CPython trên nhánh main thay vì chờ bản release kế tiếp.
  • •Cross-compile hoặc đóng gói Python cho một nền tảng chưa có trình cài chính thức từ python.org.
  • •Chạy bộ test suite riêng của interpreter (make test) để xác nhận một bản build đã patch trước khi ship.

Ai nên dùng — và ai nên bỏ qua

Core maintainer, contributor của CPython, người build custom Python distribution, hay bất kỳ ai debug ở tầng interpreter hoặc bytecode đều nên ở đây — đây là nơi fix thật sự nằm. Nếu bạn chỉ viết ứng dụng Python, hãy dùng package manager và bản cài từ python.org thay vì clone repo này để chạy pip install — chẳng khác nào build cả một trình duyệt từ source chỉ để đọc một trang web. Người đóng gói muốn build tối ưu (PGO/LTO, tùy chỉnh tập module) cũng có lý do thật sự để vào cây source này.

Nguồn & ghi công

Thông tin và trích dẫn lấy từ repo GitHub python/cpython và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 14 thg 8, 2026Đánh giá bởi Henry
← Về TopGit

Chưa chắc cpython có hợp với bạn?

Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về cpython.

GitHub