Mark Thom
e01a4cdc85
Merge pull request #2717 from jasagredo/js/small-doc
...
Ensure max_assoc/3 is shown as documented
2024-12-20 18:41:51 -07:00
Mark Thom
555dff5bad
leave variable modules uninstantiated ( #2685 )
2024-12-19 20:20:29 -08:00
Javier Sagredo
75ac3fffae
Ensure max_assoc/3 is shown as documented
2024-12-18 01:02:45 +01:00
Markus Triska
8dc80b815f
use round brackets for goals involving operators
...
Examples:
?- portray_clause(((+) :- a=b,(-))).
(+) :-
a=b,
(-).
true.
?- portray_clause((a :- (b :- c))).
a :-
(b:-c).
true.
This addresses #2715 .
Currently, more round brackets than needed are emitted. Ideally, a
better approach to solve the issue here and also in toplevel.pl is
found in the future.
2024-12-17 22:51:47 +01:00
Markus Triska
6175e334a5
prevent accidental amalgamation of graphic token chars in output
...
This addresses #2713 . Many thanks to @notoria for reporting this
excellent case!
Example:
?- portray_clause(A = @).
A= @ .
true.
At other positions the now inserted space is unnecessary, as in:
?- portray_clause((head:- @,b)).
head :-
@ ,
b.
true.
The toplevel has a similar issue:
?- C = # ; false.
C = # |<-- cursor is here; redundant space after #
There may be a way to solve this issue for all cases like this.
2024-12-17 20:06:52 +01:00
Mark Thom
a9a77779e3
Merge pull request #2689 from triska/weighted_maybe
...
introduce and use weighted_maybe/2
2024-12-13 21:38:47 -07:00
Mark Thom
5f035ec6ad
Merge pull request #2690 from notoria/next
...
Add '$random_integer'/3
2024-12-13 21:38:32 -07:00
Mark Thom
9eef380764
Merge pull request #2696 from jasonhemann/patch-3
...
s/performance characters/performance characteristics/
2024-12-13 21:37:56 -07:00
Mark Thom
ce6a0a1541
Merge pull request #2698 from jasonhemann/patch-5
...
Documentation for read/2
2024-12-13 20:02:50 -07:00
Mark Thom
b919a39b96
Merge pull request #2703 from jasonhemann/patch-6
...
s/avaibale/available/
2024-12-13 20:02:21 -07:00
Jason Hemann
a15b2789e2
s/avaibale/available/
...
Quick typo fix to docs.
2024-12-13 13:41:05 -05:00
Jason Hemann
2ff50f06bc
Update builtins.pl
...
s/compund/compound/
2024-12-11 08:05:03 -05:00
Jason Hemann
e219e1c483
Update builtins.pl
...
Simplifying docstring.
2024-12-11 05:46:28 -05:00
Jason Hemann
eef9f74a68
Documentation for read/2
...
Mirrored the wording in the docstrings for `read/1` and `read_term/3`.
2024-12-10 21:18:09 -05:00
Jason Hemann
eae1f53846
"bound to an atom"
...
Quick typo.
2024-12-10 21:07:48 -05:00
Jason Hemann
48a42ae140
s/performance characters/performance characteristics/
...
Small typo fix in docs.
2024-12-10 20:56:44 -05:00
Markus Triska
abe1f37167
introduce and use weighted_maybe/2
...
Many thanks to @hurufu for the very nice definition!
This is until library(random) provides this functionality,
and a good name is found for it. See #2670 .
2024-12-08 21:33:03 +01:00
notoria
8cde3f8ce3
Add '$random_integer'/3
2024-12-08 20:00:00 +01:00
Jason Hemann
d7bf7445f1
s/red/read/ typo in documentation.
...
Small quick fix.
2024-12-05 01:19:51 -05:00
Mark Thom
0bc3d67298
Merge pull request #2534 from hurufu/document_non_counted_backtracking
...
Document non counted backtracking
2024-09-16 17:41:53 -06:00
bakaq
238f1bd639
Convert library(error) docs to Doclog format
2024-09-16 16:47:00 -03:00
Aleksy Grabowski
4b0f9558b3
Change wording for non_counted_backtracking comment
2024-09-07 08:24:46 +02:00
Aleksy Grabowski
c922ed8b0a
Explain non_counted_backtracking a little bit more
2024-09-07 08:14:37 +02:00
Markus Triska
0005dcaacb
ADDED: Preliminary support for statistics/2.
...
This is needed for benchmarking library(reif) and its newly provided
goal expansion (#2433 ).
It partly addresses #321 .
2024-07-06 11:33:02 +02:00
Mark Thom
f3eea6302d
delay instantiation errors on lists in phrase/3 until runtime ( #1665 , #2396 )
2024-04-29 15:28:17 -06:00
Markus Triska
795a7c690d
ADDED: meta_predicate/1 declarations for (',')//2 and (;)//2
...
This addresses #2366 .
2024-03-21 22:14:40 +01:00
Markus Triska
767d90d5e7
ENHANCED: further partial evaluation for the common control sequence ~d
2024-03-20 21:10:14 +01:00
Markus Triska
bc04790fd5
extend partial evaluation to computing lengths when statically possible
2024-03-20 21:10:14 +01:00
Markus Triska
58f7c94e74
goal expansion for format/2 and format/3
...
In this way, we benefit from partial evaluation of format strings.
2024-03-20 21:10:14 +01:00
Markus Triska
8af29c200d
strengthen type check
2024-03-20 21:10:10 +01:00
Markus Triska
1db6bff890
ENHANCED: Partial evaluation of format_//2.
...
This moves analysis of the format string to compilation time when
possible, so that parsing it at run time is no longer necessary.
2024-03-20 20:59:43 +01:00
Markus Triska
ee60c463c8
indicate deprecated functionality
2024-03-16 21:23:12 +01:00
Markus Triska
e1a6b5eb03
DOC: Un-document the ability to use bytes with encoding(octet).
...
This usage is now considered deprecated. Use strings instead for
greater efficiency and type consistency in your applications.
This functionality is a candidate for removal in a future commit.
2024-03-16 20:37:06 +01:00
Markus Triska
4ebdd97ad3
DOC: Improve descriptions to make clear what encoding(octet) means.
...
In particular, octet does *not* mean that the input is a list of
Prolog bytes in the sense of "integers between 0..255", but that the
character codes are used directly as byte values.
2024-03-16 20:36:22 +01:00
Markus Triska
6b8a679a51
explain potential side-channel attacks due to compact string representation
...
This legitimate concern was already raised by @infogulch in:
https://github.com/mthom/scryer-prolog/issues/1309#issuecomment-1080028854
Thank you a lot!
2024-03-01 22:03:57 +01:00
Markus Triska
ec251b254c
ENHANCED: Safe HMAC verification, using constant time string comparison.
...
Without this provision, the expected HMAC can be gathered from timing
differences depending on the position where the strings first diverge,
and hence an attacker can forge an authenticated message by supplying
the gathered HMAC.
Test case, using exp(E) to succeed exactly 2^E times:
exp(E) :-
N is 2^E,
between(1, N, _).
yielding:
?- Options = [algorithm(sha512),hmac([1,2,3])],
Ds = "test",
crypto_data_hash(Ds, H, Options),
phrase((seq(As),seq(Bs)), H),
same_length(Bs, Cs),
maplist(=(a), Cs),
append(As, Cs, H1),
time((exp(10),crypto_data_hash(Ds, H1, Options),false)).
%@ % CPU time: 0.710s, 7_942_187 inferences
%@ % CPU time: 0.713s, 7_942_187 inferences
%@ % CPU time: 0.712s, 7_942_187 inferences
%@ % CPU time: 0.711s, 7_942_187 inferences
%@ % CPU time: 0.710s, 7_942_187 inferences
%@ % CPU time: 0.711s, 7_942_187 inferences
%@ % CPU time: 0.710s, 7_942_187 inferences
?- length(_, L), time((exp(10),crypto_data_hash("test", "3caebd1a0a2647930319a660b7d3642eb380fbd43202f9f6d08aabaa9ba50c39522a12ead10f0423f0af613cbc6fea74ad682ee11f563cc2e735722004fda2ba", [algorithm(sha512),hmac([0,L])]),false)).
%@ % CPU time: 0.733s, 7_878_699 inferences
%@ % CPU time: 0.734s, 7_878_699 inferences
%@ % CPU time: 0.732s, 7_878_699 inferences
%@ % CPU time: 0.733s, 7_878_699 inferences
%@ % CPU time: 0.733s, 7_878_699 inferences
%@ % CPU time: 0.733s, 7_878_699 inferences
%@ % CPU time: 0.733s, 7_878_699 inferences
%@ % CPU time: 0.733s, 7_878_699 inferences
%@ % CPU time: 0.733s, 7_878_699 inferences
%@ % CPU time: 0.733s, 7_878_699 inferences
%@ % CPU time: 0.733s, 7_878_699 inferences
%@ % CPU time: 0.515s, 5_525_404 inferences
%@ error('$interrupt_thrown',repl/0).
2024-03-01 18:59:48 +01:00
Mark
ba362e2fe0
issue callable type error from dynamic_module_resolution if module is not an atom ( #2345 )
2024-02-28 20:35:38 -07:00
Markus Triska
1dd0c599c6
DOC: Add DocLog comments for reasoning about elliptic curves.
2024-02-24 20:43:57 +01:00
Markus Triska
27852eafd7
ADDED: Hash-based message authentication code (HMAC), using hmac(Key).
2024-02-22 20:53:27 +01:00
Markus Triska
8f2e9c6b94
FIXED: char_type/2 for unbound first argument.
...
Surrogate pairs form a gap in valid character codes, see:
https://github.com/mthom/scryer-prolog/issues/2326#issuecomment-1937864665
Many thanks to @Skgland for the pointer, and to @librarianmage for the
question that spawned this!
This addresses #2326 .
2024-02-11 22:19:19 +01:00
Mark
539a1aee2c
fix tests broken by singleton
2024-02-07 21:46:32 -07:00
Markus Triska
53b7d9eec9
ENHANCED: Bidirectional char_type/2, addressing #2321 .
...
Suggested by @librarianmage, many thanks!
2024-02-07 20:57:28 +01:00
Markus Triska
aa98a7e7d6
ADDED: clpz_t/2, generalizing support for use with library(reif)
...
This was suggested and contributed by @librarianmage in:
https://github.com/mthom/scryer-prolog/issues/2225#issuecomment-1890801923
Many thanks!
If anyone can find a better predicate name, please let us know any time!
2024-02-06 19:05:29 +01:00
Adrián Arroyo Calle
ec4a8745e7
Add all_mdoules test and fix library(csv)
2024-02-04 21:34:01 +01:00
Markus Triska
3505cc3ba0
update answers using latest toplevel output
2024-01-25 21:33:27 +01:00
Markus Triska
05ba5f4358
rely on recently improved argument indexing for determinism
...
This is possible as of 4fd37335f5 .
2024-01-25 21:31:08 +01:00
Mark
bc616ca7d8
move call_residue_vars/2 from atts.pl to iso_ext.pl
2024-01-25 12:40:24 -07:00
Markus Triska
a6ccf95076
improve error context
...
Source: https://github.com/mthom/scryer-prolog/issues/2304#issuecomment-1906434756
2024-01-23 21:43:34 +01:00
Markus Triska
665f319a0e
no longer use (->)//2, since it is implementation defined
...
This addresses #2304 .
2024-01-23 21:42:36 +01:00
Markus Triska
81dba11ab1
use newly available false//0
2024-01-21 22:53:22 +01:00