Lovable Menulis Ulang Vite dalam Rust... (semacamnya)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Anda bisa menambah hitungan karena ada proyek penulisan ulang ke Rust lagi, kali ini server dev Vite
00:00:03yang ditulis ulang dalam Rust oleh tim Lovable, yang diklaim mencapai penggunaan memori
00:00:074 kali lebih hemat dan cold start 2 kali lebih cepat. Jadi mari kita periksa klaim tersebut karena mungkin saja
00:00:12sedikit menyesatkan, lalu lihat apakah ini sesuatu yang perlu Anda alihkan di masa mendatang,
00:00:15serta apa pendapat pembuat Vite tentang dampaknya bagi masa depan open source.
00:00:24Proyek yang saya maksud bernama OJ, singkatan dari Orange Juice, dan konsepnya adalah satu
00:00:29binari Rust yang bisa saya arahkan ke proyek Vite yang ada dan langsung menjalankannya. Ini membaca konfig
00:00:33Vite saya, tetap menjalankan plugin Vite yang ada, tetapi dev server di bawahnya, seperti file
00:00:38watcher, module graph, hot module reloading, dan React fast refresh semuanya telah ditulis ulang dalam Rust.
00:00:44Uniknya, ini dilakukan menggunakan rolldown dan oxy, yang juga digunakan oleh Vite sendiri dan dikelola oleh voidzero.
00:00:49Untuk mencobanya sendiri, saya membuat aplikasi TanStack untuk melihat apakah ada perbedaan
00:00:53antara menjalankannya dengan Vite dev atau OJ dev. Secara kasat mata, keduanya bekerja hampir identik,
00:00:58dan semuanya berfungsi seperti server-side rendering, hidrasi, fungsi server, fast refresh,
00:01:03rute file dinamis, rute server, Tailwind, dan impor aset, tetapi saat meneliti lebih dalam,
00:01:07saya memperhatikan beberapa perbedaan kecil. Yang pertama ada pada fast refresh di sini. Jika saya mengedit file,
00:01:13counter Vite di sini mempertahankan statusnya, tetapi di bawah OJ, hitungannya ter-reset kembali ke nol,
00:01:17menandakan bahwa OJ melakukan muat ulang penuh, bukan hanya komponen yang berubah. Saya sebenarnya memutuskan untuk
00:01:22mencoba dan menguji perilaku yang sama ini di aplikasi React biasa yang bukan TanStack Start,
00:01:26dan menariknya, ternyata berfungsi di sini. Edit yang sama di sini menjaga hitungan tetap sama,
00:01:30dan tidak memperbarui seluruh halaman, jadi tampaknya melakukan pembaruan hot yang sebenarnya. Saya tidak tahu mengapa
00:01:35ada perbedaan antara TanStack Start dan aplikasi React biasa, mungkin itu hanya salah satu
00:01:39kasus khusus yang belum mereka pertimbangkan. Perbedaan kedua yang saya perhatikan adalah pada
00:01:42fungsi server. Fungsi server ini mengukur memori dari seluruh pohon proses dev server dari
00:01:46dalam aplikasi, dan pada aplikasi ini di bawah Vite, ukurannya sekitar 380 MB di dua proses, dan di bawah OJ,
00:01:53ukurannya sekitar 320 MB juga di dua proses. Jadi pada aplikasi kecil seperti ini, tampaknya penggunaan
00:01:59penggunaan memori hampir sama, dengan OJ hanya sedikit lebih unggul. Jadi, apakah ini berarti proyek ini
00:02:04sama sekali tidak berguna? Tidak juga, karena bukan ini tujuan utama OJ dibuat. OJ sebenarnya bekerja
00:02:09paling baik pada aplikasi yang sangat besar. Saat saya mengujinya pada aplikasi React dengan 5.000 komponen, menggunakan skrip yang
00:02:14menjalankan setiap kode dev server, membuka halaman di peramban Chrome sungguhan, menghentikan waktu saat
00:02:19komponen terdalam berada di DOM, lalu mengambil sampel memori dari seluruh pohon proses tersebut, mode normal OJ
00:02:24sekitar 1,7 kali lebih cepat hingga halaman tampil daripada Vite bawaan, dan menggunakan sekitar seperempat dari
00:02:29memorinya. Agar adil bagi Vite, Vite 8.1 memang meluncurkan fitur eksperimental bernama bundled dev mode,
00:02:34dan jika Anda mengaktifkannya, Vite sebenarnya mencapai 1,18 detik, jadi sedikit lebih cepat dari mode normal
00:02:40OJ, tetapi tidak menghemat memori Anda. OJ juga memiliki mode bundle, yang jika digunakan
00:02:45membuatnya lebih cepat lagi, sekitar 0,89 detik, dan menjaga penggunaan memori sekitar seperempat dari milik Vite.
00:02:51Jadi OJ tampaknya memiliki manfaat memori yang nyata, dan itulah alasan utama Lovable
00:02:55membuat proyek ini. Pratinjau Lovable menjalankan dev server Vite sungguhan, dan Lovable mengatakan mereka menjalankan sekitar
00:03:00satu juta sandbox tersebut sehari, dan pada skala seperti itu, konsumsi sumber daya
00:03:04sangatlah penting. Jadi Lovable membangun OJ untuk mendapatkan pratinjau yang mulai secara instan dan tetap ringan,
00:03:09tanpa harus mengorbankan ekosistem yang membuat aplikasi berfungsi sejak awal.
00:03:13Mereka juga membuat keputusan desain yang sangat keren untuk kasus penggunaan tersebut, yaitu agen. Saat mengedit,
00:03:17seseorang biasanya akan menyimpan satu file pada satu waktu, tetapi sebuah agen dapat menulis sekitar 10 file sekaligus,
00:03:22dan Vite akan menganggap setiap simpanan ini sebagai pembaruan terpisah, tetapi di OJ, watcher,
00:03:26module graph, kompilator, dan pembaruan hot berada dalam satu alur, sehingga serangkaian perubahan digabungkan menjadi satu pembaruan.
00:03:32Ada juga gerbang yang bisa Anda aktifkan di mana pembaruan ditahan sampai agen itu sendiri
00:03:35mengirim sinyal ke endpoint flush, sehingga pratinjau hanya menerapkan perubahan yang telah selesai. Anda bisa melihat ini
00:03:40adalah proyek yang sangat spesifik untuk menyelesaikan kasus penggunaan Lovable sendiri, dan itulah yang juga diakui oleh
00:03:45pembuat Vite, Evan You. Poin pertamanya dalam cuitan ini adalah bahwa ini proyek yang sangat mengesankan yang menyelesaikan
00:03:49masalah Lovable sendiri dengan baik, tetapi ini bukan penulisan ulang Vite secara keseluruhan. Ini hanya dev server,
00:03:54dan ini juga dibangun di atas Rolldown dan Oxy yang dikelola oleh void0, jadi ini hampir tidak menggantikannya.
00:04:00Parser, transformer, dan bundler produksi di OJ semuanya milik void0,
00:04:04Lovable hanya menulis server di sekitarnya. Pada dasarnya Anda bisa menganggap Vite sebagai proses Node
00:04:08yang mengendalikan Rust, sedangkan OJ adalah proses Rust yang mengendalikan Rust, dengan lapisan di tengahnya
00:04:13berupa JavaScript agar tetap bisa berkomunikasi dengan API plugin Vite. Evan kemudian juga menunjukkan
00:04:17bahwa OJ bisa cepat karena hanya mendukung satu jenis aplikasi. OJ sebenarnya hanya bekerja dengan
00:04:22aplikasi React, yaitu aplikasi yang dihasilkan oleh Lovable. Sebaliknya, Vite harus
00:04:27mendukung setiap kerangka kerja, setiap konfigurasi tidak biasa, setiap alat yang dibangun di sekitarnya, dan sengaja membiarkan
00:04:31hal-hal seperti esbuild atau plugin React sebagai paket terpisah, sehingga Anda bisa menambahkannya sendiri jika
00:04:36diperlukan. Setelah itu, dia juga menunjukkan kelemahan dalam pengujian tolok ukur tersebut. Coldstart Vite pada blog tersebut
00:04:40menyertakan vite-plugin-checker, yang menjalankan TypeScript di background worker, tetapi OJ sebenarnya tidak
00:04:45mendukung plugin tersebut, sehingga melewati proses itu sepenuhnya. Dia juga menunjukkan bahwa di Vite, dengan mode bundled dev,
00:04:50kecepatannya lebih mendekati Coldstart OJ, persis sama dengan yang kita lihat pada angka kita, tetapi dia memang
00:04:55mengakui bahwa OJ menggunakan memori yang jauh lebih sedikit, dan Vite mungkin harus berusaha memperbaikinya.
00:04:59Poin terakhir Evan dalam cuitan ini adalah hal yang paling menarik bagi saya. Dinamika open source
00:05:03sedang berubah, biaya untuk mengimplementasikan ulang sesuatu telah runtuh karena AI, jadi kita akan melihat lebih banyak
00:05:08dari apa yang dia sebut proyeksi khusus dari alat open source, jadi dependensi yang sama dibangun ulang di bawah
00:05:13batasan satu komponen agar sesuai dengan satu kasus penggunaan. Dia memberi contoh redact dari TanStack sebagai contoh lain. Masa depan yang mungkin
00:05:19terjadi adalah daripada pengelola dibebani oleh ribuan PR kecil, semua orang
00:05:23hanya mengelola fork spesifik mereka sendiri. Dia mengatakan secara jujur bahwa dia tidak yakin apakah itu hal yang baik, tetapi dia
00:05:28berpikir sangat mungkin hal itulah yang akan terjadi dalam beberapa tahun ke depan. Jadi di satu sisi, fork khusus lebih baik
00:05:33bagi pengelola daripada tumpukan PR kecil, tetapi kita berisiko mengalami fragmentasi ekosistem. Saya rasa
00:05:39hanya waktu yang akan menjawab bagaimana ini akan terjadi, dan akan seperti apa masa depan open source nantinya.
00:05:43Secara keseluruhan, ini bukanlah alat yang akan digunakan oleh orang lain selain Lovable, kecuali Anda
00:05:47tampaknya menghadapi masalah yang persis sama berupa jutaan dev server Vite dalam sandbox, dan maksud saya,
00:05:52apakah Anda benar-benar pernah merasa Vite lambat di laptop Anda sendiri atau menggunakan terlalu banyak memori? Saya pribadi
00:05:57tidak pernah, tetapi ini tetaplah proyek yang keren, dan sangat bagus mereka telah melakukan ini,
00:06:01jadi beri tahu saya di kolom komentar apa pendapat Anda tentang ini. Selagi di sana, silakan subscribe, dan seperti biasa,
00:06:04sampai jumpa di video berikutnya.
00:06:09Sampai jumpa di video berikutnya.

Key Takeaway

Lovable mengembangkan OJ, server dev berbasis Rust yang mengurangi konsumsi memori Vite sebesar 75% untuk skala jutaan sandbox AI, menandai era baru fork open source spesifik yang didorong oleh kemudahan pengodean berbasis AI.

Highlights

  • OJ (Orange Juice) buatan Lovable adalah server dev Rust yang memangkas penggunaan memori Vite hingga seperempatnya dan mempercepat cold start aplikasi skala besar.

  • Dalam pengujian aplikasi React dengan 5.000 komponen, mode bundle OJ mencapai waktu muat 0,89 detik dibandingkan Vite bawaan yang membutuhkan durasi lebih lama.

  • Vite 8.1 menyediakan fitur eksperimental bundled dev mode yang mencatatkan waktu awal 1,18 detik, sedikit lebih cepat dibanding mode normal OJ tetapi tidak menghemat memori.

  • Proyek OJ dirancang khusus untuk menangani pengubahan berkas serentak oleh agen AI dengan menggabungkan pembaruan watcher, module graph, dan hot reload ke dalam satu alur kerja.

  • Pencipta Vite, Evan You, menilai keberadaan proyek seperti OJ menunjukkan pergeseran tren open source di mana perkembangan AI menekan biaya pembuatan fork khusus untuk kebutuhan spesifik.

Timeline

Pengenalan OJ dan Arsitektur Server Dev Rust

  • Proyek OJ (Orange Juice) menggantikan server dev Vite dengan eksekusi biner tunggal berbasis Rust.
  • Komponen inti seperti file watcher, module graph, hot module reloading, dan React fast refresh ditulis ulang menggunakan Rust.
  • OJ dibangun di atas arsitektur Rolldown dan Oxy milik voidzero tanpa mengubah konfigurasi serta plugin Vite yang ada.

Lovable mengembangkan biner Rust bernama OJ untuk langsung menjalankan proyek Vite yang sudah ada. Pendekatan ini mempertahankan kemampuan membaca konfigurasi dan plugin Vite bawaan. Seluruh proses di balik layar dialihkan ke sistem berbasis Rust untuk mengejar efisiensi memori dan waktu booting.

Pengujian Performa pada Aplikasi Kecil dan Besar

  • Aplikasi React biasa yang dijalankan di bawah OJ berhasil mempertahankan state counter saat pengeditan berkas, berbeda dengan perilaku muat ulang penuh pada TanStack Start.
  • Pengujian memori pada proyek kecil menunjukkan konsumsi 320 MB pada OJ dibandingkan 380 MB pada Vite bawaan.
  • Proyek React skala besar dengan 5.000 komponen mencatatkan performa mode bundle OJ sebesar 0,89 detik dengan efisiensi penggunaan memori mencapai 75% dibanding Vite.

Pengujian pada aplikasi kecil menunjukkan performa yang relatif berimbang antara Vite dan OJ. Efisiensi OJ baru terlihat menonjol pada proyek berskala besar dengan ribuan komponen. Fitur bundled dev mode eksperimental pada Vite 8.1 mampu menyaingi kecepatan boot OJ, namun OJ tetap mengungguli Vite dalam penghematan konsumsi memori.

Kebutuhan Spesifik Sandbox Lovable dan Optimasi Agen AI

  • Lovable menjalankan sekitar satu juta sandbox dev server Vite setiap hari sehingga efisiensi sumber daya menjadi faktor krusial.
  • Watcher dan kompilator OJ menyatukan puluhan perubahan berkas dari agen AI menjadi satu alur pembaruan tunggal.
  • Fitur flush endpoint menahan penerapan pembaruan sampai agen AI menyelesaikan seluruh proses penulisan berkas.

Lovable membangun OJ untuk menopang infrastruktur cloud mereka yang memproses jutaan eksekusi pratinjau harian. Agen AI sering kali mengubah banyak berkas sekaligus, berbeda dengan pola pengetikan manusia yang bertahap. Sistem pembatas (gate) di OJ memastikan pratinjau tidak melakukan re-render berulang sebelum seluruh instruksi kode selesai dibuat.

Tanggapan Evan You dan Implikasi Masa Depan Open Source

  • Evan You menegaskan bahwa OJ merupakan proses Rust yang mengendalikan Rust khusus ekosistem React, bukan penulisan ulang Vite secara menyeluruh.
  • Metrik tolok ukur awal OJ melewati eksekusi TypeScript latar belakang yang biasanya dijalankan oleh vite-plugin-checker.
  • Penurunan biaya re-implementasi akibat AI berpotensi memicu fragmentasi ekosistem berupa fork open source yang sangat terorganisir untuk kasus penggunaan tunggal.

Pencipta Vite mengapresiasi pencapaian OJ namun memberikan batasan bahwa OJ dibuat khusus untuk memenuhi spesifikasi aplikasi bawaan Lovable. Alat open source umum seperti Vite tetap harus mendukung beragam framework serta konfigurasi eksternal. Kemudahan menulis ulang kode berbasis AI diprediksi akan mengubah dinamika kolaborasi, di mana pengembang lebih memilih mengelola fork spesifik dibanding mengajukan ribuan kontribusi kecil ke proyek utama.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video