Logtalk 3.99.0 released

1 view
Skip to first unread message

Paulo Moura

unread,
Apr 9, 2026, 4:56:27 PM (9 days ago) Apr 9
to SICStus Users
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
- "sarif" for exporting diagnostics as SARIF reports
- "mutation_testing" for mutation-based testing
- "sbom" for generating software bills of materials for loaded applications in CycloneDX and SPDX formats
- "linter_reporter": support for generating machine-readable linter diagnostics
- "dead_code_scanner", "lgtdoc", and "lgtunit": added support for emitting diagnostics for downstream tooling

### Metrics / diagrams / analysis

- "code_metrics": added Lines, Maintainability Index, LCOM4, WMC, RFC, and Cognitive Complexity metrics
- "code_metrics": updated coupling scores to include Distance from Main Sequence
- "diagrams": added caller diagrams, coupling-metric overlays, cycle highlighting, and export support for CX2 JSON and PlantUML
- "diagrams": "lgt2svg.sh" and "lgt2svg.ps1" can now export formats other than SVG

### 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
- "logtalk_tester.sh" and "logtalk_tester.ps1": added concurrent test execution with "-j" and improved minimal output timing
- "packs": added lock files support for deterministic installs and CI/CD reproducibility plus a programmatic query API
- "tutor": updated to explain "dead_code_scanner" warnings and now provides a reusable "tutor_explanations" category

## 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
- "hashes" for commonly used hashing algorithms (MD5, SHA1, SHA3, SHA256, CRC32, and others)
- "toml" for parsing and generating TOML v1.0.0 files
- "tzif" for parsing TZif files, persisting parsed snapshots, and querying UTC offsets, DST, and abbreviations
- "dates_tz" for linking "dates" and "tzif" to support zone-aware date-time conversions
- "mime_types" for mapping file extensions, file names, and URL-like resources to MIME types and content encodings

### Data structures / collections

- "dictionaries": added a 2-3 tree implementation contributed by Michael T. Richter

## 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
- "dates": "name_of_day/3" now uses ISO 8601 numbering for consistency
- "iso8601" contribution: added "time_string/3" and "date_time_string/3", extended "interval_string/2", and added support for comma as a fractional separator

### Coordination / networking

- "linda": reorganized around "linda_server" and "linda_client" categories, while keeping a backward-compatible default object
- "linda": clients can now connect to multiple servers and define aliases for server connections
- "linda": improved connection error reporting plus fixes for shutdown, tuple handling, synchronization, and matching behavior
- "sockets": added "server_open/4" for starting a server on a specific interface

### Validation / web / identifiers / types

- "json_schema": added support for schema references to local files
- "url": added "file_path_components/2", improved normalization, and removed spurious choice-points in public predicates
- "uuid": added support for UUID versions 3 and 5
- "type" and "arbitrary": added a "hexadecimal" character set

## 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
- Documentation: added notes on limitations when using conditional compilation directives in included files and fixed missing documentation for the "info/1" entity property
- IDE support: added VSCode support for checking the portability of loaded code and updated the Context7 MCP support file to the latest format

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



Reply all
Reply to author
Forward
0 new messages