ชุมชนนักพัฒนาภาษา Rust กำลังสำรวจวิธีการขยายความเข้ากันได้ของโค้ดสมัยใหม่ไปยังระบบ Windows รุ่นเก่า ซึ่งกระตุ้นให้เกิดการอภิปรายที่น่าสนใจเกี่ยวกับความท้าทายทางเทคนิคและแนวทางแก้ไขเชิงสร้างสรรค์ที่เกี่ยวข้องกับการคำนวณย้อนยุค
เครื่องมือ Thunk เปิดใช้งานความเข้ากันได้กับ Windows XP
เครื่องมือใหม่ที่เรียกว่า Thunk ได้เกิดขึ้นเพื่อช่วยนักพัฒนา Rust สร้างโปรแกรมที่สามารถทำงานบนแพลตฟอร์ม Windows รุ่นเก่า รวมถึง Windows XP เครื่องมือนี้ทำงานโดยการรวมเทคโนโลยีที่มีอยู่สองอย่างเข้าด้วยกัน: VC-LTL5 สำหรับความเข้ากันได้ของไลบรารี และ YY-Thunks เพื่อจัดหา API ที่ขาดหายไปซึ่งไม่มีอยู่ในแพลตฟอร์มรุ่นเก่า แนวทางนี้ช่วยให้แอปพลิเคชัน Rust สมัยใหม่สามารถเชื่อมช่องว่างระหว่างแนวปฏิบัติการพัฒนาร่วมสมัยกับความต้องการของระบบรุ่นเก่า
เครื่องมือนี้สามารถใช้งานได้ทั้งในรูปแบบยูทิลิตี้บรรทัดคำสั่งหรือรวมเข้ากับสคริปต์บิลด์โดยตรง ทำให้เข้าถึงได้สำหรับเวิร์กโฟลว์การพัฒนาที่แตกต่างกัน อย่างไรก็ตาม ผู้สร้างเน้นย้ำว่าไม่รับประกันความเข้ากันได้ และนักพัฒนาใช้งานด้วยความเสี่ยงของตนเอง
การติดตั้งและใช้งาน Thunk
การติดตั้งผ่าน Command Line:
cargo install thunk-cli
การรวมเข้ากับ Library:
cargo add thunk-rs --build
แพลตฟอร์มที่รองรับ:
- Windows XP (x86/x64)
- Windows Vista (x86/x64)
- Windows 7-10 (x86/x64)
ชุมชนสำรวจความท้าทายการคำนวณย้อนยุคขั้นสุดขีด
การอภิปรายได้ขยายออกไปจากการสนับสนุนระบบรุ่นเก่าในทางปฏิบัติไปสู่การสำรวจขีดจำกัดเชิงทฤษฎีของความเข้ากันได้แบบย้อนหลัง นักพัฒนากำลังถกเถียงกันว่าจะต้องทำอย่างไรจึงจะสามารถรันโปรแกรม Rust บนระบบที่เก่ามากอย่าง Windows 3.1 ซึ่งเผยให้เห็นอุปสรรคทางเทคนิคที่ลึกซึ้งที่เกี่ยวข้อง
ความท้าทายหลักอยู่ที่สถาปัตยกรรม 16-bit และโมเดลหน่วยความจำแบบแบ่งส่วนของ Windows 3.1 ซึ่งขัดแย้งกับระบบพอยน์เตอร์ของ Rust แบ็กเอนด์ x86 ของ LLVM ไม่รองรับการคอมไพล์แบบ 16-bit ที่แท้จริง และ Rust สันนิษฐานว่าพอยน์เตอร์ทั้งหมดมีขนาดเท่ากัน วิธีแก้ไขที่เป็นไปได้อย่างหนึ่งคือการใช้ Win32s เป็นเลเยอร์กลาง แม้ว่าจะต้องมีการประนีประนอมทางเทคนิคอย่างมาก
กับ Windows 3.1 คุณอาจจะต้องคอมไพล์ไปยังอินเทอร์เฟซ Win16 ซึ่งจะเป็นความท้าทายพอสมควร
ข้อกำหนดทางเทคนิค
ตัวแปรสภาพแวดล้อมที่จำเป็น:
ไฟล์ Binary | ตัวแปรสภาพแวดล้อม |
---|---|
VC-LTL-XXX-Binary.7z | VC_LTL |
YY-Thunks-XXX-Binary.zip | YY_THUNKS |
การพึ่งพิงสำหรับการใช้งานไลบรารี:
- เครื่องมือ command line ของ curl
- ยูทิลิตี้สำหรับแตกไฟล์ 7z
- ทั้งสองอย่างต้องพร้อมใช้งานใน system PATH
โครงการที่เกี่ยวข้องผลักดันขีดจำกัดให้ไกลยิ่งขึ้น
ชุมชนได้เน้นย้ำโครงการที่ทะเยอทะยานหลายโครงการที่มุ่งเป้าไปที่ระบบที่เก่ากว่านั้น Rust9x มุ่งเน้นไปที่ความเข้ากันได้กับ Windows 95 และ NT ในขณะที่โครงการอื่นจัดการกับการสนับสนุน MIPS64 Windows NT 4.0 ความพยายามเหล่านี้แสดงให้เห็นความมุ่งมั่นของชุมชนในการสำรวจขีดจำกัดสุดขีดของความเข้ากันได้ของภาษาสมัยใหม่กับแพลตฟอร์มคอมพิวเตอร์วินเทจ
โครงการเหล่านี้เผชิญความท้าทายที่คล้ายกันเกี่ยวกับการสนับสนุนไลบรารีมาตรฐาน เนื่องจาก API สมัยใหม่ไม่มีอยู่ในระบบรุ่นเก่า ความสำเร็จมักจะต้องการการตัดฟีเจอร์ไลบรารีมาตรฐานออกไปและทำงานกับอินเทอร์เฟซระบบที่น้อยที่สุด
การอภิปรายนี้สะท้อนแนวโน้มที่กว้างขึ้นในชุมชนโปรแกรมเมอร์ที่นักพัฒนาสร้างสมดุลระหว่างความต้องการในทางปฏิบัติสำหรับการสนับสนุนระบบรุ่นเก่ากับความท้าทายทางปัญญาในการผลักดันขีดจำกัดทางเทคนิค แม้ว่าผู้ใช้ส่วนใหญ่จะไม่จำเป็นต้องใช้ความเข้ากันได้กับ Windows XP แต่เครื่องมือและการอภิปรายเหล่านี้ก็มีส่วนสนับสนุนความรู้ที่มีค่าเกี่ยวกับการพัฒนาข้ามแพลตฟอร์มและความท้าทายในการเขียนโปรแกรมระดับระบบ
อ้างอิง: Use Thunk to build your Rust program to support old Windows platforms