AlmidePRE-1.0

Almide · これまでの話

250日で、1万行から70万行へ。

README が何を作ると言っていたか、実際に何が出たか、途中で何を捨てたか。すべて、リポジトリ自身の履歴から取りました。

ALMIDEプログラミング言語 / オープンソース
250最初のコミットからの日数。2026年3月7日から11月11日まで
17,044コミットの数。250日のうち234日にコミットがある
277リリースの数。最初の1つは2日目
69倍Rust の伸び。10,128行から698,358行へ

節目ごとの、リポジトリの中の Rust の行数

↔ 図は左右にスワイプして全体を見られます。

0 100k 200k 300k 400k 500k 600k 700k 3月 4月 5月 6月 7月 8月 9月 10月 11月 v0.1.0 · 10,128 v0.10.0 · 74,363 v0.20.0 · 115,143 v0.30.0 · 239,200 v0.40.0 · 222,211 v0.60.0 · 315,364 v0.69.1 · 662,638 今 · 698,358

リポジトリにあるすべての .rs ファイルの行数です。コメントと空行を含みます。減ったのは7月末の一度だけで、標準ライブラリを Almide 自身で書き直したときです。

序章 — 3月7日〜9日

AI が最少のトークンで書ける言語。

最初のコミットは3月7日です。2日後、143件のコミットを経て v0.1.0 が出ます。README はこう言っていました。

Almide は、AI がコードを直接、効率よく書くための言語である。設計の目標は、LLM が最少のトークンと最少の思考で意図を表現できること。

中身は Rust で1万行でした。字句解析、構文解析、型検査、フォーマッタ。出力先は Rust と TypeScript の2つ。証明も検査器もありません。目指していたのは、書きやすいことでした。

第1章 — 3月9日〜14日

1日に4回リリースする。

v0.1.0 を出したその日のうちに、v0.2.0、v0.2.1、v0.2.2、v0.3.0 が出ます。翌日にはジェネリクスとタプル。3月11日の v0.5.0 で借用の推論が入ります。いまの中心になっているものが、ここで初めて顔を出しました。

この週に、習慣が2つ始まります。v0.5.7 の題は MiniGit が40回中40回生き残る。モデルに書かせたプログラムが実際に通るかを、数え始めました。v0.5.13 では、文法の案を複数のモデルで比べる試みが始まります。

第2章 — 3月17日〜30日

足しては、捨てる。

この2週間は、ほとんどのリリースで何かが消えています。++ は + に。uuid と crypto は標準ライブラリから外れ、JavaScript の出力は TypeScript に統合され、do ブロックは言語から消え、newtype は別名に置き換わり、暗黙の型変換は取り除かれました。

そして v0.9.5。Wasm ターゲットが標準ライブラリ全体に対応し、TypeScript ターゲットは削除される。 出力先は、Rust と TypeScript で始まり、3つになり、2つに戻り、最後にネイティブと WebAssembly になりました。デュアルターゲットは最初からの計画ではありません。3週間の試行のあとに残った形です。

3月30日の v0.10.0 で、7万4,000行。3週間で7倍になり、一人が端から端まで読める大きさは、ここで超えました。

第3章 — 4月〜5月21日

道具にする。

速度が落ちます。4月の1日あたりのコミットは30件で、3月の半分以下です。4月22日から5月1日までは、コミットが1件もありません。250日のうち、3日以上あいたのはここだけです。

出たのは、使う人のためのものでした。コンパイラを9つの crate に分割。Rust がなくても入れられるインストーラ。モデルの失敗の記録をもとにエラーメッセージを直す循環。そして v0.14.6、LLM 第一のリリース。そのまま貼れる修正案と almide fix です。REPL とエディタ連携が続きます。

脇道もありました。LLVM を使う出力は本線から外し、GPU シェーダ向けの出力を出しました。すべての値に「書き込み時にコピー」を入れ、mut をキーワードにしました。

第4章 — 5月22日〜6月10日

芯が入った4日間。

5月23日、Wasm の速さが Rust の Wasm に並ぶ。5月24日、336バイトの hello world。5月25日、Perceus。注釈もGCもないメモリ管理。5月26日、確保したものがすべて解放されることを Lean 4 で証明。

速さ、小ささ、メモリ、証明が、4日続けて出ています。最初の証明が入ったのは、80日目でした。

そして6月8日と9日。v0.26 は、この2日間で22回のパッチリリースを出しています。モジュールをまたぐバグを、1つ直しては出す、を繰り返しました。

第5章 — 7月5日〜20日

間違ったバイトは出さない。

25日間、マイナー版が出ません。そのあとの v0.28.0。v1 の trust spine が、選択式の検証つき Wasm 出力として出荷される。間違ったバイトを決して出さない。 目指すものが、正しい出力を作ることから、確かめられない出力は作らないことへ移りました。

10日後に、それが既定になります。その翌日の v0.30.0 の題は、0.29.0 が黙って出していた間違った値を直した。 既定にしたものが、黙って間違っていました。リリースの題に、そう書いてあります。

第6章 — 7月24日〜8月1日

測っているものを疑う。

9日間で、マイナー版が17個。題が物語っています。

間違ったプログラムを測っていた検査 · 緑はもう嘘をつけない。何も測っていなかった16個の検査を再び有効にした · 何もインストールしていない CI の手順が、成功を報告していた · 3つの計測を撤回する · 4.4倍の高速化を返上する

検査は緑で、何も確かめていませんでした。高速化は、測り方の誤りでした。1つずつ見つけて、公開の場で取り下げています。コードが小さくなったのも、この時期だけです。

第7章 — 8月2日〜30日

表面を引き直す。

内側が固まったので、書き手に見える部分を作り直しました。失敗の伝搬は、暗黙から明示へ。自動の ? は、非推奨にしたその日に削除しました。try_ で始まる関数の一族は、丸ごと消しました。v0.60.0 の題は、ひとこと。構造的な経路が出荷される。

第8章 — 9月〜11月7日

倍になる。

v0.60.0 から v0.69.1 のあいだに、Rust は31万5,000行から66万3,000行になりました。証明は1万行から2万4,000行に。Rust のテストは3万行から12万5,000行に。1日のコミットは58件から184件になりました。

そして、README の最初の一文が変わります。

Almide は、AI が書き、編集するコードのための静的型付きの言語である。主張は、モデルが正しく書くということではない。モデルが間違えたとき、コンパイラが書く時点でそう言い、直し方を名指しするということだ。

終章 — 11月10日・11日

人に見せる。

250日目に、初めて公開の場に出しました。投稿は自動で削除され、付いたコメントは厳しいものでした。その関数を1つ渡されたら、何をするものか分かりますか。

それで、測りました。18,843個の関数のうち、どこからも呼ばれていないのは12個。493行のファイルが1つ、どこからも読み込まれなくなったあとも3回編集されていました。95個のファイルが、役割ではなく大きさで切られていました。そして、その数が減る方向にしか動かないように、検査を1つ足しました。

README は、自分を何だと言っていたか

3月
AI が、最少のトークンで書ける言語
3月〜10月
AI が生成するコードに最適化された言語
11月
AI が間違えたとき、そう言う言語

書きやすくすることから始まり、間違いを捕まえることに変わりました。途中で捨てたもの、撤回したもの、退役させたものは、ほとんどが、この向きの変化のあいだに起きています。

時間

1日に何時間か。

コミットの時刻から、一部は答えられます。コミットがあった日を平均すると、1日のうち13.6個の時間帯に、少なくとも1件のコミットがありました。10月と11月は18個を超えます。

これは、私の時間ではありません。1日のうち20個以上の時間帯にコミットがあった日が38日あり、午前3時から5時のあいだに784件のコミットが入っています。人にはできません。私が寝ているあいだも動いていた、エージェントです。この数字が示すのは作業が動いていた長さで、私が机に向かっていた長さの記録は、手元にありません。

月ごとの、1日あたりのコミット数

↔ 図は左右にスワイプして全体を見られます。

69 3月 13.0h 30 4月 8.6h 24 5月 8.5h 51 6月 15.4h 55 7月 12.9h 58 8月 14.1h 88 9月 13.7h 148 10月 18.5h 184 11月 18.8h

各月の下の数字は、少なくとも1件のコミットがあった時間帯の、1日あたりの平均です。

大変だったこと

いちばん高くついたところ。

  • 動いているコードを捨てる。TypeScript の出力、JavaScript の出力、LLVM の経路、最初の Wasm の出力経路。どれも動いていて、どれも消しました。
  • 2日で22回のパッチリリース。1つ1つが、誰かが踏むはずだったバグです。
  • 黙って間違っていたものを、既定として出したこと。そして翌日、それをリリースの題に書いたこと。
  • 緑が何も意味していなかったと分かったこと。確かめずに通っていた16個の検査と、何も入れずに成功を報告していた CI の手順。
  • 4.4倍の高速化を返上したこと。間違っていたのは、コードではなく測り方でした。
  • 2か月で倍になったこと。自分で読める大きさを超えました。いまの設計全体が向き合っているのは、その問題です。
  • コンパイラを書く人たちに言われたこと。そして、そのいくつかは当たっていたこと。

トップページに戻る