ISO multifle/1 directive and predicate semantics not supported
pmoura opened this issue · 6 comments
As requested, creating a dedicated issue to track progress.
Btw, this is a main issue preventing using the new Logtalk portable packs
tool with Ciao.
Btw, this is a main issue preventing using the new Logtalk portable
packs
tool with Ciao.
Pushed a workaround today:
LogtalkDotOrg/logtalk3@51781ba
It allows using the packs
tool with the current Ciao Prolog version.
Regarding packs
, Ciao and SWI already implement their own package systems (several years ago, I do not remember exactly when). Does Logtalk borrow any idea from there? This is needed to understand their differences and consider interoperability. I had a look at the documentation and nothing is said about other package systems.
There are certainly common elements not only between these pack systems but with pack systems in general for other languages. Logtalk's packs
tool was designed to take into account industry clients that want to run their own, private pack registries. Safety was also a design consideration. For public examples on how to specify registries and packs, see https://github.com/LogtalkDotOrg/pack-registries I did compared to SWI-Prolog own packs tool. Logtalk offers several features no found in SWI-Prolog, both for users and publishers (e.g. multiple versions of the same pack, pinning of registries and packs, virtual environments, local file-system registries, etc; see https://logtalk.org/tools.html#package-manager). URL to learn about Ciao's packs tool? I confess I wasn't aware of it.
Yes! Many years ago we had a "code complexity bankruptcy" that forced us to redistribute our tools and libraries in "software packages". Of course this is not new, it was already invented by many other languages or systems. Our design was motivated for one very particular need: huge CiaoPP binaries with optional 3rd party dependencies (like PPL). I can do cool things like automatically installing big C libraries (Remy Haemmerle basically wrote a "mini clone" of homebrew) and getting Ciao bundles from internet (e.g., ciao get lpdoc
). Sadly the documentation is very incomplete and some syntax is not settled down. We'll fix that! You may find some documentation here https://ciao-lang.org/ciao/build/doc/ciao_builder.html/ but it is very incomplete and do not reflect the features. One example of a complex bundle is: https://github.com/ciao-lang/ciaopp/blob/master/Manifest/Manifest.pl . The Manifest file specifies locations for modules, alias paths under which each module will be reachable, entries for manuals, as well as command line executables that are expected to be installed. Bundles live in different workspaces (inspired by Go). We have a TODO list with pending some changes (requested by users) for a next version.
I think that we do not cover many of the cases that you describe (private registries, etc.).
Thanks for the links. I understand the motivation for all the features in Ciao's packs tool. Notably, being able to download and build source packages in foreign languages (SWI-Prolog packs tool can also do that). I may one day add that feature to Logtalk's packs
tool. But a main motivation here is portability (easy) and convincing people to share their code as packs (hard). I don't think either Ciao or SWI pack tools can easily be made portable for use in most other systems.