Skip to content

v0.4.0 - Multi-Platform Testing & Windows Support

Choose a tag to compare

@kirisaki kirisaki released this 30 Oct 16:56
· 11 commits to main since this release

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_history on Windows)
    • Cross-platform build configuration with conditional compilation
  • 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

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)
  • Windows compilation issues
    • Added dummy g_interrupted flag for Windows (Ctrl+C not implemented)
    • Platform-specific includes (signal.h/unistd.h only on Unix)
    • MSVC-compatible code without POSIX-specific features
  • 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

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