3 poin oleh GN⁺ 2024-07-31 | 1 komentar | Bagikan ke WhatsApp
  • Menerjemahkan C ke Rust (TRACTOR)

    • Dr. Dan Wallach
    • Setelah lebih dari 20 tahun upaya untuk menyelesaikan masalah keamanan memori pada C dan C++, komunitas rekayasa perangkat lunak telah sampai pada sebuah kesimpulan
    • Hanya mengandalkan alat pencari bug saja tidaklah cukup
    • Menggunakan bahasa pemrograman yang "aman" dan dapat menolak program yang tidak aman pada saat kompilasi lebih disukai
    • Program TRACTOR bertujuan untuk secara otomatis menerjemahkan kode C yang sudah ada ke Rust
    • Tujuannya adalah mencapai kualitas dan gaya yang sama seperti yang ditulis oleh pengembang Rust berpengalaman, sehingga menghilangkan kerentanan keamanan terkait keamanan memori yang muncul pada program C
    • Program ini dapat mencakup kombinasi baru dari analisis statis, analisis dinamis, dan teknik pembelajaran mesin seperti model bahasa besar
    • Informasi tambahan tersedia di Special Notice TRACTOR di SAM.Gov
  • Pencapaian utama DARPA

    • Revolusi stealth

      • Pada awal penelitian teknologi stealth DARPA, Have Blue, prototipe F-117A, berhasil melakukan penerbangan pertamanya pada tahun 1977
      • Keberhasilan program F-117A menandai dimulainya revolusi stealth, yang membawa manfaat besar bagi keamanan nasional
    • Navigasi di telapak tangan

      • Penerima GPS awal adalah perangkat yang besar dan berat
      • Pada tahun 1983, DARPA berupaya mengecilkannya dan mendorong adopsi fungsi GPS yang jauh lebih luas
    • Membuka jalan bagi internet modern

      • Riset ARPA memainkan peran penting dalam memulai revolusi informasi
      • Mengembangkan fondasi konseptual ARPANET dan menciptakan protokol digital yang mengarah pada lahirnya internet
  • Ringkasan GN⁺

    • Program TRACTOR adalah upaya penting untuk menyelesaikan masalah keamanan memori dengan secara otomatis menerjemahkan kode C yang ada ke Rust
    • Riset DARPA sangat berkontribusi pada perkembangan teknologi modern seperti teknologi stealth, miniaturisasi GPS, dan lahirnya internet
    • Artikel ini dapat bermanfaat bagi insinyur perangkat lunak dan mereka yang tertarik pada sejarah teknologi
    • Proyek dengan fungsi serupa antara lain Checked C dari Microsoft dan bahasa Carbon dari Google

1 komentar

 
GN⁺ 2024-07-31
Komentar Hacker News
  • Rust yang ditulis oleh programmer berpengalaman sangat berbeda dari C, dan sebagian besar kode yang menarik ditulis dalam C++

    • Menentukan secara statis masa hidup semua alokasi dalam program C adalah masalah yang sangat sulit
    • Program C/C++ dapat mengaitkan masa hidup alokasi dengan peristiwa seperti klik pengguna
    • Jika program yang ingin dianalisis memiliki bug, masa hidup mungkin tidak bermakna
    • Penelitian yang ada mengasumsikan bahwa kode yang dianalisis benar
  • Menarik bahwa proposal ini dipublikasikan

    • Berusaha mengelola ekspektasi tentang kelayakan penerjemahan otomatis
    • Kode sumber C memiliki lebih sedikit informasi dibandingkan kode sumber Rust
    • Mustahil menghasilkan informasi yang hilang
    • Untuk menyimpulkannya dengan benar diperlukan penilaian, dan ini bisa menimbulkan kesalahan
    • Proyek ini mungkin bisa berhasil sampai tingkat tertentu, tetapi harus didekati dengan hati-hati
    • Semoga proyek pemerintah ini tidak ditafsirkan sebagai kecaman menyeluruh terhadap C atau pujian menyeluruh terhadap Rust
  • Tidak menyukai pola pikir "mari tulis ulang dunia dalam Rust"

    • Jika ingin mem-porting proyek ke bahasa atau platform baru, penerjemahan mekanis bukanlah pilihan yang baik
    • Perlu meluangkan waktu untuk merencanakan arsitektur yang lebih baik dan merancang sistem perangkat lunak
    • Jika memutuskan menggunakan Rust, maka sebaiknya menulisnya dalam Rust
    • Lebih baik memperbarui C menjadi C modern dan menggunakan model checker untuk memverifikasi keamanan memori, resource, dan aritmetika integer
  • Banyak orang membaca proyek ini sebagai tuntutan untuk menerjemahkan kode C dan C++ ke Rust

    • C dan C++ pada dasarnya tidak aman
    • Sebisa mungkin, sebanyak mungkin kode harus diterjemahkan atau ditulis dalam bahasa yang aman
    • Mendukung perangkat lunak yang menerjemahkan kode C lama ke Rust
    • Tujuannya bukan konsensus untuk menulis ulang dunia dalam Rust, melainkan migrasi ke bahasa yang aman
  • Ada masalah dalam memelihara codebase yang telah diterjemahkan

    • Diperlukan codebase yang ditulis dalam C serta tim engineer C yang dapat memeliharanya
    • Codebase Rust hasil terjemahan otomatis bisa lebih sulit dibaca dan dipahami daripada aslinya
    • Diperlukan tim engineer Rust
    • Jika engineer Rust sudah ada, lebih baik menulis ulang kodenya secara manual
  • Program yang melakukan porting otomatis harus mencakup semua kemampuan yang dapat membuat kode C menjadi aman

    • Jika Rust tidak memiliki bug memori dan dapat menerjemahkan C secara otomatis, maka semua bug memori seharusnya bisa diperbaiki secara otomatis
    • Hal ini pada umumnya tidak mungkin
  • Lebih baik mempekerjakan terlebih dahulu engineer andal yang diberhentikan dari Mozilla agar mereka bisa terus mengerjakan bahasanya sendiri

    • Pemrosesan asinkron masih belum benar-benar selesai
    • Ada berbagai macam masalah
  • Bagus jika DARPA mendorong masalah ini

    • Menerjemahkannya menjadi Rust yang aman sangatlah sulit
    • Saat ini sudah ada alat untuk menerjemahkan dari C ke Rust, tetapi hasilnya sulit dipelihara
    • Agar dilakukan dengan benar, masalah ukuran array dan penggunaan pointer nonlinier harus diselesaikan terlebih dahulu