9 คะแนน โดย GN⁺ 2024-02-08 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • อินเทอร์พรีเตอร์โอเพนซอร์ส Python 3 (CPython >= 3.11.0) ที่เขียนด้วย Rust
  • สามารถฝังใช้งานในโปรแกรม Rust หรือคอมไพล์เป็น WebAssembly เพื่อรัน Python บนเว็บเบราว์เซอร์ได้
  • ไลเซนส์ MIT

เป้าหมาย

  • สร้างสภาพแวดล้อม Python 3 ที่สมบูรณ์โดยใช้ Rust เพียงอย่างเดียว (ไม่มี CPython bindings)
  • มุ่งเป้าไปที่การเป็น implementation ของ Python ที่รวดเร็ว เชื่อถือได้ และปลอดภัย ซึ่งสามารถใช้งานจาก Rust หรือคอมไพล์เป็น WebAssembly ได้

ข้อดีของ RustPython

  • แม้จะมี implementation ของ Python อยู่หลากหลาย แต่ RustPython ถูกสร้างมาสำหรับภาษาโปรแกรม Rust
  • เช่นเดียวกับที่ Jython และ IronPython ทำให้สามารถผสานรวมกับ Java และ .NET ได้ตามลำดับ RustPython ก็มีเป้าหมายเพื่อการผสานรวมกับ Rust
  • ด้วยรันไทม์ขนาดเล็กของ Rust จึงสามารถคอมไพล์เป็น WebAssembly เพื่อรันโค้ด Python บนเบราว์เซอร์ได้อย่างง่ายดาย

วิธีติดตั้ง

  • cargo install --git https://github.com/RustPython/RustPython
  • wapm install rustpython
  • conda install rustpython -c conda-forge
  • หรือจะบิลด์จากซอร์สโดยตรงก็ได้

ความเห็นของ GN⁺

  • RustPython เป็นโปรเจ็กต์ที่นำความปลอดภัยและประสิทธิภาพของ Rust มาสร้างอินเทอร์พรีเตอร์ Python ขึ้นใหม่
  • ต่างจาก implementation ของ Python แบบเดิม ๆ ที่โปรเจ็กต์นี้เขียนขึ้นบนพื้นฐานของ Rust ช่วยเสริมการผสานรวมระหว่าง Rust และ Python และทำให้สามารถรัน Python บนเว็บผ่าน WebAssembly ได้
  • ปัจจุบันยังเป็นโปรเจ็กต์ที่อยู่ระหว่างการพัฒนา แต่กำลังเปิดความเป็นไปได้ใหม่ให้กับระบบนิเวศ Python และอาจเป็นทางเลือกที่น่าสนใจสำหรับนักพัฒนาที่ต้องการใช้ Rust และ Python ร่วมกัน

2 ความคิดเห็น

 
cosine20 2024-02-08

เป็นโปรเจ็กต์ที่น่าสนใจ แต่ส่วนตัวยังไม่แน่ใจว่าจะมีประโยชน์มากขนาดนั้นหรือเปล่า.. อย่างที่พูดถึงไปก่อนหน้านี้ ทั้ง Jython และ IronPython เองก็สุดท้ายตามเวอร์ชันของ CPython ได้ยากมาก จนกลายเป็นตัวเลือกที่ใช้งานได้จริงแค่ในวงจำกัดมาก ๆ และถ้าจะตอบโจทย์สิ่งที่คนอื่นคาดหวังจาก RustPython ได้ ก็คงยังต้องไปอีกไกลพอสมควร

 
GN⁺ 2024-02-08
ความเห็นบน Hacker News
  • "it can be compiled to WebAssembly in order to run Python in the browser."

    • ผู้ใช้รายหนึ่งเคยเห็นแนวทางคล้ายกันที่ใช้ CPython และ NodeJS และมองว่าวิธีนี้ไม่ค่อยใช้งานได้จริง
    • การรันโค้ด Python บนรันไทม์ที่คอมไพล์เป็น WebAssembly (Wasm) ทำให้เกิดภาระด้านประสิทธิภาพซ้ำสองชั้น
    • หากต้องการรันภาษาที่มี dynamic typing บนรันไทม์ Wasm ภาษานั้นควรถูกคอมไพล์เป็น Wasm โดยตรง
    • โปรเจกต์นี้ยังคงเจ๋งและมีประโยชน์ และถึงแม้จะมีโค้ด Python จำนวนมากที่นำไปใช้ในเบราว์เซอร์ได้ ก็ไม่ควรพยายามสร้างเว็บเฟรมเวิร์กด้วยแนวทางนี้
    • ผู้แสดงความเห็นยอมรับว่ายังไม่ได้ทำ performance benchmark ของ RustPython และ RustPython อาจใช้เทคนิคบางอย่างที่เขาไม่ทราบก็ได้
  • ลิงก์ที่เกี่ยวข้อง:

    • RustPython เป็นอินเทอร์พรีเตอร์ Python 3 ที่เขียนด้วย Rust ซึ่งเคยถูกโพสต์บน Hacker News หลายครั้งและได้รับความเห็นหลากหลาย
  • ความเห็นเชิงบวกเกี่ยวกับ MicroPython:

    • ผู้ใช้รายหนึ่งกล่าวว่า MicroPython เจ๋งมาก และระบุว่าสามารถรันบน RP2040 ได้
  • ความเห็นหลากหลายเกี่ยวกับ RustPython:

    • มีผู้ใช้บางรายคิดว่า RustPython เป็นผู้สืบทอดของ IronPython
    • มีผู้ใช้ที่มองว่าเป็นเรื่องดีที่ Python มีชุมชนอินเทอร์พรีเตอร์จาก third-party ที่แข็งแรง
    • มีผู้ใช้ที่สงสัยถึงประเด็นที่แสดงให้เห็นความแตกต่างจาก CPython
    • มีผู้ใช้ที่แสดงความยินดีกับความคืบหน้าของ RustPython และแชร์วิธีรัน RustPython ด้วย Wasmer
  • ความเห็นเกี่ยวกับข้อจำกัดของ RustPython:

    • มีผู้ใช้ที่ไม่แน่ใจว่าโปรเจกต์อย่าง RustPython จะถูกนำไปใช้อย่างแพร่หลายได้หรือไม่
    • มีการชี้ว่า คุณค่าของ Python อยู่ที่การเชื่อมต่อกับไลบรารีเนทีฟ และหากใช้สิ่งอย่าง PyPy ก็จะสูญเสียการเข้าถึงเหล่านั้นทั้งหมด
  • ความเห็นเชิงวิจารณ์เกี่ยวกับ Jython และ IronPython:

    • มีผู้ใช้ที่อ้างว่า ในตอนนี้ที่ Python 2 หมดไปแล้ว Jython และ IronPython ซึ่งล้มเหลวในการเปลี่ยนผ่านไปยัง Python 3 ก็ไม่คุ้มค่าแก่การกล่าวถึง
  • การแชร์ประสบการณ์ทำโปรเจกต์ด้วย RustPython:

    • ผู้ใช้รายหนึ่งใช้ RustPython เป็นอินเทอร์พรีเตอร์สำหรับโปรเจกต์ Kybra ซึ่งเป็นสภาพแวดล้อม Python สำหรับ Internet Computer Protocol และระบุว่า Wasm คือสภาพแวดล้อมรันไทม์ของ ICP
    • เขากล่าวว่าการไม่มี C extension เป็นปัญหา แต่เมื่อ wasi และการรองรับ C extension พร้อมแล้ว ก็มีแผนจะย้ายไปใช้ CPython
  • การเปรียบเทียบประสิทธิภาพของ RustPython:

    • ผู้ใช้รายหนึ่งตรวจสอบผ่านการคำนวณลำดับฟีโบนัชชีและแชร์ผลว่า RustPython ช้ากว่า CPython ราว 11 เท่า