9 เมษายน 2564

Published เมษายน 09, 2564 by with 0 comment

RustPython ว่าที่รันไทม์ Python แทน CPython 🐍


นับตั้งแต่ภาษา Python ได้ถือกำเนิดมาพร้อมกับการพัฒนา CPython ที่พัฒนา Python บนภาษา C ตลอดเวลาที่ผ่านมา มี implementation อื่น ๆ ได้แก่ Jython ที่นำ Python ไปรันบน Java, IronPython ที่นำ Python ไปรันบน .NET


จนการมาของกระแสภาษา Rust ล่าสุดในปี ค.ศ.2018 ได้มีกลุ่มนักพัฒนา พยายามนำภาษา Python ไปรันบนภาษา Rust ด้วยโครงการที่ชื่อว่า RustPython

โลโก้ RustPython

RustPython เป็น Interpreter ภาษา Python บนภาษา Rust โดยสามารถรันโค้ดโปรแกรมภาษา Python บน Rust ได้และสามารถแปลงไปเป็น WebAssembly ได้แถมมีความสามารถด้าน JIT และ VM

สำหรับ RustPython ปัจจุบันยังอยู่ในช่วงกำลังพัฒนา โดยมีเป้าหมายคือ สามารถรันโค้ด Python อย่างเต็มรูปแบบได้บนภาษา Rust และมีคุณสมบัติ เร็ว เชื่อถือได้ และปลอดภัย สามารถใช้งานได้จาก Rust และคอมไพล์ไปเป็น WebAssembly ได้ [1]

เรามาลองใช้ RustPython กัน

ก่อนอื่นให้เราไปติดตั้ง Rust ก่อน โดยเข้าไปที่ rust-lang.org/tools/install จากนั้นโหลดมาติดตั้งให้เรียบร้อย

จากนั้นให้เรา clone โปรเจคมา

git clone https://github.com/RustPython/RustPython

แล้วสั่ง cd แล้วลอง build แสดงผลลัพธ์ไฟล์ demo.py

cd RustPython

cargo run --release demo.py

ถ้าได้ผลลัพธ์ แสดงว่าสามารถ build ได้อย่างถูกต้อง

Hello, RustPython!

จากนั้น เราลอง interactive shell ได้ด้วยคำสั่ง

cargo run --release

จะได้โหมดสำหรับรับคำสั่งผ่านแป้นพิมพ์

Welcome to the magnificent Rust Python 0.1.2 interpreter 😱 🖖
No previous history.
>>>>>

สามารถติดตั้งเพื่อเรียกใช้งานได้ด้วยคำสั่ง

cargo install --path ./

แล้วเราสามารถไปเรียกใช้คำสั่ง rustpython ที่ไหนก็ได้ในเครื่อง

# rustpython
Welcome to the magnificent Rust Python 0.1.2 interpreter 😱 🖖
No previous history.
>>>>>

การใช้งาน Python บน RustPython

การใช้งาน Python บน RustPython
RustPython ปัจจุบันถูกพัฒนาบนฐาน Python 3.8 โดยทั่วไปสามารถใช้งานได้เหมือน python ตามปกติ

>>>>> i = input()
test
>>>>> print(i)
test
>>>>> แมว = 1
>>>>> แมว * 2
2

และสามารถเรียกใช้งานไลบรารีพื้นฐานต่าง ๆ ได้บนฐาน Python 3.8

>>>>> import math
>>>>> math.pi
3.141592653589793

นอกจากนั้น ยังสามารถลองเล่น RustPython แบบออนไลน์ได้ด้วย (ผ่าน WebAssembly)

คลิกได้ที่ rustpython.github.io/demo/


ความเข้ากันได้ RustPython กับ CPython

RustPython ได้มีระบบทดสอบกับชุดทดสอบของ Python สำหรับทดสอบความเข้ากันได้ของโค้ดภาษา Python ซึ่งปัจจุบัน RustPython ทำผ่านไปแล้ว 71.81%

ความเข้ากันได้ RustPython กับ CPython
สามารถดูรายละเอียดได้ที่ rustpython.github.io/pages/regression-tests-results.html

และเมื่อไม่นานมานี้ RustPython เพิ่งรองรับ PIP [5]

ประสิทธิภาพของ RustPython

ผลการวัดประสิทธิภาพ RustPython เทียบกับ Python 3
ผลการวัดประสิทธิภาพ RustPython เทียบกับ Python 3
ที่มา pybenchmarks.org/u64q/rustpython.php

ณ ปัจจุบันที่เขียนบทความ ประสิทธิภาพของ RustPython ยังสู้ CPython 3 ไม่ได้ (อาจเรียกได้ว่า CPython ปกติเร็วกว่าหลายเท่าตัว) [2] ซึ่งอาจต้องใช้เวลาพัฒนาอีกสักระยะหนึ่งในการปรับปรุงประสิทธิภาพในกระบวนการพัฒนา

ท่านใดสนใจอยากร่วมพัฒนาหรืออยากลอง RustPython สามารถเข้าไปได้ที่ https://github.com/RustPython/RustPython

ขอขอบคุณ ปู Ferris จาก rustacean.net และรูปอีโมจิงูจาก Microsoft

บรรณานุกรม

1.
Why RustPython? [Internet]. RustPython. [cited 2021 Apr 9]. Available from: https://rustpython.github.io/
2.
RustPython vs Python 3 | Python Interpreters Benchmarks [Internet]. [cited 2021 Apr 9]. Available from: https://pybenchmarks.org/u64q/rustpython.php
3.
RustPython · RustPython/RustPython [Internet]. GitHub. [cited 2021 Apr 9]. Available from: https://github.com/RustPython/RustPython
4.
RustPython: a Python implementation in Rust [Internet]. [cited 2021 Apr 9]. Available from: https://archive.fosdem.org/2019/schedule/event/rust_python/
5.
pip is working! 🎉 🎉 [Internet]. RustPython. 2021 [cited 2021 Apr 9]. Available from: https://rustpython.github.io/blog/2021/01/26/pip-support.html

0 ความคิดเห็น:

โพสต์ความคิดเห็น

แสดงความคิดเห็นได้ครับ :)