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