Lompat ke isi

Rust (bahasa pemrograman)

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Rust
ParadigmaBahasa pemrograman berparadigma jamak, Terkompilasi, Konkuren, Fungsional, Imperatif, Terstruktur, dan Generik
Dirancang olehGraydon Hoare
PengembangRust Project Developers
Pertama kali muncul2010; 15 tahun lalu (2010)
Rilis stabil
1.86.0[1] Sunting di Wikidata / April 3, 2025 (April 3, 2025)
Tata tertib penjenisanStatis, Kuat, Terinferensi, Nominal, dan Linear.
Bahasa pelaksanaanOCaml (2006–2011)
Rust (2012–sekarang)
AnjunganLintas platform[2][note 1]
SOLinux, macOS, Windows, FreeBSD, Android, iOS (sebagian)[3]
LisensiApache 2.0 dan MIT[4]
Perpanjangan nama berkas.rs, .rlib
Situs webwww.rust-lang.org
Dipengaruhi oleh
Alef,[5] C#,[5] C++,[5] Cyclone,[5][6] Erlang,[5] Haskell,[5] Hermes,[5] Limbo,[5] Newsqueak,[5] NIL,[5] OCaml,[5] Ruby,[5] Scheme,[5] Standard ML,[5] Swift[5][7]
Memengaruhi

Rust adalah sebuah bahasa pemrograman sistem[12] yang pengembangannya didukung oleh penelitian dari Mozilla.[13] Bahasa ini dirancang agar menjadi pemrograman yang "aman, konkuren (bekerja bersamaan) dan praktis".[14] Bahasa ini mendukung paradigma pemrograman fungsional dan prosedural-imperatif. Sintaksis bahasa Rust serupa dengan bahasa C++ namun dirancang dengan keamanan memori yang lebih baik sembari tetap menjaga performa kerja.

Bahasa Rust ini tergolong pada peranti lunak sumber terbuka. Desainnya merupakan perbaikan bedasarkan pengalaman-pengalaman yang dialami ketika mengembangkan Servo, sebuah perangkat layout untuk peramban web dan kompilator Rust.[15]

Kebanyakan commit kode program yang masuk pada proyek Rust saat ini berasal dari kontribusi anggota komunitas.[16] Bahasa Rust mendapatkan posisi pertama dengan predikat sebagai "Bahasa pemrograman paling disukai" pada survei pengembang di Stack Oveflow tahun 2016 dan 2017.[17][18]

Tahun-tahun awal (2006–2009)

[sunting | sunting sumber]
Markas Yayasan Mozilla di Mountain View, California

Rust dimulai sebagai projek sendiri pada tahun 2006 oleh karyawan Mozilla Graydon Hoare.[19] Hoare menyatakan bahwa Rust dinamai berdasarkan kelompok jamur yang "direkayasa secara berlebihan untuk bertahan hidup".[19] Selama periode waktu antara tahun 2006 dan 2009, Rust tidak dipublikasikan kepada yang lain dan ditulis dalam waktu luang Hoare's;[20](7:50) Hoare mulai berbicara tentang bahasa tersebut sekitar tahun 2009 setelah sekelompok kecil di Mozilla tertarik dengan proyek tersebut.[21] Hoare menekankan prioritas ide-ide bagus dari bahasa lama dibandingkan pengembangan baru, mengutip bahasa-bahasa seperti CLU (1974), BETA (1975), Mesa (1977), NIL (1981), Erlang (1987), Newsqueak (1988), Napier (1988), Hermes (1990), Sather (1990), Alef (1992), dan Limbo (1996) sebagai pengaruh, menyatakan "banyak bahasa lama [lebih baik] daripada bahasa baru", dan menyebutkan bahasa tersebut sebagai "teknologi dari masa lalu datang untuk menyelamatkan masa depan dari dirinya sendiri."[20](8:17)[21] Pengembang Rust awal Manish Goregaokar juga menggambarkan Rust sebagai sesuatu yang didasarkan pada "penelitian yang sebagian besar sudah berusia puluhan tahun."[19]

Selama tahun-tahun awal, kompiler Rust ditulis dalam sekitar 38.000 baris OCaml.[22](15:34)[23] Rust awal berisi fitur-fitur seperti pemrograman berorientasi objek eksplisit melalui kata kunci obj (kemudian dihapus),[22](10:08) dan sistem typestates yang akan memungkinkan variabel suatu tipe dilacak bersamaan dengan perubahan status (seperti berjalan dari belum diinisialisasi menjad terinisialisasi).[22](13:12)

Pada awal peluncurannya, Rust menghadapi beberapa kritik, yang merupakan hal yang umum dalam dunia pemrograman. Kritik tersebut terutama berfokus pada kompleksitas bahasa ini, kurva pembelajaran yang curam, verbosity (adanya banyak kode boilerplate), dan kurangnya kematangan serta ekosistem yang masih terbatas.

Sejak saat itu, Rust telah mengalami banyak perbaikan signifikan. Komunitas pengguna dan pengembang Rust telah berkembang pesat, dan banyak kritik awal mengenai bahasa ini telah diatasi. Rust kini dikenal sebagai bahasa pemrograman yang lebih matang dan memiliki ekosistem yang lebih luas.[24]

Yayasan Rust dan pemberhentian kerja Mozilla (2020–sekarang)

[sunting | sunting sumber]

Pada Agustus tahun 2020, Mozilla memberhentikan 250 dari 1.000 karyawannya di seluruh dunia, sebagai bagian dari restrukturisasi perusahaan yang disebabkan oleh pandemi COVID-19.[25][26] Tim di balik Servo dibubarkan. Peristiwa ini menimbulkan kekhawatiran tentang masa depan Rust, dikarenakan tumpang tindih antara dua proyek tersebut.[27] Pada minggu berikutnya, Rust Core Team mengakui dampak parah dari pemberhentian karyaawan dan mengumumkan bahwa rencana untuk yayasan Rust sedang berlangsung. Tujuan pertama yayasan ini adalah mengambil alih kepemilikan semua merek dagang dan nama domain, dan mengambil hak tanggung jawab keuangan untuk pengeluaran mereka.[28]

Pada tanggal 26 Februari 2024, Gedung Putih AS merilis laporan pers 19 halaman yang mendesak pengembangan perangkat lunak untuk beralih ke bahasa pemrograman yang aman terhadap memori; khususnya, menjauh dari C dan C++ dan mendorong bahasa seperti C#, Go, Java, Ruby, Swift, dan Rust.[29][30] Laporan ini secara luas ditafsirkan sebagai meningkatnya minat terhadap Rust.[31][32] Laporan tersebut dirilis melalui Kantor Direktur Siber Nasional.[29][33]

Sintaks dan fitur

[sunting | sunting sumber]

Sintaks Rust mirip dengan C dan C++,[34][35] meskipun banyak fiturnya dipengaruhi oleh bahasa pemrograman fungsional seperti OCaml.[36] Hoare telah menyebut Rust sebagai target dari pengembang C++ yang frustasi dan menekankan fitur-fitur seperti keamanan, kontrol tata letak memori, dan konkurensi.[37] Keamanan dalam Rust mencakup jaminan keamanan memori, keamanan tipe, dan tidak adanya perlombaan data.

Hello World

[sunting | sunting sumber]

Berikut ini adalah contoh baris kode sederhana untuk menampilkan Hello World

fn main() {
    println!("Hello World");
}

Fungsi Faktorial

[sunting | sunting sumber]
fn factorial(i: u64) -> u64 {
    match i {
        0 => 1,
        n => n * factorial(n-1)
    }
}
fn factorial(i: u64) -> u64 {
    let mut acc = 1;
    for num in 2..=i {
        acc *= num;
    }
    acc
}

Pengetikan

[sunting | sunting sumber]

Rust diketik dengan kuat dan diketik secara statis, yang berati tipe dari semua variabel harus dikenal saat waktu kompilasi. Menetapkan nilai tipe tertentu ke variabel dengan tipe berbeda menyebabkan kesalahan kompilasi. Inferensi tipe digunakan untuk menentukan tipe variabel jika tidak ditentukan.[38]

Tipe integer default i32, dan tipe titik float default adalah f64 . Jika tipenya adalah sebuah angka literal tidak diberikan secara eksplisit, itu disimpulkan dari konteks atau tipe default digunakan.[39]

Tipe primitif

[sunting | sunting sumber]

Tipe integer dalam Rust dinamakan berdasarkan pada penanda dan jumlah bit yang diambil oleh tipe tersebut. Sebagai contoh, i32 adalah sebuah integer ditandai yang mengambil 32 bit penyimpanan, sedangkan u8 tidak ditandai dan hanya mengambil 8 bit penyimpanan. isize dan usize mengambil penyimpanan tergantung arsitektur dari komputer yang menjalankan kode tersebut, misalnya, pada komputer dengan arsitektur 32-bit, kedua jenis tersebut akan memakan ruang sebesar 32 bit.

Tipe Boolean disebut sebagai bool yang dapat mengambil sebuah nilai antara true or false. Sebuah char mengambil hingga 32 bit ruang dan merepresentasikan sebuah nilai skalar Unicode: titik kode Unicode yang bukan pengganti.[40] Angka poin float IEEE 754 didukung dengan bool untuk float presisi tunggal dan f64 untuk float presisi ganda.[41]

Lihat pula

[sunting | sunting sumber]
  1. ^ Termasuk Windows, Linux, macOS, FreeBSD, NetBSD, dan Illumos. Alat pembuatan host aktif pada Android, iOS, Haiku, Redox, dan Fuchsia tidak dikirim secara resmi; sistem operasi ini didukung sebagai target.[2]
  1. ^ "Announcing Rust 1.86.0" (dalam bahasa bahasa Inggris). 3 April 2025. Diakses tanggal 4 April 2025. 
  2. ^ a b Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama CrossPlatform
  3. ^ "Rust on iOS". GitHub. 2015-01-09. Diarsipkan dari versi asli tanggal 2014-07-23. Diakses tanggal 2017-06-22. 
  4. ^ "Copyright". Rust compiler source repository. Diakses tanggal 2015-11-09. 
  5. ^ a b c d e f g h i j k l m n o "The Rust Reference: Appendix: Influences". Diakses tanggal July 14, 2017. Rust is not a particularly original language, with design elements coming from a wide range of sources. Some of these are listed below (including elements that have since been removed): SML, OCaml [...] C++ [...] ML Kit, Cyclone [...] Haskell [...] Newsqueak, Alef, Limbo [...] Erlang [...] Swift [...] Scheme [...] C# [...] Ruby [...] NIL, Hermes 
  6. ^ "Note Research: Type System". 2015-02-01. Diakses tanggal 2015-03-25. Papers that have had more or less influence on Rust, or which one might want to consult for inspiration or to understand Rust's background. [...] Region based memory management in Cyclone [...] Safe memory management in Cyclone 
  7. ^ "RFC for 'if let' expression". Diakses tanggal December 4, 2014. 
  8. ^ "Uniqueness Types". Idris 1.3.3 documentation. Diakses tanggal 2022-07-14. They are inspired by ... ownership types and borrowed pointers in the Rust programming language. 
  9. ^ Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama Jaloyan
  10. ^ Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama Lattner
  11. ^ Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama Project Verona
  12. ^ "Rust is a systems programming language". Rust-lang.org. Diakses tanggal 2017-07-17. 
  13. ^ Noel (2010-07-08). "The Rust Language". Lambda the Ultimate. Diakses tanggal 2010-10-30. 
  14. ^ "FAQ - The Rust Project". Rust-lang.org. Diarsipkan dari versi asli tanggal 2016-02-23. Diakses tanggal 2 March 2016. 
  15. ^ Peter Bright (2013-04-03). "Samsung teams up with Mozilla to build browser engine for multicore machines". Arstechnica.com. Diakses tanggal 2013-04-04. 
  16. ^ "Contributors to rust-lang/rust · GitHub". Github.com. Diakses tanggal 2016-11-03. 
  17. ^ "Stack Overflow Developer Survey 2016 Results". Stack Overflow. Diakses tanggal 2017-03-22. 
  18. ^ "Stack Overflow Developer Survey 2017". Stack Overflow. Diakses tanggal 2017-03-22. 
  19. ^ a b c Thompson, Clive (2023-02-14). "How Rust went from a side project to the world's most-loved programming language". MIT Technology Review (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 2024-09-19. Diakses tanggal 2023-02-23. 
  20. ^ a b Klabnik, Steve (2016-06-02). "The History of Rust". Applicative 2016. New York, NY, USA: Association for Computing Machinery. hlm. 80. doi:10.1145/2959689.2960081. ISBN 978-1-4503-4464-7. 
  21. ^ a b Hoare, Graydon (July 2010). Project Servo: Technology from the past come to save the future from itself (PDF). Mozilla Annual Summit. Diarsipkan dari versi asli (PDF) tanggal 2021-12-26. Diakses tanggal 2024-10-29. 
  22. ^ a b c Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama Klabnik2016ACMHistory2
  23. ^ Hoare, Graydon (November 2016). "Rust Prehistory (Archive of the original Rust OCaml compiler source code)". GitHub. Diakses tanggal 2024-10-29. 
  24. ^ "Data With Rust". Data With Rust (dalam bahasa Inggris). 2023-01-21. Diakses tanggal 2024-05-21. 
  25. ^ Cimpanu, Catalin (2020-08-11). "Mozilla lays off 250 employees while it refocuses on commercial products". ZDNET. Diarsipkan dari versi asli tanggal March 18, 2022. Diakses tanggal 2020-12-02. 
  26. ^ Cooper, Daniel (2020-08-11). "Mozilla lays off 250 employees due to the pandemic". Engadget. Diarsipkan dari versi asli tanggal 2020-12-13. Diakses tanggal 2020-12-02. 
  27. ^ Tung, Liam (2020-08-21). "Programming language Rust: Mozilla job cuts have hit us badly but here's how we'll survive". ZDNET (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal April 21, 2022. Diakses tanggal 2022-04-21. 
  28. ^ "Laying the foundation for Rust's future". Rust Blog. 2020-08-18. Diarsipkan dari versi asli tanggal 2020-12-02. Diakses tanggal 2020-12-02. 
  29. ^ a b Gross, Grant (2024-02-27). "White House urges developers to dump C and C++". InfoWorld (dalam bahasa Inggris). Diakses tanggal 2025-01-26. 
  30. ^ Warminsky, Joe (2024-02-27). "After decades of memory-related software bugs, White House calls on industry to act". The Record (dalam bahasa Inggris). Diakses tanggal 2025-01-26. 
  31. ^ Jack, Bobby (2024-02-29). "The White House Wants Memory-Safe Programming, but What Is That?". MakeUseOf (dalam bahasa Inggris). Diakses tanggal 2025-01-26. 
  32. ^ Donovan, Ryan (2024-12-30). "In Rust we trust? White House Office urges memory safety". The Stack Overflow Blog (dalam bahasa Inggris). Diakses tanggal 2025-01-26. 
  33. ^ "Press Release: Future Software Should Be Memory Safe". The White House. 2024-02-26. Diarsipkan dari versi asli tanggal 2025-01-18. Diakses tanggal 2025-01-26. 
  34. ^ Proven, Liam (2019-11-27). "Rebecca Rumbul named new CEO of The Rust Foundation". The Register (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 2022-07-14. Diakses tanggal 2022-07-14. Both are curly bracket languages, with C-like syntax that makes them unintimidating for C programmers. 
  35. ^ Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama :4
  36. ^ Klabnik & Nichols 2019, hlm. 263.
  37. ^ Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama Hoare20102
  38. ^ Klabnik & Nichols 2019, hlm. 24.
  39. ^ Klabnik & Nichols 2019, hlm. 36–38.
  40. ^ "Glossary of Unicode Terms". Unicode Consortium. Diarsipkan dari versi asli tanggal 2018-09-24. Diakses tanggal 2024-07-30. 
  41. ^ Klabnik & Nichols 2019, hlm. 38–40.

Pranala luar

[sunting | sunting sumber]