# GNU Prolog

> general-purpose implementation of the Prolog language

**Wikidata**: [Q2351180](https://www.wikidata.org/wiki/Q2351180)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/GNU_Prolog)  
**Source**: https://4ort.xyz/entity/gnu-prolog

## Summary
GNU Prolog is a general-purpose implementation of the Prolog programming language, designed for logic and constraint programming. It was originally created under the name "Calypso" in 1996 by Daniel Diaz and became part of the GNU Project in 1999. It supports multiple operating systems including Windows, macOS, and Unix-like systems, and is distributed under both the GNU GPL and LGPL licenses.

## Key Facts
- Created in 1996 by Daniel Diaz, initially named Calypso
- Became part of the GNU Project in April 1999
- Implements the Prolog language with support for constraint logic programming
- Licensed under both GNU General Public License v2+ and GNU Lesser General Public License v3+
- Supports major platforms: Microsoft Windows, macOS, BSD variants, and other Unix-like systems
- Current stable version is 1.5.0, released on July 8, 2021
- Maintained actively by Daniel Diaz
- Available through package managers like Homebrew, Debian, Ubuntu, Fedora, and Arch Linux
- Official website: [http://www.gprolog.org](http://www.gprolog.org)

## FAQs
### Q: What is GNU Prolog used for?
A: GNU Prolog is used for logic programming and constraint solving. It allows developers to write programs using logical rules and constraints, making it ideal for artificial intelligence applications, automated reasoning, and symbolic computation.

### Q: Is GNU Prolog free to use?
A: Yes, GNU Prolog is free software. It is distributed under the GNU General Public License (GPL) version 2 or later and the GNU Lesser General Public License (LGPL) version 3 or later.

### Q: How does GNU Prolog differ from standard Prolog?
A: GNU Prolog extends standard Prolog by adding native support for constraint logic programming over finite domains. This makes it more powerful for solving combinatorial problems such as scheduling, optimization, and puzzles.

## Why It Matters
GNU Prolog plays a significant role in the field of logic programming by offering an efficient, standards-compliant implementation of Prolog that includes advanced features like constraint solving. As part of the GNU Project, it aligns with the principles of free software, ensuring accessibility and modifiability for users and developers worldwide. Its cross-platform compatibility and active maintenance make it a reliable tool for academic research, teaching, and practical applications in AI and computational linguistics. The inclusion of constraint logic programming capabilities sets it apart from simpler Prolog implementations, enabling complex problem-solving scenarios that require mathematical constraints.

## Notable For
- Being one of the few Prolog implementations with built-in support for constraint logic programming over finite domains
- Integration into the GNU Project since 1999, reflecting its alignment with free software values
- Cross-platform availability across major operating systems including Windows, macOS, and various Unix-like environments
- Long-term maintenance and updates by its original author, Daniel Diaz
- Efficient compilation model that translates Prolog code into machine-readable format rather than interpreting it at runtime

## Body
### History and Development
GNU Prolog was originally developed by Daniel Diaz starting in 1996 under the working title "Calypso." In April 1999, it officially joined the GNU Project, marking its adoption within the broader ecosystem of free software tools. Since then, it has been continuously maintained and updated by Diaz himself, ensuring consistency and reliability throughout its evolution.

### Technical Features
GNU Prolog implements ISO Prolog standards while extending functionality with constraint logic programming capabilities via Constraint Handling Rules (CHR). These extensions allow programmers to define constraints over variables and solve them efficiently without requiring external libraries.

It compiles Prolog source files directly into native executables, which improves performance compared to interpreted approaches found in some competing systems. Additionally, it provides interfaces for calling foreign functions written in C, enhancing interoperability with existing software ecosystems.

### Supported Platforms and Packaging
GNU Prolog runs on a wide range of operating systems:
- Microsoft Windows
- macOS
- BSD-based systems (FreeBSD, OpenBSD, NetBSD)
- Various Linux distributions including Debian, Ubuntu, Fedora, Gentoo, Mageia, and Arch Linux

It is also packaged for easy installation through popular package management systems:
- Homebrew formula: `gnu-prolog`
- Debian/Ubuntu package: `gprolog`
- Fedora package: `gprolog`
- Arch Linux package: `gprolog`

### Licensing and Community
GNU Prolog is dual-licensed under two compatible open-source licenses:
- GNU General Public License (GPL), version 2.0 or later
- GNU Lesser General Public License (LGPL), version 3.0 or later

This dual licensing approach gives users flexibility depending on how they intend to integrate or extend the software. The community around GNU Prolog remains engaged primarily through mailing lists hosted by GNU:
- End-user discussion list: [users-prolog](https://lists.gnu.org/archive/html/users-prolog/)
- Bug reporting list: [bug-prolog](https://lists.gnu.org/archive/html/bug-prolog/)

Development activity continues publicly via GitHub repositories and traditional source control platforms like SourceForge.

### Version Timeline
Below are notable releases of GNU Prolog:
- **Version 1.2.x** – Early stable versions released between August 2000 and December 2009
- **Version 1.4.4** – Released April 23, 2013
- **Version 1.4.5** – Released July 14, 2018
- **Version 1.5.0** – Latest stable release, published July 8, 2021

Each version brought improvements in stability, portability, and feature completeness, particularly regarding constraint handling and platform integration.

## Schema Markup
```json
{
  "@context": "https://schema.org",
  "@type": "Thing",
  "name": "GNU Prolog",
  "description": "General-purpose implementation of the Prolog language.",
  "url": "http://www.gprolog.org",
  "sameAs": [
    "https://en.wikipedia.org/wiki/GNU_Prolog",
    "https://www.wikidata.org/wiki/Q108052130"
  ],
  "additionalType": "SoftwareApplication"
}

## References

1. Free Software Directory
2. Design and Implementation of the GNU Prolog System. 2001
3. [Source](https://cri-dist.univ-paris1.fr/diaz/publications/cv-short.html)
4. [The gprolog Open Source Project on Open Hub: Languages Page. Open Hub](https://www.openhub.net/p/gprolog/analyses/latest/languages_summary)
5. [Source](http://www.gprolog.org/NEWS)
6. [Source](https://sourceforge.net/p/gprolog/code/ref/master/tags/)
7. [Source](https://sourceforge.net/p/gprolog/code/ci/a36e7440290076ae2081b5e5176c6dadc6444ff3/log/?path=)
8. [Source](https://sourceforge.net/p/gprolog/code/ci/82975bd08f2a11178c2ea435644b465f65d2fa88/log/?path=)
9. [GNU Prolog 1.5.0 is released. 2021](https://lists.gnu.org/archive/html/users-prolog/2021-07/msg00001.html)
10. [Release 1.2.1. 2000](https://github.com/didoudiaz/gprolog/releases/tag/v1.2.1)
11. [Release 1.2.3. 2000](https://github.com/didoudiaz/gprolog/releases/tag/v1.2.3)
12. [Release 1.2.5. 2000](https://github.com/didoudiaz/gprolog/releases/tag/v1.2.5)
13. [Release 1.2.6. 2001](https://github.com/didoudiaz/gprolog/releases/tag/v1.2.6)
14. [Release 1.2.7. 2001](https://github.com/didoudiaz/gprolog/releases/tag/v1.2.7)
15. [Release 1.2.8. 2009](https://github.com/didoudiaz/gprolog/releases/tag/v1.2.8)
16. [Release 1.2.13. 2002](https://github.com/didoudiaz/gprolog/releases/tag/v1.2.13)
17. [Release 1.2.16. 2002](https://github.com/didoudiaz/gprolog/releases/tag/v1.2.16)
18. [Release 1.3.0. 2007](https://github.com/didoudiaz/gprolog/releases/tag/v1.3.0)
19. [Release 1.3.1. 2009](https://github.com/didoudiaz/gprolog/releases/tag/v1.3.1)
20. [Release 1.4.0. 2011](https://github.com/didoudiaz/gprolog/releases/tag/v1.4.0)
21. [Release 1.4.1. 2012](https://github.com/didoudiaz/gprolog/releases/tag/v1.4.1)
22. [Release 1.4.2. 2012](https://github.com/didoudiaz/gprolog/releases/tag/v1.4.2)
23. [Release 1.4.3. 2013](https://github.com/didoudiaz/gprolog/releases/tag/v1.4.3)
24. Freebase Data Dumps. 2013
25. On the implementation of GNU Prolog
26. [Source](https://lists.gnu.org/mailman/listinfo/users-prolog/)
27. [Source](https://lists.gnu.org/mailman/listinfo/bug-prolog/)