an API between SWI-Prolog and the Java Virtual Machine - hosted on GitHub

Release Notes - 7.6.0

Uses Java source 1.7.

  • New org.jpl7.Rational type to handle SWI rationals.
  • Refactored several methods dealing with JPL terms, from org.jpl7.Util to org.jpl7.Term:
    • Term textToTerm(String text)
    • String[] atomListToStringArray(Term t)
    • static Term intArrayArrayToList(int[][] a)
    • Term intArrayToList(int[] a)
    • boolean isList(Term term)
    • int listToLength(Term term)
    • Term[] listToTermArray(Term t)
    • Term stringArrayToList(String[] a)
    • Term termArrayToList(Term[] terms)
  • Added a textual mode for Term.toString() to convert non-empty lists in Prolog textual style [e2, e2, ..., en] instead of the pre-fix functor-based style '[|]'(e1, '[|]'(e2, '[|]'(...,'[|]'(en,'[]')..).
    • This textual mode is used when JPL.LIST_TOSTRING_TEXTUAL is True (default is True); otherwise default pre-fix style is used.
  • Added specific section for lists in documentation.


  • More direct and simpler Term.textToTerm(String text) without using getSolutionWithVarNames and by renaming anonymous Variable terms to give them the textual name.
  • Migrated unit testing from JUnit3 to JUnit4.
    • Refactored the unit testing test suite; all test files subclass of
  • Modified init arguments and CMAKE configuration for SWI embeded engine unit testing to fix issue with engine not loading libraries. No more use of libswipl.dll as first argument; all packages available in unit tetsing now.
  • Added some static versions of instance methods in class Term.