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: 99

Rating: 1.0/5 (Total Votes: 1)

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

Milk
Milk

5 Jun 15

Apache cTAKES
Apache cTAKES

20 Jul 15

APLpy
APLpy

14 Apr 15

Comments to SWI-Prolog

Comments not found
Add Comment
Turn on images!