bakaq
5386c183d2
Make input and output stream configuration public
2025-02-16 04:04:48 -03:00
bakaq
0a2457943e
Configure streams separately
2025-02-16 04:04:48 -03:00
bakaq
baae1dca15
Refactor UserInput to use channels
2025-02-16 04:04:48 -03:00
bakaq
4e032c8a28
Test for callback streams
2025-02-16 04:04:48 -03:00
bakaq
7a6620b52d
Add input stream channel
2025-02-16 04:04:48 -03:00
bakaq
dd6533e76c
Add callback streams
2025-02-16 03:52:52 -03:00
Mark Thom
d262159399
Merge pull request #2791 from Skgland/patch-1
...
Expand the build/install section of the readme
2025-02-12 23:25:21 -08:00
Mark Thom
c77ea48fbd
Merge pull request #2804 from dnmfarrell/line-count-off-by-one
...
Line numbers start at 1
2025-02-12 23:23:44 -08:00
Mark Thom
35c1880937
Merge pull request #2818 from adri326/stream-cleanup
...
Fix various issues around close/1 and stream realiasing
2025-02-12 23:23:11 -08:00
Mark Thom
e5cca9d10a
Merge pull request #2812 from bakaq/attr_vars_arity_fix
...
Fix bug in finding arity for verify attributes
2025-02-12 23:19:34 -08:00
Emilie Burgun
2a218f34b9
Test corner cases of stream aliasing
2025-02-06 23:47:22 +01:00
Emilie Burgun
d8213e29c5
Fix set_output/1 and set_input/1 not updating the alias
...
Before this change, the following set of queries would behave incorrectly:
```
?- open("/tmp/out.log", write, S), set_output(S).
prints(""), write("/tmp/out.log", "S = stream(...)").
?- write(user_output, hello).
prints("hello"), unexpected.
prints(""), write("/tmp/out.log", "hello"). % Expected, but not found.
```
Now, `set_output/1` and `set_input/1` properly bind the `user_output` and
`user_input` aliases, making the queries above behave as expected.
2025-02-06 23:01:38 +01:00
Emilie Burgun
7f2ce57ba7
Fix stream realiasing possibly shadowing other streams.
2025-02-06 23:01:33 +01:00
Emilie Burgun
949d316773
Fix realiased streams causing close/1 to leave a dangling stream
2025-02-06 23:00:00 +01:00
Emilie Burgun
0cf46d3ec4
Encapsulate accesses to IndexStore::streams and ::stream_aliases
...
These two fields are able to hold `Stream` instances, which predicates like `close/1`
expect to be managed properly for their correctness. To ensure that this is the case,
I have removed direct accesses to those two fields, so that they can be properly managed
in one place.
2025-02-06 23:00:00 +01:00
bakaq
6d80c843e6
Scan entire predicate in InstallVerifyAttr
2025-02-05 11:40:05 -03:00
bakaq
b8ccebbf24
Fix bug in finding arity for verify attributes
2025-02-04 04:11:11 -03:00
Emilie Burgun
2fe7b55343
Fix close/1 messing up stream_aliases when user_input or user_output aren't set to Stdin and Stdout
2025-02-03 00:07:39 +01:00
David Farrell
f509d3d66f
Line numbers start at 1
...
Bumps the line number for the singleton warning. When the singleton
occurs on the same line at the term starts, the line number is correct:
foo(X).
However it stills mis-reports this line number as 1 instead of 5:
foo(1) :-
true,
true,
true,
Y.
See issue #1356 .
2025-02-02 08:16:05 -05:00
Mark Thom
c548b14f50
Merge pull request #2798 from bakaq/clippy_warnings
...
Fix clippy warnings
2025-01-28 23:24:17 -07:00
bakaq
590d0daa24
Fix clippy warnings
2025-01-28 16:49:41 -03:00
Bennet Bleßmann
7a5a5bb795
fix spelling and grammar errors found by mthom
...
https://github.com/mthom/scryer-prolog/pull/2791#discussion_r1930025598
2025-01-27 20:40:12 +01:00
Mark Thom
5a869e8b48
Merge pull request #2777 from adri326/fix-2772-rnd_i-clipping
...
Fix invalid casts in is/2
2025-01-26 23:14:57 -07:00
Mark Thom
28678e708b
Merge pull request #2738 from adri326/fix-2275-dcgs-call-module
...
Fix dcgs using call(M:Pred) when M was left unassigned
2025-01-26 23:14:30 -07:00
Mark Thom
f69c58c6b6
Merge pull request #2793 from Skgland/fix-ci
...
fix ci and update all used actions
2025-01-26 23:02:23 -07:00
Emilie Burgun
0cde8f9a43
Add integration tests for arithmetic operators
...
This extensively tests the behavior of is/2, both when compiled and in metacalls.
2025-01-27 00:10:56 +01:00
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
Bennet Bleßmann
a7598184bf
fix typo
2025-01-24 18:47:42 +01:00
Bennet Bleßmann
b1e66f686b
Update README.md
...
fix ambiguity regarding the install location for the cargo install method, also include the binary name
2025-01-23 20:04:43 +01:00
Bennet Bleßmann
b74c8139d1
fix ci and update all used actions
2025-01-23 19:53:59 +01:00
Bennet Bleßmann
75d499bf8a
update install link
2025-01-23 19:20:19 +01:00
Bennet Bleßmann
f1100271e2
Update README.md
2025-01-23 19:18:15 +01:00
Bennet Bleßmann
143430dd9c
Update README.md
2025-01-23 19:11:08 +01:00
Mark Thom
00e6e323f8
Merge pull request #2768 from robstolarz/RSTO-nix-macos-fix
...
fix: compile under Nix flake on macOS
2025-01-13 22:15:11 -07: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
Mark Thom
1ed4fe6555
Merge pull request #2756 from adri326/fix-load-context-unreachable
...
Fix load_context_module triggering unreachable!()
2025-01-11 21:27:32 -07:00
Rob Stolarz
894405149b
fix: compile under Nix flake on macOS
2025-01-11 13:00:46 -08:00
Emilie Burgun
eff094cc29
Add tests for PR #2756
2025-01-08 17:57:40 +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
2856cc4371
Merge pull request #2742 from triska/clpb
...
Revert "FIXED: CLP(B): Delay BDD restriction until after the instantiation"
2025-01-04 13:26:08 -07:00
Mark Thom
a683d3e363
Merge pull request #2728 from aarroyoc/lets-play-brisca
...
Add tutorial: Let's play Brisca
2025-01-04 13:24:35 -07:00
Mark Thom
2257503951
Merge pull request #2743 from triska/crypto
...
atom --> string
2025-01-04 13:23:59 -07:00
Mark Thom
531d482ba7
Merge pull request #2744 from triska/files
...
state when the predicates are true
2025-01-04 13:23:44 -07:00
Markus Triska
28c386422b
state when the predicates are true
...
"returns" is not used in this way in logic programming. "return"
suggests that something went away and is now coming back, but this is
never the case in these situations. The arguments may be variables or
also fully known at the time of the call in most cases.
2025-01-02 18:54:27 +01:00
Markus Triska
edaba024b2
atom --> string
2025-01-02 18:30:29 +01:00
Markus Triska
333d6740ae
Revert "FIXED: CLP(B): Delay BDD restriction until after the instantiation."
...
This reverts commit e185b626bd .
This change is now no longer needed, and the underlying issue is
apparently somewhere else entirely. See the description at:
https://github.com/mthom/scryer-prolog/issues/2732
Current master behaves differently from Scryer as it was at
099d9aaca6 (i.e., preceding
the commit that is now being reverted), even on the same file.
For an example, see:
https://github.com/triska/scryer-prolog/commit/dd41176b97d8369c3bb7de1c9932a9c3d10a0466
Scryer now works as expected, and compatibly with SICStus. We still
need to find out what fixed the root cause of this issue.
2025-01-02 18:02:38 +01:00