Back-to-basics Tkinter IDE for 9 vintage + modern languages with turtle graphics
Project description
Time Warp Classic
Back-to-basics Tkinter IDE for 9 vintage + modern languages with turtle graphics.
Time Warp Classic is an educational multi-language IDE that bridges the past and present of programming, supporting 9 programming languages through an elegant graphical interface with integrated turtle graphics, inspired by the golden age of computing.
๐ Features
Multi-Language Support
Execute code in 9 different programming languages โ six with full built-in interpreters and three delegating to external runtimes:
Built-in Interpreters:
- PILOT (1968) โ Educational computer-assisted instruction
- BASIC (1964) โ Classic line-numbered programming with turtle graphics
- Logo (1967) โ Visual turtle graphics programming
- Pascal (1970) โ Structured programming with strong typing
- Prolog (1972) โ Logic programming with facts, rules, and backtracking
- Forth (1970) โ Stack-based concatenative programming
External Runtime Executors:
- Perl (1987) โ Text processing and pattern matching (requires
perl) - Python (1991) โ Modern general-purpose programming (uses host Python)
- JavaScript (1995) โ Web scripting with ES6+ features (requires Node.js)
Professional IDE Interface
- Menu System โ File, Edit, Program, Debug, Test, Performance, Preferences, About
- Syntax Highlighting โ Real-time syntax coloring via Pygments (with plain-text fallback)
- Line Numbers โ Always-visible line numbering for easy navigation
- Integrated Editor โ Code editing with undo/redo, find & replace (regex support)
- Output Panel โ Immediate program execution feedback
- Turtle Graphics Canvas โ Visual programming with integrated graphics display
- Theme Support โ 9 color themes (Light, Dark, Classic, Solarized Dark/Light, Monokai, Dracula, Nord, High Contrast) with persistence
- Customizable Fonts โ 7 font sizes (Tiny 8 pt to Giant 22 pt) plus system monospace families
- Debug Tools โ Debug mode toggle, breakpoint management, error history tracking
- Performance Tools โ Execution statistics, optimization, and profiling toggle
- Settings Persistence โ Theme, font, and preferences saved to
~/.timewarp_settings.json
Educational Focus
- Enhanced Error Messages โ Detailed error reporting with line numbers and context
- Debug Tools โ Breakpoint support, debug mode, error history
- Testing Framework โ Built-in smoke tests and full test suite via menu
- Example Programs โ Comprehensive demos for every language
- Immediate Feedback โ Run code with F5, see results instantly
- Visual Programming โ Logo turtle graphics for immediate visual learning
๐ฆ Installation
Prerequisites
- Python 3.9 or higher (tested up to 3.14)
- tkinter (usually included with Python)
- pip package manager
- Node.js (optional โ for JavaScript execution)
- Perl (optional โ for Perl execution)
Quick Start
-
Clone the repository:
git clone https://github.com/James-HoneyBadger/Time_Warp_Classic.git cd Time_Warp_Classic
-
Launch with the setup script (recommended):
python3 run.pyThis automatically creates a virtual environment, installs dependencies, and launches the IDE.
Or use the platform-specific scripts:
./run.sh # Linux / macOS run.bat # Windows
-
Or install manually:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt python Time_Warp.py
See SETUP.md for detailed installation, troubleshooting, and advanced options.
๐ฆ Releases
This repository publishes Python package releases through GitHub Actions using tag-based workflows:
- Stable tags (
vX.Y.Z) publish to PyPI - Prerelease tags (
vX.Y.Z-rcN,vX.Y.Z-betaN,vX.Y.Z-alphaN) publish to TestPyPI
Tag Examples
# Prerelease to TestPyPI
git tag v1.3.2-rc1
git push origin v1.3.2-rc1
# Stable release to PyPI
git tag v1.3.2
git push origin v1.3.2
Workflows
- Stable publish workflow:
.github/workflows/publish-pypi.yml - Prerelease publish workflow:
.github/workflows/publish-testpypi.yml - GitHub Packages (GHCR) workflow:
.github/workflows/publish-ghcr.yml
GitHub Packages (GHCR)
GitHub Packages will show a published package after pushing a version tag (vX.Y.Z).
- Package registry:
ghcr.io - Package name:
ghcr.io/james-honeybadger/time-warp-classic
# Pull latest stable image
docker pull ghcr.io/james-honeybadger/time-warp-classic:latest
# Run on Linux with X11 forwarding (GUI)
xhost +local:docker
docker run --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
ghcr.io/james-honeybadger/time-warp-classic:latest
Use a specific release image tag (for example v1.3.2) instead of latest when needed.
One-time setup: configure Trusted Publishers for this repository on both PyPI and TestPyPI, and ensure GitHub environments
pypiandtestpypiexist.
๐งช Testing
Time_Warp_Classic includes a comprehensive test suite to ensure code quality and reliability.
Running Tests
From Command Line
# Run all tests
python scripts/run_tests.py
# Run specific test types
python scripts/run_tests.py unit # Unit tests only
python scripts/run_tests.py integration # Integration tests only
python scripts/run_tests.py smoke # Quick smoke test
# Run with coverage
python scripts/run_tests.py --coverage
From Within the Application
Use the Test menu in the IDE:
- Run Smoke Test โ Quick functionality check
- Run Full Test Suite โ Complete test suite with verbose output
Test Structure
tests/
โโโ conftest.py # Shared fixtures and configuration
โโโ test_interpreter.py # Core interpreter tests
โโโ test_basic.py # BASIC language tests
โโโ test_logo.py # Logo language tests
โโโ test_pilot.py # PILOT language tests
โโโ test_pascal.py # Pascal language tests
โโโ test_prolog.py # Prolog language tests
โโโ test_forth.py # Forth language tests
โโโ test_executors.py # Subprocess executor tests
โโโ test_all_commands.py # Cross-language command tests
โโโ test_gui.py # GUI tests
โโโ test_stubs.py # Stub class tests
โโโ test_languages_package.py # Language package tests
๐ Getting Started
Using the GUI
When you launch Time_Warp.py, you'll see the main IDE interface:
- Select Language - Choose from the dropdown (PILOT, BASIC, Logo, etc.)
- Write Code - Use the left editor panel
- Run Program - Press F5 or use Program โ Run Program
- View Results - See output in the right panel and graphics below
Quick Example
Try this Logo program:
REPEAT 4 [
FORWARD 100
RIGHT 90
]
Or this BASIC program:
10 PRINT "Hello from the past!"
20 FOR I = 1 TO 5
30 PRINT "Count: "; I
40 NEXT I
50 END
Loading Examples
Via Menu:
- Program โ Load Example
- Select a language submenu
- Choose an example program
Via File Menu:
- File โ Open File...
- Navigate to
examples/[language]/ - Select an example file
๐ Documentation
User Documentation
- Quick Start Guide โ Get up and running in 5 minutes
- Language Tutorials โ Guided tutorials for all 9 languages
- Example Programs โ Guided tour of example programs
Technical Documentation
- Technical Reference โ Architecture and implementation details
Additional References
- Documentation Index โ Full doc suite overview
- FAQ โ Frequently asked questions
- Troubleshooting โ Common issues and solutions
Language References
Individual reference docs for each language are in docs/languages/:
PILOT, BASIC, Logo, Pascal, Prolog, Forth, Perl, Python, JavaScript.
๐จ Supported Languages
Vintage Languages (Built-in Interpreters)
PILOT (1968)
Computer-Assisted Instruction language designed for educational software.
T:Welcome to PILOT programming!
A:What is your name?
T:Hello, *NAME*!
BASIC (1964)
The classic beginner's language with line numbers and turtle graphics.
10 PRINT "Drawing a square..."
20 FOR I = 1 TO 4
30 FORWARD 100
40 RIGHT 90
50 NEXT I
Logo (1967)
Educational language famous for turtle graphics.
REPEAT 36 [
FORWARD 100
RIGHT 10
]
Pascal (1970)
Structured programming language emphasizing clear code.
program Hello;
begin
WriteLn('Hello from Pascal!');
end.
Prolog (1972)
Logic programming with facts, rules, and queries.
parent(john, mary).
parent(john, tom).
sibling(X, Y) :- parent(P, X), parent(P, Y), X \= Y.
Forth (1970)
Stack-based concatenative programming language.
: SQUARE DUP * ;
5 SQUARE .
Modern Languages (External Runtime Executors)
Perl (1987)
Powerful text processing and scripting. Requires perl on PATH.
my @numbers = (1, 2, 3, 4, 5);
my $sum = 0;
$sum += $_ for @numbers;
print "Sum: $sum\n";
Python (1991)
Clean, readable general-purpose programming. Uses the host Python interpreter.
numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
print(f"Squares: {squares}")
JavaScript (1995)
Modern web scripting with ES6+ features. Requires Node.js on PATH.
const numbers = [1, 2, 3, 4, 5];
const squares = numbers.map(n => n ** 2);
console.log(`Squares: ${squares}`);
๏ฟฝ๏ธ Project Structure
Time_Warp_Classic/
โโโ Time_Warp.py # Thin entry point (launches gui.app.TimeWarpApp)
โโโ run.py # Cross-platform launcher with venv/dependency setup
โโโ run.sh / run.bat # Platform-specific launcher scripts
โโโ README.md # This file
โโโ requirements.txt # Python dependencies
โโโ pyproject.toml # Python project metadata and tool config
โ
โโโ gui/ # GUI package (tkinter IDE)
โ โโโ app.py # TimeWarpApp โ main IDE window and layout
โ โโโ menus.py # Menu bar construction (8 menus)
โ โโโ dialogs.py # Find/Replace dialogs, About, error history
โ โโโ themes.py # 9 themes, font sizes, extension mappings
โ
โโโ core/ # Core interpreter engine
โ โโโ interpreter.py # Time_WarpInterpreter โ central execution engine
โ โโโ stubs.py # Placeholder classes (audio, games, hardware, IoT)
โ โโโ languages/ # Language-specific executors
โ โ โโโ base.py # SubprocessExecutor base class
โ โ โโโ pilot.py # TwPilotExecutor (built-in)
โ โ โโโ basic.py # TwBasicExecutor (built-in)
โ โ โโโ logo.py # TwLogoExecutor (built-in)
โ โ โโโ pascal.py # TwPascalExecutor (built-in)
โ โ โโโ prolog.py # TwPrologExecutor (built-in)
โ โ โโโ forth.py # TwForthExecutor (built-in)
โ โ โโโ perl.py # PerlExecutor (subprocess โ perl)
โ โ โโโ python_executor.py # PythonExecutor (subprocess โ python)
โ โ โโโ javascript_executor.py # JavaScriptExecutor (subprocess โ node)
โ โโโ features/
โ โ โโโ syntax_highlighting.py # Pygments-based highlighting + line numbers
โ โโโ optimizations/ # Performance optimizer, GUI optimizer, memory manager
โ โโโ utilities/ # Helper utilities
โ
โโโ examples/ # Example programs organized by language
โ โโโ pilot/ basic/ logo/ pascal/ prolog/ forth/
โ โโโ perl/ python/ javascript/
โ โโโ README.md # Examples documentation
โ
โโโ docs/ # Comprehensive documentation
โ โโโ README.md # Documentation index
โ โโโ INDEX.md # Full doc suite navigation
โ โโโ QUICK_START.md # Quick start guide
โ โโโ FAQ.md # Frequently asked questions
โ โโโ TROUBLESHOOTING.md # Troubleshooting guide
โ โโโ user/ # User guides
โ โ โโโ LANGUAGE_TUTORIALS.md
โ โโโ dev/ # Developer docs
โ โ โโโ TECHNICAL_REFERENCE.md
โ โโโ languages/ # Per-language reference (9 files)
โ
โโโ tests/ # Test suite (pytest)
โโโ scripts/ # Launcher and test-runner scripts
โจ๏ธ Keyboard Shortcuts
Program Execution
- F5 โ Run current program
File Operations
- Ctrl+N โ New file
- Ctrl+O โ Open file
- Ctrl+S โ Save file
- Ctrl+Q โ Exit application
Editing
- Ctrl+Z โ Undo
- Ctrl+Y โ Redo
- Ctrl+X โ Cut
- Ctrl+C โ Copy
- Ctrl+V โ Paste
- Ctrl+A โ Select all
- Ctrl+F โ Find
- Ctrl+H โ Find & Replace
๐ฏ Use Cases
Education
- Learn Programming Fundamentals - Start with PILOT or BASIC
- Explore Programming Paradigms - Compare procedural, logic, and functional styles
- Visual Learning - Use Logo for immediate visual feedback
- Historical Perspective - Experience the evolution of programming languages
Hobbyist Programming
- Retro Computing - Experience classic languages on modern hardware
- Creative Coding - Use turtle graphics for artistic expression
- Language Exploration - Try 9 languages without multiple installations
- Quick Prototyping - Test algorithms in different paradigms
Teaching
- Classroom Tool - Teach multiple languages with one IDE
- Interactive Lessons - Use example programs as teaching aids
- Comparative Learning - Show same concepts across languages
- Hands-on Practice - Immediate execution and feedback
๐ง System Requirements
Minimum Requirements
- OS: Windows 7+, macOS 10.12+, Linux (any modern distribution)
- Python: 3.9 or higher
- RAM: 512 MB
- Display: 1024x768 or higher
Recommended Requirements
- OS: Windows 10+, macOS 11+, Fedora 40+, Ubuntu 22.04+
- Python: 3.11 or higher
- RAM: 2 GB
- Display: 1920x1080 or higher
Required
- tkinter โ GUI framework (usually included with Python)
Recommended (Optional)
- pygame-ce โ Graphics and multimedia support (community edition; or
pygame) - Pillow โ Image processing features
- Pygments โ Syntax highlighting in the editor
Development Only
- pytest โ Testing framework
- black โ Code formatting
- flake8 โ Linting
All optional packages degrade gracefully โ the IDE works without them, with reduced features noted at startup.
๐ค Contributing
Contributions are welcome! Please see TECHNICAL_REFERENCE.md for architecture details.
Quick Contributing Guide
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes and test thoroughly
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Setup
# Clone your fork
git clone https://github.com/YOUR_USERNAME/Time_Warp_Classic.git
cd Time_Warp_Classic
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install all dependencies (runtime + dev tools)
pip install -r requirements.txt
# Run tests
pytest
# Format code
black .
# Lint code
flake8
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- PILOT Language โ Inspired by John Amsden Starkweather's original 1968 design
- BASIC โ Tribute to Kemeny and Kurtz's accessible programming vision
- Logo โ Honoring Seymour Papert's educational computing legacy
- Pascal โ Niklaus Wirth's vision of structured programming
- Prolog โ Alain Colmerauer's logic programming breakthrough
- Forth โ Charles H. Moore's elegantly minimal stack machine
- Classic Computing Community โ For keeping vintage computing alive
- Open Source Contributors โ Everyone who helps improve Time Warp
๐ Support
- Documentation: See the
docs/directory - Issues: Report bugs on GitHub Issues
- Questions: Check the FAQ first
- Community: Share your programs and experiences!
๐ Learning Resources
For Beginners
Start with PILOT or BASIC, then try Logo for visual programming.
For Intermediate Programmers
Explore Pascal for structured programming, then try Prolog for logic programming or Forth for stack-based thinking.
For Advanced Users
Compare implementations across all 9 languages, study the Technical Reference, or extend the interpreter with new features.
๐ง Roadmap
- Syntax highlighting in editor (via Pygments)
- Debug mode with breakpoints and error history
- Comprehensive example programs for all 9 languages
- Language tutorials and reference documentation
- 9 color themes with persistence
- Performance optimization system
- Code completion and IntelliSense
- Plugin system for custom languages
- Export programs to standalone executables
- Web-based version
Time Warp Classic โ Programming Through the Ages ๐ฐ๏ธ
ยฉ 2025โ2026 Honey Badger Universe | Educational Software
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file timewarp_classic-1.3.4.tar.gz.
File metadata
- Download URL: timewarp_classic-1.3.4.tar.gz
- Upload date:
- Size: 209.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78deae6eef01916496884cd2fbc5c19474b8aa06bf1bb36c41340b8d0cf1ae86
|
|
| MD5 |
9eca495e7513606d54e41bcedc809456
|
|
| BLAKE2b-256 |
74de2132678289f244dab890ab12d8eee98426da35357dff6c716b87ac97f2c4
|
Provenance
The following attestation bundles were made for timewarp_classic-1.3.4.tar.gz:
Publisher:
publish-pypi.yml on James-HoneyBadger/Time_Warp_Classic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
timewarp_classic-1.3.4.tar.gz -
Subject digest:
78deae6eef01916496884cd2fbc5c19474b8aa06bf1bb36c41340b8d0cf1ae86 - Sigstore transparency entry: 989409210
- Sigstore integration time:
-
Permalink:
James-HoneyBadger/Time_Warp_Classic@a7901824fd26cf45630bdd1be76d5e4f5f5c7b3d -
Branch / Tag:
refs/tags/v1.3.4 - Owner: https://github.com/James-HoneyBadger
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@a7901824fd26cf45630bdd1be76d5e4f5f5c7b3d -
Trigger Event:
push
-
Statement type:
File details
Details for the file timewarp_classic-1.3.4-py3-none-any.whl.
File metadata
- Download URL: timewarp_classic-1.3.4-py3-none-any.whl
- Upload date:
- Size: 144.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5affe08ef7daf28b8df0505c7860912ab2eced07fdf2483e0a4aa57b260b7115
|
|
| MD5 |
0e88e6756073dafb4b9d7fff4737ddd7
|
|
| BLAKE2b-256 |
c21bf906714b98b2047e3b724fb71543b193bed2b346a65ddb2e466bf2596b62
|
Provenance
The following attestation bundles were made for timewarp_classic-1.3.4-py3-none-any.whl:
Publisher:
publish-pypi.yml on James-HoneyBadger/Time_Warp_Classic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
timewarp_classic-1.3.4-py3-none-any.whl -
Subject digest:
5affe08ef7daf28b8df0505c7860912ab2eced07fdf2483e0a4aa57b260b7115 - Sigstore transparency entry: 989409281
- Sigstore integration time:
-
Permalink:
James-HoneyBadger/Time_Warp_Classic@a7901824fd26cf45630bdd1be76d5e4f5f5c7b3d -
Branch / Tag:
refs/tags/v1.3.4 - Owner: https://github.com/James-HoneyBadger
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@a7901824fd26cf45630bdd1be76d5e4f5f5c7b3d -
Trigger Event:
push
-
Statement type: