みんな、これ作ったよ!気に入ってくれるといいな、もし気に入らなかったら、ぜひイシューを開いてね: https://github.com/microsoft/edit いくつかの質問や、私が個人的に興味深いと思う部分に答えると、カスタムTUIライブラリはC ABIの周りにプラグインモデルを書くために作ったんだ。見つけた既存のTUIフレームワークは、人気があってもプレーンCにうまくマッピングできないことが多かった。他のは単に大きすぎた。アリーナアロケータは、Rustで木を構築するのがかなり面倒だから存在している。bumpaloは使っていないけど、「スクラッチアリーナ」にかなり惹かれたから(https://nullprogram.com/blog/2023/09/27/)そんなアロケータを書くのは本当に難しくないんだ。Rustを選んだ理由については、実際にC、C++、Zig、Rustでプロトタイプを書いたよ!この4つの中では、個人的にZigが一番好きで、その次がC、Rust、C++の順だった。ZigはまだMicrosoftで内部サポートされていないから(信頼の連鎖など)、Cで書き続けたけど、しばらくするとZigの好きな機能が欠けていることにかなりイライラしてきた。だから、数日でRustに移植したんだ。内部サポートされているし、そんなに悪くもない。Rustがあまり好きじゃなかった理由は、アロケータのサポートがかなり弱いことと、木を構築するのが難しいことだった。安定したRustでリンクリスト用のカーソルがないのも正直言ってイライラした。でも、全体的には楽しんでいたと言えるよ。nano、kilo、micro、yoriなどは様々な理由で選ばなかった。私たちが求めていたのは、小さなバイナリで、追加のバイナリサイズの正当化なしにすべてのWindowsのバリエーションと一緒に出荷できることだった。十分なUnicodeサポートも必要だったし、SSHとのシームレスな統合を可能にするためにVT出力を中心に構築されているべきだった。最後に、Windowsへのファーストクラスのサポートも非常に重要だった。リストされたエディタの中では、microが一番使いたかったけど…単に大きすぎるんだ。自分たちのエディタを作ることを提案したけど、計画の約2倍の時間がかかったけど、それでも約4ヶ月(昨年のプロトタイピングにはもう少し)で済んだ。GuinansEyebrowsが言ったように、このプロジェクトにはかなりの「NIH」があるけど、週末はすべてこれに費やしたし、クリスマスも全部これに使ったのは、単に楽しんでいたからだよ。だから、新しいことを学びながら自分でほとんどのことを書くのを楽しんでみてはどうかな?これに取り組むことでたくさんのことを学んだし、今後のプロジェクトでも使えるよ。質問があれば教えてね!