- Pyrefly ของ Meta เป็นทั้ง ตัวตรวจสอบชนิดข้อมูลของ Python แบบโอเพนซอร์สและส่วนขยาย IDE ที่พัฒนาด้วย Rust
- รองรับประสิทธิภาพการวิเคราะห์ที่รวดเร็วมากและความสามารถด้าน การผสานรวมกับ IDE โดยพัฒนาขึ้นเพื่อก้าวข้ามข้อจำกัดของ Pyre
- ยึดหลัก การอนุมานชนิดข้อมูลอัตโนมัติ การรองรับโค้ดเบสขนาดใหญ่ และแนวคิดโอเพนซอร์สเป็นหัวใจสำคัญ
- มีเป้าหมายปรับปรุง ระบบชนิดข้อมูล ของทั้งระบบนิเวศผ่านการทำงานร่วมและการมีส่วนร่วมกับชุมชน Python
- ขณะนี้เปิดตัวเวอร์ชันอัลฟาแล้ว และกำลังขอรับฟีดแบ็กและการมีส่วนร่วมจากชุมชนอย่างจริงจัง
บทนำ
- Pyrefly เป็นโปรเจ็กต์โอเพนซอร์สของ Meta ที่เป็นทั้ง ตัวตรวจสอบชนิดข้อมูลแบบสแตติกสำหรับ Python และส่วนขยาย IDE ที่พัฒนาด้วย Rust
- ช่วยรองรับ การตรวจพบข้อผิดพลาดล่วงหน้า โดยตรวจสอบความสอดคล้องของชนิดข้อมูลก่อนรันโค้ด
- ใช้งานได้ทั้งแบบผสานกับ IDE และผ่าน CLI จึงมอบ เวิร์กโฟลว์ที่ยืดหยุ่น
- ตั้งเป้ามีส่วนช่วยพัฒนาระบบชนิดข้อมูลของ Python และไลบรารีต่าง ๆ ผ่านความร่วมมือกับชุมชนโอเพนซอร์ส
เบื้องหลังการพัฒนา Pyrefly
- ในปี 2017 Meta ได้พัฒนาตัวตรวจสอบชนิดข้อมูลตัวใหม่สำหรับ โค้ดเบส Python ขนาดใหญ่ของ Instagram ซึ่งต่อมากลายเป็น Pyre
- Pyre อ้างอิงการออกแบบที่แข็งแกร่งจาก Hack, Flow และพัฒนาด้วย OCaml เพื่อประสิทธิภาพ
- เมื่อเวลาผ่านไป ความต้องการด้าน การพัฒนาระบบชนิดข้อมูล และการเชื่อมต่อกับ IDE เพิ่มขึ้น จึงเริ่มเห็นข้อจำกัด
- แม้จะใช้เครื่องมือจากชุมชนอย่าง Pyright ด้วย แต่ยังมีข้อจำกัดในการตอบโจทย์เรื่องการสำรวจโค้ดขนาดใหญ่ การส่งออกชนิดข้อมูล และความต้องการอื่น ๆ จึงเริ่มพัฒนา Pyrefly
หลักการสำคัญของ Pyrefly
-
1. ประสิทธิภาพ
- นักพัฒนาต้องการ การตรวจสอบชนิดข้อมูลที่รวดเร็วทุกครั้งที่พิมพ์ ทันทีหลังเขียนโค้ด
- Pyrefly ใช้สถาปัตยกรรม Rust ประสิทธิภาพสูง ที่สามารถตรวจสอบโค้ดเบสขนาดใหญ่มากได้ถึง 1.8 ล้านบรรทัดต่อวินาที
-
2. การออกแบบที่ยึด IDE เป็นศูนย์กลาง
- มีการออกแบบเชิงนามธรรมตั้งแต่ต้นเพื่อให้ IDE และ CLI มองเห็นสถานะเดียวกัน
- ใน Pyre สิ่งนี้เป็นการเติมภายหลัง แต่ใน Pyrefly ได้เน้นความสอดคล้องตั้งแต่ขั้นตอนการออกแบบ
-
3. Inference (การอนุมาน)
- รองรับ การอนุมานชนิดข้อมูลอัตโนมัติ แม้ในโค้ด Python ที่ไม่ได้ระบุชนิดข้อมูลและไม่มีคอมเมนต์กำกับ
- สามารถแสดงชนิดข้อมูลของค่าที่คืนกลับและตัวแปรภายในบน IDE และเพื่อช่วยให้เขียนโค้ดได้ดีขึ้น ยังสามารถ แทรกชนิดข้อมูลที่อนุมานได้อัตโนมัติเมื่อดับเบิลคลิก
-
4. โอเพนซอร์ส
- Pyrefly เผยแพร่บน GitHub ภายใต้สัญญาอนุญาต MIT และยินดีรับ PR จากชุมชนรวมถึงการแจ้งปัญหา
- มุ่งสร้างการสื่อสารอย่างคึกคักผ่านช่องทาง Discord พร้อมเชื่อมโยงกับระบบนิเวศ Python และไลบรารีหลักของ Meta เช่น PyTorch
อนาคตของ Pyrefly
- กำลังเดินหน้าร่วมกับชุมชนโดยมีเป้าหมายเพื่อ ปรับปรุงภาษา Python และประสบการณ์ของนักพัฒนา
- ตั้งแต่ช่วงแรกของการพัฒนา Pyre ก็มีการเปิดซอร์สโค้ดและมีส่วนร่วมกับ PEP อย่างต่อเนื่อง และใน Pyrefly ก็มีแผนจะขยาย ประโยชน์ของการใช้ชนิดข้อมูล ให้สูงสุดสำหรับนักพัฒนา ไลบรารีต่าง ๆ และผู้เริ่มต้น
- Meta วางแผนผลักดัน การยกระดับคุณภาพของชนิดข้อมูล ในระบบนิเวศ โดยอาศัยประสบการณ์และผลลัพธ์จากการใช้ชนิดข้อมูลในภาษาที่เป็นไดนามิก
- แม้ตอนนี้ Pyrefly จะยังเป็นเวอร์ชันอัลฟา แต่ตั้งเป้าเปิดตัวอย่างเป็นทางการในช่วงฤดูร้อนนี้ พร้อมเดินหน้า แก้บั๊กและเพิ่มฟีเจอร์ อย่างต่อเนื่อง
- ฟีดแบ็กจากชุมชนมีความสำคัญมาก และมีการเชิญชวนอย่างจริงจังให้ทดลองใช้ Pyrefly แล้วช่วย รายงานปัญหาและเสนอการปรับปรุง
การใช้งาน Pyrefly เวอร์ชันอัลฟาและข้อมูลชุมชน
- กระบวนการพัฒนาและรายละเอียดเชิงเทคนิคของ Pyrefly ถูกเผยแพร่ผ่าน Meta Tech Podcast และการบรรยายในงาน PyCon US
- มีการเผยแพร่ข่าวสารเพิ่มเติมผ่านหลายช่องทาง เช่น เว็บไซต์ที่เกี่ยวข้องกับ Meta Open Source, YouTube, Facebook, Threads, X และ LinkedIn
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
uvได้รับความนิยมสูงมากจนมีลางว่าฝั่งtyอาจจะชนะในสายนี้ ถ้าผิดพลาดก็อาจเกิดบรรยากาศแบบที่ทีมภายในถูกโอเพนซอร์สภายนอกกลบ จนผู้บริหารพูดทำนองว่า "ทีมนี้จำเป็นจริงหรือ? เปลี่ยนไปใช้โอเพนซอร์สเถอะ" เหมือนกรณี Atom หรือ Flow ซึ่งคิดว่าเป็นจุดที่ผู้จัดการ (Aaron Pollack?) ควรใส่ใจgitชี้ปัญหาเกี่ยวกับการใช้ monorepo และปฏิเสธการปรับปรุงใน upstream จนมีการย้ายไปใช้mercurialแทน ขณะที่ฝั่งmercurialยินดีรับ contribution เรื่องนี้อธิบายว่าความเปลี่ยนแปลงของเครื่องมือภายในเกิดขึ้นเร็วมาก การเป็นเจ้าของโปรเจ็กต์เองจึงสมเหตุสมผลmypyเดิมก็ยังคงอยู่mypy"[คำอธิบายเครื่องมือ] rust"ก็สามารถหา software ที่เร็วได้ง่าย ซึ่งน่าพอใจ และแชร์ประสบการณ์ว่าเครื่องมือที่ใช้ราว 95% เขียนด้วย Rust และส่วนใหญ่ก็น่าพอใจมากpyreflyไม่ได้ถูกผูกกับvscodeอย่างเดียว และขอให้เปิดรับว่าคนแต่ละคนมีความชอบต่างกันpycharmเองก็ไม่ได้ดีกว่าอย่างเด็ดขาด สำหรับตนvscodeสะดวกเรื่อง remote development และก็ไม่อยากไปโพสต์บนอินเทอร์เน็ตว่าpycharmแย่