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 library.
- UPDATED: The cuid, ids, ksuid, nanoid, ulid, uuid, and wkt_wkb libraries to use the new crypto library.
- FIXED: Standard compliance bugs in the base64 library: swapped alphabet entries in the base64 and base64url objects and missing Base64URL output padding. Added a base64url_no_padding object for specifications that require unpadded Base64URL encoding.
- FIXED: The hashes library implementation of the MurmurHash3 x86 32-bit hash function when run on backends with bounded integers.
- FIXED: Compliance issues of the json library.
- FIXED: Compliance issues of the json_ld library.
- FIXED: Compliance issues of the json_lines library.
- FIXED: Case where the json_pointer library evaluate/1 predicate would throw an error when failure was expected.
- FIXED: The json_rpc library test failures for content-length framed messages (as used by LSP style protocols) on Windows when using the SICStus Prolog backend by being less strict when writing messages.
- FIXED: A linda library timing issues at server shutdown. Thanks to Andrew Davison for helping debugging these issues.
- FIXED: The ulid library to encode 80 bits of randomness and to reject timestamps outside the 48-bit range required by the ULID specification.
- FIXED: Standard compliance issues in the uuid library: version 1 UUIDs now preserve available millisecond precision in the timestamp field and random node identifiers now set the multicast bit as required by RFC 4122.
- FIXED: The timeout library tests for Trealla Prolog.
Tools
- CHANGED: The logtalk_tester.sh and logtalk_tester.ps1 testing automation scripts -o minimal option to also write the Logtalk, backend, and operating-system version data.
- ADDED: Support to the logtalk_tester.sh and logtalk_tester.ps1 testing automation scripts for prefixing the -e option with ^ to include only matching test sets instead of excluding them.
- ADDED: Support to the logtalk_tester.sh and logtalk_tester.ps1 testing automation scripts for the -o quiet option to suppress all user output (exit codes are not affected). Usually combined with the -f option.
- ADDED: New mutation_testing tool tester_options/1 option, allowing specifying additional options for the calls to the logtalk_tester script.
- IMPROVED: The mutation_testing tool option print_mutation/1 no longer depends on the verbose/1 option.
- IMPROVED: Tests for the sarif tool to be less verbose.
- IMPROVED: Performance of the sbom tool.
- UPDATED: The lgtdoc tool linter to report any predicate/non-terminal info/2 directive missing an exceptions key when the corresponding mode/2 directives declare that the predicate/non-terminal may throw an error.
- FIXED: The logtalk_tester.ps1 PowerShell script to correctly handle the -l option when selecting test sets.
- FIXED: Spurious choice-points in some of the packs tool public predicates.
- FIXED: More strict validation of the mutation_testing tool options.
- FIXED: Compliance issues in the SARIF reports generated by the sarif tool.
- FIXED: The sarif tool to avoid discarding some of the dead_code_scanner tool diagnostics metadata.
- FIXED: The linter_reporter tool support for SARIF reports to include git metadata, version control, and invocation options in the diagnostic tool description.
- FIXED: A logtalk_tester.ps1 testing automation script bug when using the -j option where updating the currently running test set or printing the final results would sometimes require the user to press enter.
Examples
- ADDED: New http_cookies_counter example illustrating the use of the new HTTP libraries.
- ADDED: New http_htmx_panel example illustrating the use of the new HTTP and HTMX libraries.
- ADDED: New http_multipart_form example illustrating the use of the new HTTP libraries to handle HTML forms.
- ADDED: New http_open_api example illustrating the use of the new HTTP and OpenAPI libraries.
- ADDED: New http_products_store example illustrating the use of the new http_parameters library.
- ADDED: New http_rest_greetings and http_rest_open_meteo examples illustrating the use of the new HTTP and REST libraries.
- ADDED: New http_routes example illustrating the use of the new http_router library.
- ADDED: New http_static_site example illustrating the use of the new HTTP libraries.
- ADDED: New http_static_site_basic example illustrating the use of the new HTTP Basic authentication library together with the static-file and directory-listing helpers.
- ADDED: New http_static_site_digest example illustrating the use of the new HTTP Digest authentication library together with the static-file and directory-listing helpers.
- ADDED: New http_websocket_echo example illustrating the use of the new HTTP and WebSocket libraries.
- ADDED: New ollama_client example illustrating how to use the new open_ai library to create an OpenAI client.
- ADDED: New yoda_server example illustrating how to use the new open_ai library to create an OpenAI-compatible server.
- FIXED: The checkpoint multi-threading example test flakiness due to potential out-or-order output. Thanks to Andrew Davison for the bug report.
Tests
- ADDED: Additional test for the uses/2 directive.
- FIXED: Tests for the logtalk_library_path/2 predicate on Windows.
Installers and installation scripts
- UPDATED: The Windows installation script to also detect ECLiPSe 8.0 versions.