Visual FoxPro stopped at version 9 in 2007. A surprising amount of it is still running, in 32 bits, because rewriting a 20-year-old business app is how you lose the business. A customer wanted to keep milking their app for the foreseeable future, so here it is: the same language on a new runtime (Rust, compiled to wasm, checked against the real vfp9.exe), tables no longer stopped at 2 GB, the old 32-bit .fll add-ins still loading, and lambdas, JSON and an HTTP server bolted on for good measure. Reports are not done and the builds are unsigned. MIT because why not?
The main kick is that there is not a way to "rewrite" a foxpro app without tons of stuff along the way!
(Example: You can ship an app that internally run `CREATE REPORT` and the report builder show up. You can invoke the debugger (that as I remember is the best I used a zero alternatives as good existed)) and so on
The runtime didn’t contain the debugger or other dev tools, only the dev version/IDE did. It did contain the report writer, though.
I feel like the business apps are an easier rewrite these days rather than imperfectly recreating the runtime environment.
Now your customer has two problems instead of just one.
Ya so you can bill twice! Once to do it the way the customer wants and a second time to do it right once they realize their mistake.
MECHANIC
HOURLY RATE
$100/HR ==== STANDARD
$150/HR ==== IF YOU WATCH
$175/HR ==== IF YOU HELP
$200/HR ==== IF YOU WORKED ON IT FIRST
$250/HR ==== IF YOU TELL ME HOW TO DO MY JOB
What issues were your customer running into that made a 64-bit FoxPro necessary? What makes you more confident in rewriting the entire runtime the app runs inside of than rewriting the app itself? That seems just as risky if not more.
bigger tables (2 GB cap) and no source code changes.
Great job! 32-to-64-bit conversions are always fun :) One question though. If this is intended for desktop, why bother with WASM at all? Do you gain anything other than less performance?
Funny enough the customer is one of my dads friends that has been running the same shop for 20 years, wanted bigger tables and keep milking that for the foreseable future. I wanted something simple, no jit stuff, no gc complexity. Just a stack based interpreter. Yes it was LLM assisted like most stuff nowadays.
Is it less performance if you compare the hardware it was probably running on vs today?
[dead]
That’s great! Nice work thanks for sharing. I’ve never heard of FoxPro but I’ve seen how businesses need some app for 30+ years. Cool to see this happen.