Skip to content

Releases: sasagawa888/nprolog

N-Prolog version 4.08

28 Apr 08:34
Compare
Choose a tag to compare

N-Prolog ver4.08 Release Notes
We are pleased to announce the release of N-Prolog version 4.08.

The main updates in this release are as follows:

New Built-in Predicate for HTTPS Communication
We have added a new built-in predicate that uses the CURL library to enable HTTPS communication.
For detailed instructions on usage, please refer to CURL.md in the documentation folder.
This predicate was specifically designed for API communication with ChatGPT.

Bug Fixes in the JSON Library
We have also fixed bugs found in the JSON library.

This new functionality is aimed at supporting experiments in Neuro-Symbolic AI.
At this point, actual API communication has not yet been performed.
We welcome any feedback from users who try out this new feature!

Starting from version 4.08, the CURL library is required.
If it is not installed by default, please install it using the following commands:

sudo apt update
sudo apt install libcurl4-openssl-dev

N-Prolog ver4.07 Release Notes

20 Apr 05:11
Compare
Choose a tag to compare

N-Prolog ver4.07 Release Notes

New Features

In N-Prolog ver4.07, we have improved and expanded the libraries. The following libraries have been added and updated:

  • TCLTK Integration Library
    The TCLTK integration has been enhanced, making it easier to create GUI applications using N-Prolog.

  • OpenGL Integration Library
    A new OpenGL library has been added to support 3D graphics rendering. This can be used for visual simulations and graphics processing.

  • GNUplot Integration Library
    A library for integrating with GNUplot has been added. This allows for easy plotting and visualization of numerical data.

  • Python Integration Library
    A library for integrating with Python has been introduced. Specifically, it enables integration with TensorFlow for deep learning applications. This allows N-Prolog to leverage Python's powerful machine learning libraries.

These libraries are designed to take advantage of C language embedding features. For detailed usage and configuration instructions, please refer to the following documentation:

  • TCLTK.md

  • OPENGL.md

  • PLOT.md]

  • PYTHON.md

Specifications

The core functionality has not changed significantly from ver4.05. However, the new libraries significantly enhance integration with other tools.
Future expansions of these libraries and integration features are possible.

Notes

For detailed usage, please refer to the documentation for each library. Given the many new features, it is recommended to read the documentation before using them.

N-Prolog ver4.05

16 Mar 06:36
Compare
Choose a tag to compare

N-Prolog Ver 4.05 Release Notes

New Features

Added JSON Library

Enables parsing, generating, and manipulating JSON data.

Facilitates seamless conversion between Prolog and JSON.

Upcoming Features

Planned Addition of HTTP Library (Next Version)

Features to facilitate web server communication and HTTP request handling.

Enhancements to C Embedding Features

Added cdeclre/1 and clibrary/1

cdeclre/1: A new predicate for declaring C functions within Prolog.

clibrary/1: A new predicate for linking C libraries with Prolog.

Enables integration of various C language libraries into N-Prolog.

Other Improvements

Minor bug fixes and performance enhancements

Enjoy the latest version of N-Prolog!

N-Prolog ver4.00

01 Mar 04:15
Compare
Choose a tag to compare

N-Prolog ver4.00 Release Notes

Overview

N-Prolog ver4.00 is a major update release. This version includes enhanced optimizations, new features, bug fixes, and improved documentation. Additionally, parallel computing functionality has been verified, and execution tests on Raspberry Pi have been completed, ensuring stable performance.

Key Changes

✅ Optimization Improvements

Complete Implementation of Tail Call Optimization (TCO)

TCO is now fully applied in all cases, allowing tail-recursive functions to execute without consuming stack space.

🛠 New Features

Addition of Static Analysis Tool "Checker"

A new library tool for analyzing potential errors and inefficient code in Prolog.

Users can utilize this tool to improve code quality.

🐛 Bug Fixes

Fixed several known bugs to enhance stability.

For details on bug fixes, refer to the Changelog.

📖 Improved Documentation

Enhanced existing documentation for better clarity.

Added detailed descriptions of new features and libraries.

⚡ Parallel Computing Verification

Conducted tests on distributed parallel processing and confirmed expected behavior.

Performance measurements for parallel processing have been conducted and optimizations applied.

🎯 Platform Compatibility Confirmation

Successfully tested on Raspberry Pi 400

Verified stable operation in the ARM environment.

Installation Instructions

N-Prolog ver4.00 can be installed using the following steps:

git clone https://github.com/sasagawa888/nprolog.git
cd nprolog
sudo make install

After installation, check the version with the following command:

npl -v

To uninstall, use the following command:

sudo make uninstall

Future Plans

Further optimization and improvements based on user feedback.

Additional bug fixes and feature enhancements to be implemented as needed.

Download: GitHubFeedback & Bug Reports: Issue Tracker

Try out N-Prolog ver4.00 today! 🚀

N-Prolog ver3.98

23 Feb 08:50
Compare
Choose a tag to compare

N-Prolog Ver3.98 Release Notes

New Feature: Tail Call Optimization (TCO)

N-Prolog Ver3.97 introduces Tail Call Optimization (TCO), which optimizes tail-recursive predicates for more efficient execution and reduced stack consumption. This improvement is expected to enhance performance, especially in programs with large recursive calls.

Key Improvements:

  • Tail recursion to loop conversion optimization: Added an optimization that converts tail-recursive calls into loops. This prevents stack overflow issues and makes recursive predicates more efficient by iterating instead of using recursion.

  • Static analysis for TCO applicability: The compiler now identifies when TCO should be applied, ensuring that optimization occurs only when appropriate, while maintaining the previous behavior in cases where TCO is not applicable.

  • Certain cases still need improvement: While the optimization has made substantial progress, there may still be edge cases that cannot be optimized correctly. These cases will be addressed in future versions.

Future Plans:

  • Although TCO is now applied in many cases, some edge cases may still exist. We plan to improve detection and further extend the range of optimizable cases in future releases.

  • The static analysis for tail-recursive predicates will continue to improve, allowing for even more cases of deterministic tail recursion to be optimized.

Reason for Version Update:

This version, Ver3.98, has been released due to the progress made in tail call optimization. While some challenges remain in fully detecting all applicable cases, significant improvements have been made, and this release lays the foundation for further enhancements. The performance of N-Prolog programs has been significantly improved with this update.

N-Prolog ver3.95

22 Feb 05:00
Compare
Choose a tag to compare

N-Prolog ver3.95 Release Notes


Release Date: February 22, 2025


New Features and Improvements

  1. Optimization of Compiled Code for Deterministic Predicates

    • For deterministic predicates, optimizations have been applied assuming no backtracking occurs.
    • By omitting the generation of proof sequences, unnecessary memory consumption is reduced, resulting in improved execution speed.
  2. Optimization for Deterministic and Tail-Recursive Predicates

    • Tail call optimization has been enhanced for predicates that are both deterministic and tail-recursive.
    • When stack frames are not needed, the compiled code directly jumps to the next call, leading to better performance.
  3. Improved Execution Speed

    • The above optimizations significantly increase execution speed compared to previous versions.
    • Programs that heavily utilize deterministic predicates experience noticeable performance gains.

N-Prolog ver3.92

16 Feb 06:19
Compare
Choose a tag to compare

N-Prolog Version 3.92 Release Notes

New Features:

  • C Language Embedding Functionality Added:
    The cinline/1 predicate allows embedding C language code within N-Prolog code. For more details, refer to COMPILER.md.

Improvements:

  • Enhanced Management of Intermediate Variables in Compilation Code:
    The management of intermediate variables during compilation has been improved to ensure better efficiency.

Upcoming Features:

  • Efficient Compilation Code Generation for Deterministic Predicates:
    Development has begun for efficient compilation code generation for deterministic predicates. This feature is expected to be achieved in version 4.00.

Bug Fixes:

  • Fix Attempt for Edlog Compilation on macOS:
    We attempted to resolve the issue of compiling Edlog on macOS. It is unclear whether the fix was successful. We welcome cooperation from macOS users.

For more information, refer to COMPILER.md.

N-Prolog ver3.90

09 Feb 07:27
Compare
Choose a tag to compare

N-Prolog Ver 3.90 - Release Notes

N-Prolog Ver 3.90 introduces significant feature updates. Here are the key changes:

Key Features and Updates

  • Modern Features Added
    New features derived from ISO-Prolog have been incorporated, providing a more modern Prolog environment. This significantly improves usability.

  • Enhanced Error Handling
    Error handling with catch/3 is now available. Additionally, error throwing (throw) is aligned with ISO-Prolog standards, ensuring consistent error handling.

  • Modularization
    To save heap space, the compiler, DCG, and the multi-world mechanism have been modularized and included as libraries. This change improves resource efficiency.

  • New Libraries Added

    • list library
    • sets library
      These libraries make Prolog programming more convenient.
  • TCP/IP Server/Client Functionality Added
    TCP/IP-based server and client functionalities have been added, enabling network communication.

  • ARITY/PROLOG Compatibility
    N-Prolog maintains compatibility with ARITY/PROLOG while integrating modern features.

  • Parallel Processing Implemented
    Distributed parallel processing and multi-threaded parallelism have already been implemented, enabling high-performance computation experiments.

  • Support for 1980s Code
    The system supports running code published in the 1980s, allowing you to enjoy the Prolog environment of that era.

Additional Information

  • For detailed information, please refer to SUPERSET.md.

N-Prolog is primarily intended as an intellectual toy for computational experimentation. We welcome bug reports and feedback, as it helps us continue to improve the system.

Enjoy exploring N-Prolog!

N-Prolog ver3.89

28 Jan 23:08
Compare
Choose a tag to compare

N-Prolog ver3.89 Release Notes

Thank you for using N-Prolog.
This version (ver3.89) addresses issues found during the testing of modern predicates introduced in ver3.88. This is an urgent release focusing on fixing critical bugs, improving the stability of the new predicates introduced in ver3.88.

Fixes

  • Bug Fixes in Predicates

    • Resolved bugs in the modern predicates introduced in ver3.88.
    • Fixed unexpected behavior in specific predicates.
  • Improved Overall Stability

    • Addressed issues causing unexpected termination in certain cases.
    • Enhanced error handling mechanisms.

Notes

  • This version is an interim bugfix release, and some tests remain incomplete.
  • A complete update is scheduled for the upcoming ver3.90, which will include further improvements. Please stay tuned.

Feedback Request

If you encounter any issues or have suggestions for improvement, we welcome your feedback. Your input helps us create a better Prolog environment for everyone.


We hope this release enhances your experience with N-Prolog. Thank you for your continued support!

N-Prolog ver3.88

26 Jan 07:25
Compare
Choose a tag to compare

v3.88 Release Notes

Overview

v3.88 aims to be compatible with ARITY\PROLOG while incorporating modern Prolog features. Notably, we've added catch/throw for exception handling and introduced a module system, enhancing compatibility with ISO-Prolog. This release enables a more modern Prolog environment while maintaining compatibility with legacy code.

Key Improvements

  • Introduction of catch/throw
    The basic exception handling mechanism, catch/throw, has been added. Future improvements will expand error handling to support more flexible error management.

  • Module System Added
    A module system has been experimentally introduced, and the list library has been registered as a module. While we aim to align with ISO-Prolog standards, we are gradually enhancing functionality.

  • Incorporation of Core ISO-Prolog Features
    Many core ISO-Prolog features have been incorporated, striving to be as close to the standard as possible. While not fully ISO-compliant, this release provides compatibility with modern Prolog environments while maintaining enjoyment of older code.
    See document/SUPERSET.md

  • Parallel Processing Implemented
    Parallel processing support has been added, enabling calculations to be performed in parallel, resulting in more efficient execution.

  • Test Cases Added
    Test cases have been added to support the new features. These ensure stable operation and compatibility with existing functionalities.

Future Plans

  • Expansion of Error Handling
    The catch/throw mechanism will be further enhanced to provide more detailed error information.

  • Strengthening ISO-Prolog Compatibility
    Additional functionality will be added to further support ISO-Prolog standards, but the focus will remain on flexibility rather than complete compliance.

  • Addition of TCP/IP Predicates (Future Task)
    Currently, predicates for TCP/IP communication are not implemented, but this remains a future task to be addressed.

About This Release

N-Prolog has been developed primarily for enjoying 1980s Prolog code, but now includes support for modern features like parallel processing. Moving forward, we aim to maintain the best aspects of classic Prolog while expanding support for contemporary technologies.