Skip to content

N-Prolog ver 5.00 Release Notes

Choose a tag to compare

@sasagawa888 sasagawa888 released this 13 Apr 06:40

N-Prolog ver 5.00 Release Notes
Overview

N-Prolog ver 5.00 has been released.

This version focuses on extensive improvements to the compiler, including major bug fixes and stability enhancements.
As a result, previously problematic control structures are now handled correctly and reliably.

Major Changes

  1. Significant Compiler Improvements
    Refactored and improved core parts of the compiler
    Fixed a wide range of bugs
    Performed repeated stress testing to ensure robustness
    Verified that all previously written example programs can now be compiled successfully
  2. Full Support for -> ; (if-then-else)
    Correct handling of:
    A -> B ; C
    Multi-branch conditions
    Nested structures

Previously, these patterns were a weak point of the compiler.
In this version, even deeply nested if-then-else constructs are compiled correctly and behave consistently with the interpreter.

  1. Introduction of case/1 Predicate
    Added a new predicate:
    case([Cond1 -> Body1,
    Cond2 -> Body2,
    ...
    | Else])
    Features
    Originally a standard predicate in ARITY/PROLOG
    Provides a clean way to express multi-branch and nested conditionals
    Internally used by the compiler to transform -> ; constructs
    Background

Although case/1 existed in ARITY/PROLOG, it had not been implemented before due to limited perceived use.
However, it turned out to be highly effective for:

Simplifying nested condition handling
Improving compiler reliability
Stability Improvements
Extensive stress testing was performed
Special focus on conditional branching logic
High success rate confirmed across practical code examples
Current Status

With this release:

The N-Prolog compiler has reached a near-complete and practical level of maturity.

Future Plans
Continue improving stability based on user feedback
Address edge cases and rare control-flow patterns
Further refine the compiler for reliability
Developer Notes

Handling -> ; and its nested forms correctly was one of the most challenging parts of the compiler.

With this milestone achieved, the compiler is now stable enough for practical use.
This release represents a significant step toward a robust and reliable Prolog system.