Skip to content

Releases: sasagawa888/nprolog

N-Prolog Version 3.41

13 Nov 22:49
Compare
Choose a tag to compare

Release Notes: N-Prolog ver3.41


In this release, we have addressed a bug introduced in the previous compiler improvements. This issue caused predicates that execute directly, such as :- op(...), to fail to compile properly.

Key Fixes:

  • Fixed the compilation process for direct execution predicates (e.g., :- op(...)).
  • Verified correct compilation functionality using Professor Iitaka's code.

Background:

The bug stemmed from recent updates to improve the compiler. It was difficult to detect the issue with my own code, so a swift fix was implemented.


Thank you for your reports and cooperation.

N-Prolog Version 3.40

12 Nov 08:16
Compare
Choose a tag to compare

N-Prolog ver3.40 Release Notes

Compiler Improvements

  • Optimization of SLD Resolution
    Previously, the SLD resolution was handled by reusing the interpreter's prove_all. This has now been replaced with the dedicated compiler function exec_all. This change allows the process to bypass debugging features and thus run more quickly.

  • Static Analysis of Cut and Disjunctions
    The handling of cuts and disjunctions is now statically analyzed at compile time, leading to more efficient code generation. This results in a modest speed improvement, though not a dramatic one.

  • Static Linking of Functions and Inline Expansion
    Functions that were previously dynamically linked have now been statically linked, and inline expansion has been implemented. This has contributed to a measurable increase in execution speed.

Future Challenges

  • Optimization of Predicates That Can Be Treated as Functions
    The next focus will be on optimizing predicates that can be treated as functions at compile time. This will involve applying the concept of multi-valued functions to improve efficiency further. However, this is a long-term goal that will require considerable time and effort.

Summary

N-Prolog ver3.4 introduces significant compiler improvements, such as static analysis and inline expansion, which lead to better performance. The next step is to focus on optimizing predicates during compilation, with an emphasis on multi-valued functions, which will be explored in future releases.

N-Prolog Version 3.36

24 Oct 06:36
Compare
Choose a tag to compare

N-Prolog ver3.36 Release Notes

Release Date

October 24, 2024

Changes and Improvements

1. Adjustment of Key Input in Non-REPL Mode

  • Fixed an issue where key input was not properly recognized in non-REPL mode, improving usability in non-interactive environments.

2. Bug Fixes for get0/2 and get/2 File Input

  • Fixed bugs in file input processing with get0/2 and get/2 that occurred under certain conditions. File data retrieval is now more stable.

3. Correction of Atom Display with Quotes

  • Fixed an issue with the display of atoms containing quotes, ensuring that atoms are now formatted correctly, improving usability during debugging.

4. Bug Fixes for End-of-File in Edlog Editor

  • Fixed an issue that occurred at the end of a file when using the Edlog editor, improving stability and preventing unexpected behavior during file operations.

5. Bug Fix for abs Function

  • Fixed a bug in the abs function, which returned incorrect results under certain conditions.

6. Changes to expt Function

  • The exponentiation function expt has been unified under the ^ operator. The redundant ++ operator has been removed, enhancing consistency in code and allowing for more intuitive mathematical expressions.

7. save/0 Function Now Works as Specified

  • The save/0 function has been fixed to operate as specified. save/0 now saves the current internal database to the startup.pl file, which will be automatically loaded when the system starts up. This ensures proper data persistence and automatic loading.

8. New edit/2 Predicate Added

  • The edit/2 predicate has been added. If the second argument is r, the file is reloaded using reconsult, while c reads the file using the consult predicate. This allows for more flexible file loading options.

Future Plans

  • Following this stability-focused release, we plan to continue with further feature enhancements and optimizations.
  • Based on user feedback, we will address bug fixes and add new features in the next release.

N-Prolog Version 3.33

14 Oct 03:31
Compare
Choose a tag to compare

N-Prolog Ver 3.33 Release Notes

We are pleased to announce the release of N-Prolog Ver 3.33. In this update, we have made improvements to the break/0 predicate and enhanced the syntax highlighting in the Edlog editor. Please see the details below.
Changes

  1. break/0 Enhancements

We have improved the behavior of break/0 to make it more intuitive in preserving the state of variables and debugging environments. When starting a new recursive top level, the variables from the original environment are now retained, allowing for smoother debugging workflows.
2. Syntax Highlighting in the Edlog Editor

We have significantly enhanced the syntax highlighting in the Edlog editor. Notably, the following improvement has been made:

Expressions with operators and numbers in sequence (e.g., 1+2*3) are now highlighted correctly.

This improvement boosts code readability and provides a more efficient development environment.
Bug Reports & Feedback

Although we have made several feature improvements in this release, we are continuously seeking feedback and bug reports from our users. If you encounter any issues or have suggestions for further improvements, please don't hesitate to report them.

N-Prolog Version 3.31

09 Oct 23:16
Compare
Choose a tag to compare

N-Prolog ver3.31 Release Notes

Release Date: October 10, 2024

In this release, we focused on fixing bugs related to predicates that handle terminal output and color changes, specifically those following the ansi_*** format.

Improvements and Fixes

  • Bug Fixes for Terminal Output and Color Changes
    The predicates responsible for displaying text in the terminal and altering colors had bugs that went unnoticed since they were not included in the test cases. This release addresses and resolves these issues.

With these fixes, users can now effectively use these predicates, making it easier to create simple games and enhance their N-Prolog experience.

N-Prolog Version 3.30

29 Sep 04:47
Compare
Choose a tag to compare

N-Prolog ver3.3 Release Notes

Release Date: September 29, 2024

Key Improvements and Changes

Enhanced Error Detection

In this release, we have thoroughly tested error detection mechanisms. We significantly improved the system's resilience to unexpected and invalid inputs. Debugging can become a major challenge if unnoticed code generates incorrect data, so we focused on implementing more robust error handling. This enhancement should make it easier for users to identify and fix issues.

Improved Compatibility with ARITY/PROLOG

We increased compatibility with other Prolog implementations, particularly ARITY/PROLOG. This improvement allows for smoother code migration and reuse across different environments.

Expanded Test Cases

We ran extensive tests using pre-existing test cases and ensured the system can handle a wide range of scenarios. Based on these tests, we believe that no major issues remain at this time.

Future Plans

We are open to receiving bug reports and feedback from users. Based on this release, we plan to continue improving and refining the system. We will keep working on enhancing both functionality and stability.

Thank you for using N-Prolog!

N-Prolog Version 3.22

21 Sep 05:41
Compare
Choose a tag to compare

N-Prolog Version 3.22 Release Notes
Updates
Security Improvements

Vulnerability Fix for gettoken() Function: Addressed the buffer overflow vulnerability pointed out by JVN. This enhances safety by preventing resource errors during input processing, ensuring more secure operation.

Important Notes

It is recommended to upgrade from previous versions, especially if there are security concerns. Please make sure to update to the latest version.

N-Prolog Version 3.20

16 Sep 23:16
Compare
Choose a tag to compare

N-Prolog ver3.2 Release Notes

We are pleased to announce the release of N-Prolog ver3.2!

In this release, we have focused on making detailed improvements to ensure compatibility with ARITY/PROLOG. We believe that N-Prolog has now achieved near-complete compatibility. From our tests and benchmarks, we can confirm that users familiar with ARITY/PROLOG should find N-Prolog ver3.2 easy to use.
Key Improvements:

Enhanced Compatibility with ARITY/PROLOG
We have made numerous adjustments to recreate the behavior based on several Prolog systems, ensuring that even Prolog code from the 1980s runs smoothly.

Performance
In our recent benchmark tests, the performance of N-Prolog was quite satisfactory. While it does not match the speed of more optimized systems like SWI-Prolog, its lightweight and simple implementation make it ideal for learning and educational purposes. The simplicity helps beginners grasp the fundamentals of Prolog more easily.

Running Legacy Prolog Code
N-Prolog is well-suited for running older Prolog code from the 1980s. With the power of modern computers, the speed of predicate logic processing is more than adequate, allowing users to experience and run code from classic Prolog literature.

Future Plans:

Ongoing Bug Fixes
Moving forward, we plan to fix bugs as they are discovered. We look forward to receiving bug reports and feedback from users. If you encounter any issues or have suggestions for improvement, please don't hesitate to share them with us.

We hope you enjoy using N-Prolog ver3.2!

N-Prolog Version 3.15

14 Sep 23:21
Compare
Choose a tag to compare

N-Prolog Version 3.15 Release Notes

Release Date: September 15, 2024
Key Changes

Modifications and Additions to Record-Related Predicates
Significant updates have been made to record-related predicates.
New record-related predicates have been added, providing more flexible and powerful record operations.

ISO Standard Compliance for length/2
The length/2 predicate has been updated to comply with the ISO Prolog standard. This enhances compatibility with other Prolog implementations.

Enhanced Functionality in the Edlog Editor
The predicate description feature in the Edlog editor has been improved. This makes code understanding easier and enhances development efficiency.

Other Bug Fixes
Various minor bug fixes have been implemented, improving stability and performance.

Request for Bug Reports

If you encounter any issues or have concerns while using the software, please report them on our GitHub issues. Feedback from users is crucial for further improvements.

N-Prolog version 3.1

08 Sep 06:26
Compare
Choose a tag to compare

N-Prolog Ver3.1 Release Notes
Release Date: [9/8/2024]

We are pleased to announce the release of N-Prolog Ver3.1. This version includes significant updates, focusing on numerical calculation improvements, enhanced compatibility with ARITY/PROLOG, and compiler enhancements. Please refer to the details below.
Major Changes

Streamlined Numerical Calculation Functions
Numerical calculation functions have been simplified and organized to align with Prolog's characteristics. Unnecessary functions and conflicting names have been resolved, providing a more lightweight and intuitive experience.

Function Deprecation
The following numerical calculation functions have been deprecated:
gcd (Greatest Common Divisor) ,truncate, ... etc
This allows users to define these names as predicates freely, making it easier to create custom predicates.

Renaming of Numerical Functions
The log function has been redefined as the common logarithm (base 10).
A new ln function has been introduced for calculating the natural logarithm (base e).
These changes maintain compatibility with ARITY/PROLOG, ensuring a familiar experience for existing users.

Enhanced Compatibility with ARITY/PROLOG
Compatibility with ARITY/PROLOG has been further strengthened, ensuring that specific features and operations align with those systems. This makes transitioning to N-Prolog smoother for ARITY/PROLOG users.

Name Collision Resolution
Issues with name collisions between numerical calculation functions and predicates have been resolved. Users can now define predicates without worrying about conflicts.

Compiler Enhancements

Link Index Management with Enum Type
The compiler has been improved to better manage the index for linking object files. Previously, link numbers were hardcoded as numeric values, but from this version onward, enum types are used to manage link numbers by name. This enhancement significantly improves code readability and maintainability.

Future Plans

While this release focuses on numerical calculations and compatibility issues, future versions will include additional features and improvements. We welcome your continued feedback.
Installation

The latest version is available for download from the official website. For installation instructions, please refer to the README.
Bug Reports and Feedback

If you encounter any issues or have any feedback, please contact us via the Github issues.

Enjoy N-Prolog Ver3.1!