พาสต้าเป็นไลบรารี C ++ ที่เป็นนามธรรมของ Clang Compiler Toolchain และให้การเข้าถึงอย่างละเอียดในการรวบรวมสิ่งประดิษฐ์โดยใช้ APIs ที่สะท้อนสิ่งที่มีอยู่ใน Clang พาสต้าพยายามบรรลุเป้าหมายต่อไปนี้:
จัดเตรียมชุด APIs พื้นฐานที่ค่อนข้างเสถียรและไม่ต้องการให้ใครบางคนต้องพึ่งพาส่วนหัว/ไลบรารีเสียงดังจริงโดยตรงซึ่งทำให้รูปแบบการกระจายที่ง่ายขึ้นอย่างมาก
จัดการหน่วยความจำอย่างถูกต้องสำหรับวัตถุทั้งหมดที่ให้ผ่าน API หนึ่งไม่ควรกังวลเกี่ยวกับอายุการใช้งานของวัตถุเมื่อใช้พาสต้า
ให้ข้อมูลเพิ่มเติม/การเข้าถึง Native Clang APIs ไม่ได้ให้ข้อมูลโทเค็นโดยละเอียดทุกชนิด เราไม่สามารถขอโทเค็นที่เกี่ยวข้องกับโหนด AST ได้เช่น พาสต้าพยายามแก้ไขปัญหานี้ในประเด็นอื่น ๆ ที่คล้ายกัน
ขั้นแรกให้อัปเดตความถนัดและรับการติดตั้งการพึ่งพาพื้นฐานเช่น git , cmake , ninja และคอมไพเลอร์ที่คุณเลือก (โปรดจำไว้ว่าจำเป็นต้องสนับสนุน C ++ 20) มันมีประโยชน์ในการใช้คอมไพเลอร์เดียวกันในชุดย่อยทุกชุดเพื่อหลีกเลี่ยงปัญหาการจัดการชื่อบางอย่าง หากคุณใช้ MacOS เราขอแนะนำให้ติดตั้ง Homebrew และทำให้มั่นใจว่าคุณติดตั้ง Python 3.9 พร้อมกับ cmake และ ninja ที่ทันสมัย
และในที่สุดก็สร้างพาสต้าเอง
git clone https://github.com/trailofbits/pasta.git
mkdir -p pasta-build
cd pasta-build
cmake
-DCMAKE_BUILD_TYPE=Release
-DPASTA_ENABLE_INSTALL=ON
-GNinja
../pasta
ninja install บน MacOS คุณอาจต้องระบุคอมไพเลอร์ Clang ด้วยตนเอง อย่างไรก็ตามคุณไม่สามารถระบุ clang หรือ clang++ ได้เพราะ VCPKG จะพยายามเข้าครอบครองและให้ผลลัพธ์ที่ผิดปกติ ดังนั้นคุณควรให้เส้นทางที่แน่นอนกับเสียงดังของคุณ
git clone https://github.com/trailofbits/pasta.git
mkdir -p pasta-build
cd pasta-build
cmake
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER= ` which clang `
-DCMAKE_CXX_COMPILER= ` which clang++ `
-DPASTA_ENABLE_INSTALL=ON
-GNinja
../pasta
ninja installพาสต้าได้รับใบอนุญาตตามใบอนุญาต Apache 2.0 ส่วนใหญ่ของพาสต้ากึ่งอัตโนมัติจากเสียงดังก้อง Clang ยังได้รับอนุญาตภายใต้ Apache 2.0 โดยมีข้อยกเว้น LLVM
การวิจัยนี้ได้รับการพัฒนาด้วยเงินทุนจากหน่วยงานโครงการวิจัยขั้นสูง (DARPA) มุมมองความคิดเห็นและ/หรือการค้นพบที่แสดงเป็นของผู้เขียนและไม่ควรตีความว่าเป็นตัวแทนของมุมมองหรือนโยบายอย่างเป็นทางการของกระทรวงกลาโหมหรือรัฐบาลสหรัฐฯ
คำชี้แจงการกระจาย A - ได้รับการอนุมัติสำหรับการเปิดตัวสาธารณะ Distribution Unlimited