1 ポイント 投稿者 GN⁺ 5 시간 전 | 2件のコメント | WhatsAppで共有
  • Elm 0.19.2 は、Elm 1.0 に向かう前に複数の小規模リリースでコンパイラ改善を反映していく流れの第一歩
  • 大規模な Elm コードベースでのゼロからのコンパイルは 5.7秒、その後の増分ビルドは 350ms未満と測定され、開発中の集中の流れが途切れる可能性が減少
  • 今回の改善は、パース中の割り当てを減らすことに重点が置かれ、85万行の実験で GC コピー量 20% 減少、最大メモリ使用量 10% 減少、全体速度 7% 向上が観測
  • 実プロジェクトでのテストでは改善幅はさまざまで、351 モジュールをゼロからコンパイルする事例では 4.981秒から 2.595秒に短縮され、1.9倍高速化
  • Acadia の作業から生まれた性能・言語アイデアが今後互換性を壊さないリリースとして順次反映され、最後の仕上げ後に Elm 1.0 へ進む計画

Elm 0.19.2 で高速化されたコンパイル

  • Elm 0.19.2 は、蓄積されたコンパイラ改善を Elm に小さな単位で反映する最初のリリース
  • 高速なコンパイラは、開発者がブラウザタブへ切り替えて集中を失う状況を減らす
    • 増分コンパイルが 400ms未満なら、別の作業へ移る余地はほとんどなくなる
  • 85万行の Elm コード基準の性能は次のとおり
    • ゼロからのコンパイル: 5.7秒
    • 増分ビルド: 350ms未満
  • 実際の変更は、パース中の割り当てを減らす作業に集中
    • GC コピー量 20% 減少
    • 最大メモリ使用量 10% 減少
    • 全体速度 7% 向上
  • 50万行を超えるプログラムでは穏やかな改善が期待でき、より小さなプログラムでも Elm コンパイラは依然として非常に高速
  • 実環境テストでは改善幅はプロジェクトごとに異なった
    • 一部のプロジェクトでは小幅な改善
    • 351 モジュールをゼロからコンパイルする場合は 4.981秒から 2.595秒に短縮され、1.9倍改善
  • 新バージョンは Elm compiler 0.19.2 リリース から入手可能

Elm 1.0 へ向かう次のリリース群

  • Acadia というデータベース関連のコンパイラ作業で得られたアイデアが、Elm にも活用される予定
    • Acadia は現在非公開アルファ段階
    • 公開共有は今年末を予定
  • Elm に反映するアイデアには、性能改善と言語機能の両方が含まれる
    • 例: より高速なパーサ
    • 例: equatable, hashable
  • こうした変化は Elm に自然に統合するため、互換性を壊さない小規模リリースのシリーズとして反映される予定
  • 最後の仕上げ段階で Elm 1.0 へ進む計画
  • Elm を初めて使うユーザーは オンライン例ガイド から始められる
  • Elm 0.19.2 はパッチリリースのため、既存プロジェクトでも新バージョンをダウンロードしてすぐに利用可能

2件のコメント

 
GN⁺ 4 시간 전
Hacker Newsのコメント
  • 最近のElmは、影響力の大きい研究用言語に近いものとして見ている
    焦点ははっきりしているが、公開ロードマップや公式サポートはなく、リーダーシップはコミュニティやコアチームの構築にほとんど関心がなさそうに見える
    それでも作業感は本当に良く、その結果として複数のフォークや派生プロジェクトが生まれた。最近のGleamカンファレンスでLouis Pilfoldが「Elmユーザーはそれぞれ自分のコンパイラを保守している」と冗談を言っていたが、実際に少なくとも6つはあり、先月にもさらに2つ発表された
    Evanが1.0に向けて動いているのは喜ばしいし、Elmを「完成したもの」と呼んだうえで、後継プロジェクトの一つがフォークを統合し、コミュニティを育てるという難しい仕事を担えるといいと思う
    個人的に次にElmに似たものを探すなら、Gleam + Lustreを見るつもりだ。コミュニティと設計を気にかけるメンテナーの組み合わせが良さそうで、フロントエンドとバックエンドの両方で動く

    • Elmの軌跡はかなり奇妙だったが、研究用言語と呼ぶのは合っているように思う
      一時期は熱心に広められ、ブログ記事や発表も多く、熱気も導入もかなりあった
      その後、作者が事実上姿を消し、プロジェクトは止まった
      もちろん自分のプロジェクトなのでそうする権利はあるが、最初から期待値をもっと適切に設定すべきだったと思う。積極的な普及はアイデアの拡散には役立ったが、開発者たちに突然見捨てられたと感じさせることにもなった
    • Elmの一番良いところは、Haskellらしさが強いことだ。数年前にElmで面白いものをいくつか作った
      二番目に良いところは、「コンパイルできれば動く」という哲学だ。正直、Rustの大部分でも似た感覚は得られる。Haskell感は薄いが、関数型の祖先たちの温かい影くらいはある
    • Grenは十分に有能な後継に見えたし、コミュニティも活発で親切だ
    • 自分もその一人だ。言語を拡張していくつもの便利機能を入れ、本質的には適切なエラーチャネルと、消去可能な和型による依存性注入をサポートするようにした
      Elmは良い言語だが、Evanは本当に有用なものを作ることに関心がなさそうで、言語運営全般はめちゃくちゃだ
    • Elmがあまりに良いからこそ、人々は停滞に失望しているのだと思う。だがその停滞こそが、Elmを良いものにしている理由でもある
  • 2023年に、なぜ今でもElmを使っているのかについて記事を書いた
    https://taylor.town/elm-2023
    2026年の今でも、同じ理由でElmを使い続けている :)
    おまけに、ClaudeはElmとかなり相性が良いように思う
    https://taylor.town/diggit-000

  • 約2年前、大好きな言語であるElmでブラウザ向けのSnakeゲームをChatGPTによるバイブコーディングで作ってみる実験をした
    当時はかなり粗く、大規模言語モデルがElmを終わらせるかもしれないと結論づけた
    今はElmをプロダクションで使っており、大規模言語モデルはずっと良くなった。むしろElmは今の大規模言語モデルに理想的な言語なので、導入を増やす可能性もあると思う。多くの言語より単純で安定しており、言語の中に強い意見を持つアーキテクチャが組み込まれているため、コードベース同士が非常によく似るからだ

    • AIのおかげで音楽にもさらにのめり込み、MIDIキーボードを買って、ちゃんとしたDAWソフトウェアも設定した
      Rustでもより多く作るようになり、Rustのドキュメントもより読むようになっている。大規模言語モデルは、それを使う対象そのものを学ばないための言い訳であってはならず、そういう姿勢なら悪いエンジニアだ
      大規模言語モデルは、受け取った結果を保守できるように調査し学ぶ時間を稼いでくれる。問題を理解していれば、プロンプトもよりうまく書ける
    • 大規模言語モデルがElmの導入を増やすかもしれないという話は、正しくもあり、そうでなくもある
      結局は学習データとRLHFにElmがどれだけ含まれているかに依存する。構造化されたフレームワークや言語はコードベースがより似通うため、生成しやすくなるという点には同意する
      しかしそれだけでは不十分で、通常、開発者の導入はそれ自体がはるかに複雑な議論だ
    • 改善されているかもしれないが、Claude CodeのようなエージェントがElmの意味のある空白で何度もつまずくのを見て、大いに失望した
      Pythonは非常にうまく扱うので奇妙に感じたし、Elmは現代の言語の中でも最も安定している部類だ。あまりに安定しているので、変わらないと文句を言われるほどだ。ただ、最後に試したのは1年ほど前なので、今は良くなっているだろうと思う
    • その見方は妥当だ。そう考えたことはなかったが、エコシステムが前に進まないなら、やはりためらうと思う
  • JavaScript関連の制限は解決されたのだろうか? 記憶では、JavaScriptと連携するにはElmのPortsメカニズムを使う必要があり、直接ラッパーを書けないようにしていたと思う
    誰かが直接JavaScriptラッパーやFFIを書けるようにフォークして、議論になったこともあった気がする

    • FFIはいまでもほとんどportsで処理する。ビュー側ではWeb Componentsを使うこともある
      これは意図的な選択で、1.0まではもちろん、その後も維持される可能性が高い
  • このプロジェクトがまだ生きているとは思わなかった。皮肉を言うつもりではないけれど、もう終わったものだと思っていた

    • プロジェクトは死んでいた。前回のリリースが7年前で、創始者がメンテナンスを止めたあと、コミュニティがBDFLモデルを乗り越えられず、そのまま止まっていた
      だから死んでいたし、今ようやく復活したということだと思う。その間にコミュニティはかなりしぼんでしまったはず
    • コミュニティに深く関わっていたわけではないが、当時参加していた人たちを知っていて、私の理解ではカスタム中置演算子の削除がコミュニティの支持を大きく失わせた
      非常に人気のある機能だったのに、言語の創始者が嫌っているという理由で、コミュニティが強く維持を求めたにもかかわらず削除された
      技術的にはおそらく正しい判断だったのだろうが、社会的には非常に不人気で、おそらく誤った判断だったと思う
    • 戻ってきてくれてうれしい。Elmにはいつも応援したくなる驚くべき優雅さがあった
    • この2年間、非常に収益性が高く無駄のない会社でElmを専門的に使ってきた
      入社前は知らなかったが、ReactやReduxなどの経験があったので素早く習得できた
      Elmコミュニティなら、これを機能と呼ぶだろう。6〜8年前に書かれたReactコードのうち、現在のReactツールチェーンで完全に同じようにうまく動くものがどれだけあるだろうか?
      価値観がまったく違う。2026年の良いReactコードは、2016年以降コンパイルできているElmコードに似て見える
    • 私もElm周辺のコミュニティは事実上消滅したと思っていた。それでも単独のメンテナーであり創始者はまだいるようだ
      Elmはチュートリアル以外では使ったことがないが、最近はGleamのフルスタックアプリを作り、その大半でコーディングエージェントを活用した。初期にはコード構造をかなり厳密に管理したが、そのやり方はかなり相性が良かった
  • Elm 1.0よりも、Elm 0.19以降のほうが気になる。0.19はElmの作者が公式に承認していないすべてのネイティブモジュールをブロックしたバージョンで、私にはそれが事実上Elmの終わりを示したように見えた

  • 1.0へ向かう発表として、これより悪いものはなかなか思いつかない。誰が気にするのか? ローカライズやアクセシビリティ対応がないなら、UIフレームワークをプロダクション準備完了の1.0と呼ぶのは筋が通らない
    サードパーティの貢献者がブラウザAPIをつなげられる範囲を制限したことが、玩具プロジェクト以外でのElmの勢いを殺したのだと思う
    今ではプロダクション向けというより、Evanがコンパイラのアイデアで遊ぶためのサンドボックスのように見える

    • その言い方は正確ではないと思う。私がメンテしているElmアプリは完全にローカライズされており、アクセシビリティもかなり良いと思う
      ローカライズは、言語ごとに大きなレコードを1つ用意し、文字列を使うアプリの各部分に渡す方法で処理している。複数形や言語固有の特殊なケースには、レコード内に単純な関数を入れられるので非常に便利だ
      アクセシビリティは、良いHTML、ports、そして自動補完のtypeaheadのような複雑なケースではWeb Componentsを組み合わせることで実現している
    • 作らせておけばいい。本当に分かっている人たちは準備ができたときに気づくし、流行に引っ張られる人たちはどうせ救えない
    • 一方では、Evanが元気そうでうれしい。言語開発についてかなり良いアイデアを持っていて、Elmは非常に興味深いプロジェクトの数々に多くのインスピレーションを与えた
      他方で、7年間何もなかったあとに小さなコンパイラ性能改善を1つ出して「1.0への道」と呼ぶのは、少しどうかと思う。悪意はないが、なぜわざわざ? もう死んでいて、喪も終わっていて、みんなとっくに去っている
      本当に驚くようなリリースが出るまでは、多くの人は気にしないと思う
  • Evanは何かを指しているのに、みんな指ばかり見ているように思う。これは実のところElm自体ではなく、Acadiaの準備に関することだと思う
    彼の発表 Economics of Programming Languages https://www.youtube.com/watch?v=XZ3w_jec1v8で、この7年間取り組んできたものを少し公開している。関数型のアイデアを適用したクエリ言語だ
    彼はWebアプリで型情報が通常壊れる境界を指摘している。言語とストレージの間、ストレージと転送の間だ
    これらの境界を越えて型情報を保てるなら、何が得られるのか? 彼が挙げた答えの1つは、より簡単なマイグレーションだ。手でSQLを書く代わりに、型の差分で処理できる
    だから正しい問いは、Elmに入る変更を見てAcadiaがどんな姿になるか推測できるか、だと思う。インクリメンタルコンパイルはクエリ言語に何をもたらすのだろうか?

    • Elmの歴史を考えると、なぜArcadiaが同じことにならないと信じられるのか?
      アイデアがどれほど良くても、Arcadiaにより未来志向でコミュニティ中心の開発モデルがなければ誰も採用しないだろう。せいぜい「XYZにインスピレーションを与えたプロジェクト」になるだけだ
      Evanはこれが次の巨大な何かだと考えているかもしれないし、実際にそうかもしれないが、Elm後の世界が十分に耳を傾けるかは分からない
  • 特定の言語機能をElmチームだけが使えるようにしていた件は撤回されたのだろうか? あれは言語を殺しかねない判断に見えた

  • Elmはかなり勢いを失ったと見てよいのだろうか? もうHNでもほとんど議論されておらず、リリースやニュースの間隔が大きい理由の1つなのか気になる
    リリース間隔を見ると、0.19.2 “Faster builds, and the Road to Elm 1.0”は2026年7月で、0.19.1 “Friendly syntax hints, faster builds”は2019年10月だ

 
GN⁺ 5 시간 전
Lobste.rs のコメント
  • わあ! Elm 0.19.1 が出たのは2019年10月21日なので、もう7年前で、それが Elm 開発に関する最後の公開ニュースでもありました
    プロジェクトの新しいニュースを見られてかなりうれしいです

    • Evan が v1 リリースを計画しているなんて、本当に楽しみです
    • 私もそれを言いに来ました
      サイドプロジェクトで Elm を使ってみたときは本当に楽しかったのですが、外から見るとコミュニティは少し静かに見えていました。とても期待できるニュースです
  • Elm は Web 開発を楽しいものにしてくれました
    1.0 が何をもたらすのか楽しみです

  • 本当にうれしいサプライズです
    Elm の 安定性はずっと気に入っていましたし、1.0 も過激な変更はしないように見えるので、個人的には良い方向だと思います

    • 説明されている 破壊的変更は、かなり大きな影響がありそうです
      == などがもはや任意の型を受け付けなくなるなら、変更しなければならない Elm コードはかなり多いはずです。アップグレード手順がどうなるのか気になります
  • Elm のアップデートを見られてうれしいです
    プログラミング言語が何年もまったくアップデートされないのは少し異例です。理由は理解できますが、世間の認識というものには不思議な面があります

    • その通りです。特に、あらゆるものが狂ったような速さで動く フロントエンドではなおさらです
  • このニュースは良いですね
    ときどき、現代フロントエンド開発の狂気から離れる良い休憩のように Elm をまた眺めたりしています

  • ZuriHac 2026 で Evan の発表を見る機会があり、新しい Elm リリースが来るとほのめかしていて本当に驚きました
    動画が近いうちに上がることを願っていますが、安定性を目指すやり方が、この業界の速い進歩への強迫観念とは相性が良くないことを理解していたようでした。私の理解では、Elm はもっと小さく速いステップを踏む可能性もあります。楽しみですし、その発表のおかげで Elm がとても恋しくなりました

  • equatablehashable 型のような、より目立つ機能を Elm がどう扱うのか気になります
    この言語の議論を呼ぶ設計上の選択の一つは、型クラスのような、より強力な Haskell 風の型システム機能を避けている点です。個人的には、自然で明確に定義された順序を持つカスタム型でさえ辞書のキーとして使えないことが、ずっと不便でした。それでも Elm の作業が続いているというのは、全体として良いニュースです

    • 型クラス風の機能には、あまり期待しすぎないほうがよさそうです
      ブログ記事の表現から推測すると、既存の制約付き型変数、つまり numberappendablecomparablecompappend に加えて、新しい 制約付き型変数をいくつか追加する程度なのではないかと想像しています