/usr/local/lib/swipl/library/prolog_versions.pl
All Application Manual Name SummaryHelp

  • swipl
    • library
      • error.pl
      • debug.pl -- Print debug messages and test assertions
      • apply.pl -- Apply predicates on a list
      • lists.pl -- List Manipulation
      • broadcast.pl
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl -- Option list processing
      • thread_pool.pl
      • gensym.pl -- Generate unique symbols
      • settings.pl -- Setting management
      • arithmetic.pl
      • main.pl -- Provide entry point for scripts
      • readutil.pl
      • operators.pl -- Manage operators
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl
      • record.pl
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl -- Modify solution sequences
      • ordsets.pl -- Ordered set manipulation
      • random.pl -- Random numbers
      • base64.pl
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • yall.pl -- Lambda expressions
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl -- Binary associations
      • prolog_format.pl -- Analyse format specifications
      • predicate_options.pl -- Access and analyse predicate options
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl -- Operations on atoms
      • modules.pl -- Module utility predicates
      • occurs.pl -- Finding and counting sub-terms
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • prolog_colour.pl -- Prolog syntax colouring support.
      • lazy_lists.pl
      • ugraphs.pl -- Graph manipulation library
      • url.pl
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl
      • git.pl -- Run GIT commands
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • dialect.pl -- Support multiple Prolog dialects
      • system.pl -- System utilities
      • terms.pl -- Term manipulation
      • date.pl -- Process dates and times
      • persistency.pl -- Provide persistent dynamic predicates
      • iostream.pl -- Utilities to deal with streams
      • prolog_stack.pl -- Examine the Prolog stack
      • edinburgh.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl -- Manage Prolog break-points
      • wfs.pl -- Well Founded Semantics interface
      • prolog_code.pl -- Utilities for reasoning about code
      • sort.pl
      • dicts.pl -- Dict utilities
      • dif.pl -- The dif/2 constraint
      • varnumbers.pl -- Utilities for numbered terms
      • pio.pl -- Pure I/O
      • statistics.pl -- Get information about resource usage
      • listing.pl
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • tables.pl -- XSB interface to tables
      • backcomp.pl -- Backward compatibility
      • threadutil.pl -- Interactive thread utilities
      • base32.pl
      • charsio.pl -- I/O on Lists of Character Codes
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl
      • heaps.pl -- heaps/priority queues
      • rbtrees.pl -- Red black trees
      • when.pl -- Conditional coroutining
      • help.pl
      • optparse.pl -- command line parsing
      • prolog_profile.pl -- Execution profiler
      • thread.pl
      • oset.pl -- Ordered set manipulation
      • strings.pl
      • hashtable.pl
      • prolog_debug.pl -- User level debugging tools
      • check.pl
      • prolog_codewalk.pl -- Prolog code walker
      • tty.pl
      • nb_set.pl -- Non-backtrackable sets
      • quintus.pl -- Quintus compatibility
      • make.pl -- Reload modified source files
      • prolog_versions.pl -- Demand specific (Prolog) versions
        • require_prolog_version/2
        • require_version/3
        • cmp_versions/3
      • ctypes.pl -- Character code classification
      • readln.pl
      • prolog_coverage.pl -- Coverage analysis tool
      • prolog_metainference.pl -- Infer meta-predicate properties
      • intercept.pl
      • shell.pl -- Elementary shell commands
      • prolog_trace.pl -- Print access to predicates
      • exceptions.pl
      • files.pl
      • prolog_history.pl
      • writef.pl -- Old-style formatted write
      • macros.pl
      • portray_text.pl -- Portray text
      • streams.pl -- Manage Prolog streams
      • prolog_jiti.pl
      • prolog_autoload.pl
      • edit.pl
      • prolog_config.pl
      • qsave.pl
      • zip.pl -- Access resource ZIP archives
      • prolog_wrap.pl -- Wrapping predicates
      • increval.pl
 require_prolog_version(+Required, +Features:list) is det
Claim that the running Prolog version is at least version Required and provides the requested Features. Required is an expression of versions. At the lowest level, a version is an atom or string that provides the version as
Major.Minor[[.Patch][[-GitRev],-GitHash]]]

Example strings are '8.5', '8.5.0', '8.5.0-50', '8.5.0-69-gad38e8ad8`. The last two require fetching the sources from git or using the Windows daily builds.

Versions may be embedded in a comparison operator (<, =<, =, >= or >), e.g., =<('9.1'). Versions are considered to compare equal only on the components of the Required version. I.e., '9.1' compares equal to '9.1.2'.

Version expressions can be constructed from the Prolog operators ','/2, ';'/2 and '\+'/1. An example of a complicated expression is below, which demands major version 9, but considers 9.1.2 not suitable.

(>=('9'), \+(=('9.1.2')))

Features is a list of required or preferred features. Individual features are:

warning(Feature)
Only print a warning instead of throwing an error.
library(Lib)
Demand library(Lib) to be present. Thde library not being there may indicate an incomplete installation. For example library(pce) to demand xpce graphics support.
Flag
Demand current_prolog_flag(Flag, true) to be true.
FlagValue
If FlagValue is Flag(Value), demand current_prolog_flag(Flag, Value) to be true.
Errors
- version_error('SWI-Prolog', PrologVersion, Cmp, Required)
- existence_error(prolog_feature, Feature)