Mark Thom
914318b14e
Merge pull request #2799 from bakaq/callback_streams
...
Callback streams for use as library
2025-02-16 22:47:34 -08:00
bakaq
3fc5709c50
Add builder style configuration of user input, output and error
2025-02-16 04:04:48 -03:00
bakaq
28926486e0
More stream tests
2025-02-16 04:04:48 -03:00
bakaq
ad211d5e05
Disallow null streams in output
2025-02-16 04:04:48 -03:00
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