Commit Graph
961 Commits
Author SHA1 Message Date
Emilie Burgun 20735ea34c Fix integer overflow in >>/2 and <</2 2025-01-27 00:10:47 +01:00
Emilie Burgun f3a92c6551 Fix min/2 and max/2 returning the cast version of its arguments
It now behaves the same way as SWI-Prolog.
2025-01-27 00:06:06 +01:00
Emilie Burgun e2d1a2b6bc Fix X is gcd(1, 2 ^ 64) triggering a panic
The implementation for gcd/2 would cast the second argument to an isize.
2025-01-27 00:06:06 +01:00
Emilie Burgun d3361c16d8 Fix round() losing precision on bigints
The original issue can be reproduced with `X is round(2 ^ 54 + 1) - 2 ^ 54, X = 1.`
2025-01-27 00:05:30 +01:00
Emilie Burgun 9420c7e41e Fix rnd_i clipping floats that don't fit in Fixnum
Fixes #2772.

The current implementation of `rnd_i` incorrectly casts `f` (an `f64`)
into an `i64`, before casting it into an `Integer`.

This fixes that issue by using `Integer::try_from(f)` instead,
and failing if `f` is infinite or NaN.

A fixme is left for a future PR to properly handle the resulting errors
in floor/1 and friends (right now they can only be triggered through FFI).
2025-01-27 00:02:04 +01:00
Emilie Burgun b76bdd75e4 Fix #2725 by calling load_context/1 in the unspecified branch of strip_module/3
This fixes #2725, by making it so that `strip_module(Pred, M, P), call(M:P)`
doesn't throw an `instanciation_error` when `Pred` isn't in the form `module:predicate`.

Now, `strip_module(hello, M, P)` will call `load_context(M)`, which unifies `M`
with the topmost module (or `user`).

Two new test cases are added: issue2725.pl, which tests the minimal case id(X) --> X.
and the strip_module(P, M, _), call(M:P) scenario, and module_resolution,
which tests the behavior of strip_module in a few scenarios.
2025-01-12 14:08:28 +01:00
Emilie Burgun 6cedbc33c0 Fix load_context_module triggering unreachable code in unify_atom 2025-01-08 17:57:40 +01:00
Mark Thom afc7b74bbd qualify module quantification errors better (#2685) 2024-12-25 12:25:01 -08:00
Mark Thom d287095e61 style corrections 2024-12-25 12:25:01 -08:00
Mark Thom 555dff5bad leave variable modules uninstantiated (#2685) 2024-12-19 20:20:29 -08:00
Mark Thom 7e22c12a8d Merge pull request #2582 from bakaq/rework_library_interface
Rework library interface
2024-12-13 21:46:43 -07:00
bakaq 2e910de485 cargo fmt 2024-12-12 06:03:43 -03:00
bakaq 74e3d32ca9 Use Cow<'a,B> for toplevel configuration 2024-12-12 05:59:59 -03:00
bakaq 500a6cdaf1 FIXME in Drop for QueryState 2024-12-12 05:49:52 -03:00
bakaq 17293a5753 Leave residual goals for later 2024-12-12 05:47:01 -03:00
bakaq a75266c3ce Derive Default for StreamConfig 2024-12-12 05:47:01 -03:00
bakaq a92eac919f Rename lib_machine_tests.rs to tests.rs 2024-12-12 05:46:54 -03:00
bakaq 9265d66f58 Handle errors in QueryState 2024-12-08 20:18:06 -03:00
bakaq 3d3baeed82 Migrate benches 2024-12-08 20:18:06 -03:00
bakaq e21c772181 Migrate tests to new API 2024-12-08 20:18:06 -03:00
bakaq 2f82c78bc0 Separate lib_machine tests into separate file 2024-12-08 20:18:06 -03:00
bakaq ec6286ffab Shrink MVP API surface 2024-12-08 20:18:06 -03:00
bakaq bb5adba4ef Rename PrologTerm to Term 2024-12-08 20:18:06 -03:00
bakaq 33d8abfed8 Remove parsed_results.rs 2024-12-08 20:18:06 -03:00
bakaq d336cbc86a MachineBuilder 2024-12-08 20:18:06 -03:00
bakaq 79fbd9e90f Fix Machine links 2024-12-08 20:18:06 -03:00
bakaq cab61738ad #[deny(missing_docs)] 2024-12-08 20:18:06 -03:00
bakaq e6cc408ff2 Document test methods 2024-12-08 20:18:06 -03:00
bakaq dc8348b843 Add interfaces for QueryState methods 2024-12-08 20:18:06 -03:00
bakaq cb040dafc1 Docs for Machine and QueryState 2024-12-08 20:18:06 -03:00
bakaq 1375f448a0 LeafAnswer docs and success checking methods 2024-12-08 20:18:06 -03:00
bakaq 0433706db6 More PrologTerm documentation 2024-12-08 20:18:06 -03:00
bakaq e74fd11b0d Conjunctions, disjunction, and LeafAnswer to PrologTerm 2024-12-08 20:18:06 -03:00
bakaq 4480e7c066 Associated functions for creating PrologTerm 2024-12-08 20:18:06 -03:00
bakaq 71dec62ce2 Basic docs and non_exhaustive for PrologTerm 2024-12-08 20:18:05 -03:00
bakaq 658e39aae6 Machine and stream config rework 2024-12-08 20:18:05 -03:00
bakaq 29fc55cb28 Rename LeafAnswer 2024-12-08 20:18:05 -03:00
bakaq 8e7dc9dba8 Rename PrologTerm 2024-12-08 20:18:05 -03:00
notoria 8cde3f8ce3 Add '$random_integer'/3 2024-12-08 20:00:00 +01:00
Javier Sagredo 8e5ddebddb Ignore KeyEventKind::Release events when reading a char 2024-12-04 00:05:10 +01:00
Mark Thom ff03432624 admit YF in current_op/3 (#2639) 2024-11-14 22:41:43 -07:00
Mark Thom 9785a04b3a Merge pull request #2596 from Skgland/issue-2588
fix issue #2588
2024-10-05 22:12:45 -06:00
Bennet Bleßmann e9f03c89a6 fix issue #2588 2024-10-04 19:25:34 +02:00
bakaq 3bc1885606 Fix not compiling without hostname feature 2024-09-29 16:51:11 -03:00
bakaq 16734ec7e4 Fix Clippy 2024-09-06 21:34:49 -03:00
bakaq d32f3ee2f3 Fix warnings 2024-09-06 18:42:31 -03:00
bakaq ada9ba98cc Make macros private 2024-09-06 17:17:04 -03:00
bakaq 806e980cca Be conservative with visibility 2024-09-03 01:02:01 -03:00
Mark Thom 5c39e2a5a1 Merge pull request #2475 from bakaq/value_heap_walk
Value heap walk in lib_machine
2024-08-19 16:33:13 -06:00
bakaq e24396d78a Fix order of variables in bindings 2024-08-19 14:38:53 -03:00