kache ไม่เสถียร: แคชการสร้างแบบไม่มีการคัดลอกเพื่อการคอมไพล์แบบเพิ่มขึ้นที่รวดเร็วขึ้น
kache Unstable คืนค่าผลลัพธ์ของคอมไพเลอร์ที่ตรงกันโดยใช้การแคชที่มีที่อยู่ตามเนื้อหาและไม่มีการคัดลอกเพื่อลดการสร้างที่ซ้ำซ้อนใน worktrees ลดรอบการคอมไพล์สำหรับการพัฒนาท้องถิ่นและ CI สร้างโดย Zondax AG เป็นส่วนหนึ่งของชุด Kunobi การปล่อยนี้มุ่งเป้าไปที่วิศวกรซอฟต์แวร์และทีม DevOps รองรับ Rust, C/C++ และ CUDA มีแบ็กเอนด์ท้องถิ่นและที่เข้ากันได้กับ S3/GCS และเปิดเผยอินเทอร์เฟซบรรทัดคำสั่งสำหรับการตรวจสอบแคชและการรวม RUSTC_WRAPPER。
วิธีที่ kache ตรวจจับและนำผลลัพธ์การสร้างก่อนหน้าไปใช้ใหม่
kache ทำงานเป็นชั้นเก็บข้อมูลที่มีการอ้างอิงเนื้อหาและห่อหุ้มคอมไพเลอร์ โดยบันทึกผลลัพธ์ที่มีคีย์เป็นเนื้อหาข้อมูลนำเข้าและข้อมูลเมตาของคอมไพเลอร์ เมื่อแหล่งที่มาและการพึ่งพาเข้ากับรายการที่เก็บไว้ในแคช เครื่องมือจะกู้คืนอาร์ติแฟกต์แทนที่จะเรียกใช้คอมไพเลอร์ สิ่งนี้ใช้กับ Rust ผ่าน RUSTC_WRAPPER และกับ C/C++ และ CUDA toolchains และรวมเข้ากับ Cargo, CMake, และ Make เพื่อดักจับขั้นตอนการสร้าง
ผลกระทบต่อระบบที่คาดหวังในระหว่างการกู้คืนและการสแกน
การกู้คืนใช้กลยุทธ์ reflink-first บนระบบไฟล์ที่เข้ากันได้เพื่อหลีกเลี่ยงการคัดลอกข้อมูล ซึ่งช่วยลดการอ่านเขียนดิสก์เมื่อเปรียบเทียบกับการเขียนไฟล์ทั้งหมด แคชในเครื่องรวมถึงการเก็บขยะอัตโนมัติเพื่อคืนพื้นที่ และแบ็กเอนด์ระยะไกลช่วยลดการเก็บข้อมูลไปยัง S3/GCS-compatible endpoints การออกแบบนี้ทำให้การใช้เวลารันไทม์มุ่งเน้นไปที่การค้นหาข้อมูลเมตาแทนการใช้ CPU ในการคอมไพล์ซ้ำ
ความปลอดภัย การแชร์ระยะไกล และการรวม CI
kache รองรับการเก็บข้อมูลระยะไกลและทำงานกับสภาพแวดล้อม CI/CD เช่น GitHub Actions เพื่อแชร์อาร์ติแฟกต์ระหว่างรันเนอร์ และเปิดเผยส่วนติดต่อกับบรรทัดคำสั่งสำหรับการติดตามการเข้าถึงแคชและการพลาด แชนเนล Unstable ส่งมอบการปรับแต่งล่วงหน้าและผู้สมัครการปล่อย ดังนั้นทีมควรถือว่าการสร้างจากช่องนี้เป็นการทดลองเมื่อใช้ในสายการผลิต
ใครสามารถใช้งานเครื่องมือและต้องการความเชี่ยวชาญอะไร
เครื่องมือมุ่งเป้าไปที่วิศวกรที่มีความสะดวกสบายกับเครื่องมือบรรทัดคำสั่งและการเชื่อมต่อระบบการสร้าง การเริ่มต้นและการติดตามเกิดขึ้นผ่าน CLI และการตั้งค่าต้องการการกำหนดค่าห่อหุ้มคอมไพเลอร์และแบ็กเอนด์ระยะไกลที่เลือกได้ หมายเหตุการตรวจสอบเดียวกันระบุว่า kache มักถูกเลือกแทน sccache สำหรับโครงการที่เน้น Rust ซึ่งแสดงให้เห็นถึงกลุ่มนักพัฒนาที่คุ้นเคยกับความซับซ้อนของการคอมไพล์แบบเพิ่มขึ้น
การตัดสินใจที่เป็นประโยชน์สำหรับทีมพัฒนา
kache เหมาะสำหรับวิศวกรและผู้เชี่ยวชาญ DevOps ที่ต้องการการสร้างแบบเพิ่มขึ้นที่รวดเร็วกว่าและสามารถจัดการการกำหนดค่าผู้ห่อคอมไพเลอร์ ช่อง Unstable ให้การเข้าถึงการปรับแต่งเชิงทดลอง ดังนั้นจึงควรใช้สำหรับการพัฒนาและการทดลอง CI แทนการสร้างการปล่อยที่สำคัญ แนะนำ.