開発者が Erlang にインスパイアされたメッセージパッシングと Lisp 構文を持つ個人向けプログラミングランタイムを作成

BigGo Editorial Team
開発者が Erlang にインスパイアされたメッセージパッシングと Lisp 構文を持つ個人向けプログラミングランタイムを作成

ある開発者が VRS という個人向けプログラミングランタイムを作成した。これは Erlang 、 Lisp 、 Unix のアイデアを単一の統合プラットフォームに組み合わせたものである。 Recurse Center での滞在中に構築されたこの実験的システムは、軽量プロセスとメッセージパッシング通信を通じて楽しいプログラミング体験の創出を目指している。

デーモンベースアーキテクチャが永続的コンピューティングを実現

VRS はシステムデーモンとして動作し、開発者が様々なクライアントから接続し、切断した後に戻ってきても、プロセスがまだ実行中であることを確認できる。このアプローチは、メインプロセスを停止すると実行中のコードがすべて終了してしまう従来の開発環境とは異なる。

このシステムはグリーンスレッドを使用して軽量プロセスを実装し、単一マシン上で数百万のプロセスを実行できる。各プロセスは独自の名前空間で分離されて動作し、共有メモリではなくメッセージパッシングのみを通じて通信する。この設計により、プロセス同士が互いに干渉することを防ぎながら、単一システム上で複雑な分散スタイルのプログラミングを可能にしている。

VRS システムコンポーネント

コンポーネント 説明
sync 組み込み Urg Dialect および仮想マシン
vasd システムデーモンとしてのランタイム実装
vim vasd/vrs とクライアント実装で共有されるバイナリ
vurx libei 上のリッチ CLI クライアント
vexpj GUI ランチバークライアント

カスタム Lisp 方言がランタイムを駆動

このプラットフォームは lyric と呼ばれるカスタム Lisp 方言を使用し、プロセス、メッセージパッシング、ファイバーによる協調的マルチスレッドの組み込みサポートを含んでいる。この言語により、開発者はメインスレッドをブロックすることなく、ユーザーインタラクションや長時間実行タスクのための順次コードを書くことができる。

例えば、年次スケジュールジョブは1年間スリープする単純な無限ループとして書くことができ、ユーザーインターフェースフローはシステムの応答性に影響を与えることなく、ユーザー入力で自然にブロックする順次コードとして表現できる。

コア VRS 機能

  • 軽量プロセス: 単一マシン上で数百万実行可能なグリーンスレッド
  • メッセージパッシング: 分離されたプロセスはメールボックス経由でのみ通信
  • サービスレジストリ: 名前付きサービス発見とバインディングシステム
  • 組み込み PubSub: グローバルなパブリッシュ・サブスクライブメッセージング機構
  • 協調マルチスレッディング: プロセス内でのコルーチンとジェネレータ用ファイバー
  • ライブプログラミング: ランタイム内省機能を持つ REPL 駆動開発

コミュニティが実装上の課題について議論

コミュニティの開発者たちは、 VRS が追加機能から恩恵を受けられるいくつかの領域を特定している。一部の開発者は、 Erlang の gen_server 抽象化に類似したスーパーバイザーパターンとより堅牢なサービス管理の実装を提案している。これはクライアント・サーバー間のやり取りにおけるタイムアウト、エラー回復、状態管理を処理するものである。

「このプロジェクトが有用になるためには、 Erlang gen_srv 、スーパーバイザーの類似物を、それに関連する標準的な Erlang メッセージングロジックと共に作成する必要がある。」

他の開発者は macOS システムでのクラッシュを含む技術的問題に遭遇しており、開発者が調査を行っている。現在貢献を受け付けていない個人プロジェクトであるにもかかわらず、このシステムは類似の実験的プログラミング環境に取り組む開発者たちから関心を集めている。

組み込みサービスと開発ツール

VRS には、長時間実行プロセスが名前で自分自身を登録し、他のプロセスが発見して通信するためのインターフェースを公開できるサービスレジストリシステムが含まれている。ランタイムはまた、システム全体にデータをブロードキャストするためのグローバルなパブリッシュ・サブスクライブメカニズムも提供している。

開発ツールには、コマンドラインクライアントを通じた REPL 駆動ワークフローと、カスタムメジャーモードによる Emacs との統合が含まれている。システムはライブプログラミングとデバッグをサポートし、開発者がランタイム状態を内省し、実行中のサービスとリアルタイムでやり取りすることを可能にしている。

このプロジェクトは、幅広い互換性やエンタープライズ機能よりも開発者体験と楽しさを優先する個人向けコンピューティング環境の創出における興味深い実験を表している。

参考: vrs