Logtalk 3.99.0 released
Paulo Moura <[email protected]> Thu, 9 Apr 2026 21:55:24 +0100
| Newsgroups | gmane.comp.gnu.prolog.general |
|---|---|
| Message-ID | <[email protected]> |
Hi, Logtalk 3.99.0 is now available for downloading at: https://logtalk.org/ This is a major tooling- and library-focused release centered on = stronger diagnostics/reporting/documenting/testing/packaging workflows, = date/time and time-zone support, configuration and interchange formats, = hashing and MIME utilities, and compiler/runtime correctness fixes for = multi-threaded and portability-sensitive workloads. ## New and updated tools by category/area ### Diagnostics / reporting / quality - "tool_diagnostics" for generating machine-readable diagnostics = consumable by other developer tools =20 - "sarif" for exporting diagnostics as SARIF reports =20 - "mutation_testing" for mutation-based testing =20 - "sbom" for generating software bills of materials for loaded = applications in CycloneDX and SPDX formats - "linter_reporter": support for generating machine-readable linter = diagnostics =20 - "dead_code_scanner", "lgtdoc", and "lgtunit": added support for = emitting diagnostics for downstream tooling =20 ### Metrics / diagrams / analysis - "code_metrics": added Lines, Maintainability Index, LCOM4, WMC, RFC, = and Cognitive Complexity metrics =20 - "code_metrics": updated coupling scores to include Distance from Main = Sequence =20 - "diagrams": added caller diagrams, coupling-metric overlays, cycle = highlighting, and export support for CX2 JSON and PlantUML =20 - "diagrams": "lgt2svg.sh" and "lgt2svg.ps1" can now export formats = other than SVG =20 ### Testing / packaging / automation - "lgtunit": added Cobertura XML and LCOV coverage export, Subunit and = CTRF test result export, and a new protected "file_url/2" predicate =20 - "logtalk_tester.sh" and "logtalk_tester.ps1": added concurrent test = execution with "-j" and improved minimal output timing =20 - "packs": added lock files support for deterministic installs and CI/CD = reproducibility plus a programmatic query API =20 - "tutor": updated to explain "dead_code_scanner" warnings and now = provides a reusable "tutor_explanations" category =20 ## New libraries by category/area ### Time / configuration / data interchange - "application" for declaring application metadata (notably for SBOMs) - "character_sets" for converting between character codes and bytes plus = charset metadata =20 - "hashes" for commonly used hashing algorithms (MD5, SHA1, SHA3, = SHA256, CRC32, and others) - "toml" for parsing and generating TOML v1.0.0 files =20 - "tzif" for parsing TZif files, persisting parsed snapshots, and = querying UTC offsets, DST, and abbreviations =20 - "dates_tz" for linking "dates" and "tzif" to support zone-aware = date-time conversions =20 - "mime_types" for mapping file extensions, file names, and URL-like = resources to MIME types and content encodings =20 ### Data structures / collections - "dictionaries": added a 2-3 tree implementation contributed by Michael = T. Richter =20 ## Changed libraries by category/area ### Date / time / time zones - "dates": added more calendar and instant utilities, including = day-of-year, relative ordering, instant comparison, formatting, and = calendar-aware year/month arithmetic =20 - "dates": "name_of_day/3" now uses ISO 8601 numbering for consistency =20= - "iso8601" contribution: added "time_string/3" and = "date_time_string/3", extended "interval_string/2", and added support = for comma as a fractional separator =20 ### Coordination / networking - "linda": reorganized around "linda_server" and "linda_client" = categories, while keeping a backward-compatible default object =20 - "linda": clients can now connect to multiple servers and define = aliases for server connections =20 - "linda": improved connection error reporting plus fixes for shutdown, = tuple handling, synchronization, and matching behavior =20 - "sockets": added "server_open/4" for starting a server on a specific = interface=20 ### Validation / web / identifiers / types - "json_schema": added support for schema references to local files =20 - "url": added "file_path_components/2", improved normalization, and = removed spurious choice-points in public predicates =20 - "uuid": added support for UUID versions 3 and 5 =20 - "type" and "arbitrary": added a "hexadecimal" character set =20 ## Non-library notable changes - Compiler/runtime: added a new "force" target to "logtalk_make/1", = added the "term_position(Term)" load-context key, fixed entity operator = leakage from included files, improved handling of multifile/dynamic = predicates on some backends, and protected key load/compile/runtime = update operations with mutexes on multi-threaded backends =20 - Documentation: added notes on limitations when using conditional = compilation directives in included files and fixed missing documentation = for the "info/1" entity property =20 - IDE support: added VSCode support for checking the portability of = loaded code and updated the Context7 MCP support file to the latest = format =20 For details and a complete list of changes, please consult the release = notes at: https://github.com/LogtalkDotOrg/logtalk3/blob/master/RELEASE_NOTES.md Happy logtalking! Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer