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

  • swipl
    • library
      • error.pl
      • debug.pl
      • apply.pl
      • lists.pl -- List Manipulation
      • broadcast.pl
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl
      • thread_pool.pl
      • gensym.pl -- Generate unique symbols
      • settings.pl
      • arithmetic.pl -- Extensible arithmetic
      • main.pl -- Provide entry point for scripts
      • readutil.pl
      • operators.pl
      • pairs.pl
      • prolog_source.pl
      • record.pl -- Access compound arguments by name
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl
      • ordsets.pl -- Ordered set manipulation
      • random.pl
      • base64.pl -- Base64 encoding and decoding
      • 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
      • predicate_options.pl
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl
      • modules.pl
      • occurs.pl
      • 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 -- Analysing and constructing URL
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl
      • git.pl -- Run GIT commands
      • rbtrees.pl
      • dif.pl
      • charsio.pl
      • prolog_stack.pl -- Examine the Prolog stack
      • edinburgh.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl -- Manage Prolog break-points
      • wfs.pl
      • dialect.pl
      • prolog_code.pl -- Utilities for reasoning about code
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl -- Dict utilities
      • varnumbers.pl
      • base32.pl
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl -- Co-Logic Programming
      • date.pl
      • heaps.pl
      • statistics.pl
      • terms.pl
      • utf8.pl
      • when.pl -- Conditional coroutining
      • backcomp.pl
      • edit.pl -- Editor interface
      • hashtable.pl
      • zip.pl
      • ctypes.pl
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • prolog_versions.pl -- Demand specific (Prolog) versions
        • require_prolog_version/2
        • require_version/3
        • cmp_versions/3
      • listing.pl
      • quintus.pl
      • files.pl
      • prolog_trace.pl
      • prolog_wrap.pl -- Wrapping predicates
      • persistency.pl
      • make.pl
      • check.pl -- Consistency checking
      • exceptions.pl
      • nb_set.pl -- Non-backtrackable sets
      • thread.pl -- High level thread primitives
      • shell.pl -- Elementary shell commands
      • prolog_autoload.pl
      • prolog_codewalk.pl -- Prolog code walker
      • explain.pl
      • prolog_config.pl
      • strings.pl -- String utilities
      • optparse.pl
      • prolog_history.pl -- Per-directory persistent commandline history
      • intercept.pl
      • prolog_metainference.pl -- Infer meta-predicate properties
      • help.pl
      • threadutil.pl -- Interactive thread utilities
      • prolog_debug.pl
      • prolog_profile.pl -- Execution profiler
      • portray_text.pl
      • writef.pl
      • tables.pl
      • qsave.pl
      • streams.pl
      • prolog_coverage.pl
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
      • system.pl -- System utilities
      • increval.pl
      • rwlocks.pl
      • oset.pl
      • fastrw.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)