Logtalk 3.100.0 reelased

Paulo Moura <[email protected]> Thu, 14 May 2026 11:34:47 +0100
Newsgroups gmane.comp.gnu.prolog.general
Message-ID <[email protected]>
Hi,

Logtalk 3.100.0 is now available for downloading at:

https://logtalk.org/

This is a major library-focused release centered on a broad expansion of =
the standard library: machine learning protocols and algorithms, =
combinatorics and sequence-processing libraries, =
geospatial/orbital/standards/data-format support, interval reasoning, =
and hashes/HMAC. It also standardizes classifier naming and export APIs =
and includes smaller compiler/runtime, documentation, tooling, examples, =
and IDE improvements.

## New libraries by category/area

### Machine learning foundations and algorithms

* Category supporting libraries: "clustering_protocols", =
"pattern_mining_protocols", "frequent_pattern_mining_protocols", =
"sequential_pattern_mining_protocols", "regression_protocols", =
"dimension_reduction_protocols", "anomaly_detection_protocols", and =
"ranking_protocols"
* Support library: "linear_algebra" for numeric vectors and matrices
* Clustering: "agglomerative_clusterer", "dbscan_clusterer", =
"gaussian_mixture_clusterer", "hdbscan_clusterer", =
"hierarchical_clustering", "kcenters_clusterer", "kmeans_clusterer", =
"kmedians_clusterer", "kmedoids_clusterer", "kmodes_clusterer", =
"kprototypes_clusterer", and "optics_clusterer"
* Pattern mining: "apriori_pattern_miner", "eclat_pattern_miner", =
"fp_growth_pattern_miner", "prefix_span_pattern_miner", =
"clo_span_pattern_miner", "gsp_pattern_miner", and "spade_pattern_miner"
* Regression: "bayesian_ridge_regression", =
"gradient_boosting_regression", "gaussian_process_regression", =
"knn_regression", "linear_regression", "ridge_regression", =
"lasso_regression", "elastic_net_regression", "regression_tree", and =
"random_forest_regression"
* Dimension reduction: "ica_projection", "kernel_pca_projection", =
"lda_projection", "nmf_projection", "pca_projection", "pls_projection", =
"probabilistic_pca_projection", "random_projection", and =
"truncated_svd_projection"
* Anomaly detection: "cusum_anomaly_detector", "ewma_anomaly_detector", =
"knn_distance_anomaly_detector", "lof_anomaly_detector", =
"z_score_anomaly_detector", "modified_z_score_anomaly_detector", and =
"iqr_anomaly_detector"
* Ranking: "borda_ranker", "bradley_terry_ranker", "colley_ranker", =
"copeland_ranker", "elo_ranker", "glicko2_ranker", =
"glicko2_periodic_ranker", "hodge_rank", "kemeny_young_ranker", =
"massey_ranker", "plackett_luce_ranker", "plackett_luce_last_ranker", =
"rank_centrality", "regularized_bradley_terry_ranker", "schulze_ranker", =
"ranked_pairs", and "thurstone_mosteller_ranker"
* Classification: "logistic_regression_classifier", =
"linear_svm_classifier", "gradient_boosting_classifier", =
"kernel_svm_classifier", "lda_classifier", "qda_classifier", and =
"sgd_classifier"

### Combinatorics / sequences

* "arrangements", "cartesian_products", "derangements", "multisets", and =
"partitions"

### Geospatial

* "crs_projections", "geojson", "nmea", "tle_orbits", "geohash"

### Orbital

* "ccsds_frames", "ccsds_link_profiles", "ccsds_packet_services", =
"ccsds_packetization", "ccsds_tc_services", "ccsds_time_codes", and =
"ccsds_time_fields"

### Binary / data formats

* "ieee_754", "hmac", "message_pack", "json_pointer", and "wkt_wkb"

### Standards / identifiers / finance

* "iso_639", "iso_3166", "iso_4217", "iso_9362", and "iso_13616"

## Changed libraries by category/area

### Naming / API consistency / migration

* "ccsds" renamed to "ccsds_packets"
* "classifier_protocols" renamed to "classification_protocols"
* "ada_boost", "c45", "knn", "naive_bayes", "nearest_centroid", and =
"random_forest" renamed to "adaptive_boosting_classifier", =
"c45_classifier", "knn_classifier", "naive_bayes_classifier", =
"nearest_centroid_classifier", and "random_forest_classifier"
* Classifier export predicates were standardized as =
"export_to_clauses/4" and "export_to_file/4"

### Machine learning infrastructure

* "classification_protocols" gained "check_classifier/1" and =
"valid_classifier/1" plus protected training-dataset validation =
predicates
* Classifier libraries now support diagnostics and richer metadata =
exports and share more code through the new "classifier_common" category
* "isolation_forest_anomaly_detector" now depends on =
"anomaly_detection_protocols"; the functionality is preserved but =
related export and print predicates were renamed accordingly

### Collections / combinatorics / geospatial

* Repetition-allowed ordered selections moved from "permutations" to =
"arrangements"; the former "cartesian_product/3" predicate is replaced =
by "arrangements/3-4" and "arrangement/3-4"
* Derangements moved from "permutations" to "derangements"
* Repetition-allowed unordered selections moved from "combinations" to =
"multisets"; the former replacement predicates are replaced by =
"multisets/3-4", "multiset/3-4", and "count_multisets/3"
* "combinations" and "permutations" gained new counting, indexing, =
sampling, distinct-value, and lexicographic stepping predicates
* "geospatial" now uses "geographic(Latitude,Longitude)" terms instead =
of "(Latitude,Longitude)" pairs and adds new bounding-box predicates

### Math / hashing / analytics

* "hashes" gained keyed digests plus metadata for fixed-size =
cryptographic hash objects that are safe to use with HMAC
* "types" gained "numberlist::minkowski_distance/4" plus new "natural" =
predicates including "bell/2", "catalan/2", "fibonacci/2", "lucas/2", =
"multinomial/2", "falling_factorial/3", "rising_factorial/3", =
"partition_number/2", "stirling_first/3", "stirling_second/3", and =
"subfactorial/2"
* "intervals" gained Allen interval relations, relation algebra, and =
symbolic interval constraint network functionality with path-consistency =
propagation, explanations, and inspection/comparison predicates
* "numberlist::softmax/2-3" is now numerically stable

### Performance / portability / cleanup

* Tail-recursive rewrites were applied across multiple libraries =
including "amqp", "avro", "base58", "hashes", "json_ld", "json_schema", =
"graphs", "mime_types", "toml", "toon", "tzif", "url", "yaml", and =
several classifier libraries
* "json_schema" now reuses "json_pointer", and "avro", "cbor", and =
"protobuf" now reuse "ieee_754"
* "linda", "tzif", "ulid", "url", and "yaml" now compile all entities in =
optimal mode; dead code was removed from "linda", "meta_compiler", =
"sockets", "toml", and "validations"
* "numberlist::average/2", "median/2", and "softmax/2-3" were fixed to =
work around SWI-Prolog returning integers for float operations

## Non-library notable changes

* "logtalk_doclet" and "logtalk_tester": new "-z" option in the Bash and =
PowerShell scripts to make a sound on completion
* Compiler/runtime: added new "logtalk::halt/0-1" public predicates plus =
the "logtalk::halt_hook/2" user-defined hook predicate
* Documentation: added a Handbook libraries overview grouped by scope =
and fixed sequence non-terminals in the grammar section
* Examples: added the "eclipse_tests_dsl" example, sped up the =
"philosophers" example tests, and fixed the "neo4j" example classpath =
scripts and notes for recent Neo4j releases
* IDE support: added syntax highlighting support for the Fresh editor =
and fixed an incorrect "use_module/1" example in syntax highlighting =
test files

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