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.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video