Repository navigation
v0.4.0 - Multi-Platform Testing & Windows Support
What's New in v0.4.0
This release adds comprehensive testing infrastructure, full Windows support, and multi-platform CI testing for V4-repl.
Added
- Comprehensive unit tests for libv4repl API using doctest framework
- 11 test cases with 148 assertions covering all API functionality
- Tests for basic operations, word definitions, stack preservation, RECURSE, and v0.3.x features
- C++17-compatible test code (no designated initializers)
- Full Windows support for v4-repl executable
- Simple line input with
std::getline()on Windows (linenoise on Unix/macOS) - Custom history implementation using
std::vector - Platform-specific history file paths (
%USERPROFILE%\.v4_historyon Windows) - Cross-platform build configuration with conditional compilation
- Simple line input with
- Multi-platform CI testing on Linux, macOS, and Windows
- Matrix builds for all three platforms
- Smoke tests and unit tests running on all platforms
- Platform-specific dependency installation
- Cross-platform test infrastructure
- Auto-detection of executable paths (handles
build/Debug/on Windows) - Clear error messages when executable not found
- Auto-detection of executable paths (handles
Changed
- Updated for V4 v0.5.0 and V4-front v0.3.x compatibility
- Support for automatic frame pointer management in CALL instruction
- Documentation for all 31 new opcodes and RECURSE keyword
- Binary size increased from 67KB to 91KB (stripped release) due to new features
- Enhanced documentation
- Comprehensive user guide with all v0.3.x features
- RECURSE implementation examples (factorial, Fibonacci, GCD, etc.)
- Platform integration guide pointing to V4-ports repository
- Test results and feature documentation
Fixed
- VmConfig arena field initialization to prevent undefined behavior
- Zero-initialize VmConfig structure with
{0} - Explicitly set
cfg.arena = nullptr - Fixes macOS smoke test failures (InvalidArg error -16)
- Zero-initialize VmConfig structure with
- Windows compilation issues
- Added dummy
g_interruptedflag for Windows (Ctrl+C not implemented) - Platform-specific includes (
signal.h/unistd.honly on Unix) - MSVC-compatible code without POSIX-specific features
- Added dummy
- Cross-platform executable paths in test scripts
- Handles
build/,build/Debug/,build/Release/locations - Fixes "command not found" errors (exit code 127) on Windows CI
- Handles
Notes
- Windows version has simplified input (no line editing features like Ctrl+A/E/K/U)
- Ctrl+C interrupt handling only available on Unix/macOS
- All core REPL functionality works identically across platforms
Full Changelog: v0.3.0...v0.4.0