PEngine docs update?

The web page below does indicate that the initialization files for an application may change:

http://www.swi-prolog.org/pengines/Genealogist.html

That page has the following text:

But we are not done yet. We must also insert the following declarations in the file ./load.pl:

:- pengine_application(genealogist).
:- use_module(genealogist:'/apps/genealogist/genealogist.pl').

But it appears that the file name for the file that executes those instructions has changed from load.pl to app.pl and now has this content:

:- module(app_genealogist, []).
:- use_module(library(pengines)).

:- pengine_application(genealogist).
:- use_module(genealogist:genealogist).

Perhaps a doc update is in order here?

Granted the documents are partially wrong, but load.pl hasn’t been renamed to app.pl. if you look at the file-layout shown in the page

apps/
   genealogist/
      genealogist.pl
   swish\
   scratchpad\

the root directory is the pengine root directory. So ./load.pl refers to ./load.pl in the pengines root directory, which needs to have a reference to Genealogist to expose it. However instead of referencing it directly via :- use_module(genealogist:'/apps/genealogist/genealogist.pl'), it indirectly does it by referencing the app.pl module file instead.

% access at /apps/genealogist/index.html
:- if(exists_source(apps(genealogist/app))).
:- use_module(apps(genealogist/app)).
:- endif.
1 Like

Thanks for clarifying that Ian. Is there a quick way to completely reload a Pengines instance without exiting the interpreter? Currently I launch Pengines by double-clicking on run.pl. If I make any salient changes I exit and redo that step. I’m wondering if there is something I can execute from interpreter to effect the same reload.

Usually, edit away and run ?- make.

That said, not that the pengine package is rather poorly maintained. Maintenance is in SWISH, which can do almost anything the original Pengines package can do. Originally swish was a minor demo app inside pengines.

1 Like

Thanks @Jan. Swish runs fine for me, but I’m not sure how I would use that as a replacement for Pengines if that’s what you are suggesting? I mean, it’s still the Pengines main code that serves up the HTTP server, provides the Admin interface, etc for Swish. right?

SWISH is a completely stand alone package with its own admin stuff. That is a little harder to setup as it has configuration for lots of different scenarios ranging from local use to obligatory login to anonymous use. Most of that is achieved using config files from config-available.

Pengines (adding links so we know which one we are talking about) is the original web frontend for the Prolog pengines library. A predecessor of SWISH was part of the original pengines web frontend. Gradually SWISH became a system on its own that provides most/all of the functionality that the original pengines provides, though shaped a little different. Pengines is more on server side development, while SWISH is more about interactive usage as well as development. Using notebooks and HTML cells you can do practically the same thing as Pengines does.

2 Likes

Thanks @Jan!