SWI-Prolog / roadmap

Discuss future development
21 stars 3 forks source link

Saved state portability #58

Open erlanger opened 5 years ago

erlanger commented 5 years ago

Saved state portability

Following a discussion about a port to Android (in SWI-Prolog/swipl-devel#358), there was a concern about creating saved states on one platform and moving them to another platform, especially from a native platform to a different platform (like android). Two cases were observed:

  1. Saved state does not use foreign libraries (e.g. only prolog code)
    • In this case the saved state will work on any other platform with the same pointer size (e.g. 32-bit or 64-bit)
    • We can then embed pointer size information in the saved state, and use this saved state on the target platform if the pointer size matches.
  2. Saved state depends on foreign (.so) libraries using --foregin=save option
    • In this case, the saved sate depends not only on the pointer size, but also on the architecture and the operating system being used.
    • We can embed architecture information in the saved state, and decide --at runtime-- if the target architecture is compatible with the one embedded in the saved state. This will be a best effort approach.
JanWielemaker commented 5 years ago

Part (I) is solved: saved states no longer depend on the word-length of the machine.