SWI-Prolog

Software Screenshot:
SWI-Prolog
Software Details:
Version: 7.2.3 / 7.3.6-dev updated
Upload Date: 1 Oct 15
Developer: Jan Wielemaker
Distribution Type: Freeware
Downloads: 192

Rating: 2.7/5 (Total Votes: 3)

It's useful logic programming purposes, artificial intelligence and computational linguistics.

What is new in this release:

  • The new dict type and syntax provides both time and space efficient name-value maps with a pleasant syntax.
  • As a consequence, it was necessary to replace the list constructor .(H,T) by the (also in use by Mercury) '[|]'(H,T). That may seem drastic, but in practice affects only a few programs, notably doing functor(Term, F, A) on lists and then selecting further processing on F == '.', A == 2. To turn lists more into a special construct, [] is still the empty list, but no longer the same as '[]', i.e., [] is not at atom.
  • The syntax "..." is now mapped to strings. Strings are compatible with ECLiPSe (thanks to Joachim Schimpf for all the discussions). Traditional code-lists are constructed using .... The flags double_quotes and back_quotes control this behaviour.
  • Thanks to Torbjorn Lager, we have "Pengines", Prolog engines on the web. This provides a generic API to talk comfortably to a Prolog server from JavaScript and other Prolog instances. It enabled SWISH, SWI-Prolog in your browser (http://swish.swi-prolog.org) as well as http://lpn.swi-prolog.org (Learn Prolog Now! with embedded SWISH).
  • Markus Triska added clp(b), the boolean constraint solver, improved his clp(fd) and was before several enhancements to the toplevel dealing with constraints.
  • Thanks to Matt Lilley and Mike Elston, there is CQL, a DSL (Domain Specific Language) for dealing with SQL. CQL is developed in an environment where complex SQL databases are the norm and therefore supports a large subset of SQL and can deal with tables with thousands of columns and other stuff that the ocasional SQL user won't expect.
  • Matt Lilley improved networking support significantly, including much better support for SSL and general support for both HTTP and SOCKS proxy servers.
  • Many people have provided add-ons (packs) that rely on SWI-Prolog version 7.

What is new in version 7.2.1 / 7.3.3-dev:

  • The new dict type and syntax provides both time and space efficient name-value maps with a pleasant syntax.
  • As a consequence, it was necessary to replace the list constructor .(H,T) by the (also in use by Mercury) '[|]'(H,T). That may seem drastic, but in practice affects only a few programs, notably doing functor(Term, F, A) on lists and then selecting further processing on F == '.', A == 2. To turn lists more into a special construct, [] is still the empty list, but no longer the same as '[]', i.e., [] is not at atom.
  • The syntax "..." is now mapped to strings. Strings are compatible with ECLiPSe (thanks to Joachim Schimpf for all the discussions). Traditional code-lists are constructed using .... The flags double_quotes and back_quotes control this behaviour.
  • Thanks to Torbjorn Lager, we have "Pengines", Prolog engines on the web. This provides a generic API to talk comfortably to a Prolog server from JavaScript and other Prolog instances. It enabled SWISH, SWI-Prolog in your browser (http://swish.swi-prolog.org) as well as http://lpn.swi-prolog.org (Learn Prolog Now! with embedded SWISH).
  • Markus Triska added clp(b), the boolean constraint solver, improved his clp(fd) and was before several enhancements to the toplevel dealing with constraints.
  • Thanks to Matt Lilley and Mike Elston, there is CQL, a DSL (Domain Specific Language) for dealing with SQL. CQL is developed in an environment where complex SQL databases are the norm and therefore supports a large subset of SQL and can deal with tables with thousands of columns and other stuff that the ocasional SQL user won't expect.
  • Matt Lilley improved networking support significantly, including much better support for SSL and general support for both HTTP and SOCKS proxy servers.
  • Many people have provided add-ons (packs) that rely on SWI-Prolog version 7.

What is new in version 7.2.0 / 7.3.1-dev:

  • The new dict type and syntax provides both time and space efficient name-value maps with a pleasant syntax.
  • As a consequence, it was necessary to replace the list constructor .(H,T) by the (also in use by Mercury) '[|]'(H,T). That may seem drastic, but in practice affects only a few programs, notably doing functor(Term, F, A) on lists and then selecting further processing on F == '.', A == 2. To turn lists more into a special construct, [] is still the empty list, but no longer the same as '[]', i.e., [] is not at atom.
  • The syntax "..." is now mapped to strings. Strings are compatible with ECLiPSe (thanks to Joachim Schimpf for all the discussions). Traditional code-lists are constructed using .... The flags double_quotes and back_quotes control this behaviour.
  • Thanks to Torbjorn Lager, we have "Pengines", Prolog engines on the web. This provides a generic API to talk comfortably to a Prolog server from JavaScript and other Prolog instances. It enabled SWISH, SWI-Prolog in your browser (http://swish.swi-prolog.org) as well as http://lpn.swi-prolog.org (Learn Prolog Now! with embedded SWISH).
  • Markus Triska added clp(b), the boolean constraint solver, improved his clp(fd) and was before several enhancements to the toplevel dealing with constraints.
  • Thanks to Matt Lilley and Mike Elston, there is CQL, a DSL (Domain Specific Language) for dealing with SQL. CQL is developed in an environment where complex SQL databases are the norm and therefore supports a large subset of SQL and can deal with tables with thousands of columns and other stuff that the ocasional SQL user won't expect.
  • Matt Lilley improved networking support significantly, including much better support for SSL and general support for both HTTP and SOCKS proxy servers.
  • Many people have provided add-ons (packs) that rely on SWI-Prolog version 7.

What is new in version 6.6.6 / 7.1.37:

  • Processing of #!, binding a file to an interpreter in Unix no longer tries to be smart about processing options to the interpreter. The effect of this change depends on the Unix versions: some only pass the first option, others pack all options into one and yet others pass the options after breaking them.
  • The Prolog flag argv only provides arguments that have not been processed by Prolog.
  • The init file .plrc (pl.ini on Windows) is no longer searched for in the working directory for security reasons.

What is new in version 6.6.6 / 7.1.31:

  • Processing of #!, binding a file to an interpreter in Unix no longer tries to be smart about processing options to the interpreter. The effect of this change depends on the Unix versions: some only pass the first option, others pack all options into one and yet others pass the options after breaking them.
  • The Prolog flag argv only provides arguments that have not been processed by Prolog.
  • The init file .plrc (pl.ini on Windows) is no longer searched for in the working directory for security reasons.

What is new in version 6.4.0:

  • Updated the RDF library to version 3. Anyone caring about RDF was probably already using the development version for this reason. Added fast parsers for ntriples, Turtle and TriG formats.
  • Introduction of quasi quotation for smooth and safe inclusion of external language snippets
  • Upgrade of PlDoc to accept the common markdown constructs.
  • Many enhancements to the development tools, HTTP libraries, clib package. etc. Better support for Unix daemon processes (syslog, UID/GID management, etc.)
  • A start for locale handling (supporting format/3, notably writing locale specific large integers.
  • Lots of stability stuff: fixed crashes, portability patches, build system enhancements, etc.

What is new in version 6.2.0:

  • Initial version of the `pack' package manager
  • Better source file handling, notably wrt. :- include(File).
  • Many fixes to the debugger, improving source handling and the logic that decides on which ports are hidden.
  • Windows version now build using the MinGW compiler project, resulting in 10-20% speedup. Enhancements to swipl-win.exe console: copy/paste and color support.

What is new in version 6.0.0:

  • Dynamic just-in-time indexing on multiple arguments.
  • Abstracted many of the development APIs, supporting the PDT IDE.
  • Lots of cleanup, bug-fixes, etc.

What is new in version 5.11.20:

  • Reduced trail-stack usage.
  • Provide generational garbage collection.

What is new in version 5.11.10:

  • Reduce trail-stack usage. (partly)
  • Provide generational garbage collection.

What is new in version 5.11.9:

  • Reduce trail-stack usage. (partly)
  • Provide generational garbage collection.

What is new in version 5.10.0:

  • All platforms now use consistent naming. The SWI-Prolog executable is called swipl, the linker swipl-ld and the resouce-file manager swipl-rc.
  • New stack memory-management that is based on stack-shifting rather than allocating the stacks sparsely in the virtual address-space. This change allows for much better scalability in the number of threads, so we also removed the old thread-count limit of 100. The stack-limits can now be raised and reduced at runtime using set_prolog_stack/2.
  • The default stack-size-limits are now 128Mb per stack on 32-bit and 256Mb on 64-bit hardware.
  • Extensive leak and stress-testing have fixed a number of leaks and race conditions, making the system much more robust in 24x7 server setup.
  • A start has been made to avoid using the C-stack for recursing into terms. This allows processing much more deeply nested terms and provides a clean exception if there are insufficient resources to traverse the term. There is still much to do in this area.
  • SWI-Prolog 5.10.0 introduces safe references to database terms (assertz/2, recordz/3) and streams (open/3).
  • The number of variables in clauses is now limited to 1,000,000,000; this was 65535. In addition, the system provides graceful exceptions when encountering resource-errors or trying to assert illegal terms such as cyclic terms.
  • Compatibility to both YAP and SICStus is enhanced.

What is new in version 5.8.2:

  • CLEANUP: Implementation and documentation of the signal interface.
  • FIXED: Use --nopce/--pce for (dis)allowing graphics.
  • FIXED: GC-bug; omit stripping uwrite-bit from argument stack
  • MODIFIED: Removed the prolog flag abort_with_exception; it is no longer used.
  • FIXED: Avoid deadlock while trying to exit after a fatal error.
  • MODIFIED: is_set/1 now uses sort/2. As a result, non-shared variables are considered different elements; the order is N*log(N) and the predicate may return a resource-error.
  • FIXED: After :- module(x)., perform goal-expansion relative to module x.
  • CLEANUP: Item#547: Properly quote undefined predicates and alternatives.
  • DOC: Clarify current_arithmetic_function/1.
  • DOC: Provide availability snippit for C-functions
  • FIXED: Previous simplification corrupted variable admin of the compiler. Also added test-case.
  • FIXED: Bug#436: unifying a variable with itself creates a reference loop.

What is new in version 5.7.14:

  • FIXED: cross-referencer to distinguish : from 0 in meta-predicate declarations
  • CLEANUP: Use meta_predicate for predsort/3
  • MODIFIED: make/0 now only scans for references to undefined predicates in the modules that contain them. The list_undefined/0 still searches globally.
  • ENHANCED: CLP(FD): Arc-consistent global_cardinality/2 if pairs are initially ground.
  • FIXED: Handle (multifile) predicates for which some clauses have their body in another module and some in the same. Matt Lilley.
  • ADDED: %[<n>]f format to format_time/3 to deal with fractions of seconds. Used by new debug extensions.
  • ADDED: debug_message_context(+|-Context) to specify additional context for debug messages (such as a time-stamp).
  • FIXED: Make apply_macros do its goal expansion in the context of the system module
  • ENHANCED: CLP(FD): Faster global_cardinality/2 if Key-Num pairs are ground.
  • FIXED: handle operator-priority in answer printing. Markus Triska.
  • ENHANCED: Use toplevel print options for residual goals, cleanup implementation
  • ENHANCED: Make term_variables and term_attvars efficient if a list is given (notably term_attvars(Term, [])).
  • ENHANCED: Make recorded database use new term-walker code
  • ENHANCED: First setup of a skeleton for traversing terms using a simple loop rather than a recursive procedure. Now in use for term_variables/2 and related predicates. The schema appears adequate, but the segmented stack code must be optimized considerably. As is, term_variables/2 is slightly slower (5%), but it can handle deeply nested terms with much less memory and without stack overflows.
  • ADDED: term_attvars/2 for better support of copy_term/3. After discussion with Markus Triska.
  • ADDED: del_attrs/1 to delete *all* attributes. Simplifies copy_term/3.

What is new in version 5.7.12:

  • Performance improvement on larger programs is between 10 and 40%, depending on the programming style. Notably the constraint solvers profit significantly. Small programs sometimes show much bigger speedups.
  • Since 5.7.4, updated module system
  • Lots of cleanup in naming and modularization of the codebase.

Similar Software

GMOD
GMOD

23 Jul 15

Artoo
Artoo

21 Jul 15

bignumber.js
bignumber.js

10 Dec 15

geostats
geostats

10 Dec 15

Comments to SWI-Prolog

Comments not found
Add Comment
Turn on images!