Elm 0.19.2, peningkatan kecepatan build
(elm-lang.org)- Elm 0.19.2 adalah langkah pertama dalam alur untuk menghadirkan peningkatan compiler lewat beberapa rilis kecil sebelum menuju Elm 1.0
- Pada codebase Elm berskala besar, kompilasi dari awal terukur 5,7 detik, sementara build inkremental berikutnya di bawah 350 ms, sehingga lebih kecil kemungkinannya mengganggu fokus saat pengembangan
- Peningkatan kali ini berfokus pada pengurangan alokasi saat parsing; dalam eksperimen 850 ribu baris, jumlah penyalinan GC turun 20%, penggunaan memori puncak turun 10%, dan kecepatan keseluruhan naik 7%
- Dalam pengujian pada proyek nyata, besarnya peningkatan bervariasi; pada kasus kompilasi 351 modul dari awal, waktu turun dari 4,981 detik menjadi 2,595 detik, 1,9 kali lebih cepat
- Ide performa dan bahasa yang muncul dari pekerjaan Acadia akan diterapkan bertahap ke depannya lewat rilis yang tidak memutus kompatibilitas, lalu setelah penyempurnaan akhir akan berlanjut ke Elm 1.0
Kompilasi lebih cepat di Elm 0.19.2
- Elm 0.19.2 adalah rilis pertama yang menghadirkan akumulasi peningkatan compiler ke Elm dalam satuan kecil
- Compiler yang cepat mengurangi situasi ketika developer beralih ke tab browser dan kehilangan fokus
- Jika kompilasi inkremental di bawah 400 ms, hampir tidak ada celah untuk berpindah ke pekerjaan lain
- Performa berdasarkan 850 ribu baris kode Elm adalah sebagai berikut
- Kompilasi dari awal: 5,7 detik
- Build inkremental: di bawah 350 ms
- Perubahan nyata berfokus pada pengurangan alokasi saat parsing
- Jumlah penyalinan GC turun 20%
- Penggunaan memori puncak turun 10%
- Kecepatan keseluruhan naik 7%
- Pada program di atas 500 ribu baris, peningkatan moderat bisa diharapkan; pada program yang lebih kecil, compiler Elm tetap tergolong sangat cepat
- Dalam pengujian di lingkungan nyata, besarnya peningkatan berbeda-beda antarproyek
- Sebagian proyek mengalami peningkatan kecil
- Untuk kompilasi 351 modul dari awal, waktu turun dari 4,981 detik menjadi 2,595 detik, atau meningkat 1,9 kali
- Versi baru dapat diperoleh dari rilis Elm compiler 0.19.2
Rilis-rilis berikutnya menuju Elm 1.0
- Ide dari pekerjaan compiler terkait database bernama Acadia akan dimanfaatkan juga di Elm
- Acadia saat ini berada dalam status alfa privat
- Berbagi secara publik dijadwalkan pada akhir tahun ini
- Ide yang akan diterapkan ke Elm mencakup peningkatan performa dan fitur bahasa
- Contoh: parser yang lebih cepat
- Contoh: tipe
equatable,hashable
- Perubahan seperti ini akan diterapkan sebagai rangkaian rilis kecil yang tidak memutus kompatibilitas agar terintegrasi secara natural ke Elm
- Pada tahap penyempurnaan akhir, rencananya Elm akan beralih ke 1.0
- Pengguna yang baru mengenal Elm dapat memulai dari contoh online dan panduan
- Elm 0.19.2 adalah rilis patch, sehingga proyek yang sudah ada dapat langsung mengunduh dan menggunakan versi baru
2 komentar
Opini Hacker News
Belakangan ini Elm lebih saya lihat sebagai bahasa riset yang berpengaruh besar
Fokusnya jelas, tidak ada roadmap publik atau dukungan resmi, dan kepemimpinannya tampak hampir tidak tertarik membangun komunitas atau core team
Namun pengalaman menggunakannya benar-benar enak, dan sebagai hasilnya muncul beberapa fork serta proyek turunan. Di konferensi Gleam baru-baru ini, Louis Pilfold bercanda bahwa “pengguna Elm masing-masing memelihara compiler mereka sendiri”; kenyataannya memang ada setidaknya 6, dan bulan lalu 2 lagi diumumkan
Senang melihat Evan bergerak menuju 1.0, dan saya berharap setelah menyebut Elm sebagai “selesai”, salah satu proyek penerus bisa mengambil pekerjaan sulit untuk menyatukan fork dan membesarkan komunitas
Secara pribadi, kalau nanti mencari sesuatu yang mirip Elm, saya akan melihat Gleam + Lustre. Kombinasi maintainer yang peduli pada komunitas dan desain terlihat bagus, dan berjalan baik di frontend maupun backend
Dulu pernah dipromosikan dengan sangat antusias, ada banyak tulisan blog dan presentasi, serta cukup banyak semangat dan adopsi
Lalu pembuatnya pada dasarnya menghilang dan proyeknya mandek
Tentu saja itu proyeknya sendiri, jadi ia berhak begitu, tetapi menurut saya ekspektasi seharusnya ditetapkan lebih baik sejak awal. Promosi yang aktif memang membantu menyebarkan ide, tetapi juga membuat para developer merasa tiba-tiba ditinggalkan
Hal terbaik kedua adalah filosofi “kalau berhasil dikompilasi, maka berjalan”. Sejujurnya, di sebagian besar Rust pun saya bisa mendapat perasaan serupa. Nuansa Haskell-nya lebih sedikit, tetapi masih ada semacam bayangan hangat dari leluhur fungsionalnya
Elm adalah bahasa yang bagus, tetapi Evan tampaknya tidak tertarik membuat sesuatu yang benar-benar berguna, dan pengelolaan bahasanya secara keseluruhan berantakan
Pada 2023 saya menulis tentang mengapa saya masih memakai Elm
https://taylor.town/elm-2023
Sekarang, pada 2026, saya masih terus memakai Elm karena alasan yang sama :)
Sebagai bonus, Claude tampaknya sangat cocok dengan Elm
https://taylor.town/diggit-000
Sekitar 2 tahun lalu, saya bereksperimen membuat game Snake untuk browser dengan bahasa favorit saya, Elm, lewat vibe coding dengan ChatGPT
Saat itu hasilnya masih cukup kasar, dan saya menyimpulkan bahwa model bahasa besar bisa saja membunuh Elm
Sekarang saya memakai Elm di produksi, dan model bahasa besar sudah jauh lebih baik. Justru menurut saya Elm saat ini adalah bahasa yang ideal untuk model bahasa besar, sehingga mungkin malah bisa meningkatkan adopsinya. Sebab Elm lebih sederhana daripada kebanyakan bahasa, stabil, dan memiliki arsitektur yang sangat beropini di dalam bahasanya, sehingga codebase-codebase menjadi sangat mirip satu sama lain
Saya juga jadi lebih banyak membuat sesuatu dengan Rust dan lebih banyak membaca dokumentasi Rust. Model bahasa besar tidak boleh menjadi alasan untuk tidak mempelajari hal yang sedang kita pakai; kalau begitu, kita engineer yang buruk
Model bahasa besar memberi waktu untuk meneliti dan belajar agar kita bisa memelihara hasil yang diterima. Jika memahami masalahnya, kita juga bisa menulis prompt dengan lebih baik
Pada akhirnya itu bergantung pada seberapa banyak Elm ada dalam data pelatihan dan RLHF. Saya setuju bahwa framework atau bahasa yang terstruktur membuat codebase lebih mirip sehingga lebih mudah digenerasi
Namun itu saja tidak cukup, dan biasanya adopsi developer sendiri merupakan diskursus yang jauh lebih kompleks
Rasanya aneh karena ia sangat mahir menangani Python, dan Elm termasuk bahasa modern yang paling stabil. Saking stabilnya sampai orang mengeluh bahwa Elm tidak berubah. Namun terakhir saya mencobanya sekitar 1 tahun lalu, jadi saya rasa sekarang mungkin sudah lebih baik
Apakah batasan terkait JavaScript sudah diatasi? Seingat saya, untuk berinteraksi dengan JavaScript harus memakai mekanisme Ports milik Elm, dan sepertinya mereka mencegah kita menulis wrapper langsung
Sepertinya juga pernah ada kontroversi ketika seseorang membuat fork agar bisa menulis wrapper JavaScript langsung atau FFI
Ini pilihan yang disengaja, dan kemungkinan besar akan tetap dipertahankan sampai 1.0, bahkan setelahnya
Saya tidak menyangka proyek ini masih hidup. Bukan bermaksud menyindir, tapi saya kira sudah berakhir
Jadi memang sudah mati, dan sekarang bisa dibilang baru saja bangkit kembali. Setahu saya, komunitasnya sudah banyak meredup selama itu
Itu fitur yang sangat populer, tetapi dihapus hanya karena pencipta bahasanya tidak menyukainya, meskipun komunitas sangat meminta agar fitur itu dipertahankan
Secara teknis mungkin keputusan yang benar, tetapi secara sosial sangat tidak populer dan menurut saya mungkin keputusan yang keliru
Sebelum bergabung saya belum mengenalnya, tetapi karena punya pengalaman dengan React, Redux, dan sebagainya, saya cepat mempelajarinya
Komunitas Elm mungkin akan menyebut ini sebagai fitur. Dari kode React yang ditulis 6–8 tahun lalu, berapa banyak yang hari ini masih berjalan sepenuhnya sama baiknya di toolchain React modern?
Nilai-nilainya benar-benar berbeda. Kode React yang baik pada 2026 terlihat mirip dengan kode Elm yang masih bisa dikompilasi sejak 2016
Saya belum pernah memakai Elm selain tutorial, tetapi belakangan ini saya membuat aplikasi full-stack Gleam dan sebagian besar memanfaatkan agen pengodean. Di awal saya mengendalikan struktur kode dengan cukup ketat, dan proses itu ternyata cukup cocok
Saya lebih penasaran dengan setelah Elm 0.19 daripada Elm 1.0. 0.19 adalah versi yang memblokir semua modul native yang tidak disetujui secara resmi oleh penulis Elm, dan menurut saya itu pada dasarnya menandai akhir Elm
Sulit membayangkan pengumuman menuju 1.0 yang lebih buruk dari ini. Siapa yang peduli? Tanpa lokalisasi atau dukungan aksesibilitas, tidak masuk akal menyebut sebuah framework UI siap produksi sebagai 1.0
Menurut saya, membatasi sejauh mana kontributor pihak ketiga bisa menghubungkan API browser telah membunuh momentum Elm di luar proyek mainan
Sekarang ini lebih terlihat seperti sandbox bagi Evan untuk bermain-main dengan ide compiler daripada sesuatu untuk produksi
Lokalisasi ditangani dengan menaruh satu record besar per bahasa, lalu meneruskannya ke tiap bagian aplikasi yang memakai string. Untuk bentuk jamak atau kasus khusus per bahasa, kita bisa menaruh fungsi sederhana di dalam record, dan itu sangat praktis
Aksesibilitas dicapai dengan kombinasi HTML yang baik, ports, dan untuk kasus yang rumit seperti autocomplete typeahead, web components
Di sisi lain, setelah 7 tahun tanpa apa-apa, merilis satu peningkatan kecil performa compiler lalu menyebutnya “jalan menuju 1.0” terasa agak begitu. Tidak bermaksud jahat, tapi untuk apa? Sudah mati, sudah selesai diratapi, dan semua orang sudah lama pergi
Sepertinya banyak orang tidak akan peduli sampai ada rilis yang benar-benar mengejutkan
Sepertinya Evan sedang menunjuk sesuatu, tetapi semua orang hanya melihat jarinya. Saya pikir ini sebenarnya bukan tentang Elm itu sendiri, melainkan persiapan Acadia
Dalam presentasinya Economics of Programming Languages https://www.youtube.com/watch?v=XZ3w_jec1v8, ia memberi sedikit gambaran tentang apa yang ia kerjakan selama 7 tahun terakhir. Itu adalah bahasa kueri yang menerapkan ide-ide fungsional
Ia menunjukkan batas-batas di aplikasi web tempat informasi tipe biasanya terputus: antara bahasa dan penyimpanan, serta antara penyimpanan dan transport
Apa yang bisa kita dapatkan jika informasi tipe dapat dipertahankan melintasi batas-batas ini? Salah satu jawaban yang ia berikan adalah migrasi yang lebih mudah. Alih-alih menulis SQL secara manual, hal itu bisa ditangani lewat perbedaan tipe
Jadi menurut saya pertanyaan yang tepat adalah apakah kita bisa melihat perubahan yang masuk ke Elm dan menyimpulkan seperti apa Acadia nantinya. Apa yang akan diberikan kompilasi inkremental kepada bahasa kueri?
Sebagus apa pun idenya, jika Arcadia tidak memiliki model pengembangan yang lebih berorientasi masa depan dan berpusat pada komunitas, tidak ada yang akan mengadopsinya. Paling banter hanya menjadi “proyek yang menginspirasi XYZ”
Evan mungkin menganggap ini sebagai hal besar berikutnya, dan bisa saja ia benar, tetapi saya tidak tahu apakah dunia pasca-Elm akan cukup mau mendengarkan
Apakah keputusan yang membuat fitur bahasa tertentu hanya bisa dipakai oleh tim Elm saja sudah dibatalkan? Itu tampak seperti keputusan yang bisa membunuh bahasa
Apakah benar kalau dikatakan Elm sudah kehilangan banyak momentum? Sekarang hampir tidak dibahas di HN, dan saya penasaran apakah itu salah satu alasan jarak antara rilis dan kabarnya begitu panjang
Jika melihat jarak rilis, 0.19.2 “Faster builds, and the Road to Elm 1.0” ada pada Juli 2026, sedangkan 0.19.1 “Friendly syntax hints, faster builds” ada pada Oktober 2019
Pendapat di Lobste.rs
Wow! Elm 0.19.1 dirilis pada 21 Oktober 2019, jadi sudah hampir 7 tahun lalu, dan itu juga merupakan kabar publik terakhir tentang pengembangan Elm
Senang sekali melihat kabar baru dari proyek ini
Saat mencoba Elm untuk proyek sampingan, rasanya sangat menyenangkan, tetapi dari luar komunitasnya tampak agak sunyi. Ini kabar yang sangat menggembirakan
Elm membuat pengembangan web terasa menyenangkan
Penasaran apa yang akan dibawa 1.0
Ini benar-benar kejutan yang menyenangkan
Aku selalu menyukai stabilitas Elm, dan 1.0 tampaknya juga tidak akan membawa perubahan radikal; secara pribadi menurutku itu arah yang baik
Jika
==dan sejenisnya tidak lagi menerima sembarang tipe, akan ada cukup banyak kode Elm yang perlu diubah. Penasaran seperti apa prosedur upgrade-nya nantiSenang melihat pembaruan Elm
Agak tidak lazim jika sebuah bahasa pemrograman tidak punya pembaruan sama sekali selama beberapa tahun. Alasannya bisa dimengerti, tetapi persepsi publik itu memang punya sisi yang aneh
Suka kabar ini
Sesekali aku kembali melihat Elm seperti rehat yang menyenangkan dari kegilaan pengembangan frontend modern
Aku berkesempatan melihat presentasi Evan di ZuriHac 2026, dan benar-benar terkejut ketika ia mengisyaratkan bahwa rilis Elm baru akan datang
Semoga videonya segera naik, tetapi sepertinya ia memahami bahwa pendekatan yang menargetkan stabilitas tidak terlalu cocok dengan obsesi industri ini terhadap kemajuan yang cepat. Sejauh yang kupahami, Elm mungkin akan mengambil langkah-langkah yang lebih kecil dan cepat. Aku antusias, dan presentasi itu membuatku sangat merindukan Elm
Penasaran bagaimana Elm akan menangani fitur yang lebih mencolok seperti tipe
equatabledanhashableSalah satu pilihan desain bahasa ini yang kontroversial adalah menghindari fitur sistem tipe ala Haskell yang lebih kuat seperti typeclass. Secara pribadi, aku selalu merasa kurang nyaman karena bahkan tipe kustom yang punya urutan alami dan terdefinisi dengan baik pun tidak bisa dipakai sebagai key dictionary. Meski begitu, secara keseluruhan ini kabar baik bahwa pekerjaan pada Elm terus berlanjut
Melihat ungkapan di posting blog tersebut, aku membayangkan kemungkinan hanya akan ada beberapa constrained type variables baru yang ditambahkan di samping constrained type variables yang sudah ada, yaitu
number,appendable,comparable,compappend