FoxDevCommunity / FoxDevStudio
git clone https://github.com/FoxDevCommunity/FoxDevStudio.git
A modern IDE and 64-bit runtime for Visual FoxPro 9 applications.
—
stars, 24h
—
stars, 7 days
+117
stars, 30 days · #1,959
117
★ total
8
forks · 16 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageRust
LicenseMIT
Created2026-09-22 (28d ago)
Last push10d ago
Watchers7
OwnerOrganization
Links
- GitHub: github.com/FoxDevCommunity/FoxDevStudio
- Homepage: https://foxscript.org
- Releases · Issues · Hacker News mentions
README excerpt
# FoxDev Studio A modern Visual FoxPro style IDE built with Electron, React and Fluent UI. Milestone 1 delivers the IDE shell and the visual designers: - **Form Designer** with a VFP-like toolbox, drag/resize/marquee selection, grid snapping, page frames, grids, containers, clipboard and undo/redo. - **Properties Window** (All / Data / Methods / Layout / Other) with typed editors and VFP property names and defaults. - **Method editor** (CodeMirror) opened by double-clicking a control or an event. - **Run Form** (Ctrl+E) preview rendered with live Fluent UI controls; fired events show in the Output panel. - **Menu Designer** with a live menu-bar preview. - **Project Explorer** over JSON project files (`.fxproject`), forms (`.fxf`), menus (`.fxm`) and programs (`.prg`). Milestone 2 adds the language: a FoxPro compiler and bytecode VM written in Rust and compiled to WebAssembly, plus the runtime that puts live forms on screen. - **Compiler and VM** (`crates/foxvm`): lexer, error-recovering parser, bytecode compiler and a fiber-based interpreter with 151 built-in functions. The editor lints through the same compiler. - **Run** a form (Ctrl+E), a program (Ctrl+D) or the project main (F5). Forms appear on the **Screen** tab and their methods execute: `THISFORM.pgfMain.Page1.lblGreeting.Caption = cMsg` updates the label as you would expect. - **MESSAGEBOX**, **INPUTBOX** and **WAIT WINDOW** park the running program until answered, without freezing the UI. - **Menus run**: `DO Main.fxm` installs the menu bar and its items execute their command or procedure text. - **Command Window** (Ctrl+F2) and an **Output** window, with an event trace toggle. - **Build App...** compiles the project to a `.fxa` bundle; **Build Executable...** wraps that bundle in a copy of the installed runtime, producing a folder with ` .exe` that runs the application with no IDE. The **data engine** has started: `USE` opens a table, `SELECT` chooses a work area, `GO` and `SKIP` move the record pointer, and a field reads by name (`custno`, `customer.custno`, and `m.custno` for the memory variable of the same name), memo fields included. The host owns the bytes and the VM owns the meaning: the main process seeks and reads, and records are decoded in the VM a page at a time. `SCAN`/`ENDSCAN` and `LOCATE`/`CONTINUE`/`FOUND()` walk a table, with the scopes (ALL, REST, NEXT n, RECORD n) and FOR/WHILE clauses; `SET DELETED ON` makes every movement step over deleted records. **SELECT-SQL** runs: a select list with expressions, `*`, `AS` names and the aggregates COUNT/SUM/AVG/MIN/MAX; several sources joined by a WHERE clause or by INNER and LEFT OUTER JOIN; WHERE, GROUP BY, ORDER BY, DISTINCT and TOP n; uncorrelated subqueries in `IN`, `NOT IN`, `= ANY`, `= SOME` and `EXISTS`; and `INTO CURSOR` or `INTO ARRAY`, where the array may be a property such as `THISFORM.aSamples`. A query is compiled to nested loops over the same primitives a hand-written SCAN uses, so it reads a table larger than me