Microsoftは2007年にVisual FoxProの販売を停止しましたが、多くの組織では、そのプロジェクト、フォーム、テーブル、イベント駆動言語を中心に構築されたアプリケーションが今も利用されています。FoxDevCommunityによるFoxDev Studioは、そうしたソフトウェアを別のプラットフォームへ移行する前に、そのまま使い続けられるようにする新たな試みです。

プロジェクトエクスプローラーとサンプルカテゴリを表示したVisual FoxProのSolutionサンプル
Solutionサンプルは、レガシーVFPプロジェクトの構造とサンプルランチャーを表示します。foxscript.org

このインターフェースは、FoxDev Studioが直接開くことを目指す既存のプロジェクト、フォーム、メニュー、プログラム、データベースを示しています。

このプロジェクトは、既存のVisual FoxPro 9プロジェクト、フォーム、メニュー、プログラム、テーブルを直接開くIDEとランタイムを掲げています。ドキュメントによると、同じコンパイラーとバイトコードインタープリターがエディター、配布用アプリケーション、ヘッドレスランナーで使われており、中核のVMはRustで書かれ、WebAssemblyにコンパイルされています。これは重要な違いです。レガシーなFoxProの動作は、イベントの順序、フォームの状態、ファイル形式、そしてランタイムが特定の言語構文にどのように答えるかといった細部に依存しているからです。

現在のソース行と検査パネルを表示するVisual FoxProデバッガー
デバッガーは、現在の行、コールスタック、ローカル変数、ウォッチ式、ブレークポイントを利用できます。foxscript.org

この開発ビューは、レガシーFoxProアプリケーション向けに詳細なIDEとランタイムの動作を維持するという記事の主張を支えています。

最も大きな変更は64ビット対応です。プロジェクトによれば、Visual FoxProのテーブルとメモの2GB制限は、符号付き32ビットファイルオフセットに由来します。一方、FoxDevは64ビットオフセットを使い、ファイル全体をメモリに読み込むのではなく、テーブルのバイト列をストリーミングします。リポジトリでは5.2GBオフセットでの読み書きを確認済みとされ、残る上限はDBF形式そのもの、具体的には32ビットのレコード数フィールドとメモブロックフィールドによるものと説明されています。

データベースレコードとメモフィールドを表示するVisual FoxProテーブルブラウザー
テーブルブラウザーは、データベースコンテナのレコードとメモフィールドをリンクとして表示します。foxscript.org

このデータベースビューは、直接テーブルアクセス、ファイル形式、より大きなデータの処理についての記事の説明と直接関係しています。

重要な互換性上の留意点があります。製品自身のドキュメントでは、vfp9.exeを実行してその回答に合わせることで動作を確定し、実装がずれればテストが失敗すると説明されています。サイトでは、1,722個あるVisual FoxPro 9の言語リファレンス要素のうち1,534個をテストで検証済みとし、3個は不明だとしています。GitHubページでは別途、インデックス、メモフィールドへの書き込み、一部のコントロールバインディングなど、未完了の領域も列举されています。これらの数値は、独立した検証ではなく、プロジェクト自身のテストとロードマップを示すものです。

実際の意味は、「FoxProが復活した」という表現よりも限定的です。FoxDev Studioは、既存のVFPアプリケーションを稼働させながら、現代的なホスト、64ビットデータアクセス、FoxScriptのラムダやHTTPルートといった新機能への道筋を必要とするチーム向けに設計されているようです。元のランタイムの代替として扱う前に、アプリケーションの実際のフォーム、ライブラリ、データベース、デプロイ経路をテストする必要性は残ります。

ラムダでHTTPルートを登録するFoxScriptソースとサーバー出力
FoxScriptコードはラムダでHTTPルートを登録し、出力はリスニング中のサーバーを報告します。foxscript.org

この例は、FoxScriptのラムダとHTTPルートを含む、記事で説明した新機能への道筋を示しています。