9 điểm bởi GN⁺ 2024-02-08 | 2 bình luận | Chia sẻ qua WhatsApp
  • Trình thông dịch Python 3 mã nguồn mở (CPython >= 3.11.0) được viết bằng Rust
  • Có thể nhúng vào chương trình Rust để sử dụng, hoặc biên dịch sang WebAssembly để chạy Python trong trình duyệt web
  • Giấy phép MIT

Mục tiêu

  • Triển khai một môi trường Python 3 hoàn chỉnh chỉ bằng Rust (không có binding CPython).
  • Hướng tới một bản triển khai Python nhanh, đáng tin cậy và an toàn, có thể dùng trong Rust hoặc biên dịch sang WebAssembly

Ưu điểm của RustPython

  • Có nhiều bản triển khai Python khác nhau, nhưng RustPython dành cho ngôn ngữ lập trình Rust
  • Cũng như Jython và IronPython lần lượt cho phép tích hợp với Java và .NET, RustPython hướng tới việc tích hợp với Rust
  • Nhờ runtime tối giản của Rust, có thể biên dịch sang WebAssembly để dễ dàng chạy mã Python trong trình duyệt

Cách cài đặt

Ý kiến của GN⁺

  • RustPython là một dự án tái triển khai trình thông dịch Python bằng cách tận dụng tính an toàn và hiệu năng của Rust.
  • Khác với các bản triển khai Python hiện có, dự án này được viết trên nền Rust, tăng cường khả năng tích hợp giữa Rust và Python, đồng thời cho phép chạy Python trên web thông qua WebAssembly.
  • Đây hiện là một dự án đang trong quá trình phát triển, mở ra những khả năng mới cho hệ sinh thái Python và có thể trở thành một lựa chọn thay thế thú vị cho các nhà phát triển muốn dùng Rust cùng với Python.

2 bình luận

 
cosine20 2024-02-08

Đây là một dự án thú vị, nhưng theo tôi thì vẫn chưa rõ nó sẽ hữu ích đến mức đó hay không.. Như đã được nhắc ở trên, Jython và IronPython cuối cùng cũng chật vật để theo kịp các phiên bản của CPython, nên rốt cuộc chỉ trở thành những lựa chọn dùng được trong phạm vi rất hạn chế; tôi nghĩ rằng để đáp ứng những kỳ vọng mà người khác đặt vào RustPython thì vẫn còn một chặng đường khá dài.

 
GN⁺ 2024-02-08
Ý kiến trên Hacker News
  • "it can be compiled to WebAssembly in order to run Python in the browser."

    • Một người dùng cho biết họ đã thấy một cách tiếp cận tương tự dùng CPython và NodeJS, và cho rằng cách này không thực tế.
    • Việc chạy mã Python trên một runtime được biên dịch sang WebAssembly (Wasm) đồng nghĩa với việc phải chịu suy giảm hiệu năng hai lần.
    • Để chạy một ngôn ngữ kiểu động trên runtime Wasm, ngôn ngữ đó cần được biên dịch trực tiếp sang Wasm.
    • Dự án này vẫn rất hay và hữu ích, và dù có rất nhiều mã Python có thể dùng trong trình duyệt, không nên cố xây dựng web framework theo cách này.
    • Người này thừa nhận chưa thực hiện benchmark hiệu năng cho RustPython, và RustPython có thể sử dụng một số thủ thuật mà họ chưa biết.
  • Các liên kết liên quan:

    • RustPython là một trình thông dịch Python 3 được viết bằng Rust, đã nhiều lần được đăng trên Hacker News ở các thời điểm khác nhau và nhận được nhiều bình luận đa dạng.
  • Ý kiến tích cực về MicroPython:

    • Một người dùng nhắc rằng MicroPython rất tuyệt và cho biết nó chạy được trên RP2040.
  • Nhiều ý kiến khác nhau về RustPython:

    • Có người dùng nghĩ rằng RustPython là hậu duệ của IronPython.
    • Có người dùng thấy thật tuyệt khi Python có một cộng đồng trình thông dịch bên thứ ba lành mạnh.
    • Có người dùng tò mò về những vấn đề cho thấy sự khác biệt so với CPython.
    • Có người dùng bày tỏ vui mừng trước tiến triển của RustPython và chia sẻ cách chạy RustPython bằng Wasmer.
  • Ý kiến về các giới hạn của RustPython:

    • Có người dùng không chắc các dự án như RustPython có thể được áp dụng rộng rãi hay không.
    • Họ chỉ ra rằng giá trị của Python nằm ở khả năng giao tiếp với các thư viện native, và khi dùng thứ như PyPy thì sẽ mất đi toàn bộ khả năng tiếp cận đó.
  • Ý kiến phê phán về Jython và IronPython:

    • Có người dùng lập luận rằng giờ đây khi Python 2 đã biến mất, Jython và IronPython, những dự án đã thất bại trong việc chuyển sang Python 3, không còn đáng để nhắc tới.
  • Chia sẻ trải nghiệm dự án dùng RustPython:

    • Một người dùng cho biết họ đang sử dụng RustPython làm trình thông dịch cho dự án Kybra, một môi trường Python dành cho Internet Computer Protocol, và Wasm là môi trường runtime của ICP.
    • Họ nói việc thiếu C extension là một vấn đề, nhưng dự định sẽ chuyển sang CPython khi hỗ trợ wasi và C extension sẵn sàng.
  • So sánh về hiệu năng của RustPython:

    • Một người dùng đã xác nhận rằng RustPython chậm hơn CPython khoảng 11 lần thông qua phép tính dãy Fibonacci và chia sẻ kết quả đó.