Penulisan ulang Bun dengan Rust adalah pencapaian yang mengesankan

MMaximilian Schwarzmüller
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00BUN telah dipindahkan dari SIG ke Rust.
00:00:02Anda mungkin sudah mendengar tentang hal itu,
00:00:04tapi ada banyak hal yang perlu dibahas di sini.
00:00:06Ada banyak drama minggu lalu,
00:00:08tapi ada banyak hal menarik yang sedang terjadi.
00:00:10Dan tidak peduli apakah Anda tertarik pada BUN, SIG, atau Rust,
00:00:14ini sungguh menarik.
00:00:15Juga mengenai bagaimana AI dimanfaatkan
00:00:18dan apa artinya itu bagi proyek-proyek serupa
00:00:20di industri kita secara umum.
00:00:22Sekarang, sebagai catatan kecil,
00:00:24saya pribadi cukup menyukai BUN.
00:00:26Ini adalah runtime JavaScript standar yang saya gunakan
00:00:29di sebagian besar proyek saya.
00:00:30Dan kebetulan yang menyenangkan,
00:00:32saya baru saja menerbitkan kursus baru tentang BUN minggu lalu.
00:00:35Dan tentu saja, ini berfungsi untuk versi Rust
00:00:37seperti halnya untuk versi SIG.
00:00:39Jadi, jika Anda ingin mendalami BUN lebih jauh
00:00:41dan mempelajari semua API inti yang ditawarkannya,
00:00:44karena itu salah satu keunggulan terbesar BUN,
00:00:46yaitu banyaknya fitur bawaan.
00:00:48Beberapa orang tidak menyukainya, saya menyukainya.
00:00:50Jika Anda ingin belajar lebih banyak tentang itu,
00:00:51kursus itu mungkin menarik.
00:00:53Tapi mari kita lihat lebih dekat
00:00:54linimasa pemindahan kode secara keseluruhan, oke?
00:00:58Itu sebenarnya terjadi dua bulan lalu.
00:01:01Jadi postingan blognya dirilis minggu terakhir bulan Juli,
00:01:04tapi pemindahannya sendiri terjadi di bulan Mei.
00:01:08Dan itu dimulai pada awal Mei
00:01:10saat cabang CloudFaserPort ditemukan
00:01:13di repositori GitHub resmi BUN.
00:01:15Cabang itu berisi file MD pemindahan kode,
00:01:18file markdown dengan petunjuk
00:01:21tentang cara mengonversi kode SIG ke kode Rust,
00:01:23cara memindahkan kode itu, tabel terjemahan,
00:01:27dan petunjuk umum.
00:01:28Dan kita akan kembali ke bagaimana file itu dibuat,
00:01:30karena tentu saja AI terlibat,
00:01:32seperti yang mungkin Anda duga, nanti saja.
00:01:34Itu ditemukan.
00:01:36Jadi tentu saja, diskusi terjadi di Hacker News dan di X.
00:01:40Dan ada orang-orang yang bersemangat tentang hal itu.
00:01:43Ada orang-orang yang sangat kritis tentang hal itu.
00:01:46Tapi pada saat itu, kita tidak tahu banyak.
00:01:47Jelas, ada banyak polarisasi seputar Rust.
00:01:52Ada orang-orang yang mencintai Rust, seperti saya sendiri.
00:01:55Ada orang-orang yang membenci Rust.
00:01:57Ada orang-orang yang membenci
00:01:58bahwa segalanya harus ditulis ulang dalam Rust,
00:02:00karena sangat sering Anda membaca
00:02:03bahwa orang ingin program XYZ ditulis ulang dalam Rust.
00:02:06Dan saya mengerti bahwa ini mengganggu.
00:02:08Tapi tentu saja, oleh karena itu,
00:02:09ada banyak polarisasi yang terjadi di sana.
00:02:11Tapi pemindahan kode belum terjadi.
00:02:15Itu berubah kemudian di bulan Mei.
00:02:16Dan pada tanggal 14 Mei, pull request resmi dibuka,
00:02:22dan kemudian juga digabungkan,
00:02:24yang benar-benar memigrasikan basis kode BUN,
00:02:28semuanya, dari SIG ke Rust.
00:02:30Sekarang, seperti yang Anda lihat, ini adalah pull request yang sangat besar.
00:02:32Lebih dari satu juta baris kode ditambahkan.
00:02:35Dan penghapusan kode SIG terjadi
00:02:39pada tahap yang berbeda.
00:02:40Jadi ya, itu sebabnya ini bukan pertukaran.
00:02:42Tapi ini adalah perubahan besar, seperti yang Anda lihat,
00:02:44dengan hampir 7.000 commit.
00:02:46Sekarang, tentu saja, kode itu tidak ditinjau oleh manusia,
00:02:51setidaknya tidak sepenuhnya.
00:02:52Itu ditinjau oleh AI.
00:02:54Itu sudah lulus pengujian, tapi tidak ditinjau oleh manusia.
00:02:59Dan kita akan kembali ke bagaimana AI digunakan sebentar lagi.
00:03:02Tapi itu sudah diterbitkan atau digabungkan.
00:03:06Dan tentu saja, diskusi lebih lanjut terjadi sekarang.
00:03:08Seperti yang baru saja saya sebutkan, itu tidak ditinjau oleh manusia.
00:03:10Tentu saja mustahil untuk melakukannya dalam jangka waktu tersebut.
00:03:14Tapi komunitas mulai melihatnya
00:03:17dan menganalisis bagian-bagiannya.
00:03:19Dan kemudian ada postingan blog lain, atau yang pertama,
00:03:23bukan yang resmi tentang semua detailnya,
00:03:25tapi postingan blog pertama atau pernyataan yang dirilis oleh Buntine
00:03:29tentang penggunaan “unsafe”.
00:03:32Karena satu kritik besar yang muncul setelah pull request ini
00:03:37adalah bahwa kode Rust di sana bukan Rust yang idiomatik.
00:03:41Itu bukan jenis kode Rust yang akan atau harus Anda tulis
00:03:44jika Anda membangunnya dari nol.
00:03:46Sebaliknya, itu benar-benar seperti terjemahan dari SIG ke Rust.
00:03:50Dan itu berarti tidak semua praktik terbaik Rust
00:03:54dan pola yang digunakan.
00:03:55Dan khususnya, ada jumlah yang cukup banyak
00:03:58penggunaan “unsafe” di sana.
00:04:00Sekarang, untuk memahami “unsafe”, Anda harus memahami
00:04:03bagaimana Rust mengelola memori,
00:04:05karena itu adalah salah satu keunggulan terbesarnya,
00:04:08dan itu cukup berbeda dari bahasa lain.
00:04:10Karena di sebagian besar bahasa, Anda memiliki garbage collector,
00:04:14yang merupakan proses yang pada dasarnya mendeteksi
00:04:16ketika suatu nilai tidak lagi digunakan di mana pun dalam program
00:04:19dan kemudian membebaskan memori tersebut, yang praktis,
00:04:21tapi mengonsumsi sumber daya tambahan.
00:04:24Atau Anda harus melakukannya sendiri.
00:04:26Dalam bahasa seperti C, misalnya,
00:04:28Anda harus mengalokasikan dan membebaskan memori secara manual.
00:04:31Dan itu sama di SIG.
00:04:33Anda dapat mengalokasikan memori di sana, tapi Anda juga harus memanggil “free”
00:04:37atau Anda harus membebaskannya saat tidak lagi membutuhkannya.
00:04:40Anda dapat menggunakan “defer”, yang bagus.
00:04:43Itu pada dasarnya berarti Anda dapat memanggilnya
00:04:47sebelum benar-benar dieksekusi.
00:04:49Itu ditangguhkan dan akan dipanggil secara otomatis
00:04:52saat lingkup ini berakhir, pada intinya.
00:04:55Dan itu bagus karena ada situasi berbeda
00:04:58di mana nilai mungkin tidak lagi diperlukan.
00:05:00Tapi tetap saja, saat Anda harus membersihkan memori secara manual,
00:05:04ada banyak situasi
00:05:05di mana Anda bisa merugikan diri sendiri.
00:05:07Anda memiliki kontrol yang lebih rinci
00:05:09dan itu bisa sangat berguna, sangat efisien,
00:05:11tapi juga mudah untuk melupakan situasi
00:05:15dalam program yang lebih kompleks
00:05:16di mana Anda mungkin tidak membersihkan memori,
00:05:19sehingga menimbulkan kebocoran memori,
00:05:20atau di mana Anda mungkin membersihkannya dua kali,
00:05:23yang juga akan menyebabkan kesalahan.
00:05:25Dan oleh karena itu ada pertukaran (trade-off).
00:05:27Dan Rust memiliki pendekatan yang berbeda.
00:05:30Dalam Rust, Anda memiliki konsep yang disebut kepemilikan (ownership),
00:05:32yang berarti bahwa setiap nilai memiliki tepat satu pemilik,
00:05:36dan itu terikat pada lingkup.
00:05:38Jadi jika Anda memiliki lingkup,
00:05:39dan Anda dapat membuat lingkup dengan menggunakan kurung kurawal,
00:05:41atau fungsi juga akan memiliki lingkupnya sendiri.
00:05:43Anda mungkin tahu konsep itu dari JavaScript.
00:05:46Jika Anda memiliki lingkup,
00:05:47maka saat nilai dibuat di sana,
00:05:49itu dimiliki oleh lingkup tersebut.
00:05:51Dan jika lingkupnya berakhir, itu dibebaskan.
00:05:53Dan itu tentu saja sangat praktis
00:05:55karena Anda tidak perlu memikirkan untuk membebaskannya.
00:05:58Anda juga tidak memiliki garbage collector.
00:06:00Sebaliknya, Anda memiliki aturan yang jelas itu.
00:06:02Itu bisa menyebabkan kerumitan dalam program yang lebih kompleks
00:06:05di mana Anda perlu mengoper nilai ke sana kemari.
00:06:07Anda bisa melakukan itu di Rust,
00:06:08tapi itu membutuhkan cara berpikir yang berbeda.
00:06:11Tapi tentu saja itu memberi Anda keamanan memori,
00:06:14kecuali jika Anda menggunakan kata kunci “unsafe”.
00:06:19Jika Anda menggunakan itu, Anda dapat membuat lingkup “unsafe”.
00:06:22Dan di sana, aturan-aturan tersebut tidak lagi berlaku.
00:06:24Dan kemudian menjadi tugas Anda untuk memastikan
00:06:26bahwa memori dikelola dengan tepat.
00:06:28Sekarang, mengapa Anda melakukan itu?
00:06:29Yah, misalnya,
00:06:31jika Anda menarik pustaka C,
00:06:33yang bisa Anda lakukan di Rust,
00:06:34Anda bisa mencampurkan beberapa kode C, bisa dikatakan,
00:06:37atau memanggil beberapa metode dan fungsi pustaka C,
00:06:40maka karena C secara alami tidak aman (“unsafe”),
00:06:44kode di mana Anda menjangkau kode C itu juga tidak aman.
00:06:48Jadi Anda memerlukan fitur itu untuk berinteraksi dengan kode yang tidak aman.
00:06:52Dan itu juga satu hal yang mereka catat
00:06:54dalam pernyataan resmi itu,
00:06:56bahwa semua penggunaan “unsafe” dalam basis kode itu
00:07:00hingga bagian yang cukup besar sebenarnya terkait dengan panggilan,
00:07:04ke pustaka lain, pustaka C, dan sebagainya,
00:07:07yang tidak akan berubah.
00:07:08Tapi mereka juga mengidentifikasi area
00:07:10di mana mereka sebenarnya bisa meningkatkan kode
00:07:13dan menyingkirkan “unsafe”.
00:07:14Dan mereka menyebutkan bahwa mereka akan melakukan ini
00:07:15dalam pull request berikutnya.
00:07:18Dan mereka melakukannya dan masih melakukannya.
00:07:20Jadi Anda bisa menganggap port awal ini
00:07:22sebagai titik awal,
00:07:24yang kemudian diperhalus seiring waktu.
00:07:26Masih perlu disebutkan bahwa pull request awal ini,
00:07:28atau pull request yang sangat besar itu,
00:07:30sudah memiliki pengujian yang lulus.
00:07:32Jadi itu stabil, pengujiannya lulus,
00:07:35tapi kodenya bukan kualitas kode
00:07:37yang mungkin Anda harapkan jika itu ditulis dalam Rust
00:07:40sejak awal, karena itu bukan tujuannya.
00:07:43Jadi itu terjadi pada 21 Mei.
00:07:45Kemudian ada keheningan.
00:07:46Dan perlu dicatat juga bahwa versi BUN ini
00:07:49belum dirilis.
00:07:50Dan saat saya merekam ini, itu masih belum aktif.
00:07:52Saat Anda menginstal BUN sekarang,
00:07:54Anda masih mendapatkan versi SIG,
00:07:56tapi itu seharusnya berubah kapan saja sekarang.
00:07:58Tapi kemudian pada tanggal 8 Juli,
00:07:59postingan blog resmi dirilis
00:08:02di mana kita menemukan banyak detail menarik
00:08:04tentang port ini.
00:08:06Dan itu sangat layak untuk dibaca.
00:08:07Saya akan menautkannya di bawah
00:08:08karena ada banyak hal yang bisa dipelajari di sini.
00:08:11Seluruh port ini, dan itu bukan rahasia,
00:08:13dilakukan dengan bantuan AI.
00:08:15Perlu diingat bahwa BUN dimiliki oleh Anthropic.
00:08:18Jadi mereka punya akses gratis ke semua token tersebut
00:08:22dan khususnya juga ke Fable 5
00:08:24sebelum dirilis ke publik.
00:08:26Porting ini dilakukan dengan Fable 5.
00:08:29Dan omong-omong, jika Anda menginstal Cloud Code sekarang,
00:08:32meskipun BUN 1.4, versi Rust, belum dirilis,
00:08:36Cloud Code sudah berjalan di atas
00:08:39versi BUN yang belum dirilis, bisa dibilang begitu,
00:08:42yaitu versi Rust.
00:08:44Jadi begitulah.
00:08:45Tapi ya, porting ini dilakukan dengan Cloud Code
00:08:48berbasis Fable 5 dengan token gratis, tentunya,
00:08:52karena BUN adalah bagian dari Anthropic.
00:08:54Dan hal itu penting untuk diingat
00:08:56karena dalam postingan blog itu,
00:08:58kita mengetahui bahwa jika Anda menggabungkan semua token,
00:09:03atau jika Anda menjumlahkan semua token
00:09:04yang dihabiskan dan mengenakan harga API,
00:09:08seluruh porting ini akan menelan biaya sekitar $160.000.
00:09:13Itu angka yang mencengangkan, tapi sebenarnya,
00:09:18jika Anda memikirkan cakupan proyek ini,
00:09:20dan cakupannya adalah bahwa BUN terdiri dari 535.000 baris kode SIG,
00:09:26jika Anda memikirkan cakupan itu
00:09:28dan berapa lama waktu yang dibutuhkan manusia untuk melakukan porting ke Rust,
00:09:32maka $160.000 mungkin tidak terdengar terlalu buruk,
00:09:36tergantung di mana Anda berada.
00:09:38Namun, jelas bahwa tidak ada proyek sumber terbuka
00:09:43yang mampu melakukan itu.
00:09:44Dan kebanyakan perusahaan mungkin tidak akan mampu
00:09:47atau bersedia menghabiskan uang sebanyak itu untuk sebuah porting.
00:09:50Ini dimungkinkan karena BUN adalah bagian dari Anthropic.
00:09:54Dan tentu saja, ini juga merupakan aksi pemasaran yang bagus
00:09:58untuk Anthropic.
00:09:59Itu mungkin bukan tujuan utamanya.
00:10:03Saya tidak tahu itu.
00:10:04Tapi tentu saja, itu pemasaran yang bagus.
00:10:06Semua itu penting untuk diingat.
00:10:08Namun, dalam postingan blog ini,
00:10:10kita bisa belajar bagaimana Jared melakukan porting itu
00:10:14atau bagaimana dia membuat porting itu berhasil.
00:10:18Dan itu semua dimulai dengan file porting MD,
00:10:21yang dia buat dalam diskusi dengan Claude,
00:10:25dalam diskusi selama tiga jam,
00:10:26seperti yang dia sebutkan di postingan blog,
00:10:28di mana dia pada dasarnya memutuskan bersama dengan Claude Code
00:10:32dan model-model Anthropic,
00:10:35seperti apa file porting MD tersebut harus terlihat
00:10:37agar dapat menerjemahkan kode SIG ke Rust.
00:10:40Kemudian setelah dia mengulangi hal itu dan merasa puas,
00:10:44dia mengujinya pada tiga file pada awalnya.
00:10:46Dan setelah dia puas dengan itu,
00:10:48dia melepaskan Claude pada seluruh basis kode BUN.
00:10:53Sekarang dalam postingan blog ini,
00:10:54dia memperjelas bahwa dia tidak hanya meminta Claude
00:10:57untuk menulis ulang BUN menjadi Rust, jangan salah sangka,
00:11:00tetapi dia menyiapkan sistem yang rumit
00:11:03di mana dia memiliki satu agen utama,
00:11:07yang tentu saja juga menjalankan sub-agen,
00:11:09melakukan porting sesuai dengan file porting MD.
00:11:13Dan kemudian dia memiliki dua agen peninjau adversial
00:11:16yang meninjau pekerjaan agen utama itu setelah selesai
00:11:19dan memberikan umpan balik,
00:11:21lalu agen perbaikan untuk menerapkan umpan balik tersebut.
00:11:24Dan dia menjalankan itu semua dalam satu putaran
00:11:25dan tentu saja didistribusikan di berbagai work tree
00:11:30untuk memproses seluruh basis kode
00:11:33dan menyelesaikannya.
00:11:35Dalam postingan blog,
00:11:35dia menyebutkan bahwa dia menulis ulang BUN ke Rust
00:11:38menggunakan 50 alur kerja dinamis di Claude Code,
00:11:40yaitu alur kerja yang menjalankan banyak sub-agen
00:11:43selama 11 hari.
00:11:46Dan dia juga memiliki grafik yang bagus di sana.
00:11:48Secara umum, di postingan blog,
00:11:49ada grafik bagus di dalamnya
00:11:51yang membuatnya lebih mudah dicerna,
00:11:53yang menunjukkan jumlah komit yang dibuat
00:11:56dan kemudian didorong pada hari-hari yang berbeda
00:11:58dan kemudian waktu dalam sehari.
00:12:00Jadi semua itu terjadi dengan bantuan loop di Claude Code,
00:12:04dengan bantuan banyak sub-agen
00:12:05dan proses yang jelas dari satu agen utama,
00:12:08agen peninjau, dan agen perbaikan.
00:12:10Dan kemudian dia juga melakukan jalur terpisah lainnya
00:12:15bisa dibilang membuat semua tes itu berhasil.
00:12:20Dan itu membawa tantangannya sendiri
00:12:22karena rangkaian tesnya sangat besar dan kompleks
00:12:25sehingga dia mengalami berbagai batasan infrastruktur
00:12:29karena beberapa tes menghabiskan banyak memori
00:12:31dan menjalankan banyak tes secara paralel,
00:12:33oleh karena itu tidak berhasil.
00:12:34Tapi akhirnya dia membuat semua itu berhasil juga dengan bantuan AI,
00:12:39menjalankan tes, memperbaiki kode,
00:12:42menjalankan ulang tes dan sebagainya.
00:12:43Jadi banyak loop, banyak agen dan sub-agen yang terlibat,
00:12:47tentunya, dan banyak token yang terbakar.
00:12:49$165.000 dalam bentuk token terbakar.
00:12:53Sekali lagi, Anda bisa mendalami lebih dalam,
00:12:55dan itulah yang saya sarankan untuk dilakukan
00:12:57jika Anda tertarik dengan semua detail teknisnya.
00:12:59Ini adalah postingan blog yang sangat bagus yang mendokumentasikan perjalanan untuk sampai ke sana.
00:13:03Tapi secara singkat, itulah bagaimana porting tersebut terjadi selama 11 hari
00:13:08dengan semua agen dan sub-agen tersebut didistribusikan di berbagai alur kerja,
00:13:1250 alur kerja seperti itu, seperti yang kita pelajari selama atau lebih dari 11 hari,
00:13:17$165.000 dihabiskan dalam bentuk token dengan harga API.
00:13:24Nah, akhirnya, setelah dia selesai dalam postingan blog,
00:13:29dia menyebutkan bahwa Bun 1.4 memperbaiki berbagai bug yang dimiliki versi SICK terakhir,
00:13:35bahwa itu lebih efisien memori, bahwa itu lebih kecil.
00:13:38Dan seperti yang kita pelajari dari tanggapan Andrew Kelly, pencipta SICK,
00:13:43beberapa dari peningkatan ini mungkin juga bisa dicapai dengan SICK.
00:13:47Tapi postingan blog itu cukup menarik karena telah diedit.
00:13:53Sekarang tidak terlalu penuh amarah dibandingkan awalnya.
00:13:57Versi pertama penuh dengan serangan pribadi,
00:14:00hanya untuk kemudian mengatakan bahwa itu tidak dimaksudkan sebagai serangan pribadi,
00:14:03tetapi penuh dengan serangan pribadi.
00:14:05Versi terbaru, yang juga akan saya tautkan di bawah, masih cukup pedas.
00:14:11Pada akhirnya, Anda dapat dengan jelas mengetahui dari membaca versi pertama,
00:14:14tetapi juga versi ini,
00:14:16bahwa Andrew, pencipta SICK dan Jared, pencipta Bun,
00:14:21mereka tidak akan menjadi sahabat lagi.
00:14:26Sekarang, dia berterima kasih kepada Bun karena mendukung SICK, juga secara finansial,
00:14:31hanya untuk pada dasarnya marah tentang seluruh porting ini dan bagaimana itu tidak perlu
00:14:41jika kode Bun ditulis dalam SICK yang benar.
00:14:44Dia memperjelas bahwa dia tidak merasa repositori Bun,
00:14:48versi SICK, memiliki kualitas kode yang tinggi dan itu menyebabkan banyak masalah.
00:14:53Dan itu mungkin benar atau mungkin tidak.
00:14:56Saya pikir sangat mungkin bahwa dalam proyek berskala Bun,
00:15:01bergerak dengan kecepatan di mana Bun bergerak,
00:15:06kualitas kode mungkin tidak memenuhi standar pencipta SICK.
00:15:12Anda pasti bisa berpendapat bahwa kebanyakan proyek kode
00:15:15tidak harus memiliki kualitas kode tertinggi.
00:15:18Jadi Anda bisa berpendapat apa pun yang Anda inginkan.
00:15:21Sekarang, saya akan membiarkannya di sana.
00:15:24Saya merasa postingan blog tanggapan secara keseluruhan cukup lemah
00:15:29karena sangat dipenuhi amarah.
00:15:33Ini memiliki beberapa poin yang valid.
00:15:35Seperti, misalnya, dalam postingan blog yang dibuat Jared,
00:15:40dia menyebutkan bahwa porting dari SICK ke Rust divalidasi,
00:15:46tentu saja, dengan semua agen peninjau ini,
00:15:48tetapi juga dengan menjalankan rangkaian tes dan membuatnya berhasil.
00:15:51Dan Andrew menyatakan dengan benar bahwa, tentu saja, rangkaian tes yang sama itu
00:15:56seharusnya cukup atau tidak untuk membuktikan bahwa versi SICK itu hebat.
00:16:00Jadi mungkin rangkaian tes seharusnya ditingkatkan juga.
00:16:04Bagaimanapun, jelas keduanya tidak akan menjadi sahabat.
00:16:09Dan saya tidak memiliki pendapat apakah SICK atau Rust adalah bahasa baterai secara umum atau untuk Bun.
00:16:17Namun, saya percaya bahwa dengan AI, Rust dan model memorinya serta fakta
00:16:23bahwa Anda mendapatkan kesalahan waktu kompilasi untuk banyak masalah terkait memori adalah keuntungan besar,
00:16:30terutama di era AI, karena, tentu saja, seluruh porting ini sangat mengesankan
00:16:38dalam hal penggunaan AI.
00:16:41Dan tentu saja, ini adalah cara menggunakan AI yang sebagian besar dari kita tidak akan mampu
00:16:45atau tidak akan bersedia untuk mampu di perusahaan.
00:16:48Tapi sangat mengesankan bahwa saya bisa melakukan itu.
00:16:52Dan ini bukan pengkodean Vibe atau sekadar prompting YOLO.
00:16:56Ada proses yang jelas di balik semua itu.
00:16:59Banyak pemikiran yang masuk ke sini, yang saya harap sudah saya perjelas, yang pastinya juga menjadi jelas
00:17:05jika Anda mendalami detail teknisnya.
00:17:08Tapi dengan semua perencanaan, semua iterasi dengan penyiapan, dengan cara ini didekati,
00:17:13jelas ini bukan sekadar satu prompt yang dilemparkan padanya.
00:17:17Dan kemudian kita akan melihat ke mana kita mendapatkan ini, ini menunjukkan apa yang dapat Anda lakukan dengan AI.
00:17:21Dan tentu saja, melakukan porting basis kode dari satu bahasa ke bahasa lain adalah kasus penggunaan yang cukup bagus untuk AI.
00:17:27Jika Anda memikirkannya, AI, tentu saja, dapat berjuang dengan menulis kode baru.
00:17:32Itu mungkin tidak menulis kode yang Anda inginkan, tidak mengikuti konvensi kode
00:17:36atau gaya yang ingin Anda ikuti, dan mungkin juga mengacaukan banyak hal.
00:17:40Sekarang, AI jelas luar biasa untuk membangun perangkat lunak baru juga.
00:17:43Tapi Anda menghadapi serangkaian masalah yang berbeda di sana dengan sebuah porting.
00:17:47Keuntungan besarnya adalah Anda memiliki basis kode bagi AI untuk dilihat dan diterjemahkan,
00:17:53yang merupakan sesuatu yang dapat dilakukan AI, dan Anda memiliki rangkaian tes di sana.
00:17:57Jadi ada banyak hal yang bisa dibangun.
00:17:59Ini adalah kasus penggunaan yang baik untuk AI, sepertinya, dan seperti yang dibuktikan dengan jelas oleh porting ini.
00:18:04Dan saya pikir itulah poin paling menarik di sini.
00:18:08Juga bahwa Anda dapat menangani proyek yang tidak mungkin
00:18:12untuk ditangani sebelumnya.
00:18:13Sekali lagi, tidak untuk semua orang, tetapi untuk perusahaan tertentu dengan ukuran tertentu.
00:18:18Ini mungkin menarik.
00:18:19Memodernisasi perangkat lunak lama dengan bantuan AI bisa atau mungkin menjadi kasus penggunaan yang hebat.
00:18:26Dan ini menunjukkan dan membuktikan bahwa hal ini dapat dilakukan.
00:18:30Sekarang, tentu saja, BUN 1.4 belum keluar.
00:18:32Kita akan melihat apakah semuanya macet dan mereka harus kembali dalam sebulan dari sekarang.
00:18:36Anda tidak bisa sepenuhnya mengesampingkannya, tetapi saya pribadi tidak berpikir itu akan terjadi.
00:18:40Ini sudah digunakan dalam produksi oleh beberapa pengadopsi awal, seperti Cloud Code CLI.
00:18:47Itu telah diuji dan ditinjau secara ekstensif, meskipun, tentu saja, oleh AI, bukan peninjau manusia.
00:18:54Tapi saya cukup yakin bahwa ini akan berhasil dan saya merasa itu adalah prestasi yang cukup mengesankan dan juga penggunaan AI yang cukup mengesankan.
00:19:03Tapi seperti biasa, saya juga tertarik untuk mendengar apa pendapat Anda tentang semua itu.

Key Takeaway

Migrasi basis kode BUN dari Zig ke Rust membuktikan bahwa otomatisasi AI tingkat lanjut dengan agen peninjau adversial mampu menangani proyek berskala 535.000 baris kode dalam 11 hari dengan biaya $165.000.

Highlights

  • Basis kode BUN dipindahkan dari Zig ke Rust dalam waktu 11 hari menggunakan 50 alur kerja otomatis.

  • Proses migrasi ini menghabiskan biaya sekitar $165.000 dalam bentuk penggunaan token API Anthropic.

  • Lebih dari satu juta baris kode ditambahkan dalam pull request migrasi yang mencakup hampir 7.000 commit.

  • Sistem migrasi otomatis melibatkan satu agen utama, dua agen peninjau adversial, dan satu agen perbaikan untuk memastikan stabilitas kode.

  • Claude Code versi 5 digunakan untuk mengotomatisasi konversi, validasi, dan perbaikan kode tanpa peninjauan penuh oleh manusia.

  • Implementasi Rust dalam BUN masih menggunakan banyak kata kunci 'unsafe' untuk berinteraksi dengan pustaka C yang ada.

Timeline

Awal Mula Migrasi dan Kontroversi

  • Proses migrasi dimulai pada awal Mei dengan penemuan cabang repositori khusus konversi Zig ke Rust.
  • Komunitas pengembang terpolarisasi terkait penggunaan bahasa Rust dan tren penulisan ulang perangkat lunak yang ada.

Repositori GitHub BUN memuat file markdown berisi petunjuk konversi dan tabel terjemahan yang menjadi dasar pemindahan kode. Diskusi muncul di berbagai platform seperti Hacker News dan X mengenai pro dan kontra Rust, terutama karena banyak pengembang merasa jenuh dengan dorongan terus-menerus untuk menulis ulang program yang sudah ada ke dalam bahasa tersebut.

Eksekusi Pull Request dan Penggunaan Unsafe

  • Pull request resmi digabungkan pada 14 Mei dengan lebih dari satu juta baris kode ditambahkan.
  • Kritik utama muncul karena kode Rust yang dihasilkan tidak idiomatik dan banyak menggunakan blok 'unsafe'.
  • Blok 'unsafe' sebagian besar diperlukan untuk berinteraksi dengan pustaka C yang tidak dapat diubah.

Pemindahan kode tidak ditinjau secara manual oleh manusia, melainkan melalui pengujian otomatis. Penggunaan 'unsafe' dalam Rust memungkinkan pengembang melewati aturan manajemen memori yang ketat, yang pada kasus BUN diperlukan untuk mendukung integrasi pustaka C eksternal yang sudah ada.

Strategi Otomasi dengan AI

  • Proses migrasi menggunakan model Claude 3.5 Sonnet dengan alur kerja yang sangat terstruktur.
  • Sistem menggunakan satu agen utama yang dibantu oleh dua agen peninjau adversial dan satu agen perbaikan.
  • Keseluruhan proses memakan waktu 11 hari dengan 50 alur kerja dinamis yang berjalan secara paralel.

Jared, pembuat BUN, tidak hanya menggunakan prompt sederhana, tetapi membangun infrastruktur agen yang kompleks. Setelah melakukan diskusi awal selama tiga jam dengan Claude, dia menerapkan sistem di mana agen peninjau memberikan umpan balik pada hasil kerja agen utama, yang kemudian disempurnakan oleh agen perbaikan hingga semua pengujian lulus.

Dampak pada Industri dan Kualitas Kode

  • Pencipta Zig, Andrew Kelly, mengkritik kualitas kode repositori BUN sebelum migrasi dan efektivitas proses tersebut.
  • Migrasi ini menunjukkan bahwa modernisasi perangkat lunak lama melalui AI adalah kasus penggunaan yang layak untuk perusahaan besar.
  • Meskipun belum dirilis secara publik sebagai versi stabil, versi Rust sudah digunakan dalam produksi oleh Cloud Code CLI.

Perdebatan antara pencipta BUN dan Zig menyoroti perbedaan standar kualitas kode, di mana kecepatan pengembangan sering kali berbenturan dengan filosofi bahasa pemrograman tertentu. Keberhasilan migrasi ini membuktikan potensi AI dalam menangani proyek besar yang sebelumnya dianggap mustahil, membuka peluang baru bagi modernisasi infrastruktur teknis di masa depan.

Community Posts

View all posts