Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| longforth:start [2024/07/28 07:00] – [NibbleForth] gedbadmin | longforth:start [2024/08/26 16:37] (current) – [My Approach] gedbadmin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== A Persistent Version of Forth ====== | + | ====== |
| For me, personally, the best way to start learning about the design of persistent virtual machines is to create a working persistent implementation of the [[wp> | For me, personally, the best way to start learning about the design of persistent virtual machines is to create a working persistent implementation of the [[wp> | ||
| Line 23: | Line 23: | ||
| Rather than working from a specification, | Rather than working from a specification, | ||
| - | I have chosen NibbleForth over more compact implementations such as [https:// | + | I have chosen NibbleForth over more compact implementations such as [[https:// |
| NibbleForth was written by [[https:// | NibbleForth was written by [[https:// | ||
| Line 31: | Line 31: | ||
| ====== My Approach ====== | ====== My Approach ====== | ||
| - | I don't have much spare time to spend on this project, so I need to break the whole think up into neat little chunks. | + | I don'st have much spare time to spend on this project, so I need to break the whole think up into neat little chunks. |
| - | - Python Console Implementation | + | The goal is to move as quickly as possible |
| - | - Extract the core primitives from NibbleForth into my own console driven implementation that will allow me to run Forth code but not define word. | + | |
| - | - Add the compiler and words required for writing structured code to the point where I can run Forth code at the command line. | + | - Simple Execution |
| - | - Update the implementation to support progressive word definitions. | + | - [[>Step 1a - Execution - Python |
| - | - Build up a full test suite of forth code that can be automatically executed. | + | - [[>Step 1b - Execution - SQL + PHP version with tests|SQL + PHP version with tests]] |
| - | - Python SQL Implementation | + | - [[>Step 1c - Execution - HTMLX based debugger|HTMLX based debugger]] |
| - | - Redefine core words to execute, using SQLite, against database tables instead of Python | + | - Compilation |
| - | - Update the test suite to execute across multiple Python instances access the same database file to ensure that my implementation is persistent. | + | - [[>Step 2a - Compilation - Python script |
| - | | + | - [[>Step 2b - Compilation - SQL + PHP version with tests|SQL + PHP version with tests]] |
| - | - Write a simple web front end that will allow me to develop and test LongForth in my browser. | + | - [[>Step 2c - Compilation - HTMLX based debugger|HTMLX based debugger]] |
| - | - PHP and MySql Port | + | |
| - | - Port LongForth to PHP and MySql, ensuring that the effort to Port and maintain multiple implementations is kept simple and straightforward. | + | |
| - | - Interactive Web Front End | + | |
| - | - Extend the Web Front End to provide the ability to interact with the VM state, stepping through code and viewing the changes to internal state. | + | |