# 🍎 The SWI-Prolog MacOSX app

SWI-Prolog is an open source implementation of the Prolog programming language. SWI-Prolog targets at developing real-world applications. To achieve this, in concentrates on libraries that facilitate interfacing to other software components, networking and multi-threading. SWI-Prolog can be used from Terminal.app as well as as an standard Mac application started from Finder. The commandline application can also run under several development environments such as GNU-Emacs (see Sweep), Eclipse, VSCode, etc.

## Supported MacOSX versions

The bundle contains Universal binaries for `arm64` (Apple Silicon, M*) and `x86_64` (Intel). Starting with SWI-Prolog 9.3.26, the SWI-Prolog app uses native MacOS Quartz graphics and no longer requires the XQuartz X11 application. We attempt to support all supported MacOS version. All code is compiled using 10.15 as Deployment target. While the commandline `swipl` executable is reported to run under 10.14, the GUI is reported not to run under 10.15 while it is reported to run on MacOS 14. Please report the status for intermediate versions.

### Using the GUI development tools

The SWI-Prolog development tools, such as the source-level debugger, are based on xpce, SWI-Prolog's native graphics toolkit. Some of the tools can be started from the SWI-Prolog.app menus. Others are started from the Prolog commandline. Notably, to use the source level debugger, use `gtrace/0` instead of the traditional `trace/0` as below.

    ?- gtrace, my_goal(...).

The SWI-Prolog.app can be executed directly from the disk image, can be installed in `/Applications` or in any other location, i.e., it is relocatable. The app advertises itself to the launcher as shell for files with extensions `.pl` and `.prolog`

## Using the commandline tools

The traditional command line tools are included in the app. To access them from Terminal.app, add the directory `/Applications/SWI-Prolog.app/Contents/MacOS` to `$PATH` (replace with the actual location if you installed the app in a different location). This provides

- `swipl` The non-gui commandline version of SWI-Prolog. This version can start GUI development tools. If you do not want that, use the option `--nopce`
- `swipl-win` This is the same as lauching SWI-Prolog.app, but you can start it from Terminal.app and pass it commandline options.

## Where to get documentation and help?

- All documentation is available from the SWI-Prolog web site
- We have an active forum at Discourse
- If you have a paid ChatGPT account, you can try SWI Prolog Assistant
- You can find community contributions on the Packs (add-ons) page

SWI-Prolog is brought to you by many contributors.

❤️ If you enjoy using SWI-Prolog, please consider donating to help maintaining and developing the system. ❤️