Quoting Lev Lamberov (2020-04-28 09:35:31)
> I've got the following response from swi-prolog upstream about the 
> issue:
> 
> Вс 26 апр 2020 @ 09:30 Jan Wielemaker <j.wielema...@vu.nl>:
> 
> > Need to think a bit about the ABI issue. Basically, saved states are 
> > incompatible between versions, although you can have some luck on 
> > closely related versions. There are two sources of trouble: change 
> > to the VM instruction set and changed interfaces for internal 
> > foreign predicates that require matching changes to the Prolog 
> > layer.
> >
> > Applications can ship themselves as .qlf file instead of saved 
> > states to avoid the second, although that may be complicated. The 
> > first is unavoidable unless I would go for strictly backward 
> > compatible changes to the VM.  I don't think that is going to happen 
> > soon.  The VM detects the incompatibility by adding a hash of the VM 
> > instructions and their declarations to the state.
> >
> > The normal way to deal with this (I guess) would be to distribute as 
> > source and do the saved state generation as part of the installation 
> > process.
> >
> > Finally, you can enable versioned lib directories such that 
> > SWI-Prolog is installed in /usr/lib/swipl-<version> and you can have 
> > multiple versions installed (and have the links from /usr/bin for 
> > swipl, etc select the current version). States though can depend on 
> > a particular version.  This is much like Java, no?

Thanks for passing it upstream.

Their description matches my expectation.

I find it interesting that they mention a hash is used to identify VM. 
We could maybe expose that in a virtual package "swi-prolog-abi" that 
eye could then depend on.  That approach would ensure no need for 
recompilation of eye when releasing a Debian revision *not* changing 
upstream ABI (as is also the behavior of current eye release), and it 
would require eye recompilation when releasing a Debian revision which 
*does* change upstream ABI (e.g. by adding/changing a patch to upstream 
code, something that current eye release does *not* handle correctly).

Yes, there is an alternative approach of shipping source code for eye, 
and compile it during install (and add a trigger to recompile when 
Prolog package is updated).  I would like to avoid that if possible: 
Purpose of eye is not as an extension for a Prolog _development_ 
environment but for semantic web processing.  See also bug#959027.


 - Jonas

-- 
 * Jonas Smedegaard - idealist & Internet-arkitekt
 * Tlf.: +45 40843136  Website: http://dr.jones.dk/

 [x] quote me freely  [ ] ask before reusing  [ ] keep private

Attachment: signature.asc
Description: signature

Reply via email to