Logtalk 3.102.0 released

1 view
Skip to first unread message

Paulo Moura

unread,
Sep 13, 2026, 7:44:40 PM (13 days ago) Sep 13
to SICStus Users
Hi,

Logtalk 3.102.0 is now available for downloading at:

https://logtalk.org/

This is a major library-focused release featuring new natural-language processing, machine learning, numerical analysis, optimization, cryptography, networking, data interchange, identifier, and data structure libraries. It also significantly extends the MCP server and cryptography libraries, updates Unicode support, adds compiler and tool linter checks, and includes important HTTP reliability and portability fixes.

## New libraries by category/area

### Text processing / natural language processing

• `lemmatization` for extensible word lemmatization
• `n_grams` for generating and counting token and character n-grams
• `stop_words` for stop-word enumeration, membership testing, and filtering, with lists for six languages
• `tokenization` for extensible tokenization and sentence splitting
• `text_normalization` for Unicode-aware text cleaning and normalization
• `text_vectorization` for binary, count, term-frequency, and TF-IDF sparse vectorization
• `language_detection` for extensible text language detection

### Networking / protocols / data interchange

• `http_oauth` for OAuth 2.0 Bearer request protection, protected-resource metadata, token introspection, and JWT verification
• `http_sse` for HTTP Server-Sent Events
• `uri_template` implementing RFC 6570 URI Templates
• `mqtt` implementing an MQTT 5.0 client
• `smtp` implementing a portable SMTP/ESMTP client
• `bson` implementing the BSON 1.1 binary interchange format
• `gpx` implementing the GPX 1.1 GPS data interchange format
• `byte_order` for signed and unsigned fixed-size integer conversions in big- and little-endian byte order

### Cryptography / security

• `paseto` implementing Platform-Agnostic Security Tokens version 4
• `block_ciphers` providing portable AES-128, AES-192, and AES-256 implementations
• `cmac` implementing the NIST SP 800-38B Cipher-based Message Authentication Code

### Mathematics / numerical methods / optimization

• `integer_partitions` for generating and querying integer partitions
• `univariate_distributions` for normal distribution sampling, density, log-density, cumulative distribution, and quantiles
• `multivariate_distributions` for multivariate normal and Student's t distributions, logistic-normal sampling, and Mahalanobis distances
• `linear_programming` for immutable construction and solving of small linear programs
• `numerical_analysis` for root finding, quadrature, interpolation, cubic splines, and non-stiff initial-value ODE solvers
• `local_optimization` for common box-constrained solvers
• `constrained_optimization` for common equality- and inequality-constrained solvers
• `ant_colony`, `genetic_algorithm`, `differential_evolution`, `particle_swarm_optimization`, and `tabu_search` metaheuristic optimization libraries

### Machine learning / artificial intelligence

• `association_rule_miner` for deriving confidence- and lift-scored rules from frequent itemsets and sequential patterns
• `mlp_classifier` implementing a multi-layer perceptron classifier for continuous, categorical, and mixed tabular datasets
• `one_class_svm_anomaly_detector` implementing one-class SVM anomaly detection
• `spectral_clusterer` implementing normalized spectral clustering
• `svr_regression` implementing support vector regression with linear, polynomial, and radial basis function kernels
• `tsne_projection` and `umap_projection` for nonlinear dimension reduction
• `trueskill_ranker` implementing TrueSkill ranking for ordered multiplayer matches
• `ripple_down_rules` implementing SCRDR, MCRDR, and GRDR rule systems

### Utilities / identifiers / data structures

• `crontab` for parsing and generating user and system crontab files
• `lru_caches` implementing immutable least-recently-used caches
• `sqids` for short, obfuscated, URL-safe encodings of non-negative integer lists
• `typeid` for type-safe, K-sortable, globally unique identifiers
• `tries` implementing prefix trees associating complete strings with values

## Changed libraries by category/area

### Cryptography / hashing

• `crypto`: added Ed25519 signatures, X25519 key agreement and authenticated ephemeral channels, XChaCha20-Poly1305 authenticated encryption, and bcrypt b2 support
• `crypto`: fixed PBKDF2 conformance with RFC 8018
• `hashes`: added generalized BLAKE2 functions accepting key and digest-size parameters
• `hmac`: documented BLAKE2 support and added HMAC-BLAKE2b and HMAC-BLAKE2s tests
• `http_authenticate`: updated for bcrypt b2 support

### MCP

• `mcp_server`: added support for the 2025-11-25 and 2026-07-28 specifications
• `mcp_server`: added completions, resource templates, OAuth, MCP Apps, optional output schemas, and schema overrides
• `mcp_server`: improved reporting of tool-call failures and separated data-layer specifications from transports
• `mcp_server`: removed support for the deprecated 2025-03-26 specification

### HTTP / networking

• `http_process_transport`: added full `socat` support and configurable connection helper executables
• `http_process_transport` and `sockets`: fixed connection teardown ordering to preserve buffered output
• HTTP transports: fixed per-connection error handling so listeners continue serving subsequent connections
• HTTP server and file-serving libraries: fixed partial-request disconnects and symbolic-link document roots
• `http_process_transport`: fixed an `ncat` shutdown race and OpenSSL command handling; OpenSSL 3.0.0 or later is now required
• `http_router`: now implements `http_handler_protocol` as a marker protocol
• `http_parameters` and `http_router`: now use standard domain errors for parameter validation

### Mathematics / ranking / text

• `linear_algebra`: defined consistent empty-vector and zero-width matrix semantics
• `ranking_protocols`: added ordered multiplayer datasets with ranked teams and weighted player participation
• `thurstone_mosteller_ranker` and `trueskill_ranker`: now reuse shared distribution and normal-quantile functionality
• `string_distance`: added Caverphone and NYSIIS encodings and improved Metaphone and Double Metaphone
• `list`: improved the performance of `nth0/3` and `nth1/3`
• `random`: fixed several API declarations, formulas, validations, and edge cases

### Unicode / types / portability

• `unicode_data`: updated to Unicode 17.0.0 with reproducible generation, shared ranges, optional compatibility views, and preserved Unihan variant solutions
• `types` and `arbitrary`: added the `open_probability` type
• `amqp`, `character_sets`, `hashes`, `ieee_754`, and `protobuf`: updated to use the new `byte_order` library
• `sockets` and `jwt`: improved portability across supported backends

## New and updated tools

### Diagnostics / linting

• `ports_profiler`: added diagnostics for unexpected non-determinism in predicates declared with deterministic modes
• `lgtunit`: added a linter warning for invalid `^^assertion/1-2` goals
• `lgtunit`: now expands test assertions to avoid false dead-code warnings
• `dead_code_scanner`: now detects unused built-in predicates referenced through `uses/2` and `use_module/2` directives
• `tutor`: updated with explanations for the new compiler linter warnings

### HTTP server automation

• Added `logtalk_http_server.sh` and `logtalk_http_server.ps1` for starting servers using the Logtalk HTTP libraries with ECLiPSe, SICStus Prolog, SWI-Prolog, Trealla Prolog, and XVM

## Compiler, runtime, and backend updates

• Added `logtalk_linter_hook/7` support for linting super calls and messages to self
• Added warnings for cuts followed by goals that throw errors and for `once/1` goals used as an if-then-else or soft-cut condition
• Fixed the `arithmetic_expressions` flag
• Fixed the ordering of `initialization/1` directive goals found in included files
• Fixed false missing-predicate reports from `logtalk_make(check)` for complementing categories
• Updated Trealla Prolog tabling and linter support; Trealla Prolog 3.9.64 or later is now required
• Updated SWI-Prolog proprietary predicate metadata used by the linter

## Documentation, examples, and other updates

• Added a Handbook section on third-party library dependencies and improved manual installation instructions
• Added examples for HTTP Server-Sent Events, MCP servers, and MCP Apps
• Updated the `birds_mcp` example for the 2026-07-28 MCP specification
• Improved multi-threaded examples to avoid possible random-number generation races
• Added negative-duration support to the `iso8601` contribution
• Updated the portable Docker image and VSCode code-navigation support

Thanks to Andrew Davison for the Trealla Prolog patch, performance and networking reports, and multi-threading analysis, and to Lindsey Spratt for the `rest` library performance fix.

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