Elm 0.19.2 में बिल्ड स्पीड बेहतर हुई
(elm-lang.org)- Elm 0.19.2, Elm 1.0 की ओर बढ़ने से पहले कई छोटी रिलीज़ के जरिए compiler सुधारों को शामिल करने की दिशा में पहला कदम है
- बड़े Elm codebase में शुरुआत से compile करने में 5.7 सेकंड और उसके बाद incremental build में 350ms से कम समय मापा गया, जिससे development के दौरान focus flow टूटने की संभावना कम होती है
- इस सुधार का focus parsing के दौरान allocations घटाने पर था, और 8.5 लाख lines के प्रयोग में GC copy मात्रा 20% कम, peak memory usage 10% कम, और कुल speed 7% बेहतर देखी गई
- असली projects के tests में improvement का स्तर अलग-अलग रहा; 351 modules को शुरुआत से compile करने वाले एक case में समय 4.981 सेकंड से 2.595 सेकंड हो गया, यानी 1.9 गुना तेज़
- Acadia के काम से निकले performance और language ideas आगे compatibility न तोड़ने वाली releases में क्रमशः शामिल किए जाएंगे, और final polish के बाद Elm 1.0 की ओर बढ़ने की योजना है
Elm 0.19.2 में तेज़ हुआ compilation
- Elm 0.19.2, जमा हुए compiler improvements को Elm में छोटे-छोटे हिस्सों में शामिल करने वाली पहली release है
- तेज़ compiler उन स्थितियों को कम करता है जहां developer browser tab पर switch करते हुए focus खो देता है
- अगर incremental compilation 400ms से कम हो, तो किसी और काम पर जाने की गुंजाइश लगभग नहीं रहती
- 8.5 लाख lines वाले Elm code के आधार पर performance इस प्रकार है
- शुरुआत से compile: 5.7 सेकंड
- incremental build: 350ms से कम
- असली बदलाव parsing के दौरान allocations घटाने के काम पर केंद्रित था
- GC copy मात्रा 20% कम
- peak memory usage 10% कम
- कुल speed 7% बेहतर
- 5 लाख lines से बड़े programs में moderate improvement की उम्मीद की जा सकती है, और छोटे programs में Elm compiler अब भी काफी तेज़ है
- real-world environment tests में improvement project के हिसाब से अलग-अलग रहा
- कुछ projects में मामूली improvement हुआ
- 351 modules को शुरुआत से compile करने के मामले में 4.981 सेकंड से 2.595 सेकंड हो गया, यानी 1.9 गुना improvement
- नया version Elm compiler 0.19.2 release से लिया जा सकता है
Elm 1.0 की ओर अगले releases
- Acadia नाम के database-related compiler work से मिले ideas का उपयोग Elm में भी किया जाएगा
- Acadia फिलहाल private alpha stage में है
- public sharing इस साल के अंत के लिए planned है
- Elm में शामिल किए जाने वाले ideas में performance improvements और language features दोनों शामिल हैं
- उदाहरण: तेज़ parser
- उदाहरण:
equatable,hashabletypes
- इन changes को Elm में naturally integrate करने के लिए compatibility न तोड़ने वाली छोटी releases की series के रूप में शामिल किया जाएगा
- final polish stage में Elm 1.0 पर जाने की योजना है
- Elm से पहली बार परिचित होने वाले users online examples और guide से शुरुआत कर सकते हैं
- Elm 0.19.2 patch release है, इसलिए existing projects में भी नया version download करके तुरंत इस्तेमाल किया जा सकता है
2 टिप्पणियां
Hacker News की राय
आजकल Elm को मैं काफी प्रभावशाली research language के तौर पर ज़्यादा देखता हूँ
इसका focus साफ़ है, कोई public roadmap या official support नहीं है, और leadership को community या core team बनाने में ज़्यादा रुचि नहीं दिखती
फिर भी इसके साथ काम करने का अनुभव वाकई अच्छा है, और इसी वजह से कई forks और derivative projects बने हैं। हाल की Gleam conference में Louis Pilfold ने मज़ाक में कहा था कि “Elm users अपना-अपना compiler maintain करते हैं”, और असल में कम से कम 6 तो हैं ही, पिछले महीने 2 और announce हुए
Evan का 1.0 की ओर बढ़ना खुशी की बात है, और उम्मीद है कि Elm को “complete” कहने के बाद successor projects में से कोई एक forks को consolidate करने और community बढ़ाने का कठिन काम संभाल सकेगा
निजी तौर पर अगर अगली बार Elm जैसा कुछ ढूँढूँगा तो Gleam + Lustre देखूँगा। maintainers का ऐसा combination अच्छा लगता है जो community और design की परवाह करता है, और यह frontend और backend दोनों पर चलता है
एक समय इसे बहुत उत्साह से promote किया गया था, blog posts और talks खूब थे, और उत्साह व adoption भी काफी था
फिर author लगभग गायब हो गए और project रुक गया
बेशक यह उनका अपना project है, इसलिए उन्हें ऐसा करने का अधिकार है, लेकिन मुझे लगता है शुरुआत से expectations बेहतर set करनी चाहिए थीं। aggressive promotion ने ideas फैलाने में मदद की, लेकिन developers को अचानक छोड़े जाने जैसा भी महसूस कराया
दूसरी सबसे अच्छी बात “compile हो जाए तो चलेगा” वाली philosophy है। सच कहूँ तो Rust के अधिकतर हिस्सों में भी वैसा ही feel मिल जाता है। Haskell वाला feel कम है, लेकिन functional ancestors की गर्मजोशी भरी छाया जैसी कुछ बात जरूर है
Elm अच्छी language है, लेकिन Evan को सच में उपयोगी चीज़ बनाने में रुचि नहीं दिखती और language governance कुल मिलाकर बिखरी हुई है
2023 में मैंने लिखा था कि मैं अब भी Elm क्यों इस्तेमाल करता हूँ
https://taylor.town/elm-2023
2026 में आज भी उन्हीं वजहों से Elm इस्तेमाल कर रहा हूँ :)
bonus के तौर पर Claude, Elm के साथ काफी अच्छी तरह fit होता लगता है
https://taylor.town/diggit-000
करीब 2 साल पहले, मैंने अपनी पसंदीदा language Elm में browser के लिए Snake game ChatGPT vibe coding से बनाने का experiment किया था
उस समय यह काफी rough था, और मैंने निष्कर्ष निकाला था कि large language models शायद Elm को मार भी सकते हैं
अब मैं production में Elm इस्तेमाल कर रहा हूँ, और large language models बहुत बेहतर हो गए हैं। उल्टा, मुझे लगता है Elm अभी large language models के लिए ideal language है, इसलिए adoption बढ़ भी सकता है। यह ज़्यादातर languages से simple और stable है, और language के अंदर opinionated architecture शामिल है, इसलिए codebases एक-दूसरे से काफी मिलते-जुलते हो जाते हैं
Rust में भी ज़्यादा बनाने लगा हूँ और Rust docs भी ज़्यादा पढ़ रहा हूँ। large language models उस चीज़ को सीखने से बचने का बहाना नहीं होने चाहिए जिसका आप इस्तेमाल कर रहे हैं; ऐसा हो तो आप खराब engineer हैं
large language models आपको इतना समय दे देते हैं कि मिले हुए output को maintain कर सकने के लिए research और learning कर लें। अगर आप problem समझते हैं तो prompts भी बेहतर लिख सकते हैं
आखिरकार यह इस पर निर्भर करता है कि training data और RLHF में Elm कितना शामिल है। मैं सहमत हूँ कि structured frameworks या languages में codebases ज़्यादा समान होते हैं, इसलिए generation आसान हो जाती है
लेकिन सिर्फ इतना काफी नहीं है, और आम तौर पर developer adoption अपने-आप में कहीं ज़्यादा complex discourse है
Python को वह बहुत अच्छे से संभालता है, इसलिए यह अजीब लगा, और Elm modern languages में सबसे stable में से है। इतनी stable कि लोग शिकायत करते हैं कि यह बदलती ही नहीं। हालांकि मैंने आखिरी बार करीब 1 साल पहले try किया था, इसलिए अब बेहतर हो गया होगा
JavaScript से जुड़ी limitations हल हुईं क्या? मेरी याद में JavaScript के साथ integrate करने के लिए Elm का Ports mechanism इस्तेमाल करना पड़ता था, और सीधे wrapper लिखने नहीं देता था
लगता है किसी ने fork करके direct JavaScript wrapper या FFI लिखने की सुविधा दी थी और उस पर controversy भी हुई थी
यह intentional choice है, और 1.0 तक तो निश्चित रूप से, और उसके बाद भी बने रहने की संभावना ज्यादा है
मुझे पता ही नहीं था कि यह प्रोजेक्ट अभी भी जीवित है। तंज नहीं कर रहा, लेकिन लगा था कि यह खत्म हो चुका है
इसलिए यह मृत था, और अब बस फिर से जीवित हुआ है। इस बीच community काफी मुरझा गई होगी, ऐसा मुझे लगता है
यह बहुत लोकप्रिय feature था, लेकिन language के संस्थापक को यह पसंद नहीं था, इसलिए community की मजबूत मांग के बावजूद इसे हटा दिया गया
तकनीकी रूप से शायद यह सही फैसला रहा होगा, लेकिन सामाजिक रूप से यह बहुत अलोकप्रिय था और शायद गलत फैसला था
join करने से पहले मुझे यह नहीं आता था, लेकिन React, Redux वगैरह का अनुभव था, इसलिए जल्दी सीख गया
Elm community शायद इसे feature कहेगी। 6–8 साल पहले लिखे गए React code में से कितना आज के React toolchain में बिल्कुल उसी तरह ठीक से चलता होगा?
values पूरी तरह अलग हैं। 2026 का अच्छा React code, 2016 के बाद compile होने वाले Elm code जैसा दिखता है
मैंने Elm को tutorials के अलावा कभी इस्तेमाल नहीं किया, लेकिन हाल में मैंने एक Gleam full-stack app बनाया और ज्यादातर coding agents का इस्तेमाल किया। शुरुआत में मैंने code structure को काफी सख्ती से control किया, और वह प्रक्रिया काफी अच्छी तरह fit हुई
मुझे Elm 1.0 से ज्यादा Elm 0.19 के बाद में दिलचस्पी है। 0.19 वह version था जिसने Elm author द्वारा official approval न पाए सभी native modules को रोक दिया था, और मेरी नजर में उसने practically Elm के अंत को mark किया
1.0 की ओर जाने की announcement के तौर पर इससे बुरा कुछ सोचना मुश्किल है। किसे फर्क पड़ता है? localization या accessibility support न हो तो किसी UI framework को production-ready 1.0 कहना समझ में नहीं आता
third-party contributors के browser APIs जोड़ने की क्षमता को सीमित करने ने toy projects को छोड़कर Elm की momentum मार दी, ऐसा मुझे लगता है
अब यह production के लिए कम, और Evan का compiler ideas के साथ खेलने वाला sandbox ज्यादा लगता है
localization को हम हर language के लिए एक बड़ा record रखकर, और strings इस्तेमाल करने वाले app के हर हिस्से में उसे pass करके handle करते हैं। plurals या language-specific special cases के लिए record में simple functions डाल सकते हैं, जो बहुत सुविधाजनक है
accessibility अच्छी HTML, ports, और autocomplete typeahead जैसे जटिल cases में web components को जोड़कर हासिल की जाती है
दूसरी तरफ, 7 साल तक कुछ नहीं, फिर एक छोटा-सा compiler performance improvement निकालना और उसे “1.0 की राह” कहना थोड़ा अजीब है। कोई दुर्भावना नहीं, लेकिन क्यों? यह पहले ही मर चुका था, शोक भी पूरा हो चुका था, और लोग बहुत पहले आगे बढ़ चुके थे
जब तक कोई सचमुच चौंकाने वाली release नहीं आती, मुझे नहीं लगता कि बहुत लोग परवाह करेंगे
लगता है Evan किसी चीज की ओर इशारा कर रहे हैं, लेकिन सब लोग सिर्फ उंगली देख रहे हैं। मेरे हिसाब से यह असल में Elm के बारे में नहीं, बल्कि Acadia की तैयारी के बारे में है
उनकी presentation Economics of Programming Languages https://www.youtube.com/watch?v=XZ3w_jec1v8 में उन्होंने पिछले 7 साल से जिस चीज पर काम किया है, उसकी झलक दिखाई। यह functional ideas लागू करने वाली query language है
वे बताते हैं कि web apps में type information आम तौर पर किन boundaries पर टूटती है: language और storage के बीच, और storage और transport के बीच
अगर इन boundaries के पार type information बचाकर रखी जा सके तो क्या मिलेगा? उन्होंने जो जवाब दिए उनमें से एक है आसान migrations। हाथ से SQL लिखने के बजाय type differences से handle किया जा सकता है
इसलिए सही सवाल यह है कि Elm में आने वाले changes देखकर क्या हम अंदाजा लगा सकते हैं कि Acadia कैसी होगी। incremental compilation किसी query language को क्या देगी?
ideas चाहे कितने भी अच्छे हों, अगर Arcadia में ज्यादा future-oriented और community-driven development model नहीं हुआ, तो कोई उसे अपनाएगा नहीं। ज्यादा से ज्यादा वह “XYZ को inspire करने वाला project” बनकर रह जाएगा
Evan सोच सकते हैं कि यह अगली बहुत बड़ी चीज है, और शायद वे सही भी हों, लेकिन Elm के बाद की दुनिया इतनी ध्यान से सुनेगी या नहीं, पता नहीं
क्या उन्होंने वह फैसला वापस लिया जिसमें कुछ language features सिर्फ Elm team ही इस्तेमाल कर सकती थी? वह language को मार देने लायक फैसला लग रहा था
क्या यह कहना सही है कि Elm ने काफी momentum खो दी है? अब HN पर भी इसकी चर्चा मुश्किल से होती है, और सोच रहा हूं कि releases और news के बीच लंबे gaps की एक वजह क्या यही है
release gaps देखें तो 0.19.2 “Faster builds, and the Road to Elm 1.0” जुलाई 2026 में है, और 0.19.1 “Friendly syntax hints, faster builds” अक्टूबर 2019 में था
Lobste.rs की रायें
वाह! Elm 0.19.1 21 अक्टूबर 2019 को आया था, यानी अब 7 साल पहले, और Elm डेवलपमेंट के बारे में वही आखिरी सार्वजनिक खबर भी थी
प्रोजेक्ट से नई खबर देखकर काफी खुशी हुई
एक side project में Elm इस्तेमाल किया था और वह सच में बहुत अच्छा अनुभव था, लेकिन बाहर से देखने पर community थोड़ी शांत लगती थी। यह बहुत उत्साहित करने वाली खबर है
Elm ने web development को मजेदार बना दिया था
1.0 क्या लेकर आएगा, इसका इंतजार है
सच में बहुत सुखद surprise है
Elm की stability मुझे हमेशा पसंद रही है, और लगता है 1.0 भी कोई बहुत radical बदलाव नहीं करेगा; व्यक्तिगत रूप से मुझे यह अच्छी दिशा लगती है
अगर
==वगैरह अब किसी भी type को स्वीकार नहीं करेंगे, तो काफी Elm code बदलना पड़ेगा। upgrade प्रक्रिया कैसी होगी, यह जानने की उत्सुकता हैElm update देखकर अच्छा लगा
किसी programming language में कई साल तक कोई update न होना थोड़ा असामान्य है। वजह समझ आती है, लेकिन public perception भी अजीब चीज होती है
यह खबर अच्छी है
कभी-कभी आधुनिक frontend development के पागलपन से बचने के लिए Elm को फिर से देखना एक अच्छी राहत जैसा लगता है
ZuriHac 2026 में Evan का talk देखने का मौका मिला, और उन्होंने संकेत दिया कि नया Elm release आ रहा है, जिससे मैं सच में हैरान रह गया
उम्मीद है video जल्द आएगा, लेकिन ऐसा लगा कि उन्होंने समझ लिया है कि stability को लक्ष्य बनाकर चलने का तरीका इस industry की तेज progress के जुनून से ठीक मेल नहीं खाता। मेरी समझ के अनुसार Elm अब छोटे और तेज steps भी ले सकता है। मैं उत्साहित हूं, और उस talk ने मुझे Elm की बहुत याद दिला दी
यह देखना दिलचस्प होगा कि Elm
equatableऔरhashabletypes जैसी ज्यादा स्पष्ट features को कैसे handle करेगाइस language के विवादास्पद design choices में से एक यह है कि यह typeclass जैसे ज्यादा शक्तिशाली Haskell-style type system features से बचती है। व्यक्तिगत रूप से मुझे हमेशा असुविधा हुई कि natural और well-defined ordering वाले custom types भी dictionary keys के तौर पर इस्तेमाल नहीं किए जा सकते। फिर भी Elm पर काम जारी है, यह कुल मिलाकर अच्छी खबर है
blog post की wording देखकर लगता है कि मौजूदा constrained type variables, यानी
number,appendable,comparable,compappendके अलावा कुछ नए constrained type variables जोड़ने भर की बात हो सकती है