Populars: Dades actualitzades el 26 d’octubre del 2026

Categories

Internet1.355
Comunicació321
Àudio i vídeo898
Gràfics i disseny539
Ofimàtica i productivitat1.120
Eines per a desenvolupadors3.132
Eines d’IA527
Seguretat i privadesa385
Eines del sistema3.113
Jocs523
Educació i ciència239
Xarxa i TI284

Logtalk: baixar versions anteriors

Declarative object-oriented logic programming language

Logtalk.org IDE i editors de codi #40 IDE i editors de codi

Aquí hi ha 55 versions de Logtalk, des de 31 d’agost del 2021 fins a l’actual, 3.102.0. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.

2021: 2 2 21 2022: 9 9 22 2023: 10 10 23 2024: 13 13 24 2025: 15 15 25 2026: 6 6 26

55 versions en 5 anys · unes 11 per any

VersióDataMidaFitxers
3.102.0Darrera versió 14 de setembre del 2026 — Qualsevol processador EXE (Inno Setup)
3.101.0 23 de juliol del 2026 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Read-only sockets compilation flag to declare if a backend provides compatible sockets support. Valid values are supported and unsupported.
- IMPROVED: Performance of the logtalk_make(force) goal.
Prolog adapter and integration files
- ADDED: Definitions for the mutex_lock/1 and mutex_unlock/1 predicates to the ECLiPSE adapter file.
Library
- CHANGED: The nmea::parse/3 library predicate arguments order so that the options argument is in the last position as common practice.
- CHANGED: The url library generate/2 and normalize/2 predicates to also accept relative reference arguments.
- ADDED: New crypto library providing transport-neutral cryptographic helper predicates.
- ADDED: New gravatar library providing a portable client for retrieving Gravatar profile information using the Gravatar REST API.
- ADDED: New html library support for CSS/JS resource declarations, aggregation, and dependency-aware ordering.
- ADDED: New http_core, http_client_core, http_client, http_cookies, http_multipart, http_router, http_server_core, http_server, http_session, http_socket_transport, http_process_transport, http_websocket, http_websocket_messages, http_websocket_session, http_websocket_service, http_directory_listing, http_static_files, http_parameters, http_htmx, http_authenticate, http_digest, http_cors, open_api, and rest libraries.
- ADDED: New json_graph library implementing JSON Graph Format (JGF) V2.
- ADDED: New json_patch library implementing RFC 6902.
- ADDED: New json_path library implementing RFC 9535.
- ADDED: Support to the json_ld library for the framing algorithm.
- ADDED: Support to the json_pointer library for relative JSON pointers.
- ADDED: Support to the json_schema library for the relative-json-pointer, json-pointer, and hostname formats.
- ADDED: New jwt library providing JWT parsing, JWS signing and verification, JWK/JWKS key selection, and reusable registered-claim validation predicates.
- ADDED: New open_ai library and providing OpenAI client and server support.
- ADDED: New open_id library providing OpenID client support.
- ADDED: New s3 library implementing a portable AWS S3 client.
- ADDED: New otp library supporting generating and verifying HOTP and TOTP one-time passwords after RFC 4226 and RFC 6238.
- ADDED: Support for the BLAKE2s, BLAKE2b, SHA-224, SHA-384, SHA-512, and SHA-512/256 hash functions to the hashes library.
- ADDED: Support for incremental hash computation to the hashes library.
- ADDED: Support for computing HMAC-SHA-224, HMAC-SHA-384, HMAC-SHA-512, and HMAC-SHA-512/256 digests to the hmac library.
- ADDED: New os::resolve_command_path/2 library predicate.
- ADDED: New process::create/3 library predicate type/1 option to set the process input and output streams type to binary or text.
- ADDED: New reader::line_to_bytes/2-3 library predicates.
- ADDED: New url library parse/3, reference_kind/2, equivalent/2, relativize/3, and resolve/3 predicates.
- ADDED: New uuid library uuid_v1/3 and uuid_v7/2 predicates that take a time zone offset to workaround some backends only providing access to local time.
- IMPROVED: The hashes library implementation of the SHA1-1, SHA-256, and SHA-512/256 hash functions.
- IMPROVED: The tle_orbits library position-only propagation and ground-track queries to avoid computing and discarding velocity values.
- IMPROVED: Performance of the gradient_boosting_regression, geohash, nmea, wkt_wkb, message_pack, cartesian_products, multisets, arrangements, combinations, linear_algebra, tle_orbits, wkt_wkb, ica_projection, fp_growth_pattern_miner, gaussian_process_regression, lasso_regression, string_distance, colley_ranker, hodge_rank, massey_ranker, rank_centrality, ranked_pairs, regression_protocols, ccsds_packetization, and elastic_net_regression libraries.
- IMPROVED: The json_rpc and mcp_server library tests by avoiding tests interdependency due to shared temporary files.
- UPDATED: The amqp and stomp libraries to use the options libr
3.100.1 16 de maig del 2026 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- FIXED: Lookup cache handling bug breaking embedding scripts using a settings file with multi-threaded backends.
Prolog adapter and integration files
- FIXED: The integration scripts check for an outdated Logtalk user directory.
Installers and installation scripts
- FIXED: The Windows installer check for an outdated Logtalk user directory.
- FIXED: The embedding scripts check for an outdated Logtalk user directory.
- FIXED: The embedding script examples with a startup goal for the embedded application.
3.100.0 14 de maig del 2026 — Qualsevol processador EXE (Inno Setup)
3.99.0 9 d’abril del 2026 — Qualsevol processador EXE (Inno Setup)
3.98.0 27 de febrer del 2026 — Qualsevol processador EXE (Inno Setup)
3.97.1 30 de desembre del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- FIXED: Typo in the declaration of an internal runtime predicate in the workaround for a gplc limitation when dealing with multifile predicates. Thanks to Daniel Diaz for the bug report.
IDEs, text editors, and syntax highlighters support
- UPDATED: The Context7 MCP server context7.json support file to claim the logtalk3 project ownership.
Installers and installation scripts
- CHANGED: Build the macOS installer using Apple's official productbuild and pkgbuild command-line utilities instead of using MacPorts for compatibility with macOS 15.x and later versions.
- UPDATED: The portable Docker image to create the alternative GNU Prolog native code backend (gplgtnc).
- FIXED: Typo in the declaration of an internal runtime predicate in the embedding scripts for Ciao Prolog.
3.97.0 22 de desembre del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- FIXED: Expansion of source file arguments to the logtalk_compile/1-2 and logtalk_load/1-2 built-in predicates to avoid spurious file redefinition warnings when the file paths contain '.' or '..' segments.
Documentation
- UPDATED: The Handbook documentation of the include/1 directive with a mention of the limited support for nested included files.
- UPDATED: The man page for the logtalk_allure_report.sh script.
- UPDATED: The settings-sample.lgt file with initialization code for defining the help tool preferred browser.
Library
- ADDED: New ccsds library for parsing and generating CCSDS (Consultative Committee for Space Data Systems) Space Packets following the CCSDS 133.0-B-2 standard (Space Packet Protocol).
- ADDED: New toon library implementing the TOON (Token-Oriented Object Notation) format proposal.
Tools
- CHANGED: The debugger tool silent messages for the current unification ports to include the head of the clause.
- CHANGED: The help tool to use a terminal-based browser or the default browser to open documentation for all features. Removed support for browsing the Texinfo versions of the documentation due to issues with recent Texinfo and Sphinx versions.
- CHANGED: The diagrams tool directory and library dependency diagrams to always output the root directory and library nodes.
- CHANGED: The logtalk_allure_report scripts to update the previous report while preserving the tests run history when the allure-report directory already exists.
- ADDED: Support to the lgtdoc tool for converting XML documenting files to HTML 5 files.
- IMPROVED: The debugger tool documentation on breakpoints.
- FIXED: The lgtunit tool to correctly report the location of tests defined in included files.
- FIXED: Removed redundant goal in the diagrams::all_files/0-1 predicates implementation.
- FIXED: Removed redundant goal in the tools_doclet example.
- FIXED: Removed redundant tests for the diagrams and lgtdoc tools while keeping the same code coverage.
Examples
- ADDED: Locked doors puzzle to the searching example.
- UPDATED: The testing example tests so that the number of run/skipped tests is independent of the double_quotes flag standard values.
Tests
- ADDED: Additional tests for the de facto standard format/2-3 predicates from the PIP-0110 standardization work.
- ADDED: Additional tests for unbounded integers when used as arguments to the format/2-3 predicates.
Installers and installation scripts
- UPDATED: The Windows installation script to also detect ECLiPSe 7.2 versions.
- FIXED: The Windows installer to support running in system context for deployment via enterprise management tools.
- FIXED: The Windows installer to support the base installation (with /COMPONENTS="base" without requiring a user documents folder.
IDEs, text editors, and syntax highlighters support
- UPDATED: The VSCode support to create debug data files that include the clause heads besides the source file name and line number.
- UPDATED: The VSCode support for more compact display of tests coverage.
- FIXED: The VSCode support use of the atomic_list_concat/2 predicate to work will all backends.
- FIXED: The VSCode support for ECLiPSe file paths on Windows when finding the enclosing entity from a file position.
- FIXED: Bug in the VSCode support where calls to a local predicate would not be found.
- FIXED: The VSCode support handling of included files when looking for local predicate declarations, definitions, and references.
3.96.0 18 de novembre del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Predicates logtalk::loaded_files_topological_sort/1-2 for sorting loaded files by their dependencies.
- IMPROVED: The implementation of the logtalk_make/0-1 predicates for the target all to avoid or minimize compilation warnings due to out-of-order loading of modified source files. See the make tool documentation for details.
- FIXED: Printing of the default flag values at startup to list the prolog_dialect flag as a read-only flag.
- FIXED: The linter warning for the use of Logtalk or Prolog top-level shortcuts as directives ignored the portability flag.
Prolog adapter and integration files
- CHANGED: Trealla Prolog adapter file to require version 2.84.29 or later.
- UPDATED: ECLiPSe adapter file to use the new read_term/3 predicate line/1 option introduced in version 7.2#5 for accurate read term starting lines.
- FIXED: CxProlog adapter file to workaround its implementation of the predicate_property/2 built-in predicate returning properties for unknown predicates.
- FIXED: Quintus Prolog adapter file to avoid some spurious suspicious call warnings when loading tools such as lgtunit.
- FIXED: Quintus Prolog adapter file missing expansions for some arithmetic functions.
Documentation
- ADDED: A "Known issues" section to the documentation of the make tool.
- UPDATED: The Handbook on finding an optimal file loading order using the new logtalk::loaded_files_topological_sort/1-2 predicates.
Library
- IMPROVED: The os::time_stamp/1 predicate implementation for SICStus Prolog, Trealla Prolog, XSB, and YAP.
- IMPROVED: Tests for the os library predicates.
- UPDATED: The format library linter checker to be aware of the ~W control sequence that uses two arguments.
Tools
- IMPROVED: The logtalk_doclet.sh script now kills all created child processes on exit.
- FIXED: Syntax error when loading the diagrams tool using the GNU Prolog backend.
- FIXED: The logtalk_doclet.sh and logtalk_tester.sh scripts to also check for the gnutimeout alternative name for the GNU coreutils command timeout. Thanks to Andrew Davison for the bug report.
IDEs, text editors, and syntax highlighters support
- ADDED: Support for the Context7 MCP server via a context7.json file.
- ADDED: VSCode support predicates infer_public_predicates/2 and files_topological_sort/3.
- FIXED: The VSCode support to workaround the non-compliant implementation of multifile predicates in Ciao Prolog.
3.95.0 30 d’octubre del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Predicate directive mode_non_terminal/2 to distinguish non-terminal mode declarations from predicate mode declarations.
- UPDATED: The logtalk built-in object to use the new mode_non_terminal/2 directive.
Prolog adapter and integration files
- UPDATED: The XSB adapter file with an implementation of the predicate that converts between internal and native file system paths.
Documentation
- UPDATED: Simplified page titles in the HTML versions of the Handbook and APIs documentation.
Library
- UPDATED: The grammars library to use the new mode_non_terminal/2 directive.
Tools
- CHANGED: The diagrams tool predicate_url_target_format/1 option to only accept sphinx and other values.
- IMPROVED: The diagrams tool generated diagram node links by encompassing just the relevant text.
- IMPROVED: The lgtunit tool lint checking of test assertions.
- UPDATED: The tutor tool to explain the new lgtunit tool linter warnings.
- UPDATED: The lgtunit tool to allow using failed_test_reason//1 as a public non-terminal to better support IDEs such as VSCode.
- UPDATED: The code_metrics, help, lgtdoc, and tutor tools for the new mode_non_terminal/2 directive.
- UPDATED: The dead_code_scanner tool for additional tests using use_module/2 directives.
- UPDATED: The diagrams tool to also load the Mermaid experimental support.
- FIXED: A lgtdoc tool bug when reporting missing predicate directives for declared non-terminals.
- FIXED: A lgtdoc tool bug when reporting missing predicate directives when the scope directive is found in an included file.
- FIXED: The lgtdoc tool logtalk.css file to avoid rendering issues when viewing documentation in VSCode.
- FIXED: The lgtdoc tool XSLT files for converting XML documentation files to (X)HTML files to correctly handle italic, bold, and monospaced text fragments.
- FIXED: The diagrams tool to exclude the default scratch directory on Windows (lgt_tmp) when generating diagrams for all sub-directories or sub-libraries.
- FIXED: The diagrams tool generated entity cross-referencing diagrams to link to the entity definition line instead of just to the entity definition file.
- FIXED: Some documentation formatting issues in the wrapper tool.
Examples
- UPDATED: The dcgs, includes, and searching examples tests to report code coverage.
Contributions
- UPDATED: The verdi_neruda and xml_parser contributions to use the new mode_non_terminal/2 directive.
IDEs, text editors, and syntax highlighters support
- ADDED: New entity and predicate definition predicates to the VSCode support to allow navigating to entities, predicates, and clauses from profiling views.
- ADDED: New test predicates to the VSCode support to allow running all tests defined in a file or in an object.
- UPDATED: The format of the VSCode support generated file with test results.
- UPDATED: The VSCode support diagram predicates to use the url_prefixes/2 and zoom/1 options to allow opening code and documentation links in VSCode itself.
- UPDATED: The VSCode support diagram predicates to accept a format argument.
- UPDATED: The syntax highlighting support for all supported text editors and syntax highlighters for the new mode_non_terminal/2 directive.
- FIXED: Some typos in the syntax highlighting test files.
- FIXED: The VSCode support to avoid leaking stream aliases in case of unexpected errors.
- FIXED: The VSCode support handling of code coverage for non-terminals.
Installers and installation scripts
- FIXED: The build_release.sh script building of the SVG diagrams.
3.94.0 30 de setembre del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Object and category references/2 property for querying entity references in calls to the execution-context built-in methods and in directives for multifile predicates/non-terminals not covered by other properties.
- ADDED: Linter warning for entity parameter variables not in parameter variable syntax. Controlled by the naming linter flag.
Documentation
- FIXED: Incomplete documentation of the discontiguous/1 directive.
Tools
- CHANGED: The lgtunit tool code coverage linter warnings to be printed when compiling the tests instead of when printing the code coverage results.
- ADDED: Support for creating entity specific predicate breakpoints to the debugger tool.
- UPDATED: The tutor tool to explain the new linter warning for entity parameters not in parameter variable syntax.
- FIXED: The debugger tool to not change from debugging with breakpoints to tracing for the next top-level query if the trace/0 predicate was not used.
- FIXED: The debugger tool to allow creating a triggered breakpoint that depends on a clause breakpoint for a parametric entity.
- FIXED: Preliminary diagrams tool support for Mermaid resulted in syntax errors with recent Mermaid versions.
Examples
- UPDATED: The errors example to illustrate additional linter warnings.
Tests
- ADDED: Additional tests for the object_property/2 and category_property/2 built-in predicates.
IDEs, text editors, and syntax highlighters support
- CHANGED: VSCode support for finding predicate references no longer includes predicate declarations.
- ADDED: VSCode support for finding predicate declarations and definitions from a (@)/1 goal.
- FIXED: VSCode support error when trying to find predicate references from an alias/2 directive with a protocol or category in its first argument.
- FIXED: VSCode support failure to find a predicate declaration from a clause for a multifile predicate or from a multifile/1 predicate directive.
- FIXED: VSCode support find_references/4 predicate bug where some references would be missed in the case of parametric entities.
- FIXED: VSCode support find_references/4 predicate bug where predicate references in alias/2 directives would be missed.
3.93.0 28 d’agost del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Support for declaring synchronized predicates in calls to the create_object/4 and create_category/4 built-in predicates.
Documentation
- ADDED: Glossary definition for "debug handler".
Library
- CHANGED: The implementation of the sets library predicates member/2 and selectchk/3. Also improved the documentation of the library and fixed the mode/2 directives of several of its predicates.
- IMPROVED: Warning messages when a library is not supported by a backend.
Tools
- IMPROVED: The debugger tool code and documentation for a more consistent handling and description of breakpoints. Also added additional tests.
- UPDATED: The logtalk_tester.* scripts to also print the operating-system version after the Logtalk and Prolog backend versions.
- FIXED: The debugger tool missing tokenization for the message matching_conditional_spy_points_removed.
- FIXED: The packs tool restore/1-2 predicates when using the default option force(true) to allow restoring a pack when a pack with the same name is installed from a different registry.
Tests
- ADDED: Additional tests for the Prolog standard atom_concat/3 built-in predicate from WG17 work.
IDEs, text editors, and syntax highlighters support
- RENAMED: The coding/codemirror directory to coding/codemirror5.
- ADDED: CodeMirror 6.x support (in the coding/codemirror6 directory).
- ADDED: VSCode support predicates debug/0 and nodebug/0.
- IMPROVED: TextMate 2.x and Vim support for automatic indentation.
- IMPROVED: VSCode support to avoid spurious errors when a find predicate declaration or definition is accidentally triggered for invalid text.
- FIXED: VSCode support finding of references to a predicate alias declared in a uses/2 directive.
- FIXED: VSCode support finding of a local predicate (or non-terminal) definition when provided by an included file.
- FIXED: VSCode support finding of a local predicate (or non-terminal) reference to not report calls from auxiliary predicates (as the reflection API reports line zero in these cases).
- FIXED: VSCode support when using the code navigating features resulted in predicate property queries to the user built-in object that would throw an error.
3.92.0 28 de maig del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- FIXED: The compilation of rules listed in the last argument of the create_object/4 built-in predicate so that the clause/2 built-in method correctly returns the original rule body instead of its compiled version.
- FIXED: The exception terms used for object existence errors thrown by the asserta/1-2 built-in methods.
- FIXED: Typo in the documentation of the forwarding protocol forward/1 predicate.
Prolog adapter and integration files
- UPDATED: Trealla Prolog adapter file for the deprecation of the consult/1 built-in predicate in version 2.68.11.
- UPDATED: The XVM adapter file for the renaming in version 11.x of the unify_applies_occurs_check flag to enable_occurs_check.
Documentation
- CHANGED: Moved APIs documentation to the docs/apis directory. Moved the man pages to docs/man. Moved the Handbook to docs/handbook. Fixed the documentation and installation scripts for the new locations.
- CHANGED: Moved the update_html_docs.* and update_svg_diagrams.* scripts from the scripts directory to the docs/apis/sources directory. Renamed the update_html_docs.* scripts to build.*. Renamed the build_manuals.* scripts to build.*.
- CHANGED: Moved the sample files to a samples directory.
- ADDED: Glossary entries for "flaky test", "test dialect", "test outcome", "mocking", "term-expansion", and "goal-expansion".
- IMPROVED: Documentation on writing multi-threading applications that call built-in predicates and built-in methods with side-effects.
- IMPROVED: Documentation on the CPU and wall time accuracy in the lgtunit tool and the os library.
- UPDATED: The Handbook section on performance.
- FIXED: Typo in the sample code for user-defined test dialects in the lgtunit tool documentation. Thanks to Paul Brown for the bug report.
Library
- ADDED: New json_lines library implementing the JSON Lines format proposal (available at https://jsonlines.org).
- ADDED: Library predicate integer::power_sequence/4.
- FIXED: Workaround spurious choice-point in the avltree::delete/4 library predicate when using the SWI-Prolog backend on Windows.
Tools
- CHANGED: The packs tool to never install or update to a pack version with a experimental or deprecated status unless the version is explicitly specified using the install/3-4 or update/2-3 predicates.
- ADDED: Support for an experimental status to pack definitions.
- ADDED: A status/1 option to the packs tool update/2-3 predicates to allow restricting the required status for pack updates.
- ADDED: New predicates outdated/5 and outdated/2 to the packs tool.
- IMPROVED: The packs tool predicates restore/1-2 error messages.
- UPDATED: The help tool for the new location of the Handbook.
Examples
- IMPROVED: Tests of the blackboard, buffer, and philosophers multi-threading examples.
- IMPROVED: The mtbatch multi-threading example to support parameterization of the individual benchmarks.
- UPDATED: The coinduction example for the XVM 11.x renaming of the flag unify_applies_occurs_check to enable_occurs_check.
- UPDATED: The SWI-Prolog backend specific pengines example to not require the gui flag set to true.
- UPDATED: The lips example test to try to avoid a divide by zero error with fast backends.
- FIXED: The buffer multi-threading example to prevent potential deadlocks.
- FIXED: The engines/pmq example tester.lgt file loading the library pairs object twice in different compilation modes.
- FIXED: Formatting typo in the coinduction example NOTES.md file that caused an error when open as a Jupyter notebook.
- FIXED: The neo4j example set_classpath.ps1 script to assume that Neo4j Desktop is installed in its default location.
Tests
- ADDED: Additional test for the clause/2 built-in method.
- FIXED: Tests for the logtalk_library_path/2 built-in predicate when run on Windows systems that don't define the HOME environment variable.
Installers and installation scripts
- CHANGED: The build_release.sh script to also include the APIs documentation when building the manuals archive.
- UPDA
3.91.1 15 d’abril del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Tools
- FIXED: Internal predicate call bug in the lgtunit tool xunit_output object.
Examples
- FIXED: Only run the apache_poi example tests when the required JAR files are available.
Installers and installation scripts
- UPDATED: The build_release.sh script to accept options to customize the git clone URL and for selectively turn off the building of each archive and installer.
- FIXED: Workaround intermittent portable Docker image build failures when installing tzdata.
3.91.0 8 d’abril del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- FIXED: The documentation of the logtalk::expand_library_path/2 predicate to clarify that only expands library aliases (atoms) or compound terms in library notation.
Library
- FIXED: Avoid a non-tail recursive predicate linter warning when loading the random library with the tail_recursive set to warning.
Tools
- CHANGED: The lgtunit tool messages for passed and skipped tests to also include the flaky flag.
- ADDED: Flaky test property/note support to the lgtunit tool TAP and xUnit output formats.
- IMPROVED: The lgtdoc tool no longer replaces the ASCII comma with the Unicode fullwidth comma when generating reStructuredText index entries for entity names.
- UPDATED: Developer tools requirements for Ubuntu to avoid requiring the full Texlive installation.
- FIXED: The lgtdoc tool to ignore the home and startup library names when looking for the name of the library when processing directory files.
- FIXED: Renamed the lgtdoc tool Sphinx configuration template file to conf.py.jinja as the still documented conf.py_t name is no longer recognized by recent Sphinx versions.
- FIXED: Bug in the lgtunit tool where the quick_check/3 test dialect would throw an error when using the pc/1 option.
- FIXED: Bug in the lgtunit tool where broken QuickCheck tests would be reported as backend bugs.
- FIXED: Regression in the lgtunit tool TAP and xUnit output formats where failed tests would not be reported.
- FIXED: Missing handling of broken QuickCheck tests in the lgtunit tool TAP and xUnit output formats.
IDEs, text editors, and syntax highlighters support
- UPDATED: VSCode support for the changes to the lgtunit tool messages.
Installers and installation scripts
- UPDATED: The Windows installation script to also detect the new SICStus Prolog 4.10.x versions.
- UPDATED: The portable Docker image documentation on how to browse Allure reports from the host.
- UPDATED: The portable Docker image to also include the issue_creator tool dependencies gh and glab.
- FIXED: The portable Docker image Texlive requirements.
- FIXED: The portable Docker image Allure installation.
3.90.1 27 de març del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Tools
- FIXED: PowerShell script coding patterns that could trigger false positives when using some vendors security scanning tools.
3.90.0 25 de març del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Prolog adapter and integration files
- CHANGED: Moved all common setup code from the Bash shell integration scripts to a shared setup script.
- CHANGED: Moved all common setup code from the PowerShell integration scripts to a module.
- FIXED: The PowerShell integration scripts were not setting the LOGTALKUSER environment variable correctly when not defined by the user.
- FIXED: The gplgt.ps1 PowerShell integration script to run without the GUI.
Documentation
- ADDED: Support for generating single file versions of the Handbook and APIs documentation in LLM friendly Markdown format.
- IMPROVED: The documentation of the logtalk_tester.sh Bash script.
Library
- ADDED: Predicates between/4 and sequence/4-5 to the float object in the types library.
- ADDED: Predicates softmax/2-3 to the numberlist object in the types library.
- ADDED: Predicates to the random library for drawing samples from common probability distributions.
Tools
- CHANGED: Moved all common setup code from the lgtdoc tool Bash shell scripts to a shared setup script.
- CHANGED: Moved all common setup code from the lgtdoc tool PowerShell integration scripts to a module.
- CHANGED: The packs tool lgtenv.* scripts to exit with a specific code for each error.
- ADDED: Predicates write_max_depth/1 and set_write_max_depth/1 to the debugger tool.
- IMPROVED: The logtalk_tester.* scripts handling of the -b and -u options.
- IMPROVED: The lgt2svg.* scripts handling of file paths and checking of the d2 and Graphviz commands availability.
- FIXED: The logtalk_tester.ps1 PowerShell script xunit_net_v2 format option.
- FIXED: The issue_creator tool to workaround GitLab creating CI/CD pipelines in a detached HEAD state.
- FIXED: The logtalk_allure_report.ps1 PowerShell script creation of the executor.json file to wrap the key-value pairs in object syntax.
- FIXED: The logtalk_doclet.ps1 PowerShell script handling of the prefix and timeout options.
- FIXED: The Bash shell scripts to exit with code 1 in case of wrong usage.
Examples
- ADDED: New apache_poi Java example of using the Apache POI library to read and write Excel spreadsheets.
- ADDED: New lips example of the classical naive list reverse benchmark computing million of logical inferences per second.
IDEs, text editors, and syntax highlighters support
- ADDED: File .augmentignore for improved indexing using Augment Code.
- FIXED: VSCode support to also return single references to local predicates.
Installers and installation scripts
- CHANGED: The logtalk_user_setup.* scripts to create a symbolic link to the APIs documentationsub-directory in theLOGTALKHOME` directory.
- UPDATED: The Windows installation script to also create a symbolic link to the scripts directory to simplify access to the embedding scripts.
- UPDATED: The distribution cleanup script to account for recently added scripts.
- FIXED: The Docker image publishing scripts to use the --no-cache option to ensure that updated dependencies are pulled.
- FIXED: The logtalk_user_setup.ps1 PowerShell script handling of the case where the values of the LOGTALKHOME and LOGTALKUSER environment variables are the same plus a typo when copying the scratch directory.
- FIXED: The logtalk_user_setup.* scripts creation of symbolic links to all tool scripts in the LOGTALKHOME directory.
- FIXED: Typos in the update_html_versions.ps1 and update_svg_diagrams.ps1 PowerShell scripts handling of the SICStus Prolog backend.
- FIXED: The embedding scripts setting of the settings_file flag value to deny.
3.89.1 14 de febrer del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Installers and installation scripts
- ADDED: The README.md file for the portable Docker image to the image (available as ~/README.md).
- UPDATED: The portable Docker image README.md file with VSCode and VSCodium usage instructions.
- UPDATED: The portable Docker image to provide a SSH server (not running by default).
- UPDATED: The portable Docker image to include Tau Prolog 0.3.4.
- UPDATED: The publishing scripts for the Docker images to also push the README.md files.
3.89.0 14 de febrer del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Documentation
- ADDED: Glossary definitions for "before", "after", and "around" methods.
- ADDED: Alternative installation instructions for the developer tools Python dependencies.
- FIXED: Missing developer tools dependency requirements for Ubuntu.
Tools
- IMPROVED: The packs tool describe/1-2 predicates now also inform if a pack archive is cached.
- IMPROVED: The packs tool to discard an existing pack archive and try to download it again in case of a checksum error while installing.
- UPDATED: The diagrams tool for the new d2 0.6.9 release, which is now the minimum version required.
Examples
- ADDED: New jupyter example illustrating how to write source files that can be interpreted as scripts and open as Jupyter notebooks using the Jupytext package.
- IMPROVED: Instructions on how to run the examples documentation as Jupyter notebooks.
- IMPROVED: The NOTES.md files of several examples for a better experience when open as notebooks.
- IMPROVED: The coinduction example to allow running with the XVM backend when the unify_applies_occurs_check flag is only set to true after startup.
- FIXED: Typos in the NOTES.md files of several examples that caused errors when open and run as notebooks.
- FIXED: Skip the interactive queries in the birds and lpa/faults examples if opening their documentation as notebooks.
- FIXED: The lambdas example benchmarks can also be run with Trealla Prolog and XVM.
- FIXED: The localizations example to not depend for its expected output on the report flag value.
Installers and installation scripts
- ADDED: Portable Docker image support for configuring the default Prolog backend to be used for Jupyter notebooks.
- IMPROVED: The Portable Docker image Dockerfile for smaller images.
- FIXED: Portable Docker image to install the Jupytext dependency required for opening examples documentation as Jupyter notebooks.
- FIXED: Portable Docker image to install d2 for use with the diagrams tool.
- FIXED: The Handbook and the release build scripts to work with both BSD and GNU versions of the sed command.
- FIXED: The embedding scripts to work with both BSD and GNU versions of the sed command.
3.88.0 29 de gener del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Documentation
- IMPROVED: Handbook documentation of the mode/2 predicate directive.
- IMPROVED: Handbook glossary definition of "prototype".
- IMPROVED: Documentation of the packs tool.
- UPDATED: Notes on the developer tools third-party dependency requirements.
- UPDATED: The lgtunit tool documentation on generating Allure reports.
- FIXED: The manual install instructions missing a PATH setting for the packs tool lgtenv.sh script.
- FIXED: Handbook PDF version missing the sections on ports and contributions.
Library
- FIXED: The types library natural::check/1 object predicate to throw error/2 exceptions.
Tools
- UPDATED: The lgtunit to use only two decimal places when printing code coverage stats.
- FIXED: The packs tool to use the gsha256sum command when available instead of the sha256sum command on POSIX systems. This is required to workaround Apple adding the incompatible BSD version of the sha256sum command on macOS 15.
Examples
- CHANGED: Consolidate the examples NOTES.md and SCRIPT.txt files into a single NOTES.md file.
- CHANGED: The contents of the examples NOTES.md files to allow open them as Jupyter notebooks. Experimental. See the examples/NOTES.md file for the setup details.
- FIXED: The haunted_wasteland, scratchcards, and trebuchet examples sample queries to allow running from any directory.
- FIXED: Missing queries in the defaulty example documentation.
- FIXED: The dcgs examples to allow opening its documentation as a notebook without loading warnings.
IDEs, text editors, and syntax highlighters support
- IMPROVED: The Prolog embedding scripts to avoid an error with a large number of application files.
- FIXED: Workaround JIProlog format/2-3 predicate issues in the VSCode support.
3.87.0 8 de gener del 2025 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: New includes/2, object/3, protocol/3, and category/3 properties to the logtalk::loaded_file_property/2 predicate.
Documentation
- UPDATED: Notes on the developer tools third-party dependency requirements.
- UPDATED: Notes on the Prolog integration scripts.
- FIXED: Grammar and spelling typos in scripts and tests documentation.
Tools
- REMOVED: Deprecated lgtdoc tool .js scripts and ie50.xsl file.
- IMPROVED: Computation of the Halstead complexity metrics by considering recursive predicate calls.
- FIXED: The packs tool lgtenv.ps1 script when using the -p option.
Installers and installation scripts
- UPDATED: Synced the MacPorts portfile with the version used upstream.
Tests
- ADDED: Additional tests for the bagof/3, setof/3, and findall/3-4 Prolog standard and de facto standard predicates.
IDEs, text editors, and syntax highlighters support
- ADDED: VSCode support for finding dynamic predicate references in clauses that assert or retract clauses for them.
- ADDED: VSCode support for re-running a single test using CodeLens.
- FIXED: VSCode support for finding predicate implementations when the definition is found in an included file.
- FIXED: VSCode support for finding predicate references when the call is found in an included file.
- FIXED: VSCode support for finding predicate declarations when the reference is found in an included file.
- FIXED: VSCode support for navigating call hierarchies where an exception would be thrown in some cases.
Installers and installation scripts
- REMOVED: Deprecated logtalk_user_setup.js script.
3.86.0 18 de desembre del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Experimental logtalk::message_prefix_file/6 hook predicate to the message printing mechanism.
- FIXED: False left-recursion warning when compiling a grammar rule for a multifile non-terminal that calls a local non-terminal with the same indicator.
Prolog adapter and integration files
- UPDATED: Ciao Prolog adapter file to pretend that modules are supported to allow loading libraries and examples that require file use_module/1 directives.
Documentation
- ADDED: Notes on encrypting applications using XVM.
- FIXED: Multiple Handbook grammar and spelling typos.
- FIXED: Multiple man pages grammar and spelling typos.
Library
- FIXED: The os::sleep/1 predicate for XSB to also accept floats.
Tools
- CHANGED: The lgtunit tool test compilation warning and error messages to include the file context for better integration with other developer tools.
- CHANGED: The diagrams tool now uses a Unicode glyph for the magnifying lens instead of a PNG image.
- CHANGED: The diagrams tool now uses a Graphviz box shape for Prolog modules instead of a tab, which is now only used for directories and libraries.
- REMOVED: Deprecated lgt2svg.js script from the diagrams tool.
- ADDED: Experimental diagrams tool support for the d2 graph language.
- UPDATED: The diagrams tool to support graph languages such as d2 where the node identifiers are not global.
- UPDATED: The diagrams tool to also support the PearAI, Windsurf, PyCharm, and IDEA text editors when generating diagrams with local file links.
- UPDATED: The tutor tool to also explain duplicated predicate/non-terminal reference linter warnings.
- UPDATED: The tutor tool to call the new logtalk::message_prefix_file/6 hook predicate to support VSCode displaying warnings and errors augmented with explanations.
- UPDATED: The help tool for the new logtalk::message_prefix_file/6 hook predicate.
- FIXED: The diagrams tool to also generate an instance/class caption for metaclasses.
- FIXED: Bug in the diagrams tool where repeated nodes could be created for external entities.
- FIXED: Bug in the diagrams tool where file loading diagrams would miss "includes" edges.
- FIXED: Bug in the diagrams tool where file loading diagrams would show duplicated "includes" edges.
- FIXED: The diagrams tool support for the graph languages to quote atoms in predicate labels and predicate node contents when required.
- FIXED: The diagrams tool exclude options to allow generating external nodes for the excluded directories, files, libraries, and entities.
- FIXED: Bug in the lgtdoc tool when printing a warning on missing entity directive info/1 key.
Examples
- ADDED: New permutations example providing benchmarks based on list permutations. Adapted from Prolog code written and contributed by Paul Tarau.
- UPDATED: The assumptions example with another individual example.
Installers and installation scripts
Tests
- ADDED: Additional tests for the left-recursion linter warning.
- ADDED: Additional tests for the Prolog standard round/1 evaluable.
- IMPROVED: The manual installation script and MacPorts Portfile instructions for defining the LOGTALKHOME and LOGTALKUSER environment variables.
IDEs, text editors, and syntax highlighters support
- UPDATED: VSCode support to use the new logtalk::message_prefix_file/6 hook predicate to support displaying warnings and errors augmented with the tutor tool explanations.
- UPDATED: VSCode support to also list the lgtunit tool warning and error messages in the "PROBLEMS" pane.
- FIXED: Compilation errors when loading the VSCode support file using the XSB backend.
3.85.0 12 de novembre del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: The logtalk_load_context/2 built-in predicate to type-check the key argument.
- CHANGED: Attempting to define an entity/predicate alias equal to the original entity/predicate is now a compilation error instead of simply a warning.
- CHANGED: Reclassified the underscore_variables flag as a backend flag instead of a linter flag.
- ADDED: New meta-flag, linter, to manage the values of all the linter flags as a group.
- ADDED: New linter flag, encodings, to control source file text encoding warnings.
- ADDED: New linter flag, general, for warnings that are not controlled by a specific flag.
- IMPROVED: Print a linter warning on redundant entity qualification in predicate directives.
- IMPROVED: Detect and report as compilation errors use_module/1-2 and uses/1-2 directives when compiling a protocol.
- IMPROVED: Report as compilation errors instead of compilation warnings use_module/1-2 directives when not compiling a module as an object while using a backend that doesn't support modules.
- IMPROVED: Report as compilation errors export/1 and reexport/2 directives when not compiling a module as an object.
- FIXED: The compiler to prevent trying to compile a Prolog use_module/1 directive as a Logtalk directive when compiling a module as an object.
- FIXED: Detection of a file trying to recursively load itself to not throw a permission error when reloading a file that previously failed to load.
- FIXED: Misleading error when compiling dynamic/1, discontiguous/1, and multifile/1 directives with arguments with redundant entity qualification.
Prolog adapter and integration files
- UPDATED: Trealla Prolog adapter file to require version 2.59.21 or later.
Documentation
- IMPROVED: Documentation of the issue_creator tool.
- IMPROVED: The Handbook documentation on performance, adding a section on circular references.
- IMPROVED: The Handbook documentation on the logtalk_make/0-1 built-in predicates.
- UPDATED: The Handbook documentation on the underscore_variables flag.
Library
- ADDED: Additional test for the java library checking setting an array element to the empty list atom.
- UPDATED: The meta_compiler library to support optimization of meta-calls with closure meta-arguments that are messages to parametric objects.
Tools
- ADDED: Support to the diagrams tool for VSCode, VSCodium, Cursor, Zed, BBEdit, MacVim, and TextMate local file links.
- UPDATED: Rewrite error and warning messages from the packs tool so that they can be explained by the tutor tool.
- UPDATED: The tutor tool to explain the new redundant entity qualifier linter warning.
- FIXED: Case where the packs tool would print repeated "Pack dependency not available" error messages when trying to install or update a pack with alternative dependencies where none is available.
- FIXED: The debugger tool description of the p (print) port command.
- FIXED: Typos in the mode/2 directives for the debuggerp protocol logging/3 and nolog/3 public predicates.
- FIXED: Typo in the info/2 directive for the tutor object explain//1 public non-terminal.
- FIXED: Harmless linter warning when loading the debugger tool with some backends.
Examples
- IMPROVED: The searching example representation of some of the problems.
- UPDATED: The errors example for the new redundant entity qualifier linter warning.
- FIXED: Portability issue in the errors example tests.
- FIXED: Cannot run the module_aliases example with XSB and Tau Prolog.
- FIXED: The symbiosis example for Trealla Prolog removing its apply module.
Tests
- CHANGED: Tests for the Prolog standard initialization/1 directive to not depend on support for the ensure_loaded/1 directive.
- ADDED: Additional tests for the user built-in entity.
- ADDED: Tests for the Logtalk consistency_error/3 built-in method.
- ADDED: Additional tests for the Prolog standard bagof/3 and setof/3 built-in predicates.
- ADDED: Tests for the Prolog standard write_term/2-3 built-in predicates support for the portrayed/1 option impl
3.84.0 22 d’octubre del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: New fails_if key to the info/2 predicate directive for documenting predicate fail conditions. Adopted from ECLiPSe similar fail_if key.
- IMPROVED: Detect and report when a uses/2 directive references the object that contains it.
- IMPROVED: Detect and report when a use_module/2 directive references the module (being compiled as an object) that contains it.
- IMPROVED: Detect and report when an alias/2 directive references the entity that contains it.
- IMPROVED: Detect and report when a source file attempts to load itself.
- IMPROVED: Error reporting when a source file attempts to include itself.
- FIXED: Prevent using grammar rules to try to redefine the (;)/2, (->)/2, and (*->)/2 control constructs.
Documentation
- IMPROVED: Handbook glossary entries for "predicate", "method", "sender", and "this".
- IMPROVED: Handbook section on running parallel Logtalk processes.
- IMPROVED: Documentation of the packs tool on working with packs using git archive URLs, signing packs, and encrypting packs.
Library
- CHANGED: The library object hook_pipeline/1 to not use default expansions and pass as-is any terms and goals not expanded by a hook object to the next hook object. This library object now calls the expanding protocol predicates directly instead of using the expand_term/2 and expand_goal/2 built-in methods.
- CHANGED: The library object hook_set/1 to call the expanding protocol predicates directly instead of using the expand_term/2 and expand_goal/2 built-in methods.
- ADDED: Predicates delete_directory_and_contents/1 and delete_directory_contents/1 to the os library.
- ADDED: Additional tests for the dictionaries library.
- IMPROVED: Documentation of the dictionaries library predicates.
- FIXED: The library object type to properly load the SWI-Prolog unicode module library when running with this backend. Thanks to Alex Kouznetsov for the bug report.
- FIXED: The definition of the os::delete_file/1 library predicate for YAP.
- FIXED: Bug in the meta_compiler library when attempting to compile a closure for a (::)/2 (or (:)/2) goal when the object (or module) argument is not bound at compile time. Thanks to Alex Kouznetsov for the bug report.
- FIXED: The meta_compiler library to not try to expand goals in clauses containing parameter variables. Thanks to Alex Kouznetsov for the bug report.
Tools
- ADDED: Support for running just a selection of tests to the lgtunit tool. Thanks to Michael McNally for the suggestion.
- ADDED: Support to the lgtunit tool for test/2-3 test dialects as facts.
- ADDED: Requirements section to the documentation of the help and lgtdoc tools.
- ADDED: Support to the packs tool for installing and updating packs from local archives.
- ADDED: Support to the packs tool for gpg encrypted pack and registry archives.
- ADDED: Support to the packs tool to use wget in alternative to curl.
- ADDED: Support to the packs tool to use .sig signature files in alternative to .asc signature files.
- ADDED: Support to the tutor tool to explain selected lgtunit, make, and packs tool error messages.
- ADDED: Additional tests for the dead_code_scanner tool.
- IMPROVED: Tests code coverage for the packs tool.
- IMPROVED: Man page of the logtalk_tester.sh script.
- UPDATED: The lgtdoc tool to process the new fails_if key of the info/2 predicate directive.
- FIXED: The dead_code_scanner tool to avoid false positives when checking predicate aliases declared in uses/2 or use_module/2 directives.
- FIXED: The dead_code_scanner tool to not report the user-defined coinductive_success_hook/1-2 hook predicates.
- FIXED: The lgtdoc tool to recognize consistency errors as standard exceptions.
- FIXED: Missing space between the tar command and non-empty extra tar options in the packs tool.
- FIXED: The logtalk_tester.sh script to follow symbolic links when looking for test driver files. Thanks to Lindsey Spratt for the bug report.
Examples
- ADDED: New tests_dsl example illustrating how to define a Do
3.83.0 24 de setembre del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: The representation error argument when calling context/1 built-in method would create a cyclic term from cyclic_term to acyclic_term.
- CHANGED: The exception term when trying to define a predicate inside a protocol to use a permission type of predicate instead of clause.
- CHANGED: All compiler domain errors for consistency errors to use the new consistency_error/3 built-in method.
- ADDED: New consistency_error/3 built-in method.
- IMPROVED: Linter warnings for trivial fails to distinguish between predicate and non-terminal goals.
- IMPROVED: Compiler warnings on missing scope directives for non-terminals.
- IMPROVED: Internal documentation of the compiler and runtime.
- FIXED: When calling threaded engines built-in predicates using a backend that doesn't support engines, throw a resource_error(engines) instead of a resource_error(threads) error.
- FIXED: Compiler redundant check if a recursive call to a meta-predicate complies with the expected number of additional arguments for closures.
- FIXED: Compiler bug when using a uses/2 directive to change the order of the arguments of a predicate and using the predicate alias as a closure.
- FIXED: Disjunction optimization bug when the left-side is a variable and the disjunction is an argument of the call/1 control construct.
- FIXED: Case where the compiler would report the wrong error when a source file defined category declares a predicate or a non-terminal dynamic textually after its definition.
- FIXED: Protect the linter check for goals that are always true or false from unexpected exceptions and report them instead of aborting compilation with an error.
Prolog adapter and integration files
- UPDATED: The XVM adapter file with additional candidate built-in predicates for checking tautology and falsehood goals.
Documentation
- ADDED: Handbook section with guidelines for describing predicates in info/2 directives.
- IMPROVED: Handbook documentation of the representation_error/1, resource_error/1, existence_error/2, and permission_error/3 built-in methods.
- IMPROVED: Handbook section on the mode/2 predicate directive.
- IMPROVED: Handbook section on lambda expressions.
Tools
- CHANGED: The lgtunit tool run_test_sets/1 predicate to also accept a list with a single test set or an empty list as argument.
- UPDATED: The help tool to be aware of the new consistency_error/3 built-in method.
- UPDATED: The tutor tool to explain consistency errors.
Examples
- UPDATED: The errors example to illustrate consistency errors.
Tests
- ADDED: Additional test for the Prolog standard logical update semantics.
- ADDED: Additional tests for the Prolog standard arg/3, atom_chars/2, atom_codes/2, number_chars/2, number_codes/2, current_predicate/1, clause/2, nl/0-1, op/3, retractall/1, and term_variables/2 built-in predicates.
- IMPROVED: Tests for the (=..)/2, abolish/1, and functor/3 Prolog standard predicates.
- IMPROVED: Tests for the Prolog call/1 control construct to delay expected errors to runtime.
- UPDATED: Tests for the missing_directives and trivial_goal_fails linter flags.
- UPDATED: The tests for the Prolog standard op/3 for Trealla Prolog which now allows defining an atom as both an infix and a postfix operator.
Installers and installation scripts
- FIXED: The Docker file for building the SWI-Prolog based image to properly define the INFOPATH and MANPATH environment variables.
3.82.0 20 d’agost del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: Linter warnings on suspicious cuts in disjunctions are now controlled by the disjunctions flag.
- CHANGED: Linter warnings on calling Logtalk/Prolog top-level shortcuts or Logtalk built-in predicates as directives are now controlled by the portability flag.
- CHANGED: The deprecated assert/1 predicate is no longer declared as a built-in method.
- ADDED: Support for runtime constructed messages for the built-in methods. Thanks to Alex Kouznetsov for the bug report.
- FIXED: The handling of include/1 directives by the create_protocol/3, create_object/4, and create_category/4 built-in predicates to throw an error instead of failing when the included file is not valid. Thanks to Alex Kouznetsov for the bug report.
- FIXED: The message term of the linter warning for a missing predicate scope directive when an info/2 or mode/2 directive exists would misreport the existing directive.
- FIXED: Duplicated linter warnings when checking if (\=)/2 goals are always true or false.
Prolog adapter and integration files
- CHANGED: The default value of the underscore_variables linter flag to dont_care for all supported backends.
Documentation
- IMPROVED: Handbook documentation of the underscore_variables linter flag.
- IMPROVED: Handbook documentation of the logtalk::message_prefix_stream/4 predicate.
- FIXED: Handbook documentation of the logtalk::ask_question/5 predicate. Thanks to Paul Brown for the bug report.
Library
- CHANGED: The arbitrary library check if null is a valid character for the current backend to not rely on exceptions but instead use the backend identifier.
Tools
- ADDED: Tests for the linter tool.
- IMPROVED: The packs tool handling of alternative pack dependencies.
- IMPROVED: Man page of the packs tool lgtenv script.
- UPDATED: The lgtenv scripts to support specifying the name of the packs sub-directory.
- FIXED: The logtalk_allure_report scripts when using both the single page and title options. Allure 2.26.0 or a later version is now required.
Tests
- ADDED: Additional tests for the include/1 directive.
- ADDED: Additional tests for the built-in database and reflection methods.
- ADDED: Additional test for the Prolog standard unify_with_occurs_check/2 built-in predicate.
Installers and installation scripts
- ADDED: Portable Docker image support for displaying man pages.
- ADDED: Portable Docker image support for displaying the Handbook and the APIs Texinfo files using the help tool.
- FIXED: The Docker file for building the portable image to properly define the INFOPATH and MANPATH environment variables.
- FIXED: The macOS portfile for the changes in the MacPorts 2.10 version.
3.81.0 16 de juliol del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: The message delegation control construct, []/1, to preserve also the original meta-call context.
- ADDED: Support for runtime constructed (^^)/2 goals. Thanks to Alex Kouznetsov for the bug report.
- ADDED: Support for using the (<<)/2 and catch/3 control constructs in a grammar rule body.
- IMPROVED: Linter warning for calls to the {}/1 control construct.
- FIXED: Consistent handling of meta-arguments when a meta-predicate calls another local meta-predicate with meta-arguments that are not meta-arguments of the caller.
- FIXED: Cases where the meta-argument of phrase//1 and phrase/2-3 goals would not be called in the meta-call context. Thanks to Alex Kouznetsov for the bug report.
- FIXED: Clean the dynamic lookup caches when changing the values of the debug and optimize flags. Thanks to Alex Kouznetsov for the bug report.
- FIXED: Detect and report as a compiler error calls to the context(Context) built-in method from clauses with heads containing the Context variable.
- FIXED: Calls to the clause/3 built-in method when the clause reference is bound and the clause is compiled in debug mode.
Prolog adapter and integration files
- CHANGED: Account for the renaming of the LVM backend to XVM.
Documentation
- ADDED: Notes on backend support for clause references to the adapters/NOTES.md file.
- ADDED: Handbook documentation on using predicate aliases in uses/2 directives to use a different order of the predicate arguments.
- ADDED: Handbook mention on the backend dependent support for clause reference built-in methods.
- ADDED: Handbook glossary entry for "clause reference".
- IMPROVED: Handbook documentation on meta-predicate semantics.
- IMPROVED: Handbook documentation on the meta_predicate/1 directive.
- IMPROVED: Handbook documentation of the (::)/2, (::)/1, (<<)/2 control constructs.
- IMPROVED: Handbook documentation on the this/1 built-in method.
- IMPROVED: Documentation of the lgtunit tool on how to use the assertion/1-2 utility predicates.
- UPDATED: Handbook documentation on debugging using conditional breakpoints and log points.
Library
- IMPROVED: Performance of the json library when parsing large files. Thanks to Yurii Rashkovskii for the bug report.
- IMPROVED: Performance of the meta_compiler library when generating auxiliary functors with backends that provide the atomic_list_concat/2 predicate.
- FIXED: Error in the meta_compiler library when expanding a meta-argument that is a call to a Prolog module predicate. Thanks to Alex Kouznetsov for the bug report.
- FIXED: Harmless linter warning when loading the types library using XSB.
Tools
- CHANGED: The lgtunit object test/3 private predicate is no longer declared as a meta-predicate.
- ADDED: Support for conditional and triggered breakpoints to the debugger tool.
- IMPROVED: The debugger tool implementation of log points to support printing the default port message, the default port message followed by a comment, and replacing the default port message with a text with term placeholders that are expanded at runtime.
- IMPROVED: The debugger tool performance when checking for leashed ports.
- UPDATED: Documentation on developer tools requirements.
- UPDATED: The lgtunit tool to print a new line after reporting a failed test to simplify parsing by other tools.
- FIXED: Removed non-required meta_predicate/1 directives for some auxiliary lgtunit object predicates.
- FIXED: Bug in the lgtdoc tool where invalid reStructuredText files could be generated when entities are defined in source file at the root level of the documented project.
Examples
- ADDED: New self_vs_super example illustrating the semantics of calling an inherited meta-predicate using a message to "self" versus using a "super" call.
- FIXED: The neo4j example finding of the Neo4j installation directory.
- FIXED: The emetas example definition of the best_of/3 meta-predicate.
Tests
- ADDED: Additional tests for the (^^)/2 control construct.
Installers and installati
3.80.0 4 de juny del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: Also print a silent compiling_file/2 message when processing include/1 directives that can be intercepted by tools.
- CHANGED: Renamed the logtalk object debug_handler_provider/1 predicate to debug_handler/1 and the debug_handler/2 predicate to debug_handler/3.
- ADDED: New activate_debug_handler/1, deactivate_debug_handler/0, and active_debug_handler/1 predicates to the logtalk object supporting the activation and deactivation of debug handler providers.
- ADDED: New entity property, directive/2, providing the entity opening directive start and end lines when defined in a source file.
- ADDED: Compiler support for using backend proprietary directives in calls to the create_object/4 and create_category/4 built-in predicates.
- IMPROVED: Allow multiple debug handler providers to be loaded simultaneously (with the restriction that only one of them can be active at any given time).
- FIXED: Regression preventing linter warnings for duplicated clauses and grammar rules.
- FIXED: Reporting of the number of compilation warnings will fail to count some of the warnings.
- FIXED: The phrase/2-3 built-in methods to properly handle a runtime bound first argument when called from a meta-predicate. Thanks to Alex Kouznetsov for the bug report.
Prolog adapter and integration files
- UPDATED: The LVM adapter file to support encryption of the intermediate Prolog files generated by the compiler by setting the prolog_compiler flag to [encrypt(true)] and the clean flag to off.
- ADDED: SWI-Prolog adapter file initial support for using tabling directives and predicates in dynamically created objects.
Documentation
- ADDED: A "Known issues" section to the embedding scripts documentation.
- ADDED: Handbook documentation on how to define debug handler providers.
- ADDED: Handbook documentation on debugging using log points.
Library
- ADDED: New sequential_occurrences/2-3 list predicates to the types library.
Tools
- CHANGED: The debugger and ports_profiler tools for the new debug handler predicates.
- ADDED: New start/0 and stop/0 predicates to the ports_profiler object to simplify activating and deactivating it as the debug handler provider.
- ADDED: Support for log points to the debugger tool.
- ADDED: New public explain//1 non-terminal to the tutor tool.
- UPDATED: The debugger object debug/0 and trace/0 predicates to activate the object as the current debug handler provider. Updated also the nodebug/0 predicate to deactivate the debugger object as the current debug handler provider.
- UPDATED: The debugger tool to print silent port messages (when leashed) that can be intercepted by tools.
- IMPROVED: The packs tool to clarify when trying to install a pack that's already installed if it's installed from a different registry.
Examples
- FIXED: The missing_data example loader file.
- FIXED: Lambda expression warnings when loading the missing_data example.
IDEs, text editors, and syntax highlighters support
- ADDED: VSCode support for managing spy points and log points.
- ADDED: VSCode handling of compiling_file/2 messages to support clearing file diagnostics when recompiling files.
- UPDATED: VSCode support to allow the find_implementations/4 predicate to also find protocol implementations.
- FIXED: VSCode cases where non-terminal declarations and definitions would not be found.
- FIXED: VSCode case where the definition for a predicate listed in a uses/2 directive would not be found.
- FIXED: VSCode finding of entity references to avoid false positives.
- FIXED: VSCode support when (re-)running tests without using the GUI command.
- FIXED: VSCode support for clearing file diagnostics when recompiling files.
3.79.0 15 de maig del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- FIXED: Regression in the logtalk_make/1 predicate check target where the file location for a missing predicate reference would not be reported correctly.
- FIXED: Don't print left-recursion linter warnings for coinductive predicates.
- FIXED: Allow term-expansion to generate multiple entity definitions. Thanks to Alex Kouznetsov for the bug report.
Documentation
- IMPROVED: Handbook documentation of the term-expansion mechanism.
Library
- FIXED: Silence harmless left-recursion linter warning in the timeout library tests.
Tools
- CHANGED: The dead_code_scanner and lgtdoc tools to print warnings using the same format used by the compiler.
- FIXED: The code_metrics tool computation of entity cyclomatic complexity to also consider multifile predicate definitions contributed by the entity to other entities when computing graph connected components.
- FIXED: The code_metrics tool computation of entity Unique Predicate Nodes (UPN) to also count multifile predicate definitions contributed by the entity to other entities.
- FIXED: Code coverage for tests of the Halstead complexity metric.
- FIXED: Deleted dead code in the code_metrics and lgtdoc tools.
- FIXED: The wrapper reporting of missing meta_predicate/1 directives. Thanks to Alex Kouznetsov for the bug report.
Examples
- FIXED: Silence harmless left-recursion linter warning in the tbbt example.
- FIXED: Missing predicates in the relations example.
IDEs, text editors, and syntax highlighters support
- ADDED: VSCode support predicates for using the dead_code_scanner, make, and code_metrics tools and for recursively generating documentation and diagrams.
- UPDATED: VSCode support predicates for running tests and doclets to add compiler warnings and errors to the "Problems" pane.
- UPDATED: VSCode support predicates for running tests the VSCode to make the tests results available for code lens.
- UPDATED: VSCode support predicate that finds the parent file of a loaded file to also work for included files.
- FIXED: Avoid missing entity warnings when loading the VSCode support.
3.78.0 6 de maig del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Linter warning for left-recursion in clauses and grammar rules. Controlled by the new left_recursion flag with default value warning.
- ADDED: Object and category alias/2 property for object and module aliases declared using the uses/1 and use_module/1 directives. Also added the alias properties object, module, and predicate.
- ADDED: Object and category declares/2, defines/2, alias/2,, calls/2, updates/2, includes/3, and provides/3 properties now include an entity and predicate lines/2 property.
- FIXED: Bug where the entity properties includes/3 and provides/3 could be missing after reloading modified source files containing predicate multifile directives.
Documentation
- ADDED: A glossary definition for homoiconic programming languages.
- IMPROVED: Handbook section on declarative object-oriented programming.
- UPDATED: Handbook documentation on developer tools requirements.
- UPDATED: The help tool documentation on known issues.
- UPDATED: Notes on the VSCode and VSCodium text editors support.
Tools
- UPDATED: The tutor tool to explain the new linter warning for left-recursion in clauses and grammar rules.
- FIXED: Dependency on non-standard predicate in the dead_code_scanner tool.
- FIXED: Harmless Texinfo warning when using the help::man/1 predicate.
Examples
- IMPROVED: Documentation of the shapes example.
- UPDATED: The errors example to illustrate the new linter warning for left-recursion in clauses and grammar rules.
- UPDATED: The multifile example to also illustrate multifile non-terminals.
- FIXED: Spurious choice-points in the blocks and bricks examples.
- FIXED: The SICStus Prolog specific constraints/sicstus example to not depend on the default double_quotes flag value.
- FIXED: The SWI-Prolog specific constraints/swipl example to not depend on the default double_quotes flag value.
- FIXED: The SWI-Prolog specific constraints/swipl example to always load the knight object.
- FIXED: The SWI-Prolog specific pengines example to not depend on the default double_quotes flag value.
Tests
- ADDED: Additional tests for the Prolog standard (=..)/2 and is/2 predicates.
IDEs, text editors, and syntax highlighters support
- ADDED: Support for VSCode and VSCodium code navigation features.
3.77.0 2 d’abril del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Predicate property recursive to the reflection API to document that a predicate definition includes at least one recursive rule.
- ADDED: Linter warnings for logtalk::print_message/3 goals (specifically, missing message tokenization and misuse of Format+Arguments meta-message).
Documentation
- ADDED: Also generate ePub and PDF versions of the APIs documentation.
- IMPROVED: Documentation of the code_metrics tool.
Library
- ADDED: New and improved tests for the os library.
- FIXED: The os library date_time/7 predicate for XSB to return the local date and time.
Tools
- CHANGED: The code_metrics tool to exclude auxiliary predicates from analysis.
- CHANGED: The diagrams tool to omit from library loading and library dependency diagrams libraries that are not loaded or have no dependencies.
- CHANGED: The diagrams tool to omit from directory loading and directory dependency diagrams directories that are not loaded or have no dependencies.
- CHANGED: The diagrams tool to use the default layout for sub-diagrams when using the zoom(true) option.
- CHANGED: The packs tool to only install or restore, by default, packs that are compatible with the current Logtalk, backed, and operating-system versions. Add a new compatible/1 boolean option for the install/4, update/3, and restore/2 predicates (default is true) to allow overriding the new default behavior.
- ADDED: Support to the packs tool for specifying packs alternative dependencies using the (;)/2 operator.
- ADDED: New public predicates to the code_metrics tool that take a list of options to selectively exclude from analysis libraries, directories, files, and entities.
- ADDED: The diagrams tool directory diagrams now generate file nodes that link to file entity diagrams when using the zoom(true) option.
- ADDED: New diagrams tool recursive_relations/1 boolean option (default is false) to output recursive calls links in predicate cross-referencing diagrams.
- ADDED: New diagrams tool versions/1 boolean option (default is false) to print the Logtalk and backend version data.
- ADDED: New diagrams tool predicate_url_target_format/1 option (default is sphinx) to allow generating correct documentation URL predicate targets.
- ADDED: Preliminary support for Mermaid to the diagrams tool (not loaded by default as its current version lacks parity with required Graphviz features).
- IMPROVED: The packs tool now checks when updating a pack if any dependent pack will break.
- FIXED: The packs tool to pass pack installing and updating options to any required dependencies that must also be installed or updated.
- FIXED: The diagrams tool to normalize the directories listed in the exclude_directories/1 option.
- FIXED: The diagrams tool to always consider the exclude options when outputting external nodes and edges.
- FIXED: The diagrams tool to avoid adding zoom icons/links when the linked diagrams are empty.
- FIXED: The diagrams tool to show relative paths in external file nodes after the omit_path_prefixes/1 option instead of just basenames.
- FIXED: The lgtunit tool xUnit.net v2 XML format support to output errors quoted.
Tests
- ADDED: Preliminary test set for the Prolog encoding/1 directive supported by some of the backends that support Unicode and multiple text encodings.
- ADDED: Additional tests for the Prolog standard number_codes/2 predicate.
3.76.0 27 de febrer del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: The reflection API now also includes calls/2 object and category properties when the callers are auxiliary predicates. This change allows the dead_code_scanner tool to avoid false positives when reporting non called predicates.
- ADDED: Implemented the object and category updates/2 property alias/2 and non_terminal/1 predicate properties.
- IMPROVED: The compiler report of errors and warnings clause context for multifile predicates.
- IMPROVED: Print a warning only for the first successful call to the logtalk_linter_hook/7 hook predicate.
- FIXED: The compiler to detect and report attempts to declare category predicates or non-terminals as both multifile and dynamic.
- FIXED: The updates/2 object and category property would not be reported for updated predicates in user.
- FIXED: The compiler to not create object and category calls/2 properties for built-in database predicate calls updating predicates in user.
- FIXED: False positive missing predicate linter warnings in logtalk_make/1 calls for the check target when analyzing (^^)/1 and (::)/1 calls from objects playing the role of instances.
Documentation
- IMPROVED: Clarify that license information in info/1 directives and pack manifest files should preferably use a SPDX standard license identifier.
- IMPROVED: Documentation of the diagrams tool on known issues when generating predicate call cross-referencing diagrams.
- FIXED: Handbook description of object and category calls/2 and updates/2 properties missing the non_terminal/1 predicate property and wrongly specifying as/2 instead of alias/2 predicate property.
Library
- CHANGED: No longer require arbitrary term generators to have a type-checker.
- CHANGED: The type::check/2 and the arbitrary::arbitrary/2 predicates are now also declared as meta-predicates to support new meta-types.
- REMOVED: The types_frequency/1 type from the type library (use instead the types/1 type for type-checking).
- ADDED: New (::)/2 and constrain/2 types to the types and arbitrary libraries. This (::)/2 type allows using object public predicates as scoped type-checkers, generators, and shrinkers. The constrain/2 type allows constraining a base type using a closure.
- ADDED: New transform/2 type to the arbitrary library. This type allows transforming generated values of a base type using a closure.
- ADDED: New arbitrary::max_size/1 multifile predicate to allow overriding the maximum size for types where its meaningful and implicit.
- ADDED: New arbitrary::shrink_sequence/3 predicate to help testing definitions of the arbitrary::shrink/3 predicate.
- IMPROVED: Linter warnings for calls to the list::append/3 predicate.
- FIXED: Bugs in the arbitrary library shrink/3 predicate definitions for some of the pre-defined types that could result in non-terminating sequences.
- FIXED: Protect arbitrary library shrink/3 predicate definitions for float types from underflow errors.
- FIXED: The arbitrary library tests when run with the GNU Prolog backend.
- FIXED: Deleted unused non-terminals from the number_grammars/1 object.
- FIXED: Tests for the ulid library to account for some backends providing low time accuracy.
- IMPROVED: Implementation of the os library predicates full_device_path/1 and read_only_device_path/1.
Tools
- CHANGED: The diagrams tool interpretation of the excluded_directories/1 option to exclude also all sub-directories of the excluded directories.
- CHANGED: The lgtdoc tool interpretation of the excluded_paths/1 option to exclude also all sub-directories of the excluded directories.
- ADDED: New public predicates to the dead_code_scanner tool that take a list of options to selectively exclude from analysis libraries, directories, files, and entities.
- ADDED: Support to the packs tool to represent operating-system dependencies in pack manifest files.
- IMPROVED: The logtalk_tester.sh script can now be interrupted using Ctrl-C when the timeout option is used.
- IMPROVED: The logtalk_tester.sh scr
3.75.0 27 de febrer del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- IMPROVED: Simplified implementation of the threaded_engine_destroy/1 built-in predicate.
- FIXED: Workaround SWI-Prolog throwing existence errors when calling thread_signal/2 or thread_send_message/2` on a terminated but not yet joined thread.
Prolog adapter and integration files
- UPDATED: The Trealla Prolog adapter file to set the threads and engines flags to supported when running on a recent version providing the required built-in predicates.
Documentation
- IMPROVED: Handbook documentation of the threaded_engine_self/1 built-in predicate.
- IMPROVED: Documentation of the arbitrary library.
Library
- ADDED: New os library predicates operating_system_name/1, operating_system_machine/1, and operating_system_release/1.
- ADDED: New compound(Name,Types) and types_frequency(Pairs) types to the types and arbitrary libraries. Joint work with Yurii Rashkovskii.
Tools
- CHANGED: The lgtunit tool now prints both CPU time and wall time for tests.
- CHANGED: The lgtunit tool xUnit reports now use the tests wall time instead of CPU time.
- FIXED: The packs linter for pack definitions would not recognize the (\==)/2 operator as valid when specifying dependencies.
Examples
- ADDED: Additional test for the document_converter example.
- ADDED: Tests for the tbbt threaded engine example.
- IMPROVED: Tests for the barriers blackboard, buckets, buffer, checkpoint, metered_concurrency, philosophers, ping_pong, sorting, and team multi-threading examples by using explicit assertions.
- IMPROVED: Portability of the whisper multi-threading example.
- UPDATED: The buckets, buffer, metered_concurrency, tbbt, and whisper multi-threading examples to use the format library.
- UPDATED: The buckets multi-threading example to call the thread_yield/0 predicate in the redistribute and match loops.
- UPDATED: The ebench threading engines example tests for LVM.
- FIXED: The threads/team example to allow running it independently of the current directory.
Tests
- ADDED: Test set for ISO Prolog standard logical update semantics.
- ADDED: Additional test for the ISO Prolog standard op/3 predicate.
- ADDED: Additional tests for the de facto Prolog standard format/2-3 predicates (~p control sequence).
- IMPROVED: Test for the ISO Prolog standard current_op/3 predicate.
3.74.0 31 de gener del 2024 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: Printing of linter warnings about to the use of unsound control constructs in grammar rules to be controlled by the grammar_rules flag instead of the suspicious_calls flag. Also changed the format of warning message.
- CHANGED: The implementation of the context/1 built-in method and the implementation of the threaded_call/2 and threaded_once/2 built-in predicates to throw uninstantiation_error(Term) errors instead of type_error(var, Term) errors.
- CHANGED: The implementation of the threaded_peek/1-2 built-in predicate to throw an exception when there is no thread proving the goal argument.
- CHANGED: The implementation of the threaded/1 built-in predicate to not abort execution when the argument is a disjunction of goals if one of them throws an exception while there are still thread goals running.
- IMPROVED: The implementation of the threaded/1 built-in predicate to support calls where the argument is only bound at runtime.
- IMPROVED: The implementation of the threaded/1 built-in predicate to use a dedicated message queue per call. This prevents unlikely but still possible leaks of individual thread results between calls that could cause unexpected failures.
- IMPROVED: The implementation of the threaded_engine_create/3 predicate to use a single mutex.
- IMPROVED: The implementation of the threaded_cancel/1 predicate.
- IMPROVED: Error checking of the threaded_exit/1-2 and threaded_peek/1-2 predicates.
- IMPROVED: Linter warnings for if-then-else and soft-cut control constructs.
- FIXED: Compilation of synchronized/1 directives in categories to not depend on the Prolog with_mutex/2 built-in predicate implicitly creating mutexes.
- FIXED: Compilation of phrase/2-3 goals where the first argument is a (::)/1-2 or (^^)/2 control construct with a variable grammar rule body argument would result in a compilation infinite loop. Thanks to Yurii Rashkovskii for the bug report.
- FIXED: Regression where a compiler error when a source file term is not callable would be delegated to the backend.
Prolog adapter and integration files
- UPDATED: The LVM adapter file to set the engines and threads flags depending on the availability of the required built-in predicates.
- FIXED: The SWI-Prolog swihooks.pl file to allow calls to the threaded/1 built-in predicate in user to actually use multi-threading by preventing module-qualification of the predicate argument.
Documentation
- IMPROVED: Handbook documentation of built-in meta-non-terminals and meta-predicates.
- IMPROVED: Handbook documentation on grammar rules.
- IMPROVED: Handbook documentation on dynamic predicates and the create_object/4 built-in predicate.
- IMPROVED: Handbook documentation of the threaded/1 built-in predicate.
- IMPROVED: Handbook documentation of the meta_predicate/1 directive.
- FIXED: Handbook description of the if/1 conditional compilation directive.
- FIXED: Documentation of the context/1 built-in execution context method.
- FIXED: Documentation of the threaded_exit/1-2 exceptions.
Library
- CHANGED: The type library object to to throw uninstantiation_error(Term) error instead of type_error(var, Term) error when checking the var type.
- CHANGED: Deleted deprecated library/genint.lgt file, replaced by the genint library.
- ADDED: Library listing supporting listing of object dynamic predicates clauses. This library replaces the old non-documented listing category.
- ADDED: Library recorded_database to help porting legacy Prolog code.
- UPDATED: The os::file_exists/1 predicate for YAP.
- FIXED: The json library to avoid unnecessary escaping of slashes when encoding a string. Thanks to Yurii Rashkovskii for the bug report.
- FIXED: The json library ignoring the selected JSON object representation when generating JSON output. Thanks to Yurii Rashkovskii for the bug report.
- FIXED: The json library domain error when trying to generate JSON output from an invalid JSON representation.
- FIXED: Description of the hierarchies libra
3.73.0 12 de desembre del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Linter warnings for deprecated arithmetic functions.
- ADDED: Linter warning for comparing numbers using unification.
- ADDED: Linter warnings for Quintus Prolog predicate versions of arithmetic functions.
- ADDED: Additional legacy built-in predicates for linter deprecated warnings.
- ADDED: Support for using backend-declared deprecated built-in predicates in linter warnings.
- IMPROVED: When checking the availability of predicates in user for uses/2 and use_module/2 directives, also check for an imported_from/1 predicate property.
- IMPROVED: Avoid false positive linter warnings about non-terminals called as predicates when the caller is a phrase-like predicate declared in the backend adapter file. Thanks to Yurii Rashkovskii for the use-case report.
- IMPROVED: Compiler reporting of term-expansion errors to write the source term.
- FIXED: Unknown and undefined predicate call warnings when the calls occur in an included file to report the actual location instead of the main file.
- FIXED: Only print linter warnings related to grammar rules when the flag grammar_rules is set to warning.
Prolog adapter and integration files
- CHANGED: B-Prolog support status to "experimental". Bugs and limitations on atom representation result in silent failures when loading libraries and tools.
- ADDED: Support for declaring phrase-like predicates that call non-terminals. This helps preventing false positive linter warnings of non-terminals called as predicates.
- ADDED: Support for declaring deprecated built-in predicates (with or without advised alternatives) in the adapter files.
- IMPROVED: ECLiPSe definition of the '$lgt_current_module_predicate'/2 internal predicate.
- UPDATED: The CxProlog adapter file to require version 0.98.2 or later.
- UPDATED: The LVM adapter file to prevent a clash with the term_hash/4 built-in predicate introduced in an upcoming version.
- UPDATED: The SWI-Prolog adapter file to load the prolog_evaluable library when available (provides the evaluable_property/2 predicate used by the linter).
Documentation
- IMPROVED: Handbook grammar section now uses W3C-style EBNF syntax compatible with the Railroad Diagram Generator. Several typos and omissions are also fixed. Thanks to Domingo Alvarez Duarte for his contribution and bug report.
- IMPROVED: Handbook section on parametric objects.
- IMPROVED: Documentation of the wrapper tool.
- UPDATED: The manual installation instructions on generating documentation human-readable formats.
- UPDATED: The man page for the lgt2pdf shell script.
Library
- REMOVED: The tsv object from the csv library.
- ADDED: Experimental mutations library for generating random mutations of terms of selected types. Intended for eventual fuzz testing support.
- ADDED: New tsv library for reading and writing TSV files.
- ADDED: Library predicates list::occurrences/2-3 to count the number of occurrences of list elements.
- ADDED: Library predicate numberlist::least_common_multiple/2.
- ADDED: Predicates select/4, swap/2, and swap_consecutive/2 to the random library for returning a random member of a list, replacing it by a new element and returning the resulting list, and for swapping two randomly chosen elements of a list.
- ADDED: Non-terminals zero_or_more//2, one_or_more//2, and without//2 to the sequence_grammars library object.
- IMPROVED: Performance of the reader library predicates that read a file or a stream to a list of chars, codes, or bytes.
- IMPROVED: Performance of the term_io library predicates.
- UPDATED: The csv library to also recognize .tab file extension for TSV files.
- FIXED: The documentation of the pairs::keys_values/3 library predicate.
- FIXED: The os library tests calls to the shell/1 predicate from auxiliary predicates.
- FIXED: The listing library category implementation of the listing/1 predicate.
- FIXED: The sequence_grammars library object definition of the non-terminals zero_or_more//0-1 and one_or_more//0-1 to consume tokens
3.71.0 12 d’octubre del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Prolog adapter and integration files
- REMOVED: Scryer Prolog is no longer supported due to the system refusal to implement (or accept contributions implementing) the required de facto standard version_data flag.
- FIXED: The GNU Prolog adapter file for compatibility with versions older than 1.6.0.
Documentation
- IMPROVED: Simplified finding the goal to use to load an entity when browsing the APIs documentation.
- IMPROVED: Documentation of the embedding scripts on how to handle an application using a mix of Logtalk and Prolog source files.
- FIXED: Texinfo navigation between Handbook and APIs documentation.
Library
- UPDATED: The tester_versions.lgt library file to use the de facto Prolog standard version_data flag to print any additional backend Prolog version data (e.g. a git commit hash).
Tools
- CHANGED: The debugger tool to print a procedure box port for spy points when the port is unleashed.
- IMPROVED: The packs tool linting of pack specifications to also check that pack versions are listed from newest to oldest.
- UPDATED: Entity documentation generated by the lgtdoc tool now includes the goal required for loading each entity.
- UPDATED: The tutor tool for the new linter warning on missing arithmetic functions.
- FIXED: The packs tool linting of pack specifications would wrongly report pack dependency versions using only Major:Minor or Major.
Examples
- CHANGED: The document_converter example to ensure UTF-8 encoding of the text files resulting from PDF files conversion.
- UPDATED: The errors example to illustrate linter arithmetic function warnings.
3.70.0 18 de setembre del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Linter check for missing arithmetic functions when using a backend implementing the evaluable_property/2 predicate.
- IMPROVED: The compiler to optimize the compilation of catch/3 goals where the first argument is a call/1 goal.
Prolog adapter and integration files
- FIXED: The GNU Prolog adapter file to rely on the new show_banner flag (when available) instead of the new show_information flag (in the upcoming 1.6.0 release) to set the Logtalk report flag.
Documentation
- IMPROVED: Documentation of the embedding scripts, notably on how to ensure relocatable applications.
- UPDATED: The man pages of the logtalk_doclet and logtalk_tester scripts on generating a GNU Prolog executable that includes Logtalk.
- FIXED: Override default Pygments CSS style for syntax highlighting errors in the Handbook to avoid displaying red boxes in non-Logtalk code blocks.
Libraries
- ADDED: Additional tests for the java library conversion between non-ASCII Java strings and Prolog atoms.
Tools
- IMPROVED: The packs tool handling of pack dependencies to try first to select dependency versions that verify any Logtalk and Prolog backend requirements before resorting to versions that just comply with the parent pack requirements.
- UPDATED: The logtalk_allure_report scripts to support generating single file reports when running Allure 2.24.0 or a later version.
- UPDATED: The packs tool to print an error message when updating a pack fails unexpectedly.
- FIXED: The packs::update/0 predicate to use default options for updating the outdated packs.
Examples
- IMPROVED: The document_converter example for faster conversion of large PDF files.
Tests
- ADDED: Additional Unicode tests for the standard sub_atom/5 predicate.
Installers and installation scripts
- ADDED: All the embedding scripts now support omitting a settings file by using the -s none option.
- FIXED: All the embedding scripts to use the default value for the settings file if none is specified (using the -s option) as per documentation.
3.69.0 21 d’agost del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- FIXED: Compilation of read_term/2-3 and write_term/2-3 goals would fail to take into account local operator definitions when the portability flag was set to silent (its default value).
Prolog adapter and integration files
- UPDATED: The LVM adapter file list of proprietary predicate properties for version 6.4.0.
- FIXED: Workaround a LVM embedding application issue with plug-ins where the registry name differs from the shared library basename.
Documentation
- IMPROVED: Documentation of the op/3 directive.
- IMPROVED: Documentation of the asserta/1 and assertz/1 built-in methods.
- IMPROVED: Documentation of the diagrams tool path_url_prefixes/3 and omit_path_prefixes/1 options.
- IMPROVED: Documentation of the lgtunit tool on writing and running tests.
Library
- ADDED: Experimental os::full_device_path/1 library predicate. Currently limited to Linux and BSD systems.
- ADDED: Experimental os::read_only_device_path/1 library predicate. Currently limited to macOS systems.
- ADDED: Predicate approximately_equal/2 to the number library object.
- IMPROVED: The number object documentation of the approximately_equal/3 and essentially_equal/3 predicates.
Tools
- CHANGED: The lgtunit tool to handle a non-deterministic success test result as any other test failure (thus suppressing non_deterministic_success/6 print messages).
- ADDED: Predicate approximately_equal/2 to the lgtunit tool.
- ADDED: The lgtunit tool now supports a flaky/0 test option as the preferred solution for declaring flaky tests.
- IMPROVED: The lgtunit tool documentation of the approximately_equal/3 and essentially_equal/3 predicates.
- IMPROVED: The diagrams tool DOT language support no longer sets the graph pack attribute to true to avoid frequent Graphviz dot command crashes when converting graphs to SVG format.
- IMPROVED: The lgtdoc tool support for documenting libraries where source files are organized in multiple sub-directories.
- IMPROVED: The tutor tool explanations for some message sending warnings.
- FIXED: The lgtunit tool xUnit reports escaping of XML special characters.
- FIXED: Bug in the packs tool warning message when installing a pack requires updating the backend Prolog system. Thanks to Jacob Friedman for the bug report.
Examples
- IMPROVED: The metapredicates example.
- UPDATED: The document_converter example to allow converting large files and to turn off OCR for faster testing. Also added samples in formats other than PDF. Tested with Apache Tika 2.8.0.
Tests
- ADDED: Additional tests for the Logtalk op/3 directive for checking the semantics of the read_term/2-3, read/1-2, write_term/2-3, writeq/1-2, and write/1-2 predicates in the presence of local operator definitions.
Installers and installation scripts
- UPDATED: The LVM embedding scripts to support encryption of the generated Prolog files. Requires LVM 6.4.0 or later version.
IDEs, text editors, and syntax highlighters support
- UPDATED: Link to the new home for the VSCode Logtalk plug-in.
3.68.0 25 de juliol del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: New logtalk_load_context/2 predicate entity_relation key to access the entity (being compiled) relations from its opening directive. After a suggestion and prototype code from Yurii Rashkovskii.
- FIXED: Harmless singleton variable warnings in the logtalk built-in object when using some embedding scripts.
Prolog adapter and integration files
- UPDATED: GNU Prolog adapter file for the format/2-3 predicate changes in version 1.6.0.
- UPDATED: The LVM adapter file to require version 6.3.0 or later.
- FIXED: Workaround a LVM embedding application issue with loading of plug-in shared libraries.
Library
- ADDED: LVM support to the library parallel_logtalk_processes_setup.pl file.
Tools
- ADDED: Support to the logtalk_doclet.* scripts for using a GNU Prolog executable that includes Logtalk for better performance. With the help of Daniel Diaz.
- IMPROVED: The lgtunit tool now prints all test execution times with nine decimal digits to simplify comparing test runs. Thanks to Daniel Diaz for the suggestion.
- IMPROVED: The packs tool installed/0-1 and outdated/0-1 predicates to list packs in alphabetical order.
- IMPROVED: The packs tool update/0 predicate to inform when a pack is orphaned.
- IMPROVED: The packs tool update/1-3 predicates to print an error message when a pack is orphaned.
- IMPROVED: When using the packs tool to install a pack using git archive, delete any empty archive file created when the remote connection fails.
- IMPROVED: When using the packs tool to install a pack using curl, fail on HTTP server errors instead of creating an archive file with the HTTP error.
- IMPROVED: The packs tool now reports the pack or registry download full command in case of failure instead of the URL or the asset path.
- FIXED: Bug in the packs tool where installing a pack when its archive was previously downloaded using git archive would result in a mangled directory structure.
- FIXED: Bug in the packs tool where installing a pack would fail when updating installed dependencies was required.
Examples
- IMPROVED: Simplify the Java example scripts that set the required CLASSPATH environment variable.
- UPDATED: Notes of the tabling object on current limitations.
- UPDATED: The errors example to illustrate errors occurring in the first source file line (mainly to test IDEs and text editors support).
Tests
- ADDED: Tests for the call_nth/2 predicate found on increasing number of Prolog systems.
- ADDED: Additional tests for Prolog standard syntax for terms adapted from WG17 work.
- ADDED: Additional tests for the Prolog standard asserta/1, assertz/1, bagof/3, copy_term/2, msort/2, setof/3, sort/2, and term_variables/2 predicates adapted from WG17 work.
- ADDED: Additional tests for the Prolog standard write_term/2 predicate.
- FIXED: Enable running the evaluable_property/2 predicate tests when using SWI-Prolog as the backend.
Installers and installation scripts
- CHANGED: The SWI-Prolog based Docker image to use swipl:stable instead of swipl:latest.
- CHANGED: All embedding scripts to patch the backend adapter files to change the settings_file flag value from allow to deny when also embedding a setting file. This prevents the generated files to to try to load (another) setting file when loaded.
- ADDED: LVM embedding scripts support for copying all plug-in foreign library files used by an application and generate an auxiliary loader.pl file.
- ADDED: SWI-Prolog embedding scripts support for specifying the foreign object action when building standalone saved states. Contributed by Yurii Rashkovskii.
- UPDATED: All embedding scripts to use expand_library_alias_paths(loader) instead of the deprecated loader file.
3.67.0 4 de juliol del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Two new linter flags, grammar_rules and arithmetic_expressions, to enable/disable the corresponding warnings.
- IMPROVED: Abstract how the linter and make tools check if a module defines a predicate. While this fixes some issues with some backends (e.g. ECLiPSe), most systems don't provide a reliable and clean solution for performing these checks.
- UPDATED: The compiler to also handle the lsb/1 and msb/1 integer functions when lint checking (is)/2 goals.
- FIXED: Linter check false positives for predicates called as non-terminals when the non-terminal is declared as dynamic.
Prolog adapter and integration files
- UPDATED: The Trealla Prolog adapter file to require version 2.18.7 or later.
- ADDED: macOS .command files for JIProlog and Scryer Prolog.
Documentation
- CHANGED: Use SPDX-FileCopyrightText for most files copyright information.
- ADDED: Section on writing debugging/logging messages from tests to the lgtunit tool documentation.
- UPDATED: Documentation of the dictionaries library.
- FIXED: Several typos in the Handbook section on Prolog integration and migration.
Library
- IMPROVED: Simplified some of the dictionaries library test assertions and changed most tests to check for expected determinism.
- FIXED: The type library object type-checking of Unicode character codes to exclude non-character code points (i.e. reserved, surrogate, or non-assigned). Currently, this check is only accurate for LVM and SWI-Prolog as other backends don't provide support for querying a Unicode code point category.
- FIXED: The arbitrary library category generation of Unicode character codes to exclude non-character code points (i.e. reserved, surrogate, or non-assigned). Currently, this is only accurate for LVM and SWI-Prolog as other backends don't provide support for querying a Unicode code point category.
- FIXED: The arbitrary library category generation of Unicode atoms in the BMP to avoid atom normalization (as performed by some backends such as LVM) resulting in atoms with characters outside the BMP.
- FIXED: The arbitrary library category generation of Unicode atoms of a given length to avoid atom normalization (as performed by some backends such as LVM) resulting in atoms with a different length.
Tools
- ADDED: Predicates rlibraries/1-2, libraries/1-2, rdirectories/1-2, directories/1-2, and files/1-2 to the lgtdoc tool.
- ADDED: The packs::update/2-3 predicates now accept an install/1 boolean option to install a pack latest version when trying to update a pack that's not installed.
- ADDED: The lgtunit tool now detects and reports discrepancies between the number of tests run and the total number of tests defined in a test set. This usually implies bugs in the implementation of basic Prolog control constructs by the used backend system.
- ADDED: Support to the logtalk_tester.* scripts for using a GNU Prolog executable that includes Logtalk for better performance. With the help of Daniel Diaz.
- UPDATED: The help tool to support other operating-systems, notably BSD, that also provide the xdg-open command.
- FIXED: A lgtunit tool bug when a test condition goal throws an error that would result in the test being reported twice (both as skipped and failed).
- FIXED: Tests for the directory_dependency_diagram::rdirectory/2 and directory_load_diagram::rdirectory/2 library predicates.
- FIXED: The debugger tool messages was still wrongly assuming that LVM didn't provide a way to check if a call is deterministic.
- FIXED: Prevent the lgtdoc tool rdirectory/1-2 predicates from failing when there are no sub-directories with loaded files.
Examples
- REMOVED: Now redundant cc example.
- UPDATED: The assign_parameters, assumptions, cascade, delegates, inlining, metainterpreters, prototypes, and recipes example tests to use explicit assertions.
Tests
- CHANGED: Only run the log/2 arithmetic function tests when the function is implemented by the backend.
- CHANGED: Splited the Unicode syntax tests in two 
3.66.0 30 de maig del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: New parameter_variables, variable_names(Term), and singletons(Term) keys to the logtalk_load_context/2 built-in predicate.
- ADDED: Two new meta-messages, [Stream,Prefix]>>Goal and [Stream]>>Goal, to the message printing mechanism. These new meta-messages allow calling a user-defined printing goal. The use of lambda expressions allow passing the message stream and prefix.
- ADDED: Linter warning for predicates called as non-terminals from grammar rules.
- ADDED: Linter warning for unclassified (but non-singleton and non-anonymous) variables in Free/Goal lambda expressions.
- ADDED: Linter warning for object, predicate, and non-terminal aliases that are not distinct from the originals.
- ADDED: Linter warning for (:)/2 goals when using a backend Prolog system that doesn't support modules and when not compiling a module as an object. Thanks to Lindsey Spratt for the suggestion.
- ADDED: Linter warning for use_module/1-2 file directives when using a backend Prolog system that doesn't support modules.
- ADDED: Linter warning for use_module/1-2 entity directives when using a backend Prolog system that doesn't support modules and not compiling a module as an object.
- IMPROVED: Reporting of calls to undefined predicates and unknown predicates from auxiliary clauses (e.g. generated while compiling lambda expressions).
- FIXED: Ensure that the startup library alias is found before the runtime constructed pack library aliases.
- FIXED: Linter warning for unknown entities to only report unknown Prolog modules when the backend system actually support modules.
- FIXED: Linter warning for unknown messages to only report calls to unknown Prolog module predicates when the backend system actually support modules.
Prolog adapter and integration files
- UPDATED: The Trealla Prolog adapter file to require version 2.17.10 or later.
- FIXED: The Quintus Prolog adapter file definition for the subsumes_term/2 standard predicate.
- FIXED: The Scryer Prolog adapter filer to not declare module meta-predicates as built-in meta-predicates.
Documentation
- ADDED: Handbook description and examples of the new meta-messages.
- IMPROVED: Handbook documentation of the dynamic/0, include/1, and mode/2 directives.
- IMPROVED: Handbook documentation of the logtalk_library_path/2 predicate.
- IMPROVED: Handbook documentation on definite clause grammars.
- IMPROVED: Handbook documentation on disjunctions and conditionals linter flags.
- IMPROVED: Documentation of the packs tool on requirements plus saving and restoring (virtual) environments.
- IMPROVED: Documentation of the linter, lgtunit, and tutor tools.
Library
- CHANGED: The hook_objects library loader file to only load the prolog_module_hook/1 object when running on a backend Prolog system supporting modules.
- ADDED: New ulid library for generating Universally Unique Lexicographically Sortable Identifiers.
- REMOVED: The term library object definition for the deprecated and no longer declared vars/2 predicate.
- CHANGED: Declare the termp library protocol variables/2 predicate deprecated.
- IMPROVED: Simplify the term library object variant/2 predicate.
- UPDATED: The os library for LVM to use the new date_time/7 built-in predicate when available.
- FIXED: Delete dead code in the the csv and statistics libraries.
Tools
- IMPROVED: The dead_code_scanner tool no longer reports predicates listed in uses/2 or use_module/2 directives that are made available as scoped predicates by the object (or category) containing the directives.
- IMPROVED: The dead_code_scanner tool no longer reports predicates defined in a complementing category when the complemented object contains or inherits a scope directive for the predicate.
- IMPROVED: The tutor tool explanation for compiler errors when trying to redefine the meaning of predicates listed in uses/2 or use_module/2 directives.
- UPDATED: The tutor tool to explain the new linter warnings.
- UPDATED: The tutor tool to also explain th
3.65.0 27 d’abril del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: Calls to unknown dynamic predicates in this from a category to throw an existence error instead of failing.
- ADDED: Support to the (@)/1 control construct for calling a predicate in this from any category and from objects.
- ADDED: Support for mode/2 directive zero_or_more_or_error and one_or_more_or_error number of proofs.
- ADDED: Support for a info/2 directive since key to document the version that added a predicate.
Prolog adapter and integration files
- ADDED: LVM adapter file support for the new add_csv/3 built-in predicate introduced in version 6.0.0.
- FIXED: The Scryer Prolog adapter file internal predicate for retrieving environment variable values. Thanks to Joe Taber for the bug report.
Documentation
- ADDED: Documentation for the (@)/1 control construct, which allows calling predicates in this from within categories.
- IMPROVED: Handbook documentation on documenting predicates using the mode/2 directive.
Library
- IMPROVED: Reduced the number of atoms created when calling the atom::replace_sub_atom/4 library predicate.
- FIXED: The git library when working with paths containing spaces.
- FIXED: The os::date_time/7 library predicate for Scryer Prolog when the double_quotes flag is set to atom.
Tools
- CHANGED: The debugger tool notrace/0 predicate to only turn off tracing, thus allowing the debugger to continue to stop at defined spy points.
- CHANGED: The lgtunit tool input/output testing predicates to always interpret relative paths as relative to the tests object path and to always open temporary files in the same directory as the tests object. This simplifies usage and improves reliability by not depending on the current working directory.
- CHANGED: The lgtunit tool file_path/2 to also accept absolute file paths (further expanding them to resolve any remaining relative file path parts).
- CHANGED: The lgtunit tool support for generating Allure reports now requires version 2.21.0 or later.
- CHANGED: The lgtunit tool xunit_output and xunit_report formats to include as test case properties the test file, test lines, test URL, and test note (if any).
- CHANGED: The lgtunit tool xunit_net_v2_output and xunit_net_v2_report formats now include the test note (if any) as a test trait for all outcomes.
- CHANGED: The lgtunit tool run/1 predicate to also save and restore the current output stream and working directory when running tests. Moreover, the predicate now only fails when given a partial list of tests or when one of the test identifiers is not valid.
- ADDED: New debugger tool port command N to turn off tracing.
- ADDED: Support to the lgtdoc tool to output info/2 directive since keys.
- ADDED: New lgtunit tool clean_directory/1 protected predicate to delete an empty directory if it exists.
- IMPROVED: Reduced the number of atoms created when using the diagrams, lgtdoc, and lgtunit tools.
- IMPROVED: The lgtunit tool now saves and restores the current working directory when running tests.
- IMPROVED: The lgtunit tool file_path/2 and clean_file/1 utility predicates to expand the constructed absolute file path to resolve any remaining relative file path parts.
- IMPROVED: The lgtunit tool documentation of the input/output testing predicates.
- IMPROVED: The logtalk_allure_report scripts to check if Allure is installed and the required minimal version.
- IMPROVED: The debugger tool debugging/0 predicate now also prints the maximum write depth for terms.
- UPDATED: The logtalk_allure_report scripts to add a categories.json file to classify failed tests.
- FIXED: The lgtunit tool xUnit format support to ensure that test URLs are correct when the suppressed path prefix ends with a slash.
- FIXED: The logtalk_tester.ps1 script reporting of test sets with multiple or parametric test objects.
- FIXED: The debugger tool to reset skipping and zapping state when tracing a new top-level query. Thanks to Lindsey Spratt for the bug report.
- FIXED: The debugger tool notrace/0 and nodeb
3.63.0 27 de febrer del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Allow info/2 directive examples key examples to also use {true} and {false} for bindings.
- FIXED: Spurious linter warnings of unknown calls to user predicates (and non-terminals) listed in uses/2 and use_module/2 directives when the predicates (and non-terminals) are also declared as dynamic or multifile in the same entity.
- FIXED: Spurious suspicious call linter warnings when compiling calls to threaded meta-predicates. Thanks to Didier Garcin for the bug report.
- FIXED: Linter warning for message-sending calls sent from an object to itself to check that it calls a locally defined predicate. Thanks to Paul Brown for the sample code.
- FIXED: Compiler optimization for message-sending calls sent from an object to itself to only apply when calling a locally defined predicate.
Documentation
- ADDED: Handbook section on compiler formatting of errors, warnings, and comments.
Library
- IMPROVED: Documentation of the random library randomize/1 predicate. After feedback from Jonathon Doran.
Tools
- ADDED: GNU Prolog (1.5.1 or later version) support for the help tool experimental predicates for top-level inline browse and search of the Texinfo versions of the Handbook and APIs documentation.
- IMPROVED: Performance of the diagrams tool when generating library dependency diagrams.
- IMPROVED: The logtalk_tester.sh script to exit with an error code when the find command used to find test sets fails to recognize an option.
- FIXED: The logtalk_tester.sh script -e option to work on Linux. Thanks to Lindsey Spratt for the bug report.
Examples
- ADDED: New units example, a Logtalk version of a GNU Prolog/CX parametric unit example.
- FIXED: Unknown module predicate linter warnings in the constraints/sicstus example due to the length/2 and member/2 predicates being built-in.
Tests
- ADDED: Additional tests for the de facto Prolog standard format/2-3 predicates.
- ADDED: Additional tests for the setup_call_cleanup/3 predicate adapted from the WG17 standardization proposal.
IDEs, text editors, and syntax highlighters support
- UPDATED: Syntax completion keywords for the jEdit, Sublime Text, TextMate, and Vim text editors.
3.62.0 31 de gener del 2023 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Message token tab(Expression) to the logtalk built-in object.

Prolog adapter and integration files
- UPDATED: Simplify integration script for Trealla Prolog.

Documentation
- UPDATED: Man pages of integration scripts that accept a command-line option for silencing informative messages.
- FIXED: Permanently redirected and broken hyperlinks in the Handbook and developer tools documentation.

Library
- ADDED: Preliminary version of sequence grammar rules to the grammars library.
- IMPROVED: Documentation of the hook_objects library.
- FIXED: Workaround issue with the SWI-Prolog implementation of the standard initialization/1 directive by skipping two tests of the timeout library.

Tools
- ADDED: Option to the logtalk_tester.sh and logtalk_tester.ps1 scripts for excluding directories using a regular expression.
- ADDED: New debugger tool port option to skip debugging for the current goal but displaying all intermediate ports unleashed.
- ADDED: New debugger tool port option to read and throw and exception term (as in the SICStus Prolog debugger).
- ADDED: Experimental lgtenv.sh and lgtenv.ps1 scripts for creating packs virtual environments.
- ADDED: New packs tool available/2 and versions/3 predicates.
- ADDED: New update/1 option to the packs tool registry adding and pack installation predicates.
- IMPROVED: The diagrams tool lgt2svg.sh and lgt2svg.ps1 scripts to alert the user when one or more files could not be converted (usually due to Graphviz crashes).
- UPDATED: The update_svg_diagrams.sh script to exit with the same code as the called lgt2svg.sh script.
- UPDATED: The packs tool to also recognize as a valid registry and pack readme file name case variations of NOTES with or without a .md or .txt extension.
- FIXED: Document packs tool predicates possible exceptions.
- FIXED: Missing type-checking of some arguments of some of the packs tool predicates.
- FIXED: The debugger tool to consume any new-line code after the user answers a question at a leashed port to avoid an automatic creep when returning to the port after calling the goal.

Examples
- FIXED: Portability issue in the bench example that prevented running the flatten benchmark with some backend Prolog systems.
- FIXED: Avoid a linter warning when loading the assumptions example.

Tests
- ADDED: Additional tests for the Prolog standard sub_atom/5 predicate. Contributed by Lindsey Spratt from the LVM development work.
- ADDED: Additional test for the Prolog standard unify_with_occurs_check/2 predicate.
- ADDED: Additional test for the de facto Prolog standard format/2-3 predicates for the ~0f format specifier. Test case contributed by Andrew Davison.
- ADDED: Additional tests for the de facto Prolog standard format/2-3 predicates for the case where the number of arguments is larger than required by the format string.
3.61.0 20 de desembre del 2022 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Prolog adapter and integration files
- ADDED: PowerShell integration script for Trealla Prolog. Experimental.
- UPDATED: The Trealla Prolog adapter file to require version 2.6.3 or later.
- UPDATED: The GNU Prolog adapter file to set the Logtalk report flag to warnings when the --quiet command-line option is used by checking the new show_information flag introduced in version 1.5.1.
- FIXED: The YAP adapter file to set the Logtalk report flag to warnings when the -q command-line option is used.
- FIXED: The CxProlog adapter file to set the Logtalk report flag to warnings when the --quiet command-line option is used.

Library
- ADDED: New ids library for generating identifiers (Base64 encoded) with parametrizable text representation and number of bytes of randomness.
- ADDED: New pairs library object key/2 and value/3 predicates. Also add tests for all the pairs library object predicates.
- ADDED: Additional tests for the reader library line_to_chars/2 and line_to_codes/2 predicates.

Tools
- ADDED: Support for using git archive for installing packs to the packs tool. This simplifies pack installation and thus improves user experience when the packs registry server uses Single Sign-On (SSO) for authentication.
- UPDATED: The packs::describe/1 predicate to also print the pack archive URL.

Ports
- FIXED: The metagol port examples loader to exclude loading the sorter example when using LVM as it doesn't provide the required setarg/3 built-in predicate.

Tests
- ADDED: Additional tests for the standard mod/2 and rem/2 arithmetic functions.
3.60.0 15 de novembre del 2022 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Linter check for the availability of predicates (and non-terminals) listed in uses/2 and use_module/2 directives. Controlled by the flag unknown_predicates.
- IMPROVED: Readability of default flag values printed at startup.
- FIXED: When reporting calls to non-standard arithmetic functions don't describe them as built-in functions as most Prolog systems fail to provide reflection support to check or enumerate built-in functions.

Prolog adapter and integration files
- UPDATED: All backend adapter files to recognize .pro as a valid Prolog file name extension.
- UPDATED: The Scryer Prolog adapter file to require version 0.9.1 or later.

Documentation
- ADDED: New lgtunit tool documentation section on working with test data files.
- IMPROVED: The Handbook inheritance section on the predicate lookups order.
- IMPROVED: The Handbook pages on some predicate directives by linking to the corresponding glossary definitions.
- UPDATED: The manual installation instructions in the INSTALL.md file for zsh users.

Library
- ADDED: New json library parsing source line(Stream) to parse a single line from the given stream into a JSON term.
- ADDED: Support for alternative term representations of JSON objects and JSON pairs to the json library.
- FIXED: Bug in the json library handling of JSON escape sequences.
- ADDED: Library reader::line_to_chars/2-3 predicates.
- FIXED: Mode directives for the reader::line_to_codes/2-3 predicates.
- FIXED: Also declare as synchronized the term_io predicates read_term_from_chars/4 and read_term_from_codes/4.

Tools
- CHANGED: Renamed the lgtdoc tool lgtdoc_missing_periods linter flag to lgtdoc_missing_punctuation and accept also exclamation and question marks.
- ADDED: New linter warning to the lgtdoc tool for invalid dates in info/1 directives.
- ADDED: New lgtunit tool file_path/2 protected predicate for computing absolute paths for file paths relative to test object paths.
- IMPROVED: The lgtdoc tool linter warnings to include the file line number.
- IMPROVED: More portable checking of the packs tool required command-line executables in POSIX systems.
- FIXED: The logtalk_doclet.sh script when using a backend Prolog system that requires command-line passed queries to end with a period.
- FIXED: The logtalk_tester.sh script to ensure that the searching for a tester.sh file to be sourced is restricted to the test set directory.
- FIXED: The logtalk_tester.ps1 script sourcing of tester.ps1 files found in the test set directory.
- FIXED: List of dependencies for the developer tools for Ubuntu.

Examples
- IMPROVED: Documentation of the people example.
- FIXED: Test for the jpl example to correctly compare floats.

Tests
- ADDED: Additional tests for the Prolog standard atom_chars/2, atom_codes/2, number_chars/2, and number_codes/2 predicates.
- UPDATED: Several Prolog compliance tests to use the new lgtunit tool file_path/2 predicate.

Installers and installation scripts
- IMPROVED: The logtalk_user_setup.sh and logtalk_user_setup.ps1 scripts to detect when the LOGTALKHOME and LOGTALKUSER environment variables point to the same directory and refuse to run.

IDEs, text editors, and syntax highlighters support
- ADDED: Support for escape sequences inside double-quoted terms to most text editors and syntax highlighters.
- UPDATED: Syntax highlighting test files to test escape sequences inside double-quoted terms.
- FIXED: Deleted accidentally committed temporary files in the coding/tests directory.
3.59.0 18 d’octubre del 2022 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: The user pseudo-object to declare the before/3 and after/3 predicates multifile to avoid predicate existence errors when using this object as monitor without definitions for these predicates in user.
- ADDED: Linter warning for predicate rules where the body is a naked meta-variable or contains a control construct where a cut-transparent argument is a naked meta-variable.
- FIXED: The declared_in/2, defined_in/2, and redefined_from/2 predicate properties when the predicate is being declared or (re)defined in an included file.
- FIXED: The compiler to avoid a trivial failure warning with some Prolog backends when checking the encoding_directive flag value.

Prolog adapter and integration files
- UPDATED: The Ciao Prolog adapter file to require version 1.22.0 or later.
- UPDATED: All Bash shell integration scripts to also look into the /opt/homebrew/share directory (used by Homebrew on Apple Silicon) when the LOGTALKHOME environment variable is not defined.
- UPDATED: All PowerShell integration scripts to check for and require version 7.2 or later.

Documentation
- ADDED: Glossary definitions for "meta-variable" and "naked meta-variable".
- IMPROVED: Handbook section on inline formatting in info/1-2 directives comments text.
- IMPROVED: Handbook section on documenting entities and predicates.
- IMPROVED: Handbook section on event-driven programming.
- FIXED: Added missing Handbook and APIs documentation sphinx_highlight.js files.

Library
- ADDED: Predicates read_term_from_chars/4 and read_term_from_codes/4 to the term_io library.
- IMPROVED: The documentation of the random and types libraries.
- FIXED: Definition of the os::time_stamp/1 library predicate for Ciao Prolog.

Tools
- CHANGED: The lgtdoc tool to use its own linter flag to control warnings about missing documentation directives.
- ADDED: Linter flags to the lgtdoc tool to warn on non-standard predicate exceptions and missing periods at the end of documentation text in info/1-2 directives.
- IMPROVED: The packs tool checking for pack version arguments by defining a custom type.
- UPDATED: All PowerShell tool scripts to check for and require version 7.2 or later.
- UPDATED: The lgtunit tool to print a warning on invalid (non QuickCheck) test options instead of just ignoring them.
- UPDATED: The tutor tool to explain the new linter warning on naked meta-variables in cut-transparent control constructs.
- IMPROVED: Simplify the lgtdoc tool generated reStructuredText files.
- FIXED: Missing new-line after index titles in the output of the lgtdoc tool logtalk_index_to_txt.xsl XSLT file.
- FIXED: Cases in the lgtdoc tool where looking for properties of referenced but not loaded entities could result in current_protocol/1 or protocol_property/2 exceptions.
- FIXED: The logtalk_tester.ps1 script to report the Logtalk and backend Prolog versions as expected when using the default verbose option.
- FIXED: Missing implementation of logtalk_tester.ps1 script -i option.

Examples
- UPDATED: The errors tool to illustrate the new linter warning on naked meta-variables in cut-transparent control constructs.
- FIXED: The constraints/sicstus example linter warnings on non-terminals called as predicates.
- FIXED: The named_databases example to only load in supported backends.

Tests
- CHANGED: Skip stream_property/2 tests that check eof_action/1 for output streams as they are arguably non-sensical. Thanks to Per Mildner for feedback on these tests.
- CHANGED: Test for the meta_predicate/1 directive to accept normal argument indicators other than * (e.g. ?) as common on some Prolog systems. Thanks to Per Mildner for feedback on these tests.
- ADDED: Tests for the syntax and semantics of the discontiguous/1 Prolog standard directive.
- ADDED: Additional tests for the Prolog standard current_predicate/1 and callable/1 predicates.

Ports
- IMPROVED: Documentation of the fcube port public predicates.

Installers and installation scripts
- UPDATED: The m
3.58.0 27 de setembre del 2022 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Compilation warning when compiling a logtalk_load_context/2 goal with an invalid key.
- ADDED: Linter warning for non-terminals called as predicates instead of via the phrase/2-3 built-in methods.
- FIXED: Detect conflicts between dynamic/1 directives and uses/2 and use_module/2 directives.
- FIXED: The compiler to not throw an instantiation error when the body of a clause is a variable; these clauses are conformant with the ISO Prolog Core standard and this fix also ensures consistency of the handling of naked variables in transparent control constructs.

Prolog adapter and integration files
- ADDED: Support for calling LVM disk predicate built-in predicates from categories.
- UPDATED: The Trealla Prolog adapter file to require version 2.2.5 or later.

Documentation
- IMPROVED: Handbook documentation of the initialization/1 directive and the logtalk_load_context/2 built-in predicate.
- UPDATED: List of required dependencies to build the Handbook final formats.

Library
- CHANGED: Use a portable os::is_absolute_file_name/1 predicate definition for all backends for consistency and improve the predicate documentation.
- REMOVED: Support for the type clause_or_partial_clause from the types and arbitrary libraries.
- ADDED: New [] and {} edge cases for atoms to the arbitrary library.
- FIXED: The os library delete_directory/1, directory_files/2, environment_variable/1, and file_permission/2 predicates for YAP.
- FIXED: The definition of the type clause in the types and arbitrary libraries to allow a naked variable body as per the ISO Prolog Core standard.

Tools
- CHANGED: The help tool to provide a dedicated entity/1 predicate for help on entities (objects, protocols, or categories).
- CHANGED: The lgtunit::quick_check/3 predicate now uses reified error/4 and failed/3 results that include as last argument the test seed.
- CHANGED: The lgtunit tool now reports an error on wrong QuickCheck options instead of silently using default option values.
- ADDED: A convenient global list of most of the developer tool requirements per operating-system.
- ADDED: Experimental support to the help tool to browse and search inline at the top-level interpreter the Texinfo versions of the Handbook and APIs documentation. Currently requires Ciao Prolog, ECLiPSe, LVM, SICStus Prolog, SWI-Prolog, Trealla Prolog, or XSB as the backend running on a POSIX system.
- ADDED: The lgtunit QuickCheck test dialects and predicates now also accept a pb/2 option to show an ASCII progress bar.
- IMPROVED: The lgtunit::quick_check/1-2 predicates now also print the test seed when a counter-example is found.
- IMPROVED: The lgtunit tool documentation of the test/2-3 test dialect valid outcomes.
- IMPROVED: The help tool feedback when the queried library or entity is not found.
- IMPROVED: The tutor tool explanation for the linter warning on findall/3 goals used to backtrack over all solutions of a goal without collecting them.
- UPDATED: The tutor tool for the new linter warning on non-terminals being called as predicates.
- FIXED: Missing message tokenization in the packs tool when printing a pack/registry installation directory.

Examples
- UPDATED: Reorganize all Net-Clause Language (NCL) examples in the new examples/ncl directory, including the figures individual example.
- UPDATED: The errors example to illustrate the new linter warning on non-terminals being called as predicates.
- FIXED: Typo in the sample queries of the document_converter example.
- FIXED: The adventure and bench examples linter warnings for non-terminals called as predicates.

Tests
- ADDED: Additional tests for the atom_concat/3, number_chars/2, number_codes/2, and setof/3 standard Prolog predicates.
- ADDED: Additional test for the optional '|' infix operator for a compliant definition.
- ADDED: Additional tests for double-quoted terms syntax (escaped double-quote).

Ports
- ADDED: Port of FCube: An Efficient Prover for Intuitionistic Propositional Logi
3.57.0 26 de juliol del 2022 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: When expanding the goal argument of an initialization/1, if/1, or elif/1 directive inside an entity, use any preceding, applicable uses/2 or use_module/2 directive. This is mainly useful when compiling Prolog modules as objects as the user can always write a (::)/2 or (:)/2 goal instead.
- CHANGED: Separate linter warnings for conditionals from other suspicious calls warnings. Controlled by the new conditionals flag, whose default value is warning.
- ADDED: Linter warnings for unknown messages sent to loaded objects (controlled by the unknown_predicates flag).
- ADDED: Compile otherwise -> Goal and otherwise *-> Goal constructs as Goal when otherwise/0 is a built-in predicate, printing a deprecated linter warning instead of warning about a missing else part.
- IMPROVED: Distinguish between duplicated and conflicting predicate references in multiple uses/2 or use_module/2 directives. The former are now reported as linter warnings (controlled by the duplicated_directives flag) instead of compilation errors.
- IMPROVED: More informative permission errors for predicate conflicts in uses/2 or use_module/2 directives.
- IMPROVED: Linter warnings for the (->)/2 and (*->)/2 control constructs.
- IMPROVED: Text of warnings for missing predicate directives.
- FIXED: Allow making a predicate (or non-terminal) listed in a uses/2 or a use_module/2 directive available as public, protected, or private predicate without requiring defining a protocol.
- FIXED: Internal compiler predicate that retrieves the source file context when the compilation mode is runtime.
- FIXED: Compiler optimization bug when calling the phrase/2-3 predicates with pre-compiled closure arguments. Thanks to Lindsey Spratt and Jacob Friedman for the bug report.

Prolog adapter and integration files
- UPDATED: The LVM adapter file to require version 4.1.0 or later.
- UPDATED: The SICStus Prolog adapter file list of proprietary predicate properties.
- FIXED: The CxProlog, SICStus Prolog, and XSB adapter files missing the meta-predicate property for the setup_call_cleanup/3 predicate when not built-in.
- FIXED: The SWI-Prolog adapter file to recognize the new utf16le and utf16be text encoding names.

Documentation
- ADDED: A Handbook section on documenting predicate exceptions.
- ADDED: Handbook sections on ports and contributions distributed with Logtalk.
- IMPROVED: Handbook documentation of the if/1, elif/1, mode/2, and uses/2 directives.
- IMPROVED: Handbook documentation of the logtalk::print_message/3 predicate.
- IMPROVED: Handbook section on Prolog integration and migration.
- IMPROVED: Handbook section on compiling Prolog modules as objects.
- IMPROVED: The APIs documentation now include links to library descriptions in the Handbook.
- UPDATED: The packs tool documentation section on pack signature checking.
- UPDATED: Notes on the Windows installer.

Library
- CHANGED: The cvs/3 library object to use a default separator based on the extension of the file to be parsed/written when possible.
- CHANGED: The csv library predicates read_file_by_line/2-3 to skip empty lines in CSV files.
- CHANGED: The statistics library to depend on the types library.
- ADDED: Library genint supporting application global and object local named generators for increasing positive integers.
- ADDED: Predicates min_max/3 and modes/2 to the types and statistics libraries.
- ADDED: Predicates fractile/3 and weighted_mean/3 to the statistics library.
- ADDED: Predicate integer::sequence/4 to the types library.
- ADDED: Support for LVM to the timeout library.
- ADDED: Additional tests for the timeout library.
- ADDED: Parametric objects write_to_file_hook/1-2 to the hook_objects library.
- ADDED: Shortcut tsv object to the csv library for parsing TSV files.
- IMPROVED: Tests for the csv library.
- UPDATED: The gensym library to support both application global and object local generators.
- FIXED: The arbitrary category shrink/3 predicate for number and 
3.56.0 9 de juny del 2022 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Support for calls to the database and reflection built-in methods where the predicate argument is only bound at runtime and is listed in a uses/2 or use_module/2 directive.
- ADDED: Support for using zero_or_error and zero_or_one_or_error number of proofs arguments in mode/2 directives.
- ADDED: Linter warnings for missing parenthesis around if-then-else and disjunction control constructs in the presence of cuts in the first argument.
- ADDED: Linter warnings for if-then-else and soft-cut control constructs where the test is a unification between a variable and a ground term.
- ADDED: Linter warning for naming of files that define a single entity as per coding guidelines. Controlled by the naming linter flag.
- IMPROVED: Generalized the linter check for findall/3 goals used in place of forall/2 goals.
- FIXED: Cases where name conflicts between built-in methods and predicates listed in public/1, protected/1, private/1, uses/2 and use_module/2 directives would not be reported.
- FIXED: Wrong arity in the compiler declaration of the forall/2 built-in method.
- FIXED: Bugs in the implementation of the asserta/2 and assertz/2 built-in methods where the second argument would not be bound in all cases.

Prolog adapter and integration files
- ADDED: Experimental Scryer Prolog adapter file support for compiling Prolog modules as objects.
- IMPROVED: The setup_call_cleanup/3 predicate definition for SICStus Prolog.

Documentation
- UPDATED: The lgtunit tool documentation sections on term-expansion of test objects, skipping tests, testing non-deterministic predicates, debugging tests, and backend timeout predicates.
- FIXED: The arbitrary library documentation on defining new arbitrary term generators.

Library
- ADDED: Predicate numberlist::median/2 to the types library.
- ADDED: Tests for custom generators to the arbitrary library category.
- IMPROVED: Performance of the arbitrary library category generation of Unicode code points.
- IMPROVED: API documentation of the meta_compiler, statistics, and term_io libraries.
- IMPROVED: The expecteds and optionals libraries tests to use explicit assertions.
- IMPROVED: The arbitrary library performance for several types.
- FIXED: The arbitrary library to not generate empty atoms for the callable type.
- FIXED: The arbitrary library category to not generate surrogate code points as edge cases for the unicode_full character set.
- FIXED: The arbitrary library category generation of Unicode code points included the non-valid code points 65535 and 1114111 as edge cases.
- FIXED: Typos in the mode/2 directives for the inorder/2 and postorder/2 predicates of the bintree library object.
- FIXED: Typos in the mode/2 directives for the os library file_size/2, file_modification_time/2, and file_permission/2 predicates.
- FIXED: Typo in the mode/2 directive for the remove_duplicates/2 predicate in the listp and varlistp library protocols.
- FIXED: The definition of the os::cpu_time/1 predicate for Tau Prolog.

Tools
- CHANGED: The lgtunit::quick_check/3 predicate to report a broken/2 reified result when the user-defined testing setup is broken.
- CHANGED: The lgtunit tool code coverage report format to enable reporting all test object parameterizations and files.
- CHANGED: The lgtunit tool messages in case of failed tests or steps to take into account the suppress_path_prefix flag when printing file paths.
- CHANGED: Renamed the code_metrics tool entity_score//2 non-terminal to format_entity_score//2.
- CHANGED: The default value for the diagrams tool omit_path_prefixes/1 option from an empty list to a list with the user home directory.
- ADDED: Linter warnings for missing documentation directives to the lgtdoc tool.
- ADDED: Support for printing clause usage stats to the ports_profiler tool.
- IMPROVED: API documentation of the debugger and lgtunit tools.
- IMPROVED: Minimized use of the term_io library by the diagrams tool.
- UPDATED: The lgtunit tool to explicit
3.55.0 28 d’abril del 2022 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Prolog adapter and integration files
- ADDED: Experimental Windows PowerShell integration scripts for selected backend Prolog systems. Collaborative work with Hans N. Beck.
- UPDATED: The Scryer Prolog adapter file to enable modules support.

Documentation
- ADDED: Handbook section on customizing term writing when using the debugger tool.
- IMPROVED: Handbook sections on objects, inheritance, defining grammar rules, and defining meta-predicates.
- IMPROVED: Handbook section on the {}/1 control construct.
- IMPROVED: Handbook section on Prolog nomenclature.
- IMPROVED: Documentation of the Windows installer.

Library
- ADDED: Library file packs_loader.lgt for loading all installed packs.
- UPDATED: The os::copy_file/2 library predicate for Tau Prolog to use its native definition when available.

Examples
- ADDED: PowerShell scripts for setting the CLASSPATH environment variable to the clustering and document_converter examples.
- UPDATED: The dcgs example to illustrate the definition and use of meta-non-terminals.

Tools
- CHANGED: The diagrams, lgtdoc, and wrapper tools to convert paths to internal path syntax when normalizing directories passed as options.
- ADDED: Experimental PowerShell versions of the update_html_docs.sh, update_svg_diagrams.sh, logtalk_allure_report.sh, logtalk_doclet.sh, and logtalk_tester.sh scripts.
- IMPROVED: Documentation of the issue_creator and packs tools.
- UPDATED: Documentation of the lgtdoc tool for the new PowerShell scripts.
- UPDATED: The lgtdoc tool lgt2pdf.sh script to support using the FOP 2.x processor.
- FIXED: The lgtdoc Bash shell scripts help text content failed to list the version option.
- FIXED: Broken lgtdoc tool logtalk_entity_to_txt.xsl file.
- FIXED: The lgtdoc tool lgt2txt.sh script to use the correct XSLT files.
- FIXED: The lgtdoc tool lgt2rst.sh script to generate correct index.rst files when indexing a directory of XML documenting files without any index XML file.
- FIXED: The logtalk_doclet.sh script usage help function omission of the path suppress option.
- FIXED: The logtalk_doclet.sh script spurious but harmless warnings when no doclets are found.
- FIXED: The logtalk_tester.sh script to also detect timeouts using signal

Tests
- ADDED: Basic tests for the new occurs_check flag that is becoming de facto standard.
- ADDED: Additional tests for the Prolog unbounded integer arithmetic support.
- ADDED: Additional tests for the Prolog standard (*)/2, (/)/2, (^)/2, (**)/2, and div/2 arithmetic functions.
- ADDED: Sanity tests for Prolog standard (+)/1-2, (-)/1-2, and (\)/1 arithmetic functions.
- ADDED: Integer overflow tests for the succ/2 and plus/3 predicates.
- ADDED: Additional tests for the Prolog standard retract/1, retractall/1, subsumes_term/2, and write_term/3 predicates.
- ADDED: Additional test for the de facto standard (*->)/2 control construct.
- IMPROVED: Tests for the Prolog standard (//)/2 arithmetic function.
- FIXED: Portability of the Prolog de facto standard (*->)/2 control construct tests.

Installers and installation scripts
- CHANGED: The embedding scripts default values for the paths and settings files to, respectively, paths.pl and settings-embedding-sample.lgt.
- CHANGED: The Windows installer and the logtalk_user_setup.ps1 script to no longer make available the deprecated .js JScript scripts and their corresponding .bat files in the system path (replaced by the PowerShell scripts).
- ADDED: Experimental Windows PowerShell logtalk_user_setup.ps1 script. Collaborative work with Hans N. Beck.
- ADDED: Experimental Windows PowerShell embedding scripts for selected backends. Collaborative work with Hans N. Beck.
- IMPROVED: Sample embedding script examples and documentation.
- UPDATED: Sample embedding scripts to allow specifying the temporary directory to be used for intermediate files. This option is required for some backends when running the scripts on windows.
- UPDATED: The update_html_docs.sh and update_svg_diagrams.sh scripts to optionally
3.54.0 22 de març del 2022 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Linter warning for catch/3 goals that catch all exceptions by using an anonymous variable in the second argument. Controlled by the new catchall_catch flag, whose default value is silent.
- ADDED: Linter warning for missing predicate scope directive when a info/2 directive exists.
- ADDED: Support to user-defined linter warning messages for suspicious calls.
- FIXED: Ensure that intermediate Prolog files are disregarded when reloading a file due to different compilation flags instead of timestamp differences when compiling with the clean flag turned off.

Prolog adapter and integration files
- UPDATED: The Ciao Prolog adapter file to require version 1.21.0 or later.
- UPDATED: The LVM adapter file to require version 3.3.0 or later.
- UPDATED: The Scryer Prolog adapter file to require version 0.9.0 or later.
- UPDATED: The Tau Prolog adapter file to require version 0.3.2 or later.
- UPDATED: The Trealla Prolog adapter file to require version 1.23.14 or later.
- UPDATED: The ECLiPSe adapter file to suppress intermediate Prolog file compilation log messages when compiling and loading Logtalk source files.

Documentation
- ADDED: Handbook section on the logic and control built-in public methods.
- ADDED: Handbook documentation for the new catchall_catch linter flag.
- IMPROVED: Documentation of the git library.
- IMPROVED: Documentation of the developer tools on applying them to plain Prolog code.
- IMPROVED: Handbook documentation on the term-expansion mechanism.
- UPDATED: The packs tool documentation on known issues.
- FIXED: Mention the soft-cut control construct in the Handbook section on messages broadcasting.
- FIXED: Portability notes in the documentation of the format library.
- FIXED: The settings-sample.lgt sample code for handling third-party libraries to avoid an endless loop due to the packs support. Note that this sample code is deprecated by the packs tool. Thanks to Paul Brown for the bug report.

Library
- CHANGED: The set(_Type_) object now takes into account the comparingp protocol. Thanks to Adrián Arroyo Calle for his contribution.
- CHANGED: The basic_types library loader to also load the comparingp protocol.
- CHANGED: The types library termp protocol to extend the comparingp protocol and the term and number objects to provide implementations of the comparison predicates.
- CHANGED: Implementation of the os::copy_file/2 library predicate for Trealla Prolog to use the new native built-in predicate introduced in version 1.23.14.
- ADDED: New grammars library providing DCGs for common parsing tasks.
- ADDED: New union_find library, a portable port of a Prolog library written by José Antonio Riaza Valverde.
- ADDED: Predicates group_sorted_by_key/2 and group_consecutive_by_key/2 to the pairs library object. Deprecated the group_by_key/2 predicate.
- ADDED: Linter checks for format/2-3 goals to the format library.
- ADDED: Parametric object object_wrapper_hook/2 to the hook_objects library.
- ADDED: Implementation for the os::copy_file/2 library predicate for Ciao Prolog, ECLiPSe, JIProlog, and Tau Prolog.
- ADDED: Types in_character, in_character(CharSet), in_character_code, in_character_code(CharSet), and in_byte to the arbitrary and types libraries.
- IMPROVED: Performance of the csv library when parsing large CSV files.
- IMPROVED: The type library object implementation of the atom(CharSet), atom(CharSet, Length), and non_empty_atom(CharSet) types to avoid using catch/3 goals.
- FIXED: Two tests for the nested_dictionaries library that used unification goals as assertions.
- FIXED: Implementation of the os::file_permission/2 predicate for Ciao Prolog to throw an exception on non-existing files.
- FIXED: Implementation of the os library predicates change_directory/2 and directory_files/2 for Scryer Prolog to throw an exception on non-existing directories.
- FIXED: Implementation of the os::change_directory/2 library predicate for YAP to throw an exception on a non-existin
3.53.0 20 de gener del 2022 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: The clause/3 method support to allow the first two arguments to be unbound if the third argument is bound as per the de facto standard.
- CHANGED: Shorter warning message when a possibly incompatible backend Prolog compiler version is detected.
- ADDED: Support for using object aliases in the message delegation control construct.
- IMPROVED: Simplified folding of left unifications when compiling clauses in optimized mode.

Prolog adapter and integration files
- ADDED: GNU Prolog adapter file support for inlining calls to foreign predicates.
- UPDATED: The GNU Prolog adapter file table of proprietary predicate properties.
- UPDATED: The LVM adapter file to require version 3.0.0 or later.
- UPDATED: The SWI-Prolog adapter file tables of proprietary predicate properties and candidate tautology and falsehood goals.
- UPDATED: The Trealla Prolog adapter file to require version 1.20.12 or later.
- UPDATED: The Trealla adapter file table of candidate tautology and falsehood goals.
- FIXED: Skipping of discontiguous predicate clauses warnings in the SICStus Prolog adapter file.
- FIXED: Override the meta-predicate template for the current_op/3 built-in predicate in the SWI-Prolog adapter file.

Documentation
- ADDED: Handbook section on calling Prolog foreign predicates.
- IMPROVED: Documentation of the options library.
- IMPROVED: Documentation of the logtalk_tester automation script.
- IMPROVED: Documentation of the phrase//1 built-in method.
- FIXED: Sidebar links between the Handbook and the APIs from pages other than the root pages.

Library
- ADDED: Predicates option/2-3 to the options library.
- ADDED: Support to the timeout library for the Trealla Prolog backend.
- IMPROVED: Tests driver files for the arbitrary and random libraries to avoid reloading of files and and to explicit clean up intermediate files for the code being tested.
- UPDATED: The dif and coroutining libraries for use with the LVM and Trealla Prolog backends.
- UPDATED: The os library for fixes in the upcoming SICStus Prolog 4.7.1 version.
- FIXED: The timeout library for the YAP backend.
- FIXED: Deleted unused predicate in the git library.
- FIXED: The intervals library f/2 shortcut for the finishes/2 predicate.

Tools
- CHANGED: The packs tool delete commands on Windows to use the force option.
- ADDED: New experimental tool, issue_creator, for automatically creating bug report issues for failed tests in GitHub or GitLab servers.
- ADDED: Command-line option to the logtalk_tester script to setup and use the new issue_creator tool.
- IMPROVED: The packs tool handling of deleted registries.
- UPDATED: Added git command to the requirements list for the packs tool.
- UPDATED: The diagrams, lgtdoc, and packs tools to use the options library option/2 predicate.
- UPDATED: The help tool to use the atomic_list_concat/2 predicate.
- FIXED: The lgtunit tool error message for a failed test step.

Ports
- CHANGED: The metagol port to skip three long running tests when the tests are run automated.
- UPDATED: The metagol port to run when using LVM as the backend compiler.
- FIXED: Workaround Metagol port find_duplicate example portability issue to avoid failures when run on backends that type-check the second argument of the msort/2 predicate.

Examples
- UPDATED: The attvars example tests to use explicit assertions.
- UPDATED: The figures example to run using the LVM and Trealla Prolog backends.

Tests
- CHANGED: Tests for Logtalk settings file to avoid issues with some backends where reloading files can be problematic.
- ADDED: Additional test for the standard throw/1 control construct when the exception term is a cyclic term.
- ADDED: Tests for invalid quoted atoms that contain layout characters.
- ADDED: Tests for invalid double-quoted terms that contain layout characters.
- ADDED: Tests for the Prolog lsb/1 and msb/1 built-in functions when available.
- ADDED: Additional tests for the standard term comparison, bagof/3, compare
3.52.0 7 de desembre del 2021 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- CHANGED: A partial list of terminals in the first argument of a grammar rule body to generate an instantiation error as per the standardization proposal.
- IMPROVED: Generalized the linter checks for is/2 and (=:=)/2 goals to cases where the expression arguments are not ground but their type can be inferred.
- FIXED: Processing of conditional compilation directives in included files.
- FIXED: Duplicated linter warnings for some DEC-10 Prolog I/O predicates.
- FIXED: The pack library paths to always end with a slash.
- FIXED: Explicit messages to the user pseudo-object when the predicate being called is a meta-predicate.
- FIXED: Avoid a warning when embedding Logtalk due to the definition of the forward/1 predicate in the user pseudo-object.

Prolog adapter and integration files
- UPDATED: The LVM adapter file to require version 2.0.0 or later.
- UPDATED: The Trealla Prolog adapter file to require version 1.16.6 or later.
- UPDATED: The Tau Prolog adapter file to require version 0.3.1 or later.
- FIXED: The Trealla Prolog integration script to support "-- Arguments" passed by other scripts (e.g. logtalk_tester script) that call it.
- FIXED: The GNU Prolog adapter file to allow the consult/1 built-in predicate to be called from within objects and categories without requiring overriding its meta-predicate template.
- FIXED: The YAP adapter file definition of the internal predicate '$lgt_load_prolog_file'/1.

Documentation
- ADDED: Section on creating and using virtual environments to the packs tool documentation.
- IMPROVED: Documentation of the logtalk built-in object trace_event/2 and debug_handler/2 predicates.
- IMPROVED: Man pages of the integration scripts.
- IMPROVED: Documentation on using the lgtunit tool QuickCheck support.
- UPDATED: The documentation of the logtalk_library_path/2 predicate for the logtalk_packs library alias.
- UPDATED: The settings-sample.lgt with sample code for defining the new logtalk_packs library alias.
- FIXED: The update_html_docs.sh and update_svg_diagrams.sh scripts to work with all supported backends.

Library
- FIXED: The type library object type-checking for the list, chars, and codes types to always throw instantiation errors whenever the term being checked is a partial list. Before, a type error would be throw if the term was a partial list but not a variable.
- ADDED: Library format that abstracts how the different backends make available the de facto standard format/2-3 predicates.
- ADDED: Library dif that abstracts how the different backends make available the dif/2 predicate when implemented.
- ADDED: Parametric object object_wrapper_hook/1 to the hook_objects library.
- ADDED: Partial support for XSB to the coroutining library.
- ADDED: Additional tests for the coroutining library.
- ADDED: Predicate copy_file/2 to the os library.
- IMPROVED: Performance of the arbitrary library tests.

Tools
- CHANGED: The diagrams tool dot graph language export now uses the generic Monospace font name and output SVG files using the dot command -Gfontnames=svg option to avoid issues with text overflowing boxes.
- CHANGED: The debugger tool loader file to also load the dump_trace object.
- CHANGED: The packs tool save/1 and restore/1-2 predicates to save and restore pinning status.
- CHANGED: The packs tool registries object predicate defined/3 to defined/4.
- CHANGED: The packs tool lint/1-2 predicates to fail when specification errors are detected.
- ADDED: Predicates text_output_contents/1-3 and binary_output_contents/1-2 to the lgtunit tool.
- ADDED: Support for defining, saving, and restoring a simple form of packs virtual environments.
- ADDED: Support for defining the packs tool directory used to store packs and registries using the logtalk_packs library alias (which can be defined e.g. in a settings file).
- ADDED: Predicates logtalk_packs/0-1, readme/1, delete/0, pin/0, unpin/0, uninstall/0, and reset/0 to the packs tool.
- IMPROVED: The packs tool to handl
3.50.0 31 d’agost del 2021 — Qualsevol processador EXE (Inno Setup)
Notes de la versió
Logtalk compiler and runtime
- ADDED: Support for the see_also key to the info/2 predicate directive.
- FIXED: The definition of the user built-in object to also create an object events queue when threaded engines are supported but not other multi-threading features.

Prolog adapter and integration files
- ADDED: Commented out code to the SICStus Prolog adapter file for disabling compilation messages for the intermediate Prolog files generated by the Logtalk compiler.
- UPDATED: The LVM adapter file for its proprietary disk_predicate and spy predicate properties and to expand its disk_predicate/3 directive and define_disk_predicate/3 predicate.
- UPDATED: The JIProlog adapter file to require 4.1.7.1 or later version.
- UPDATED: The Trealla Prolog adapter file to require 1.11.25 or later version.
- FIXED: The adapter files expansion code for directives to check that the directives argument is bound.

Documentation
- ADDED: An example to the lgtunit tool documentation on generating reports with links to the tests source files and line numbers.
- IMPROVED: Handbook section on documenting applications.
- IMPROVED: Handbook documentation of the use_module/1 and threaded/0 directives.
- IMPROVED: Handbook documentation of the multi-threaded, threaded engines, logtalk_library_path/2 and logtalk_compile/1-2 predicates.
- IMPROVED: Man page for the logtalk_tester shell script.
- IMPROVED: The lgtunit tool documentation on suppressing tested predicates output and on generating Allure reports.
- IMPROVED: The diagrams tool documentation and examples.
- UPDATED: The man page for the lgt2svg shell script.
- FIXED: Typo in the Handbook documentation of the phrase/2-3 built-in method exception conditions.

Library
- CHANGED: The library list object no longer uses the backend built-in length/2 predicate when available due to differences between backend implementations.
- ADDED: Additional tests for the arbitrary and types libraries to check that the main predicates are deterministic.
- FIXED: The meta_compiler library to include a copy of the meta library tests to avoid names clashes when generating Allure reports from test results.
- FIXED: Workaround JIProlog file_attributes/7 predicate succeeding for non-existing files in the implementation of the os library predicates directory_files/2, file_modification_time/2, and file_size/2.
- FIXED: Workaround JIProlog directory_files/2 predicate succeeding for non-existing directories in the implementation of the os::directory_files/2 library predicate.

Tools
- ADDED: Command-line option to the logtalk_tester script to pass a base URL for generating links to test files using the new tests_base_url user-defined flag that is created by the lgtunit tool test results export formats.
- ADDED: Support for the Saxon XSLT processor to the lgtdoc tool lgt2rst, lgt2html, lgt2md, and lgt2txt scripts.
- ADDED: A custom.css file to the lgtdoc tool for use with the lgt2rst scripts when called with the -s option to customize the Sphinx Read the Docs theme.
- IMPROVED: The lgt2rst scripts now supports a -m option to generate Sphinx HTML files without requiring a separate step.
- IMPROVED: The diagrams tool to also normalize URL prefixes in predicate options.
- IMPROVED: Performance of the diagrams tool tests by generating diagrams for a smaller library.
- UPDATED: The lgt2svg scripts provided by the diagrams tool to allow specifying the Graphviz command to use.
- UPDATED: The lgt2svg scripts provided by the diagrams tool to use the dot command -ofile option for improved Windows compatibility.
- UPDATED: The lgtunit tool xUnit.net v2 XML format report to generate links to test files when using the new logtalk_tester script command-line option to pass the base URL.
- UPDATED: Mention the GNU coreutils package requirement for the timeout option in the help for the logtalk_tester script.
- UPDATED: The lgtdoc tool to process the new see_also key for the info/2 predicate directive.
- FIXED: The lgtunit tool xUnit.net v

El més popular a IDE i editors de codi

Mostra-ho tot
  1. OpenCodeIDE i editors de codi · OpenCode
  2. RStudioIDE i editors de codi · Posit Software
  3. Node.js (LTS)IDE i editors de codi · Node.js Foundation
  4. Apache NetBeansIDE i editors de codi · Apache NetBeans
  5. VSCodiumIDE i editors de codi · VSCodium
  6. HaxeIDE i editors de codi · Haxe Foundation
  7. ThonnyIDE i editors de codi · Aivar Annamaa
  8. GDevelopIDE i editors de codi · GDevelop Team
  9. mkcertIDE i editors de codi · FiloSottile
  10. ProcessingIDE i editors de codi · Processing Foundation

Etiquetes

Comparteix