Pasta adalah perpustakaan C ++ yang mengabstraksi toolchain compiler dentang, dan menyediakan akses terperinci ke artefak kompilasi menggunakan API yang mencerminkan yang tersedia dalam dentang. Pasta mencoba mencapai tujuan berikut:
Berikan satu set awal API yang relatif stabil dan tidak mengharuskan seseorang untuk benar -benar bergantung langsung pada header/perpustakaan dentang, sehingga memungkinkan model distribusi yang jauh lebih mudah.
Kelola memori dengan benar untuk semua objek yang disediakan melalui API. Orang tidak perlu khawatir tentang masa hidup objek saat menggunakan pasta.
Memberikan informasi/akses tambahan. API Dentang asli tidak memberikan informasi token terperinci dalam bentuk apa pun. Seseorang tidak dapat meminta token yang terkait dengan node AST, misalnya. Pasta mencoba menyelesaikan ini, di antara masalah serupa lainnya.
Pertama, perbarui bakat dan dapatkan instal dependensi baseline seperti itu misalnya git , cmake , ninja dan kompiler pilihan Anda (ingat perlu mendukung C ++ 20). Berguna untuk menggunakan kompiler yang sama di setiap subset untuk menghindari beberapa masalah mangling. Jika Anda menggunakan macOS maka kami sarankan untuk memasang homebrew, dan memastikan bahwa Anda telah menginstal Python 3.9, bersama dengan cmake dan ninja terkini.
Dan akhirnya membangun pasta itu sendiri.
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 Pada macOS, Anda mungkin perlu menentukan secara manual kompiler dentang. Namun, Anda tidak dapat menentukan clang atau clang++ , karena VCPKG akan mencoba mengambil alih dan menghasilkan hasil yang tidak biasa. Karena itu, Anda harus memberikan jalan absolut ke dentang Anda.
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 installPasta dilisensikan sesuai dengan lisensi Apache 2.0. Sebagian besar pasta semi-otomatis dari API dentang. Dentang juga dilisensikan di bawah Apache 2.0, dengan pengecualian LLVM.
Penelitian ini dikembangkan dengan dana dari Badan Proyek Penelitian Lanjutan Pertahanan (DARPA). Pandangan, pendapat, dan/atau temuan yang diungkapkan adalah pandangan penulis dan tidak boleh ditafsirkan sebagai mewakili pandangan resmi atau kebijakan Departemen Pertahanan atau pemerintah AS.
Pernyataan Distribusi A - Disetujui untuk Rilis Publik, Distribusi Tidak Terbatas