kibi-swipl-linux-x64-gnu 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (550) hide show
  1. package/README.md +29 -0
  2. package/bin/swipl +0 -0
  3. package/bin/swipl-win +0 -0
  4. package/build-manifest.json +70 -0
  5. package/lib/cmake/swipl/SWIPLConfig.cmake +21 -0
  6. package/lib/cmake/swipl/SWIPLConfigVersion.cmake +65 -0
  7. package/lib/cmake/swipl/SWIPLTargets-release.cmake +28 -0
  8. package/lib/cmake/swipl/SWIPLTargets.cmake +109 -0
  9. package/lib/swipl/ABI +1 -0
  10. package/lib/swipl/LICENSE +41 -0
  11. package/lib/swipl/README.md +116 -0
  12. package/lib/swipl/app/README.md +25 -0
  13. package/lib/swipl/app/app.pl +87 -0
  14. package/lib/swipl/app/pack.pl +350 -0
  15. package/lib/swipl/app/qlf.pl +521 -0
  16. package/lib/swipl/app/splfr.pl +177 -0
  17. package/lib/swipl/app/sys.pl +310 -0
  18. package/lib/swipl/bin/swipl.home +1 -0
  19. package/lib/swipl/boot/apply.pl +73 -0
  20. package/lib/swipl/boot/attvar.pl +344 -0
  21. package/lib/swipl/boot/autoload.pl +1226 -0
  22. package/lib/swipl/boot/bags.pl +283 -0
  23. package/lib/swipl/boot/dcg.pl +388 -0
  24. package/lib/swipl/boot/dicts.pl +193 -0
  25. package/lib/swipl/boot/dwim.pl +485 -0
  26. package/lib/swipl/boot/engines.pl +152 -0
  27. package/lib/swipl/boot/expand.pl +1628 -0
  28. package/lib/swipl/boot/gc.pl +65 -0
  29. package/lib/swipl/boot/history.pl +304 -0
  30. package/lib/swipl/boot/init.pl +4682 -0
  31. package/lib/swipl/boot/iri.pl +64 -0
  32. package/lib/swipl/boot/license.pl +390 -0
  33. package/lib/swipl/boot/load.pl +81 -0
  34. package/lib/swipl/boot/messages.pl +2521 -0
  35. package/lib/swipl/boot/packs.pl +306 -0
  36. package/lib/swipl/boot/predopts.pl +154 -0
  37. package/lib/swipl/boot/qlf.pl +141 -0
  38. package/lib/swipl/boot/rc.pl +263 -0
  39. package/lib/swipl/boot/syspred.pl +1634 -0
  40. package/lib/swipl/boot/tabling.pl +2321 -0
  41. package/lib/swipl/boot/threads.pl +42 -0
  42. package/lib/swipl/boot/toplevel.pl +2248 -0
  43. package/lib/swipl/boot/topvars.pl +261 -0
  44. package/lib/swipl/boot.prc +0 -0
  45. package/lib/swipl/cmake/swipl.cmake +131 -0
  46. package/lib/swipl/customize/README.md +23 -0
  47. package/lib/swipl/customize/edit +101 -0
  48. package/lib/swipl/customize/init.pl +164 -0
  49. package/lib/swipl/demo/README.md +33 -0
  50. package/lib/swipl/demo/likes.pl +44 -0
  51. package/lib/swipl/doc/packages/examples/chr/bool.chr +281 -0
  52. package/lib/swipl/doc/packages/examples/chr/chrdif.chr +87 -0
  53. package/lib/swipl/doc/packages/examples/chr/chrfreeze.chr +6 -0
  54. package/lib/swipl/doc/packages/examples/chr/family.chr +116 -0
  55. package/lib/swipl/doc/packages/examples/chr/fib.chr +24 -0
  56. package/lib/swipl/doc/packages/examples/chr/fibonacci.chr +31 -0
  57. package/lib/swipl/doc/packages/examples/chr/gcd.chr +28 -0
  58. package/lib/swipl/doc/packages/examples/chr/leq.chr +34 -0
  59. package/lib/swipl/doc/packages/examples/chr/listdom.chr +138 -0
  60. package/lib/swipl/doc/packages/examples/chr/primes.chr +29 -0
  61. package/lib/swipl/doc/packages/examples/http/README.md +98 -0
  62. package/lib/swipl/doc/packages/examples/http/calc.pl +92 -0
  63. package/lib/swipl/doc/packages/examples/http/demo_body.pl +232 -0
  64. package/lib/swipl/doc/packages/examples/http/demo_client.pl +165 -0
  65. package/lib/swipl/doc/packages/examples/http/demo_daemon.pl +38 -0
  66. package/lib/swipl/doc/packages/examples/http/demo_files.pl +50 -0
  67. package/lib/swipl/doc/packages/examples/http/demo_hello.pl +15 -0
  68. package/lib/swipl/doc/packages/examples/http/demo_login.pl +280 -0
  69. package/lib/swipl/doc/packages/examples/http/demo_openid.pl +177 -0
  70. package/lib/swipl/doc/packages/examples/http/demo_pwp.pl +20 -0
  71. package/lib/swipl/doc/packages/examples/http/demo_rest.pl +56 -0
  72. package/lib/swipl/doc/packages/examples/http/demo_threads.pl +52 -0
  73. package/lib/swipl/doc/packages/examples/http/linux-init-script +126 -0
  74. package/lib/swipl/doc/packages/examples/http/pwp/context.pwp +23 -0
  75. package/lib/swipl/doc/packages/examples/http/pwp/index.pwp +25 -0
  76. package/lib/swipl/doc/packages/examples/http/pwp/pwp1.pwp +12 -0
  77. package/lib/swipl/doc/packages/examples/http/pwp/pwp2.pwp +10 -0
  78. package/lib/swipl/doc/packages/examples/http/pwp/pwp3.pwp +25 -0
  79. package/lib/swipl/doc/packages/examples/http/pwp/pwp4.pwp +23 -0
  80. package/lib/swipl/doc/packages/examples/http/pwp/pwp5.pwp +11 -0
  81. package/lib/swipl/doc/packages/examples/http/pwp/pwp6.pwp +3 -0
  82. package/lib/swipl/doc/packages/examples/http/pwp/pwp7.pwp +3 -0
  83. package/lib/swipl/doc/packages/examples/http/pwp/pwp8.pwp +3 -0
  84. package/lib/swipl/doc/packages/examples/http/pwp/pwpdb.pl +12 -0
  85. package/lib/swipl/doc/packages/examples/http/systemd-script.service +18 -0
  86. package/lib/swipl/doc/packages/examples/http/upstart-script.conf +20 -0
  87. package/lib/swipl/doc/packages/examples/plunit/read.pl +17 -0
  88. package/lib/swipl/doc/packages/examples/plunit/simple.pl +33 -0
  89. package/lib/swipl/doc/packages/examples/ssl/client.pl +83 -0
  90. package/lib/swipl/doc/packages/examples/ssl/etc/README +52 -0
  91. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.p12 +0 -0
  92. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.pem +85 -0
  93. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-key.pem +30 -0
  94. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/cacert.pem +82 -0
  95. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/careq.pem +18 -0
  96. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/crlnumber +1 -0
  97. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt +3 -0
  98. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt.attr +1 -0
  99. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7C.pem +85 -0
  100. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7D.pem +85 -0
  101. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/private/cakey.pem +30 -0
  102. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/serial +1 -0
  103. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-cert.pem +85 -0
  104. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-key.pem +30 -0
  105. package/lib/swipl/doc/packages/examples/ssl/https.pl +267 -0
  106. package/lib/swipl/doc/packages/examples/ssl/server.pl +106 -0
  107. package/lib/swipl/include/SWI-Prolog.h +1544 -0
  108. package/lib/swipl/include/SWI-Stream.h +537 -0
  109. package/lib/swipl/include/Yap/YapInterface.h +283 -0
  110. package/lib/swipl/include/sicstus/sicstus.h +452 -0
  111. package/lib/swipl/lib/x86_64-linux/cgi.so +0 -0
  112. package/lib/swipl/lib/x86_64-linux/crypt.so +0 -0
  113. package/lib/swipl/lib/x86_64-linux/crypto4pl.so +0 -0
  114. package/lib/swipl/lib/x86_64-linux/double_metaphone.so +0 -0
  115. package/lib/swipl/lib/x86_64-linux/files.so +0 -0
  116. package/lib/swipl/lib/x86_64-linux/hashstream.so +0 -0
  117. package/lib/swipl/lib/x86_64-linux/http_stream.so +0 -0
  118. package/lib/swipl/lib/x86_64-linux/isub.so +0 -0
  119. package/lib/swipl/lib/x86_64-linux/json.so +0 -0
  120. package/lib/swipl/lib/x86_64-linux/libswipl.so.10 +0 -0
  121. package/lib/swipl/lib/x86_64-linux/mallocinfo.so +0 -0
  122. package/lib/swipl/lib/x86_64-linux/md54pl.so +0 -0
  123. package/lib/swipl/lib/x86_64-linux/memfile.so +0 -0
  124. package/lib/swipl/lib/x86_64-linux/ntriples.so +0 -0
  125. package/lib/swipl/lib/x86_64-linux/pcre4pl.so +0 -0
  126. package/lib/swipl/lib/x86_64-linux/porter_stem.so +0 -0
  127. package/lib/swipl/lib/x86_64-linux/process.so +0 -0
  128. package/lib/swipl/lib/x86_64-linux/prolog_stream.so +0 -0
  129. package/lib/swipl/lib/x86_64-linux/rdf_db.so +0 -0
  130. package/lib/swipl/lib/x86_64-linux/readutil.so +0 -0
  131. package/lib/swipl/lib/x86_64-linux/rlimit.so +0 -0
  132. package/lib/swipl/lib/x86_64-linux/sched.so +0 -0
  133. package/lib/swipl/lib/x86_64-linux/sgml2pl.so +0 -0
  134. package/lib/swipl/lib/x86_64-linux/sha4pl.so +0 -0
  135. package/lib/swipl/lib/x86_64-linux/snowball.so +0 -0
  136. package/lib/swipl/lib/x86_64-linux/socket.so +0 -0
  137. package/lib/swipl/lib/x86_64-linux/ssl4pl.so +0 -0
  138. package/lib/swipl/lib/x86_64-linux/streaminfo.so +0 -0
  139. package/lib/swipl/lib/x86_64-linux/syslog.so +0 -0
  140. package/lib/swipl/lib/x86_64-linux/time.so +0 -0
  141. package/lib/swipl/lib/x86_64-linux/turtle.so +0 -0
  142. package/lib/swipl/lib/x86_64-linux/uid.so +0 -0
  143. package/lib/swipl/lib/x86_64-linux/unix.so +0 -0
  144. package/lib/swipl/lib/x86_64-linux/uri.so +0 -0
  145. package/lib/swipl/lib/x86_64-linux/websocket.so +0 -0
  146. package/lib/swipl/lib/x86_64-linux/zlib4pl.so +0 -0
  147. package/lib/swipl/library/INDEX.pl +1020 -0
  148. package/lib/swipl/library/aggregate.pl +755 -0
  149. package/lib/swipl/library/ansi_term.pl +653 -0
  150. package/lib/swipl/library/apply.pl +426 -0
  151. package/lib/swipl/library/apply_macros.pl +497 -0
  152. package/lib/swipl/library/arithmetic.pl +320 -0
  153. package/lib/swipl/library/assoc.pl +522 -0
  154. package/lib/swipl/library/atom.pl +169 -0
  155. package/lib/swipl/library/backcomp.pl +688 -0
  156. package/lib/swipl/library/base32.pl +291 -0
  157. package/lib/swipl/library/base64.pl +441 -0
  158. package/lib/swipl/library/broadcast.pl +161 -0
  159. package/lib/swipl/library/build/cmake.pl +137 -0
  160. package/lib/swipl/library/build/conan.pl +232 -0
  161. package/lib/swipl/library/build/make.pl +168 -0
  162. package/lib/swipl/library/build/tools.pl +825 -0
  163. package/lib/swipl/library/charsio.pl +195 -0
  164. package/lib/swipl/library/check.pl +1097 -0
  165. package/lib/swipl/library/check_installation.pl +912 -0
  166. package/lib/swipl/library/clp/INDEX.pl +157 -0
  167. package/lib/swipl/library/clp/bounds.pl +2036 -0
  168. package/lib/swipl/library/clp/clp_distinct.pl +263 -0
  169. package/lib/swipl/library/clp/clp_events.pl +92 -0
  170. package/lib/swipl/library/clp/clpb.pl +1896 -0
  171. package/lib/swipl/library/clp/clpfd.pl +7906 -0
  172. package/lib/swipl/library/clp/simplex.pl +1580 -0
  173. package/lib/swipl/library/codesio.pl +182 -0
  174. package/lib/swipl/library/coinduction.pl +183 -0
  175. package/lib/swipl/library/console_input.pl +289 -0
  176. package/lib/swipl/library/csv.pl +611 -0
  177. package/lib/swipl/library/ctypes.pl +161 -0
  178. package/lib/swipl/library/date.pl +370 -0
  179. package/lib/swipl/library/dcg/INDEX.pl +35 -0
  180. package/lib/swipl/library/dcg/basics.pl +514 -0
  181. package/lib/swipl/library/dcg/high_order.pl +227 -0
  182. package/lib/swipl/library/debug.pl +499 -0
  183. package/lib/swipl/library/dialect/bim.pl +186 -0
  184. package/lib/swipl/library/dialect/commons.pl +77 -0
  185. package/lib/swipl/library/dialect/eclipse/test_util_iso.pl +355 -0
  186. package/lib/swipl/library/dialect/hprolog/format.pl +44 -0
  187. package/lib/swipl/library/dialect/hprolog.pl +314 -0
  188. package/lib/swipl/library/dialect/ifprolog.pl +1317 -0
  189. package/lib/swipl/library/dialect/iso/iso_predicates.pl +277 -0
  190. package/lib/swipl/library/dialect/sicstus/README.TXT +1 -0
  191. package/lib/swipl/library/dialect/sicstus/arrays.pl +121 -0
  192. package/lib/swipl/library/dialect/sicstus/block.pl +278 -0
  193. package/lib/swipl/library/dialect/sicstus/lists.pl +167 -0
  194. package/lib/swipl/library/dialect/sicstus/ordsets.pl +52 -0
  195. package/lib/swipl/library/dialect/sicstus/sockets.pl +174 -0
  196. package/lib/swipl/library/dialect/sicstus/system.pl +262 -0
  197. package/lib/swipl/library/dialect/sicstus/terms.pl +57 -0
  198. package/lib/swipl/library/dialect/sicstus/timeout.pl +92 -0
  199. package/lib/swipl/library/dialect/sicstus.pl +582 -0
  200. package/lib/swipl/library/dialect/sicstus4/aggregate.pl +60 -0
  201. package/lib/swipl/library/dialect/sicstus4/between.pl +62 -0
  202. package/lib/swipl/library/dialect/sicstus4/clpfd.pl +75 -0
  203. package/lib/swipl/library/dialect/sicstus4/file_systems.pl +413 -0
  204. package/lib/swipl/library/dialect/sicstus4/lists.pl +274 -0
  205. package/lib/swipl/library/dialect/sicstus4/ordsets.pl +54 -0
  206. package/lib/swipl/library/dialect/sicstus4/samsort.pl +86 -0
  207. package/lib/swipl/library/dialect/sicstus4/sets.pl +124 -0
  208. package/lib/swipl/library/dialect/sicstus4/sockets.pl +164 -0
  209. package/lib/swipl/library/dialect/sicstus4/system.pl +80 -0
  210. package/lib/swipl/library/dialect/sicstus4/terms.pl +89 -0
  211. package/lib/swipl/library/dialect/sicstus4/timeout.pl +43 -0
  212. package/lib/swipl/library/dialect/sicstus4/types.pl +103 -0
  213. package/lib/swipl/library/dialect/sicstus4.pl +200 -0
  214. package/lib/swipl/library/dialect/swi/syspred_options.pl +250 -0
  215. package/lib/swipl/library/dialect/xsb/README.md +20 -0
  216. package/lib/swipl/library/dialect/xsb/basics.pl +318 -0
  217. package/lib/swipl/library/dialect/xsb/consult.pl +87 -0
  218. package/lib/swipl/library/dialect/xsb/curr_sym.pl +57 -0
  219. package/lib/swipl/library/dialect/xsb/error_handler.pl +111 -0
  220. package/lib/swipl/library/dialect/xsb/gensym.pl +53 -0
  221. package/lib/swipl/library/dialect/xsb/gpp.pl +138 -0
  222. package/lib/swipl/library/dialect/xsb/intern.pl +48 -0
  223. package/lib/swipl/library/dialect/xsb/lists.pl +47 -0
  224. package/lib/swipl/library/dialect/xsb/machine.pl +295 -0
  225. package/lib/swipl/library/dialect/xsb/ordsets.pl +53 -0
  226. package/lib/swipl/library/dialect/xsb/setof.pl +54 -0
  227. package/lib/swipl/library/dialect/xsb/source.pl +308 -0
  228. package/lib/swipl/library/dialect/xsb/standard.pl +169 -0
  229. package/lib/swipl/library/dialect/xsb/storage.pl +70 -0
  230. package/lib/swipl/library/dialect/xsb/string.pl +76 -0
  231. package/lib/swipl/library/dialect/xsb/thread.pl +62 -0
  232. package/lib/swipl/library/dialect/xsb/timed_call.pl +158 -0
  233. package/lib/swipl/library/dialect/xsb.pl +688 -0
  234. package/lib/swipl/library/dialect/yap/README.TXT +8 -0
  235. package/lib/swipl/library/dialect/yap.pl +283 -0
  236. package/lib/swipl/library/dialect.pl +123 -0
  237. package/lib/swipl/library/dicts.pl +399 -0
  238. package/lib/swipl/library/dif.pl +426 -0
  239. package/lib/swipl/library/edinburgh.pl +138 -0
  240. package/lib/swipl/library/edit.pl +783 -0
  241. package/lib/swipl/library/error.pl +495 -0
  242. package/lib/swipl/library/exceptions.pl +231 -0
  243. package/lib/swipl/library/explain.pl +543 -0
  244. package/lib/swipl/library/ext/RDF/INDEX.pl +25 -0
  245. package/lib/swipl/library/ext/RDF/rdf.pl +450 -0
  246. package/lib/swipl/library/ext/RDF/rdf_parser.pl +649 -0
  247. package/lib/swipl/library/ext/RDF/rdf_triple.pl +448 -0
  248. package/lib/swipl/library/ext/RDF/rdf_write.pl +701 -0
  249. package/lib/swipl/library/ext/RDF/rewrite_term.pl +177 -0
  250. package/lib/swipl/library/ext/chr/chr/a_star.pl +80 -0
  251. package/lib/swipl/library/ext/chr/chr/binomialheap.pl +142 -0
  252. package/lib/swipl/library/ext/chr/chr/builtins.pl +629 -0
  253. package/lib/swipl/library/ext/chr/chr/chr_compiler_errors.pl +179 -0
  254. package/lib/swipl/library/ext/chr/chr/chr_compiler_options.pl +382 -0
  255. package/lib/swipl/library/ext/chr/chr/chr_compiler_utility.pl +338 -0
  256. package/lib/swipl/library/ext/chr/chr/chr_debug.pl +59 -0
  257. package/lib/swipl/library/ext/chr/chr/chr_hashtable_store.pl +425 -0
  258. package/lib/swipl/library/ext/chr/chr/chr_integertable_store.pl +139 -0
  259. package/lib/swipl/library/ext/chr/chr/chr_messages.pl +176 -0
  260. package/lib/swipl/library/ext/chr/chr/chr_op.pl +53 -0
  261. package/lib/swipl/library/ext/chr/chr/chr_runtime.pl +1016 -0
  262. package/lib/swipl/library/ext/chr/chr/chr_translate.pl +25424 -0
  263. package/lib/swipl/library/ext/chr/chr/clean_code.pl +252 -0
  264. package/lib/swipl/library/ext/chr/chr/find.pl +78 -0
  265. package/lib/swipl/library/ext/chr/chr/guard_entailment.pl +19432 -0
  266. package/lib/swipl/library/ext/chr/chr/listmap.pl +108 -0
  267. package/lib/swipl/library/ext/chr/chr/pairlist.pl +78 -0
  268. package/lib/swipl/library/ext/chr/chr.pl +686 -0
  269. package/lib/swipl/library/ext/clib/INDEX.pl +158 -0
  270. package/lib/swipl/library/ext/clib/cgi.pl +86 -0
  271. package/lib/swipl/library/ext/clib/crypt.pl +44 -0
  272. package/lib/swipl/library/ext/clib/filesex.pl +644 -0
  273. package/lib/swipl/library/ext/clib/hash_stream.pl +119 -0
  274. package/lib/swipl/library/ext/clib/mallocinfo.pl +138 -0
  275. package/lib/swipl/library/ext/clib/md5.pl +68 -0
  276. package/lib/swipl/library/ext/clib/memfile.pl +61 -0
  277. package/lib/swipl/library/ext/clib/process.pl +573 -0
  278. package/lib/swipl/library/ext/clib/prolog_server.pl +157 -0
  279. package/lib/swipl/library/ext/clib/prolog_stream.pl +80 -0
  280. package/lib/swipl/library/ext/clib/rlimit.pl +54 -0
  281. package/lib/swipl/library/ext/clib/sched.pl +85 -0
  282. package/lib/swipl/library/ext/clib/sha.pl +162 -0
  283. package/lib/swipl/library/ext/clib/socket.pl +1102 -0
  284. package/lib/swipl/library/ext/clib/streaminfo.pl +103 -0
  285. package/lib/swipl/library/ext/clib/streampool.pl +136 -0
  286. package/lib/swipl/library/ext/clib/syslog.pl +180 -0
  287. package/lib/swipl/library/ext/clib/time.pl +194 -0
  288. package/lib/swipl/library/ext/clib/udp_broadcast.pl +975 -0
  289. package/lib/swipl/library/ext/clib/uid.pl +220 -0
  290. package/lib/swipl/library/ext/clib/unix.pl +317 -0
  291. package/lib/swipl/library/ext/clib/uri.pl +530 -0
  292. package/lib/swipl/library/ext/clib/uuid.pl +207 -0
  293. package/lib/swipl/library/ext/http/http/INDEX.pl +266 -0
  294. package/lib/swipl/library/ext/http/http/README.md +34 -0
  295. package/lib/swipl/library/ext/http/http/ax.pl +189 -0
  296. package/lib/swipl/library/ext/http/http/dcg_basics.pl +49 -0
  297. package/lib/swipl/library/ext/http/http/graphql.pl +1367 -0
  298. package/lib/swipl/library/ext/http/http/html_decl.pl +416 -0
  299. package/lib/swipl/library/ext/http/http/html_head.pl +654 -0
  300. package/lib/swipl/library/ext/http/http/html_quasiquotations.pl +120 -0
  301. package/lib/swipl/library/ext/http/http/html_write.pl +1425 -0
  302. package/lib/swipl/library/ext/http/http/htmx.pl +139 -0
  303. package/lib/swipl/library/ext/http/http/http_authenticate.pl +364 -0
  304. package/lib/swipl/library/ext/http/http/http_client.pl +412 -0
  305. package/lib/swipl/library/ext/http/http/http_cookie.pl +245 -0
  306. package/lib/swipl/library/ext/http/http/http_cors.pl +176 -0
  307. package/lib/swipl/library/ext/http/http/http_digest.pl +820 -0
  308. package/lib/swipl/library/ext/http/http/http_dirindex.pl +296 -0
  309. package/lib/swipl/library/ext/http/http/http_dispatch.pl +1552 -0
  310. package/lib/swipl/library/ext/http/http/http_dyn_workers.pl +214 -0
  311. package/lib/swipl/library/ext/http/http/http_error.pl +126 -0
  312. package/lib/swipl/library/ext/http/http/http_exception.pl +225 -0
  313. package/lib/swipl/library/ext/http/http/http_files.pl +163 -0
  314. package/lib/swipl/library/ext/http/http/http_header.pl +2820 -0
  315. package/lib/swipl/library/ext/http/http/http_hook.pl +106 -0
  316. package/lib/swipl/library/ext/http/http/http_host.pl +204 -0
  317. package/lib/swipl/library/ext/http/http/http_load.pl +113 -0
  318. package/lib/swipl/library/ext/http/http/http_log.pl +738 -0
  319. package/lib/swipl/library/ext/http/http/http_multipart_plugin.pl +232 -0
  320. package/lib/swipl/library/ext/http/http/http_open.pl +1821 -0
  321. package/lib/swipl/library/ext/http/http/http_openid.pl +1561 -0
  322. package/lib/swipl/library/ext/http/http/http_parameters.pl +504 -0
  323. package/lib/swipl/library/ext/http/http/http_path.pl +380 -0
  324. package/lib/swipl/library/ext/http/http/http_proxy.pl +80 -0
  325. package/lib/swipl/library/ext/http/http/http_pwp.pl +351 -0
  326. package/lib/swipl/library/ext/http/http/http_redis_plugin.pl +332 -0
  327. package/lib/swipl/library/ext/http/http/http_server.pl +105 -0
  328. package/lib/swipl/library/ext/http/http/http_server_files.pl +126 -0
  329. package/lib/swipl/library/ext/http/http/http_server_health.pl +186 -0
  330. package/lib/swipl/library/ext/http/http/http_session.pl +1040 -0
  331. package/lib/swipl/library/ext/http/http/http_sgml_plugin.pl +137 -0
  332. package/lib/swipl/library/ext/http/http/http_stream.pl +376 -0
  333. package/lib/swipl/library/ext/http/http/http_unix_daemon.pl +989 -0
  334. package/lib/swipl/library/ext/http/http/http_wrapper.pl +559 -0
  335. package/lib/swipl/library/ext/http/http/hub.pl +600 -0
  336. package/lib/swipl/library/ext/http/http/js_write.pl +461 -0
  337. package/lib/swipl/library/ext/http/http/mimepack.pl +224 -0
  338. package/lib/swipl/library/ext/http/http/mimetype.pl +276 -0
  339. package/lib/swipl/library/ext/http/http/term_html.pl +797 -0
  340. package/lib/swipl/library/ext/http/http/thread_httpd.pl +1181 -0
  341. package/lib/swipl/library/ext/http/http/web/css/dirindex.css +24 -0
  342. package/lib/swipl/library/ext/http/http/web/css/openid.css +57 -0
  343. package/lib/swipl/library/ext/http/http/web/icons/back.png +0 -0
  344. package/lib/swipl/library/ext/http/http/web/icons/c.png +0 -0
  345. package/lib/swipl/library/ext/http/http/web/icons/compressed.png +0 -0
  346. package/lib/swipl/library/ext/http/http/web/icons/folder.png +0 -0
  347. package/lib/swipl/library/ext/http/http/web/icons/generic.png +0 -0
  348. package/lib/swipl/library/ext/http/http/web/icons/layout.png +0 -0
  349. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-square.png +0 -0
  350. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-tiny.png +0 -0
  351. package/lib/swipl/library/ext/http/http/websocket.pl +729 -0
  352. package/lib/swipl/library/ext/http/http/yadis.pl +205 -0
  353. package/lib/swipl/library/ext/json/INDEX.pl +36 -0
  354. package/lib/swipl/library/ext/json/http/INDEX.pl +16 -0
  355. package/lib/swipl/library/ext/json/http/http_json.pl +490 -0
  356. package/lib/swipl/library/ext/json/http/js_grammar.pl +53 -0
  357. package/lib/swipl/library/ext/json/http/json.pl +48 -0
  358. package/lib/swipl/library/ext/json/http/json_convert.pl +48 -0
  359. package/lib/swipl/library/ext/json/json.pl +1215 -0
  360. package/lib/swipl/library/ext/json/json_convert.pl +681 -0
  361. package/lib/swipl/library/ext/json/json_grammar.pl +349 -0
  362. package/lib/swipl/library/ext/json/json_rpc_client.pl +423 -0
  363. package/lib/swipl/library/ext/json/json_rpc_common.pl +104 -0
  364. package/lib/swipl/library/ext/json/json_rpc_server.pl +489 -0
  365. package/lib/swipl/library/ext/json/json_schema.pl +2111 -0
  366. package/lib/swipl/library/ext/nlp/INDEX.pl +15 -0
  367. package/lib/swipl/library/ext/nlp/double_metaphone.pl +86 -0
  368. package/lib/swipl/library/ext/nlp/isub.pl +162 -0
  369. package/lib/swipl/library/ext/nlp/porter_stem.pl +50 -0
  370. package/lib/swipl/library/ext/nlp/snowball.pl +97 -0
  371. package/lib/swipl/library/ext/pcre/INDEX.pl +17 -0
  372. package/lib/swipl/library/ext/pcre/pcre.pl +974 -0
  373. package/lib/swipl/library/ext/plunit/INDEX.pl +20 -0
  374. package/lib/swipl/library/ext/plunit/plunit.pl +2631 -0
  375. package/lib/swipl/library/ext/plunit/test_wizard.pl +249 -0
  376. package/lib/swipl/library/ext/semweb/semweb/INDEX.pl +288 -0
  377. package/lib/swipl/library/ext/semweb/semweb/rdf11.pl +2106 -0
  378. package/lib/swipl/library/ext/semweb/semweb/rdf11_containers.pl +299 -0
  379. package/lib/swipl/library/ext/semweb/semweb/rdf_cache.pl +278 -0
  380. package/lib/swipl/library/ext/semweb/semweb/rdf_compare.pl +132 -0
  381. package/lib/swipl/library/ext/semweb/semweb/rdf_db.pl +3468 -0
  382. package/lib/swipl/library/ext/semweb/semweb/rdf_edit.pl +1145 -0
  383. package/lib/swipl/library/ext/semweb/semweb/rdf_http_plugin.pl +274 -0
  384. package/lib/swipl/library/ext/semweb/semweb/rdf_library.pl +1021 -0
  385. package/lib/swipl/library/ext/semweb/semweb/rdf_litindex.pl +1035 -0
  386. package/lib/swipl/library/ext/semweb/semweb/rdf_ntriples.pl +422 -0
  387. package/lib/swipl/library/ext/semweb/semweb/rdf_persistency.pl +1576 -0
  388. package/lib/swipl/library/ext/semweb/semweb/rdf_portray.pl +182 -0
  389. package/lib/swipl/library/ext/semweb/semweb/rdf_prefixes.pl +681 -0
  390. package/lib/swipl/library/ext/semweb/semweb/rdf_sandbox.pl +153 -0
  391. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle.pl +54 -0
  392. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle_write.pl +1587 -0
  393. package/lib/swipl/library/ext/semweb/semweb/rdf_zlib_plugin.pl +52 -0
  394. package/lib/swipl/library/ext/semweb/semweb/rdfa.pl +1510 -0
  395. package/lib/swipl/library/ext/semweb/semweb/rdfs.pl +475 -0
  396. package/lib/swipl/library/ext/semweb/semweb/sparql_client.pl +643 -0
  397. package/lib/swipl/library/ext/semweb/semweb/turtle.pl +455 -0
  398. package/lib/swipl/library/ext/sgml/DTD/HTML4.dcl +88 -0
  399. package/lib/swipl/library/ext/sgml/DTD/HTML4.dtd +1092 -0
  400. package/lib/swipl/library/ext/sgml/DTD/HTML4.soc +6 -0
  401. package/lib/swipl/library/ext/sgml/DTD/HTML5.dtd +906 -0
  402. package/lib/swipl/library/ext/sgml/DTD/HTMLlat1.ent +195 -0
  403. package/lib/swipl/library/ext/sgml/DTD/HTMLspec.ent +77 -0
  404. package/lib/swipl/library/ext/sgml/DTD/HTMLsym.ent +241 -0
  405. package/lib/swipl/library/ext/sgml/INDEX.pl +64 -0
  406. package/lib/swipl/library/ext/sgml/c14n2.pl +203 -0
  407. package/lib/swipl/library/ext/sgml/iso_639.pl +631 -0
  408. package/lib/swipl/library/ext/sgml/pwp.pl +705 -0
  409. package/lib/swipl/library/ext/sgml/sgml.pl +815 -0
  410. package/lib/swipl/library/ext/sgml/sgml_write.pl +1003 -0
  411. package/lib/swipl/library/ext/sgml/xpath.pl +620 -0
  412. package/lib/swipl/library/ext/sgml/xsdp_types.pl +232 -0
  413. package/lib/swipl/library/ext/ssl/INDEX.pl +60 -0
  414. package/lib/swipl/library/ext/ssl/crypto.pl +1015 -0
  415. package/lib/swipl/library/ext/ssl/http/INDEX.pl +5 -0
  416. package/lib/swipl/library/ext/ssl/http/http_ssl_plugin.pl +296 -0
  417. package/lib/swipl/library/ext/ssl/saml.pl +609 -0
  418. package/lib/swipl/library/ext/ssl/ssl.pl +647 -0
  419. package/lib/swipl/library/ext/ssl/xmldsig.pl +391 -0
  420. package/lib/swipl/library/ext/ssl/xmlenc.pl +354 -0
  421. package/lib/swipl/library/ext/zlib/INDEX.pl +8 -0
  422. package/lib/swipl/library/ext/zlib/zlib.pl +112 -0
  423. package/lib/swipl/library/fastrw.pl +105 -0
  424. package/lib/swipl/library/files.pl +80 -0
  425. package/lib/swipl/library/gensym.pl +111 -0
  426. package/lib/swipl/library/git.pl +1027 -0
  427. package/lib/swipl/library/hashtable.pl +365 -0
  428. package/lib/swipl/library/heaps.pl +252 -0
  429. package/lib/swipl/library/hotfix.pl +239 -0
  430. package/lib/swipl/library/http/jquery.pl +103 -0
  431. package/lib/swipl/library/http/web/js/jquery-3.6.0.min.js +2 -0
  432. package/lib/swipl/library/increval.pl +217 -0
  433. package/lib/swipl/library/intercept.pl +263 -0
  434. package/lib/swipl/library/iostream.pl +237 -0
  435. package/lib/swipl/library/iri_scheme/file.pl +70 -0
  436. package/lib/swipl/library/lazy_lists.pl +481 -0
  437. package/lib/swipl/library/listing.pl +1362 -0
  438. package/lib/swipl/library/lists.pl +860 -0
  439. package/lib/swipl/library/lynx/INDEX.pl +14 -0
  440. package/lib/swipl/library/lynx/format.pl +380 -0
  441. package/lib/swipl/library/lynx/html_style.pl +129 -0
  442. package/lib/swipl/library/lynx/html_text.pl +865 -0
  443. package/lib/swipl/library/lynx/pldoc_style.pl +87 -0
  444. package/lib/swipl/library/macros.pl +451 -0
  445. package/lib/swipl/library/main.pl +1200 -0
  446. package/lib/swipl/library/make.pl +197 -0
  447. package/lib/swipl/library/modules.pl +129 -0
  448. package/lib/swipl/library/nb_rbtrees.pl +267 -0
  449. package/lib/swipl/library/nb_set.pl +203 -0
  450. package/lib/swipl/library/obfuscate.pl +115 -0
  451. package/lib/swipl/library/occurs.pl +241 -0
  452. package/lib/swipl/library/operators.pl +182 -0
  453. package/lib/swipl/library/option.pl +388 -0
  454. package/lib/swipl/library/optparse.pl +966 -0
  455. package/lib/swipl/library/ordsets.pl +518 -0
  456. package/lib/swipl/library/oset.pl +160 -0
  457. package/lib/swipl/library/pairs.pl +187 -0
  458. package/lib/swipl/library/persistency.pl +713 -0
  459. package/lib/swipl/library/pio.pl +47 -0
  460. package/lib/swipl/library/portray_text.pl +277 -0
  461. package/lib/swipl/library/pprint.pl +940 -0
  462. package/lib/swipl/library/predicate_options.pl +975 -0
  463. package/lib/swipl/library/prolog_autoload.pl +233 -0
  464. package/lib/swipl/library/prolog_breakpoints.pl +396 -0
  465. package/lib/swipl/library/prolog_clause.pl +1104 -0
  466. package/lib/swipl/library/prolog_code.pl +416 -0
  467. package/lib/swipl/library/prolog_codewalk.pl +1248 -0
  468. package/lib/swipl/library/prolog_colour.pl +3301 -0
  469. package/lib/swipl/library/prolog_colour.qlf +0 -0
  470. package/lib/swipl/library/prolog_config.pl +154 -0
  471. package/lib/swipl/library/prolog_coverage.pl +1333 -0
  472. package/lib/swipl/library/prolog_debug.pl +404 -0
  473. package/lib/swipl/library/prolog_deps.pl +675 -0
  474. package/lib/swipl/library/prolog_evaluable.pl +234 -0
  475. package/lib/swipl/library/prolog_format.pl +219 -0
  476. package/lib/swipl/library/prolog_history.pl +161 -0
  477. package/lib/swipl/library/prolog_jiti.pl +333 -0
  478. package/lib/swipl/library/prolog_locale.pl +61 -0
  479. package/lib/swipl/library/prolog_metainference.pl +307 -0
  480. package/lib/swipl/library/prolog_pack.pl +3906 -0
  481. package/lib/swipl/library/prolog_profile.pl +346 -0
  482. package/lib/swipl/library/prolog_qlfmake.pl +533 -0
  483. package/lib/swipl/library/prolog_source.pl +1188 -0
  484. package/lib/swipl/library/prolog_stack.pl +794 -0
  485. package/lib/swipl/library/prolog_trace.pl +365 -0
  486. package/lib/swipl/library/prolog_versions.pl +347 -0
  487. package/lib/swipl/library/prolog_wrap.pl +164 -0
  488. package/lib/swipl/library/prolog_xref.pl +3090 -0
  489. package/lib/swipl/library/prolog_xref.qlf +0 -0
  490. package/lib/swipl/library/pure_input.pl +266 -0
  491. package/lib/swipl/library/qpforeign.pl +695 -0
  492. package/lib/swipl/library/qsave.pl +1516 -0
  493. package/lib/swipl/library/quasi_quotations.pl +300 -0
  494. package/lib/swipl/library/quintus.pl +437 -0
  495. package/lib/swipl/library/random.pl +459 -0
  496. package/lib/swipl/library/rbtrees.pl +1153 -0
  497. package/lib/swipl/library/readln.pl +256 -0
  498. package/lib/swipl/library/readutil.pl +304 -0
  499. package/lib/swipl/library/record.pl +544 -0
  500. package/lib/swipl/library/rwlocks.pl +172 -0
  501. package/lib/swipl/library/sandbox.pl +1384 -0
  502. package/lib/swipl/library/semweb/dc.rdfs +198 -0
  503. package/lib/swipl/library/semweb/eor.rdfs +95 -0
  504. package/lib/swipl/library/semweb/owl.owl +287 -0
  505. package/lib/swipl/library/semweb/rdf_library.ttl +90 -0
  506. package/lib/swipl/library/semweb/rdfs.rdfs +251 -0
  507. package/lib/swipl/library/settings.pl +755 -0
  508. package/lib/swipl/library/shell.pl +462 -0
  509. package/lib/swipl/library/shlib.pl +670 -0
  510. package/lib/swipl/library/solution_sequences.pl +439 -0
  511. package/lib/swipl/library/sort.pl +119 -0
  512. package/lib/swipl/library/statistics.pl +541 -0
  513. package/lib/swipl/library/streams.pl +118 -0
  514. package/lib/swipl/library/strings.pl +469 -0
  515. package/lib/swipl/library/system.pl +95 -0
  516. package/lib/swipl/library/tables.pl +381 -0
  517. package/lib/swipl/library/tableutil.pl +771 -0
  518. package/lib/swipl/library/tabling.pl +42 -0
  519. package/lib/swipl/library/terms.pl +457 -0
  520. package/lib/swipl/library/theme/auto.pl +61 -0
  521. package/lib/swipl/library/theme/dark.pl +455 -0
  522. package/lib/swipl/library/theme/light.pl +45 -0
  523. package/lib/swipl/library/thread.pl +810 -0
  524. package/lib/swipl/library/thread_pool.pl +508 -0
  525. package/lib/swipl/library/threadutil.pl +574 -0
  526. package/lib/swipl/library/tty.pl +316 -0
  527. package/lib/swipl/library/ugraphs.pl +644 -0
  528. package/lib/swipl/library/unicode/INDEX.pl +6 -0
  529. package/lib/swipl/library/unicode/blocks.pl +414 -0
  530. package/lib/swipl/library/url.pl +1129 -0
  531. package/lib/swipl/library/utf8.pl +145 -0
  532. package/lib/swipl/library/varnumbers.pl +221 -0
  533. package/lib/swipl/library/vm.pl +251 -0
  534. package/lib/swipl/library/wfs.pl +205 -0
  535. package/lib/swipl/library/when.pl +263 -0
  536. package/lib/swipl/library/writef.pl +278 -0
  537. package/lib/swipl/library/www_browser.pl +251 -0
  538. package/lib/swipl/library/yall.pl +574 -0
  539. package/lib/swipl/library/zip.pl +211 -0
  540. package/lib/swipl/swipl.home +1 -0
  541. package/lib/vendor/libcrypto.so.3 +0 -0
  542. package/lib/vendor/libpcre2-8.so.0 +0 -0
  543. package/lib/vendor/libssl.so.3 +0 -0
  544. package/lib/vendor/libz.so.1 +0 -0
  545. package/licenses/OpenSSL-LICENSE.txt +177 -0
  546. package/licenses/PCRE2-COPYING +5 -0
  547. package/licenses/README.md +12 -0
  548. package/licenses/SWI-Prolog-LICENSE +41 -0
  549. package/licenses/zlib-LICENSE +22 -0
  550. package/package.json +27 -0
@@ -0,0 +1,92 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ Author: Jan Wielemaker
4
+ E-mail: J.Wielemaker@vu.nl
5
+ WWW: http://www.swi-prolog.org
6
+ Copyright (c) 2010-2019, University of Amsterdam
7
+ CWI, Amsterdam
8
+ All rights reserved.
9
+
10
+ Redistribution and use in source and binary forms, with or without
11
+ modification, are permitted provided that the following conditions
12
+ are met:
13
+
14
+ 1. Redistributions of source code must retain the above copyright
15
+ notice, this list of conditions and the following disclaimer.
16
+
17
+ 2. Redistributions in binary form must reproduce the above copyright
18
+ notice, this list of conditions and the following disclaimer in
19
+ the documentation and/or other materials provided with the
20
+ distribution.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
+ POSSIBILITY OF SUCH DAMAGE.
34
+ */
35
+
36
+ :- module(timeout,
37
+ [ time_out/3 % :Goal, +Time, -Result
38
+ ]).
39
+ :- use_module(library(time)).
40
+
41
+ /** <module> SICStus 3-compatible library(timeout).
42
+
43
+ @author Ulrich Neumerkel
44
+ @author Jan Wielemaker
45
+
46
+ @see https://sicstus.sics.se/sicstus/docs/3.12.11/html/sicstus/Timeout.html
47
+ */
48
+
49
+ :- meta_predicate
50
+ time_out(0, +, -).
51
+
52
+ %! time_out(:Goal, +Time_ms, -Result) is nondet.
53
+ %
54
+ % This library provides a SICStus compatible implementation of
55
+ % time-outs. This predicate runs Goal as call/1 and binds Result to
56
+ % either `success` (the answer was produced within Time_ms) or
57
+ % `time_out` (Goal did not terminate within Time_ms). If Goal
58
+ % succeeds with a choice point, backtracking into it re-applies the
59
+ % time limit, i.e., each solution gets a Time_ms time limit.
60
+ %
61
+ % Calls to time_out/3 can be nested. If an outer time out is
62
+ % triggered first, the inner time out is cancelled using a
63
+ % time_out(Id) exception and the outer one binds Result to
64
+ % `time_out`.
65
+ %
66
+ % @bug Unfortunately, our emulation is not fully compatible with the
67
+ % SICStus original. Notably, Time is measured in __wall-time instead
68
+ % of virtual CPU time__. Virtual CPU time is hard in
69
+ % threaded-environments. On most systems, you probably need a thread
70
+ % that measures the CPU usage of the monitored thread.
71
+ %
72
+ % @see alarm/3, call_with_time_limit/2, call_with_inference_limit/3
73
+ % and thread-based primitives such as thread_signal/2 and
74
+ % first_solution/3.
75
+
76
+ time_out(Goal, Time_ms, Result) :-
77
+ Time_s is (Time_ms//1)/1000,
78
+ prolog_current_frame(Fid), % Unique id for this call.
79
+ catch( ( Result0 = success,
80
+ setup_call_cleanup(
81
+ alarm(Time_s, throw(time_out(Fid)), Id),
82
+ Goal,
83
+ ( Removed = true, remove_alarm(Id) )),
84
+ ( var(Removed)
85
+ -> uninstall_alarm(Id),
86
+ ( true ; install_alarm(Id,Time_s), fail )
87
+ ; true
88
+ )
89
+ ),
90
+ time_out(Fid),
91
+ Result0 = time_out ),
92
+ Result = Result0.
@@ -0,0 +1,582 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ Author: Jan Wielemaker
4
+ E-mail: J.Wielemaker@vu.nl
5
+ WWW: http://www.swi-prolog.org
6
+ Copyright (c) 2010-2014, VU University Amsterdam
7
+ All rights reserved.
8
+
9
+ Redistribution and use in source and binary forms, with or without
10
+ modification, are permitted provided that the following conditions
11
+ are met:
12
+
13
+ 1. Redistributions of source code must retain the above copyright
14
+ notice, this list of conditions and the following disclaimer.
15
+
16
+ 2. Redistributions in binary form must reproduce the above copyright
17
+ notice, this list of conditions and the following disclaimer in
18
+ the documentation and/or other materials provided with the
19
+ distribution.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
+ POSSIBILITY OF SUCH DAMAGE.
33
+ */
34
+
35
+ :- module(sicstus,
36
+ [ (block)/1, % +Heads
37
+
38
+ if/3, % :If, :Then, :Else
39
+
40
+ use_module/3, % ?Module, ?File, +Imports
41
+
42
+ bb_put/2, % :Key, +Value
43
+ bb_get/2, % :Key, -Value
44
+ bb_delete/2, % :Key, -Value
45
+ bb_update/3, % :Key, -Old, +New
46
+
47
+ is_mutable/1, % @Term
48
+ create_mutable/2, % ?Value, -Mutable
49
+ get_mutable/2, % ?Value, +Mutable
50
+ update_mutable/2, % ?Value, !Mutable
51
+
52
+ sicstus_is_readable_stream/1, % +Stream
53
+ read_line/1, % -Codes
54
+ read_line/2, % +Stream, -Codes
55
+
56
+ trimcore/0,
57
+
58
+ % call_residue/2, % :Goal, -Residue
59
+
60
+ prolog_flag/3, % +Flag, -Old, +New
61
+
62
+ statistics/2, % ?Key, ?Value
63
+
64
+ op(1150, fx, (block)),
65
+ op(1150, fx, (mode)),
66
+ op(900, fy, (spy)),
67
+ op(900, fy, (nospy))
68
+ ]).
69
+
70
+ :- use_module(sicstus/block).
71
+ :- use_module(library(occurs)).
72
+ :- use_module(library(debug)).
73
+ :- use_module(library(error)).
74
+ :- use_module(library(lists)).
75
+ :- use_module(library(arithmetic)).
76
+
77
+
78
+ /** <module> SICStus 3 compatibility library
79
+
80
+ This library is intended to be activated using the directive below in
81
+ files that are designed for use with SICStus Prolog 3. The changes are
82
+ in effect until the end of the file and in each file loaded from this
83
+ file.
84
+
85
+ ==
86
+ :- expects_dialect(sicstus).
87
+ ==
88
+
89
+ This library only provides compatibility with version 3 of SICStus
90
+ Prolog. For SICStus Prolog 4 compatibility, use
91
+ library(dialect/sicstus4) instead.
92
+
93
+ @tbd The dialect-compatibility packages are developed in a
94
+ `demand-driven' fashion. Please contribute to this package.
95
+ */
96
+
97
+ % SICStus built-in operators that SWI doesn't declare by default.
98
+ :- op(1150, fx, user:(mode)).
99
+ :- op(900, fy, user:(spy)).
100
+ :- op(900, fy, user:(nospy)).
101
+
102
+ :- multifile
103
+ system:goal_expansion/2.
104
+
105
+
106
+ /*******************************
107
+ * LIBRARY SETUP *
108
+ *******************************/
109
+
110
+ %% push_sicstus_library
111
+ %
112
+ % Pushes searching for dialect/sicstus in front of every library
113
+ % directory that contains such as sub-directory.
114
+
115
+ push_sicstus_library :-
116
+ ( absolute_file_name(library(dialect/sicstus), Dir,
117
+ [ file_type(directory),
118
+ access(read),
119
+ solutions(all),
120
+ file_errors(fail)
121
+ ]),
122
+ asserta((user:file_search_path(library, Dir) :-
123
+ prolog_load_context(dialect, sicstus))),
124
+ fail
125
+ ; true
126
+ ).
127
+
128
+
129
+ :- push_sicstus_library.
130
+
131
+
132
+ in_sicstus_dialect :-
133
+ ( prolog_load_context(dialect, sicstus)
134
+ -> true
135
+ ; prolog_load_context(dialect, sicstus4)
136
+ ).
137
+
138
+
139
+ /*******************************
140
+ * OPERATORS *
141
+ *******************************/
142
+
143
+ % declare all operators globally
144
+
145
+ user:goal_expansion(op(Pri,Ass,Name),
146
+ op(Pri,Ass,user:Name)) :-
147
+ \+ qualified(Name),
148
+ in_sicstus_dialect.
149
+
150
+ qualified(Var) :- var(Var), !, fail.
151
+ qualified(_:_).
152
+
153
+ % Import all operators from a module, even when using an explicit list
154
+ % of imports. This simulates the SICStus behavior, where operators are
155
+ % not module-sensitive and don't need to be listed in import lists.
156
+
157
+ user:goal_expansion(use_module(Module,Imports),
158
+ use_module(Module,[op(_,_,_)|Imports])) :-
159
+ in_sicstus_dialect,
160
+ % Prevent infinite recursion.
161
+ \+ memberchk(op(_,_,_),Imports).
162
+
163
+ %% setup_dialect
164
+ %
165
+ % Further dialect initialization.
166
+ %
167
+ % Currently this disables quoting when printing atoms,
168
+ % which SWI does by default, but SICStus doesn't.
169
+ % This globally modifies the print_write_options Prolog flag,
170
+ % so this change also affects code that doesn't request
171
+ % SICStus compatibility.
172
+
173
+ setup_dialect :-
174
+ current_prolog_flag(print_write_options, Options),
175
+ ( selectchk(quoted(true), Options, OptionsNoQuoted)
176
+ -> set_prolog_flag(print_write_options, OptionsNoQuoted)
177
+ ; true
178
+ ).
179
+
180
+
181
+ /*******************************
182
+ * CONTROL *
183
+ *******************************/
184
+
185
+ :- meta_predicate
186
+ if(0,0,0).
187
+
188
+ system:goal_expansion(if(If,Then,Else),
189
+ (If *-> Then ; Else)) :-
190
+ in_sicstus_dialect,
191
+ \+ (sub_term(X, [If,Then,Else]), X == !).
192
+
193
+ %% if(:If, :Then, :Else)
194
+ %
195
+ % Same as SWI-Prolog soft-cut construct. Normally, this is
196
+ % translated using goal-expansion. If either term contains a !, we
197
+ % use meta-calling for full compatibility (i.e., scoping the cut).
198
+
199
+ if(If, Then, Else) :-
200
+ ( If
201
+ *-> Then
202
+ ; Else
203
+ ).
204
+
205
+
206
+ /*******************************
207
+ * LIBRARY MODULES *
208
+ *******************************/
209
+
210
+ %% rename_module(?SICStusModule, ?RenamedSICSTusModule) is nondet.
211
+ %
212
+ % True if RenamedSICSTusModule is the name that we use for the
213
+ % SICStus native module SICStusModule. We do this in places where
214
+ % the module-name conflicts. All explicitely qualified goals are
215
+ % mapped to the SICStus equivalent of the module.
216
+
217
+ :- multifile
218
+ rename_module/2.
219
+
220
+ system:goal_expansion(M:Goal, SicstusM:Goal) :-
221
+ atom(M),
222
+ rename_module(M, SicstusM),
223
+ prolog_load_context(dialect, sicstus).
224
+
225
+
226
+ /*******************************
227
+ * MODULES *
228
+ *******************************/
229
+
230
+ % SICStus use_module/1 does not require the target to be a module.
231
+
232
+ system:goal_expansion(use_module(File), load_files(File, [if(changed)])) :-
233
+ prolog_load_context(dialect, sicstus).
234
+
235
+ %% use_module(+Module, -File, +Imports) is det.
236
+ %% use_module(-Module, +File, +Imports) is det.
237
+ %
238
+ % This predicate can be used to import from a named module while
239
+ % the file-location of the module is unknown or to get access to
240
+ % the module-name loaded from a file.
241
+ %
242
+ % If both Module and File are given, we use Module and try to
243
+ % unify File with the absolute canonical path to the file from
244
+ % which Module was loaded. However, we succeed regardless of the
245
+ % success of this unification.
246
+
247
+ use_module(Module, File, Imports) :-
248
+ atom(Module), !,
249
+ module_property(Module, file(Path)),
250
+ use_module(Path, Imports),
251
+ ignore(File = Path).
252
+ use_module(Module, File, Imports) :-
253
+ ground(File), !,
254
+ absolute_file_name(File, Path,
255
+ [ file_type(prolog),
256
+ access(read)
257
+ ]),
258
+ use_module(Path, Imports),
259
+ module_property(Module, file(Path)).
260
+ use_module(Module, _, _Imports) :-
261
+ instantiation_error(Module).
262
+
263
+
264
+ /*******************************
265
+ * FOREIGN RESOURCES *
266
+ *******************************/
267
+
268
+ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
269
+ SICStus uses foreign_resource(Name, Functions) and predicate definitions
270
+ similar to Quintus. qpforeign can generate the glue code that can be
271
+ linked with swipl-ld. This part of the emulation merely skips the
272
+ declarations and Maps load_foreign_resource to load_foreign_resource/2
273
+ from library(qpforeign).
274
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
275
+
276
+ system:term_expansion(
277
+ (:- load_foreign_resource(Base)),
278
+ (:- initialization(load_foreign_resource(M:Base, Source), now))) :-
279
+ prolog_load_context(source, Source),
280
+ prolog_load_context(module, M).
281
+ system:term_expansion(
282
+ (:- module(Name, Exports, Options)),
283
+ [ (:- module(Name, Exports))
284
+ | Declarations
285
+ ]) :-
286
+ (prolog_load_context(dialect, sicstus) ; prolog_load_context(dialect, sicstus4)),
287
+ phrase(sicstus_module_decls(Options), Declarations).
288
+
289
+ sicstus_module_decls([]) --> [].
290
+ sicstus_module_decls([H|T]) -->
291
+ sicstus_module_decl(H),
292
+ sicstus_module_decls(T).
293
+
294
+ sicstus_module_decl(hidden(true)) --> !,
295
+ [(:- set_prolog_flag(generate_debug_info, false))].
296
+ sicstus_module_decl(_) -->
297
+ [].
298
+
299
+
300
+ /*******************************
301
+ * BB_* *
302
+ *******************************/
303
+
304
+ :- meta_predicate
305
+ bb_put(:, +),
306
+ bb_get(:, -),
307
+ bb_delete(:, -),
308
+ bb_update(:, -, +).
309
+
310
+ system:goal_expansion(bb_put(Key, Value), nb_setval(Atom, Value)) :-
311
+ bb_key(Key, Atom).
312
+ system:goal_expansion(bb_get(Key, Value), nb_current(Atom, Value)) :-
313
+ bb_key(Key, Atom).
314
+ system:goal_expansion(bb_delete(Key, Value),
315
+ ( nb_current(Atom, Value),
316
+ nb_delete(Atom)
317
+ )) :-
318
+ bb_key(Key, Atom).
319
+ system:goal_expansion(bb_update(Key, Old, New),
320
+ ( nb_current(Atom, Old),
321
+ nb_setval(Atom, New)
322
+ )) :-
323
+ bb_key(Key, Atom).
324
+
325
+ bb_key(Module:Key, Atom) :-
326
+ atom(Module), !,
327
+ atomic(Key),
328
+ atomic_list_concat([Module, Key], :, Atom).
329
+ bb_key(Key, Atom) :-
330
+ atomic(Key),
331
+ prolog_load_context(module, Module),
332
+ atomic_list_concat([Module, Key], :, Atom).
333
+
334
+ %% bb_put(:Name, +Value) is det.
335
+ %% bb_get(:Name, -Value) is semidet.
336
+ %% bb_delete(:Name, -Value) is semidet.
337
+ %% bb_update(:Name, -Old, +New) is semidet.
338
+ %
339
+ % SICStus compatible blackboard routines. The implementations only
340
+ % deal with cases where the module-sensitive key is unknown and
341
+ % meta-calling. Simple cases are directly mapped to SWI-Prolog
342
+ % non-backtrackable global variables.
343
+
344
+ bb_put(Key, Value) :-
345
+ bb_key(Key, Name),
346
+ nb_setval(Name, Value).
347
+ bb_get(Key, Value) :-
348
+ bb_key(Key, Name),
349
+ nb_current(Name, Value).
350
+ bb_delete(Key, Value) :-
351
+ bb_key(Key, Name),
352
+ nb_current(Name, Value),
353
+ nb_delete(Name).
354
+ bb_update(Key, Old, New) :-
355
+ bb_key(Key, Name),
356
+ nb_current(Name, Old),
357
+ nb_setval(Name, New).
358
+
359
+
360
+ /*******************************
361
+ * MUTABLES *
362
+ *******************************/
363
+
364
+ %% is_mutable(@Term) is det.
365
+ %
366
+ % True if Term is bound to a mutable term.
367
+ %
368
+ % @compat sicstus
369
+
370
+ is_mutable(Term) :-
371
+ nonvar(Term),
372
+ functor(Term, '$mutable', 2).
373
+
374
+ %% create_mutable(?Value, -Mutable) is det.
375
+ %
376
+ % Create a mutable term with the given initial Value.
377
+ %
378
+ % @compat sicstus
379
+
380
+ create_mutable(Value, '$mutable'(Value,_)).
381
+
382
+ %% get_mutable(?Value, +Mutable) is semidet.
383
+ %
384
+ % True if Value unifies with the current value of Mutable.
385
+ %
386
+ % @compat sicstus
387
+
388
+ get_mutable(Value, '$mutable'(Value,_)).
389
+
390
+ %% update_mutable(?Value, !Mutable) is det.
391
+ %
392
+ % Set the value of Mutable to Value. The old binding is
393
+ % restored on backtracking.
394
+ %
395
+ % @see setarg/3.
396
+ % @compat sicstus
397
+
398
+ update_mutable(Value, Mutable) :-
399
+ functor(Mutable, '$mutable', 2), !,
400
+ setarg(1, Mutable, Value).
401
+ update_mutable(_, Mutable) :-
402
+ type_error(mutable, Mutable).
403
+
404
+
405
+ /*******************************
406
+ * LINE READING *
407
+ *******************************/
408
+
409
+ %% read_line(-Codes) is det.
410
+ %% read_line(+Stream, -Codes) is det.
411
+ %
412
+ % Read a line from the given or current input. The line read does
413
+ % _not_ include the line-termination character. Unifies Codes with
414
+ % =end_of_file= if the end of the input is reached.
415
+ %
416
+ % @compat sicstus
417
+ % @see The SWI-Prolog primitive is read_line_to_codes/2.
418
+
419
+ read_line(Codes) :-
420
+ read_line_to_codes(current_input, Codes).
421
+
422
+ read_line(Stream, Codes) :-
423
+ read_line_to_codes(Stream, Codes).
424
+
425
+ % Emulate the SICStus behavior of at_end_of_stream, which silently fails
426
+ % instead of blocking if reading from the stream would block.
427
+ % Also fails silently if Stream is not actually a valid stream.
428
+
429
+ sicstus_is_readable_stream(Stream) :-
430
+ is_stream(Stream),
431
+ stream_property(Stream, end_of_stream(not)).
432
+
433
+ user:goal_expansion(at_end_of_stream(Stream), \+ sicstus_is_readable_stream(Stream)) :-
434
+ in_sicstus_dialect.
435
+
436
+ user:goal_expansion(at_end_of_stream, \+ sicstus_is_readable_stream(current_input)) :-
437
+ in_sicstus_dialect.
438
+
439
+
440
+ /*******************************
441
+ * COROUTINING & CONSTRAINTS *
442
+ *******************************/
443
+
444
+ /* This is more complicated. Gertjan van Noord decided to use
445
+ copy_term/3 in Alpino.
446
+
447
+ %% call_residue(:Goal, -Residue) is nondet.
448
+ %
449
+ % Residue is a list of VarSet-Goal. Note that this implementation
450
+ % is incomplete. Please consult the documentation of
451
+ % call_residue_vars/2 for known issues.
452
+
453
+ :- meta_predicate
454
+ call_residue(0, -).
455
+
456
+ call_residue(Goal, Residue) :-
457
+ call_residue_vars(Goal, Vars),
458
+ ( Vars == []
459
+ -> Residue = []
460
+ ; copy_term(Vars, _AllVars, Goals),
461
+ phrase(vars_by_goal(Goals), Residue)
462
+ ).
463
+
464
+ vars_by_goal((A,B)) --> !,
465
+ vars_by_goal(A),
466
+ vars_by_goal(B).
467
+ vars_by_goal(Goal) -->
468
+ { term_attvars(Goal, AttVars),
469
+ sort(AttVars, VarSet)
470
+ },
471
+ [ VarSet-Goal ].
472
+ */
473
+
474
+ %% trimcore is det.
475
+ %
476
+ % Trims the stacks and releases unused heap memory to the
477
+ % operating system where possible. Other tasks of the SICStus
478
+ % trimcore/0 are automatically scheduled by SWI-Prolog.
479
+
480
+ trimcore :-
481
+ trim_stacks,
482
+ trim_heap.
483
+
484
+
485
+ /*******************************
486
+ * FLAGS *
487
+ *******************************/
488
+
489
+ :- use_module(library(quintus), [prolog_flag/2 as quintus_flag]).
490
+
491
+ %% prolog_flag(+Flag, -Old, +New) is semidet.
492
+ %
493
+ % Query and set a Prolog flag. Use the debug/1 topic =prolog_flag=
494
+ % to find the flags accessed using this predicate.
495
+
496
+ prolog_flag(Flag, Old, New) :-
497
+ debug(prolog_flag, 'prolog_flag(~q, ~q, ~q)', [Flag, Old, New]),
498
+ sicstus_flag(Flag, Old),
499
+ set_prolog_flag(Flag, New).
500
+
501
+ :- public sicstus_flag/2.
502
+
503
+ sicstus_flag(host_type, HostType) :- !,
504
+ % Not a perfect emulation. SWI's arch flag only contains the
505
+ % architecture and OS family (e. g. 'x86_64-darwin'),
506
+ % but SICStus host_type also contains the OS version number
507
+ % (e. g. 'x86_64-darwin-15.6.0').
508
+ % But this works well enough for code that just checks the
509
+ % architecture/OS part and not the exact version.
510
+ current_prolog_flag(arch, HostType).
511
+ sicstus_flag(system_type, Type) :- !,
512
+ ( current_prolog_flag(saved_program, true)
513
+ -> Type = runtime
514
+ ; Type = development
515
+ ).
516
+ sicstus_flag(Name, Value) :-
517
+ quintus_flag(Name, Value).
518
+
519
+ % Replace all current_prolog_flag/2 and prolog_flag/2 calls with
520
+ % sicstus_flag/2. prolog_flag/2 can also be autoloaded from
521
+ % library(quintus) - this goal expansion ensures that sicstus_flag/2
522
+ % takes priority when SICStus emulation is active.
523
+
524
+ user:goal_expansion(Goal, sicstus:sicstus_flag(Name, Value)) :-
525
+ nonvar(Goal),
526
+ (Goal = current_prolog_flag(Name, Value) ; Goal = prolog_flag(Name, Value)),
527
+ in_sicstus_dialect.
528
+
529
+
530
+ % As of SICStus 3.2.11, the following statistics/2 keys are still missing:
531
+ % * choice
532
+
533
+ statistics(heap, Stats) :- !, system:statistics(program, Stats).
534
+ statistics(garbage_collection, [Count, Freed, Time]) :- !,
535
+ % Remove fourth list element (SWI extension).
536
+ system:statistics(garbage_collection, [Count, Freed, Time|_]).
537
+ statistics(atoms, [H|T]) :- !,
538
+ % SWI natively provides two different values under the atoms key:
539
+ % the number of atoms as a single integer,
540
+ % and a Quintus/SICStus-compatible list of atom usage statistics.
541
+ % Which value is returned when calling statistics(atoms, X)
542
+ % depends on the value of X before the call:
543
+ % if X is unbound, the single integer is returned,
544
+ % but if X is already bound to a (usually non-ground) list,
545
+ % the list of statistics is returned instead.
546
+
547
+ % Here we just force the list to be returned in all cases
548
+ % if SICStus emulation is active, by forcing the second argument
549
+ % to be bound to a list.
550
+ system:statistics(atoms, [H|T]).
551
+
552
+ statistics(Keyword, Value) :- system:statistics(Keyword, Value).
553
+
554
+
555
+ /*******************************
556
+ * ARITHMETIC *
557
+ *******************************/
558
+
559
+ % Provide (#)/2 as arithmetic function. Ideally, we should be able to
560
+ % bind multiple names to built-in functions. This is rather slow. We
561
+ % could also consider adding # internally, but not turning it into an
562
+ % operator.
563
+
564
+ :- op(500, yfx, user:(#)).
565
+
566
+ :- arithmetic_function(user:(#)/2).
567
+
568
+ user:(#(X,Y,R)) :-
569
+ R is xor(X,Y).
570
+
571
+
572
+ /*******************************
573
+ * HACKS *
574
+ *******************************/
575
+
576
+ %% prolog:'$breaklevel'(-BreakLevel, Unknown)
577
+ %
578
+ % Query the current break-level
579
+
580
+ prolog:'$breaklevel'(BreakLevel, _) :-
581
+ current_prolog_flag(break_level, BreakLevel), !.
582
+ prolog:'$breaklevel'(0, _).