1 poin oleh GN⁺ 2024-09-27 | 1 komentar | Bagikan ke WhatsApp

Menulis Ulang Rust

  • Bahasa pemrograman Rust terasa seperti produk generasi pertama
  • Daya tarik awal Rust: tipe aljabar, keamanan memori, tanpa penurunan performa, manajer paket modern
  • Setelah digunakan selama 4 tahun, Rust tidak selalu sempurna
  • Perkembangan bahasanya melambat secara signifikan
  • Banyak fitur tidak stabil yang tidak masuk ke Rust stabil

Bahasa yang fantastis

  • Ingin melakukan fork pada compiler Rust dan membuat edisi baru bernama "seph"
  • Dapat menambahkan fitur baru sambil mempertahankan fitur Rust yang sudah ada

Trait fungsi (efek)

  • Rust mendefinisikan trait pada struct, tetapi juga perlu mendefinisikan trait pada fungsi
  • Dapat merepresentasikan berbagai karakteristik fungsi
    • apakah fungsi menyebabkan panic
    • apakah memiliki ukuran stack tetap
    • apakah fungsi berjalan sampai selesai atau menunggu di tengah jalan
    • apakah fungsi bersifat murni
    • apakah fungsi menjalankan kode unsafe
    • apakah fungsi dijamin terminasi

Fitur waktu kompilasi

  • Banyak proyek Rust menggunakan banyak crate pihak ketiga
  • Crate-crate ini meningkatkan risiko rantai pasok
  • Mengusulkan fitur yang mewajibkan izin eksplisit untuk memanggil fungsi yang sensitif terhadap keamanan
  • Untuk memanggil fitur seperti fs_write, harus ada izin eksplisit

Pin, Move, dan peminjaman struct

  • Pin adalah hack kompleks untuk mengatasi masalah borrow checker di Rust
  • Menggunakan marker trait Move sebagai pengganti Pin terasa lebih masuk akal
  • Mengusulkan penambahan sintaks untuk menandai field struct sebagai dalam keadaan dipinjam
  • Mengusulkan pengenalan marker trait Move dan trait Mover

Waktu kompilasi

  • Mengadopsi fitur comptime dari Zig untuk menggantikan bahasa macro Rust
  • Menambahkan interpreter kecil yang dapat menjalankan kode pada waktu kompilasi
  • Menggunakan Rust itu sendiri alih-alih bahasa macro Rust

Perbaikan kecil

  • Memperbaiki impl<T: Copy> for Range<T>
  • Memperbaiki derive dengan associated type
  • Mendukung logical AND dalam ekspresi if-let
  • Meningkatkan kegunaan raw pointer
  • Menambahkan argumen Allocator ke semua tipe koleksi bawaan

Pemikiran penutup

  • Fitur async juga perlu diperbaiki, tetapi memerlukan posting terpisah
  • Sebagian besar perubahan tidak kompatibel dengan Rust yang ada saat ini
  • Mungkin diperlukan edisi Rust yang baru
  • Sedang mempertimbangkan untuk langsung melakukan fork pada compiler tanpa lelah dengan proses RFC di GitHub

Ringkasan GN⁺

  • Rust tidak sempurna meskipun memiliki daya tarik awal yang kuat
  • Perkembangan bahasa melambat dan banyak fitur tidak stabil tidak masuk ke Rust stabil
  • Ada berbagai usulan seperti trait fungsi, fitur waktu kompilasi, serta perbaikan Pin dan Move
  • Usulan-usulan ini dapat sangat meningkatkan kegunaan Rust
  • Bahasa lain dengan fitur serupa adalah Zig

1 komentar

 
GN⁺ 2024-09-27
Komentar Hacker News
  • Pendapat tentang proses Rust RFC

    • Keputusan tim inti Rust untuk mempersulit penambahan fitur baru adalah keputusan yang tepat demi menjaga konsistensi dan prediktabilitas bahasa
    • Dalam kasus Swift, masuknya banyak fitur baru membuatnya menjadi rumit, dan pada akhirnya membuat orang tersebut meninggalkan Swift
    • Penting untuk menjaga Rust tetap sesederhana mungkin
  • Masalah dependensi Rust

    • Mengambil contoh crate Cargo-watch, meski hanya aplikasi pemantau berkas yang sederhana, karena dependensinya jumlah baris kodenya mencapai 4 juta
  • Status Rust saat ini

    • Rust kini berada pada tahap "bekerja untuk adopsi yang luas"
    • Pengembangan fitur yang lambat adalah hal yang alami dan sehat, dan pilihan desain yang salah dapat menimbulkan kerugian yang lebih besar
    • Daya tarik Rust bukan pada fitur baru, melainkan pada keamanan memori dan fakta bahwa ini adalah bahasa yang siap produksi tanpa GC
  • Pendapat tentang penulisan ulang Rust

    • Menulis ulang Rust dengan Rust terlihat seperti lelucon meta-satir
  • Keluhan tentang proses pengambilan keputusan Rust

    • Ada keluhan tentang lambatnya proses pengambilan keputusan, tetapi ini lebih merupakan masalah manusia dan waktu daripada masalah teknis
    • Beberapa fitur lama memang mandek, tetapi banyak fitur memang tidak direncanakan untuk distabilkan
  • Komentar Josh Triplett

    • Ia menunjukkan bahwa contoh tertentu keliru dan membagikan tautan terkait
  • Pendapat tentang kompleksitas Rust

    • Rust sudah memiliki banyak fitur, tetapi masih ada orang yang meminta lebih banyak fitur
    • Zig lebih sederhana, lebih cepat, dan dramanya di komunitas lebih sedikit
  • Pendapat tentang kecepatan Rust

    • Seiring proyek menjadi matang, dibutuhkan banyak upaya untuk memoles fitur yang sudah ada
    • Kolaborasi antar tim menjadi lebih sulit, dan ada tujuan proyek untuk memperbaikinya
  • Pendapat tentang peningkatan Mutex

    • Sudah ada banyak upaya untuk meningkatkan primitive sinkronisasi Rust
    • Fitur seperti fungsi asinkron telah ditambahkan, dan ini menjadi dasar untuk mengimplementasikan fitur yang lebih kompleks
  • Pendapat tentang kecepatan pengembangan fitur Rust

    • Ada orang yang mengeluh bahwa bahasa ini berkembang terlalu cepat atau terlalu lambat
    • Beberapa fitur memang berjalan lambat, tetapi banyak aktivitas sedang berlangsung
  • Pendapat tentang desain fitur Rust

    • Fitur seperti function traits baru-baru ini mengalami eksplorasi desain yang besar
    • Fitur compile-time tidak bisa diselesaikan di level bahasa, dan solusi seperti WebAssembly lebih mungkin dilakukan
  • Masalah borrow checker Rust

    • Memahami struktur self-referential adalah masalah yang sangat sulit
    • Cara untuk mendukung partial borrowing sebenarnya sudah diketahui, tetapi masalahnya adalah bagaimana mengeksposnya ke sistem tipe
  • Fitur compile-time Rust

    • RFC telah ditulis untuk membuat aturan macro menjadi lebih kuat
    • Masih diperlukan lebih banyak pekerjaan untuk parsing terprogram
  • Fitur tidak stabil Rust

    • Ada banyak fitur tidak stabil, dan perlu dilakukan perapihan
  • Pendapat tentang kecepatan perkembangan Rust

    • Kepergian Mozilla membuat proyek melambat, tetapi itu tetap lebih baik daripada berjalan ke arah yang salah