
この記事では、自作のブラウザMoonBitのレイアウトエンジンを構築する過程が詳述されています。主にCSSのボックスモデル、Flex、Gridの座標計算モジュールを実装し、HTML/CSSパーサやCSSクエリエンジンも一部実装しました。実装の参考として、Yoga Layout EngineやRust製のTaffyを調査し、最終的には自作のエンジンをスクラッチで書くことを選択しました。Web Platform Tests (WPT)を通過することを目標に、テストケースを通じてブラウザの互換性を確保するための努力が強調されています。また、Double Dirty Bitを用いたパフォーマンスチューニングや、CSS: Containの有用性についても言及されています。 • 自作ブラウザMoonBitのレイアウトエンジンを構築した • CSSのボックスモデル、Flex、Gridの座標計算を実装 • Yoga Layout EngineやTaffyを参考にした • Web Platform Tests (WPT)を通過することを目指した • Double Dirty Bitを用いたパフォーマンスチューニングを行った • CSS: Containの有用性を実装過程で確認した

この記事では、WebAssembly Component Modelのライブラリをwa.devに公開したことについて説明しています。wa.devはWebAssembly Component Modelのパッケージレジストリで、言語に依存せず型安全な相互運用を可能にします。具体的には、シンタックスハイライト用のレンダラーライブラリ「mizchi:tmgrammar」を公開し、トークン配列をHTMLまたはANSIエスケープシーケンスに変換する機能を持っています。ライブラリはwkgを使用して取得でき、wasmtimeで実行可能です。また、JavaScriptから利用するためのバインディング生成方法も紹介されています。 • wa.devはWebAssembly Component Modelのパッケージレジストリである。 • シンタックスハイライト用のライブラリ「mizchi:tmgrammar」を公開した。 • ライブラリはトークン配列をHTMLまたはANSIエスケープシーケンスに変換する。 • wkgを使用してライブラリを取得し、wasmtimeで実行できる。 • JavaScriptから利用するためのバインディング生成方法がある。

この記事では、Viteを使用してMoonbitでフロントエンドを開発するためのプラグイン「vite-plugin-moonbit」について説明しています。このプラグインは、Moonbitを使った開発を簡素化し、ホットリロード機能を提供します。開発者は、Moonbitの設定が難しいと感じることが多いため、簡単に始められる環境を整えることが目的です。具体的には、MoonbitのビルドプロセスをViteに統合し、開発中のコードを自動的にリロードする機能を実装しています。記事では、インストール手順や基本的な使用方法、サンプルプロジェクトのリンクも提供されています。さらに、WASMを使用した例や、外部パッケージの利用方法についても触れています。 • Moonbitをフロントエンドで使う際の設定の難しさを解消するためのプラグインを開発した。 • ViteとMoonbitのビルドプロセスを統合し、ホットリロード機能を実現した。 • インストール手順や基本的な設定方法を示し、簡単に始められる環境を提供している。 • サンプルプロジェクトとして、MarkdownコンパイルやWASMライブラリの読み込み例を用意している。 • 外部パッケージの利用方法や、Luna UIフレームワークとの統合についても説明している。

Moonbit Advent Calendarの振り返りでは、Moonbitというプログラミング言語の普及を目指し、参加者を集めることに成功したことが述べられています。最初は軽いリファレンス記事を考えていましたが、他の参加者の熱意に触発され、より深い内容の記事を書くことになりました。特に、Moonbitの実利やパフォーマンスを示すことに重点を置き、実際に何かを作ることやベンチマークでの優位性を証明する記事が好評でした。また、Moonbitの機能として、演算子のオーバーロードやパターンマッチングが強力であることが強調されています。最終的に、Moonbitを使ったさまざまなプロジェクトや実装例が紹介され、言語の魅力が伝えられています。 • Moonbitの普及を目指したAdvent Calendarの成功 • 参加者の熱意に触発され、深い内容の記事を作成 • 実利やパフォーマンスを示すことが重要 • 実際に何かを作ることが好評 • Moonbitの演算子オーバーロードやパターンマッチングの強力さ • さまざまなプロジェクトや実装例の紹介

Luna UIは、軽量で高速な宣言的UIライブラリで、WebComponentsを基盤にしたSSR(サーバーサイドレンダリング)をサポートしています。著者は既存のUIライブラリに不満を持ち、自らのニーズに応じたライブラリを開発しました。Lunaは、Signalによる細粒度のリアクティビティを提供し、コンパイル時の最適化が不要なほど小型です。サンプルコードを通じて、Lunaの使い方やその軽量性が示されており、Reactと比較してもバンドルサイズが小さいことが強調されています。また、Viteとの統合を容易にするためのプラグインも開発されており、エラーレポート機能も備えています。デモとして、シューティングゲームやTodoMVCが紹介され、Lunaのパフォーマンスが実証されています。 • Luna UIは軽量で高速な宣言的UIライブラリである。 • WebComponentsを基盤にしたSSRをサポートしている。 • Signalによる細粒度のリアクティビティを提供する。 • Reactと比較してバンドルサイズが小さく、実装が簡単である。 • Viteとの統合を容易にするプラグインを開発した。 • デモとしてシューティングゲームやTodoMVCがあり、パフォーマンスが実証されている。

Moonbitのmoonコマンドには、型チェックやバックエンド指定実行、ドキュメントテスト、スナップショットテスト、型定義生成、メソッド検索、ベンチマーク、カバレッジ分析などの便利な機能が備わっています。特に、moon lintによる型チェックとlintの統合、moon runによるターゲット指定実行、moon testによるドキュメントとテストの統合が強調されています。これにより、未使用の変数や型引数に対する警告が出力され、CI環境でのエラー管理が容易になります。また、moon docコマンドを使用することで、型のメソッド一覧を簡単に確認でき、標準ライブラリのソースを読むことなく機能を理解できます。 • moonコマンドには型チェック、バックエンド指定実行、ドキュメントテストなどの機能がある • moon lintによる型チェックとlintが統合されている • moon runコマンドでターゲットを指定してプログラムを実行できる • moon testでドキュメントとテストを統合し、サンプルコードの陳腐化を防ぐ • moon docコマンドで型のメソッド一覧を確認できる • moon benchでベンチマークを実行できる • moon coverage analyzeでテストカバレッジレポートを取得できる

この記事では、最速のMarkdownコンパイラを実装したことについて述べています。特に、インクリメンタルコンパイルに焦点を当て、20000文字のテキストでも60fpsを維持できる性能を実現しています。Moonbitという言語を使用し、FFIを使わないピュアな実装で、js/wasm/native環境で利用可能です。CommonMark準拠は微妙ですが、GitHub Flavored Markdownの拡張に対応しています。CST(Concrete Syntax Tree)を採用し、差分更新を効率的に行うことで、パフォーマンスを向上させています。最終的に、他の実装と比較しても優れた速度を示しています。 • インクリメンタルコンパイルにより、編集時のパフォーマンスが向上する。 • CSTを使用して、ユーザーの入力に対して効率的に再パースを行う。 • CommonMark準拠は207/542で、実用上問題ないと判断。 • GitHub Flavored Markdownの拡張に対応している。 • 他のMarkdown実装と比較して、速度が優れている。

この記事では、Moonbitを使用してlibgit2のバインディングを作成する方法について説明しています。まず、MoonbitのNativeバックエンドを利用し、libgit2のC APIを呼び出すための基本的なNative FFIの解説が行われます。次に、簡単なC関数をMoonbitから呼び出す方法を示し、その後、実際のlibgit2ライブラリのバインディング実装に進みます。libgit2はGitの機能を提供するCライブラリであり、リポジトリの操作やコミット履歴の取得などが可能です。記事では、動的ライブラリのロード、メモリ管理、エラーハンドリングなどの課題に対処する方法も詳述されています。最終的に、MoonbitからGitリポジトリを操作できるようになることが目指されています。 • Moonbitを使用してlibgit2のバインディングを作成する方法を解説 • Native FFIの基本的な仕組みを理解する • libgit2を利用したリポジトリの操作が可能になる • 動的ライブラリのロードやメモリ管理、エラーハンドリングの課題に対処 • 簡単なC関数をMoonbitから呼び出す実装例を示す