📈 GH Trending Explorer 🎲 Surprise me

← all repos

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

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