]>
Repositorios git - scryer-prolog.git/log
Markus Triska [Thu, 5 May 2022 20:51:21 +0000 (22:51 +0200)]
remove comment that seems no longer valid
Mark Thom [Thu, 5 May 2022 04:44:12 +0000 (22:44 -0600)]
fix rnd_i fixnum casting bug (#1456, #1458)
Mark Thom [Thu, 5 May 2022 03:54:46 +0000 (21:54 -0600)]
track f64 offsets in Literal (#1190)
Mark Thom [Mon, 2 May 2022 05:13:48 +0000 (23:13 -0600)]
compact lists of characters to partial strings in read_term_from_heap (#1452, #1453)
Mark Thom [Sun, 1 May 2022 01:51:19 +0000 (19:51 -0600)]
fix match_partial_string, compare_pstr_to_string (#1451)
Mark Thom [Fri, 29 Apr 2022 07:25:36 +0000 (01:25 -0600)]
remove redundant register assignments in numeric comparisons (#1438, #1448)
Mark Thom [Fri, 29 Apr 2022 01:25:09 +0000 (19:25 -0600)]
remove redundant skip_stub_try_me_else condition (#1444)
Mark Thom [Tue, 26 Apr 2022 19:31:43 +0000 (13:31 -0600)]
Merge pull request #1436 from triska/must_be_term
ADDED: can_be(term, ...) and must_be(term, ...)
Mark Thom [Tue, 26 Apr 2022 04:55:28 +0000 (22:55 -0600)]
replace SliceDeque with VecDeque
Mark Thom [Mon, 25 Apr 2022 02:59:00 +0000 (20:59 -0600)]
catch existence_error exceptions from top-level calls to attribute_goals/3 (#1432)
Mark Thom [Sat, 23 Apr 2022 01:00:42 +0000 (19:00 -0600)]
unify structures from left to right (#1396)
Mark Thom [Fri, 22 Apr 2022 00:41:07 +0000 (18:41 -0600)]
update to crossterm 0.20.0 (#1439)
Markus Triska [Wed, 20 Apr 2022 18:41:11 +0000 (20:41 +0200)]
ADDED: can_be(term, ...) and must_be(term, ...)
This terminology is a bit harder to understand than that of the other
type checks.
Scryer Prolog comprises two individually consistent but incompatible
notions of terms, namely terms and rational trees (which are also
called "cyclic terms"). This leads to a confusion in terminology,
because cyclic terms are not terms in the former sense even though
they also contain the word "term" in their name.
This terminological confusion is not restricted to terms: We also find
it for example in the notion of lists. Lists are defined inductively:
- The empty list (written as "" or [], called 'nil') is a list.
- A term with principal functor '.'/2 is a list if its second argument
is a list.
Note that a list may contain cyclic terms as elements, and still be
called a list. However, if we post:
?- Ls = [_|Ls].
then Ls is not a list, because it does not fit the inductive
definition. Still, it is sometimes referred to as a "cyclic list" or
"circular list", even though it is not a list. Even Prolog
implementors that aim for strict conformance to the Prolog ISO
standard and are deeply familiar with the standard use this
terminology when talking about such terms, see for example:
https://github.com/ichiban/prolog/pull/198
Consequently, must_be(list, Ls) raises a *type error* in this case.
Terms are distinguished from cyclic terms completely analogously. This
leads to the counterintuitive consequence that *cyclic lists are not
terms*. The reason for this apparent contradiction in terminology is
the mutual incompatibility of different notions of terms. The notion
of "term" precludes rational trees, similar to the notion of "list"
which precludes cyclic lists.
We therefore introduce:
* must_be(term, Term)
- raises an instantiation error if Term contains variables (since
it could still become a rational tree)
- raises a type error if Term is a rational tree
* can_be(term, Term)
- raises a type error if Term is a rational tree
Note that using the notion of "cyclic term" and "acyclic term" in this
terminology would not be a good idea, because this confusion is
precisely what we want to eliminate: must_be(term, Term) should be
usable as a test that reliably determines whether Term can be treated
as a term with the logical properties we expect from terms.
This addresses #1428.
Mark Thom [Mon, 18 Apr 2022 02:10:13 +0000 (20:10 -0600)]
very minor optimizations
Mark Thom [Sun, 17 Apr 2022 23:33:09 +0000 (17:33 -0600)]
mark unsafe variables and substitute temporary variables in is/2 when appropriate (#1430)
Mark Thom [Sun, 17 Apr 2022 18:19:48 +0000 (12:19 -0600)]
fix panic caused by jmp offset off by one error (#1429)
Mark Thom [Sun, 17 Apr 2022 01:57:26 +0000 (19:57 -0600)]
avoid writing chars to the atom table in several places
Mark Thom [Sat, 16 Apr 2022 17:11:33 +0000 (11:11 -0600)]
Merge pull request #1421 from gruhn/master
push Docker image on new release
Mark Thom [Fri, 15 Apr 2022 04:14:23 +0000 (22:14 -0600)]
fix comparisons to partial string tails (#1420)
Niklas Gruhn [Thu, 14 Apr 2022 14:33:57 +0000 (16:33 +0200)]
push Docker image on new release
Setup GitHub action which automatically builds and pushes Docker
images, when new release tags are created.
Mark Thom [Thu, 14 Apr 2022 02:31:16 +0000 (20:31 -0600)]
instantiate Module in definition of retract/1 (#1392)
Mark Thom [Wed, 13 Apr 2022 04:51:20 +0000 (22:51 -0600)]
mark cells that are about to be iterated in the stackful iterator (#1418)
Mark Thom [Mon, 11 Apr 2022 23:24:00 +0000 (17:24 -0600)]
use '$call' all throughout setup_call_cleanup/3
Mark Thom [Mon, 11 Apr 2022 23:01:47 +0000 (17:01 -0600)]
dereference head of list in is_continuable (#1417)
Mark Thom [Mon, 11 Apr 2022 01:46:34 +0000 (19:46 -0600)]
stop detecting cycles in compare_pstr_to_string
Mark Thom [Sun, 10 Apr 2022 20:17:33 +0000 (14:17 -0600)]
mark variable referents in stackful iterator, fix tests (#1408)
Mark Thom [Sun, 10 Apr 2022 20:11:43 +0000 (14:11 -0600)]
Merge pull request #1415 from wkral/set_output-error
Fix reported source for set_output/1 error (#1407)
William Kral [Sun, 10 Apr 2022 19:00:59 +0000 (12:00 -0700)]
Fix reported source for set_output/1 error (#1407)
Mark Thom [Sun, 10 Apr 2022 16:15:00 +0000 (10:15 -0600)]
print dot after errors, fix tests (#1408)
Mark Thom [Sun, 10 Apr 2022 02:32:52 +0000 (20:32 -0600)]
fix tests, use '$first_answer' to print indentation before errors (#1408)
Mark Thom [Sat, 9 Apr 2022 20:01:48 +0000 (14:01 -0600)]
print errors as goals (#1408)
Mark Thom [Sat, 9 Apr 2022 18:15:46 +0000 (12:15 -0600)]
unmark dereferenced cells in term_variables/2 (#1412)
Mark Thom [Sat, 9 Apr 2022 17:47:54 +0000 (11:47 -0600)]
dereference bindings returned by stackful iterator (#1410, #1411)
Mark Thom [Sat, 9 Apr 2022 03:18:59 +0000 (21:18 -0600)]
deduplicate variable list in term_variables/2 (#1409)
Mark Thom [Fri, 8 Apr 2022 05:06:58 +0000 (23:06 -0600)]
throw errors on cyclic terms when evaluating is/2 expressions
Mark Thom [Fri, 8 Apr 2022 02:48:40 +0000 (20:48 -0600)]
fix loop in stackful iterator (#1405, #1384)
Mark Thom [Thu, 7 Apr 2022 04:53:48 +0000 (22:53 -0600)]
detect immediately cyclic lists (#1384)
Mark Thom [Wed, 6 Apr 2022 14:39:16 +0000 (08:39 -0600)]
restore correct order to term_variables/2 (#1400, #1401)
Mark Thom [Wed, 6 Apr 2022 03:02:39 +0000 (21:02 -0600)]
limit use of stackless iterator to test suite
Mark Thom [Wed, 6 Apr 2022 02:13:17 +0000 (20:13 -0600)]
add forwarding bit to all heap cells (#1384)
Mark Thom [Tue, 5 Apr 2022 05:56:30 +0000 (23:56 -0600)]
allocate floats in dedicated buffer
Mark Thom [Sun, 3 Apr 2022 04:45:10 +0000 (22:45 -0600)]
make marker into an iterators, recover post_order_iterator
Mark Thom [Sat, 2 Apr 2022 23:30:04 +0000 (17:30 -0600)]
removal of old stackless iterator, implementation of new more faithful one
Mark Thom [Tue, 5 Apr 2022 16:58:12 +0000 (10:58 -0600)]
Merge pull request #1395 from wkral/fix-test-indentation
Fix indentation before false in tests (#676)
William Kral [Tue, 5 Apr 2022 06:58:20 +0000 (23:58 -0700)]
Fix indentation before false in tests (#676)
Mark Thom [Mon, 4 Apr 2022 02:22:44 +0000 (20:22 -0600)]
indent plain false (#676)
Mark Thom [Sun, 3 Apr 2022 07:38:37 +0000 (01:38 -0600)]
Merge pull request #1386 from triska/better_call_nth
ENHANCED: more memory efficient call_nth/2 (#1264)
Mark Thom [Sun, 3 Apr 2022 07:37:19 +0000 (01:37 -0600)]
compare complete strings to one another in write_literal_to_var (#1388)
Markus Triska [Sat, 2 Apr 2022 08:31:56 +0000 (10:31 +0200)]
ENHANCED: more memory efficient call_nth/2 (#1264)
I hope that this will allow more extensive tests of Scryer Prolog. Enjoy!
Mark Thom [Sat, 2 Apr 2022 07:29:51 +0000 (01:29 -0600)]
don't mark forwarded refs in stackless iterator/marker (#1384)
Mark Thom [Fri, 1 Apr 2022 00:18:04 +0000 (18:18 -0600)]
be aware of temporary variables of stackless iterator in term_variables (#1383)
Mark Thom [Thu, 31 Mar 2022 23:59:02 +0000 (17:59 -0600)]
Merge pull request #1381 from wkral/build-fmt-error
Improve rustfmt missing error during build (#1379)
William Kral [Wed, 30 Mar 2022 21:26:35 +0000 (14:26 -0700)]
Improve rustfmt missing error during build (#1379)
Mark Thom [Wed, 30 Mar 2022 19:56:25 +0000 (13:56 -0600)]
Merge pull request #1380 from triska/as_is
as --> is
Markus Triska [Wed, 30 Mar 2022 19:33:46 +0000 (21:33 +0200)]
as --> is
Mark Thom [Wed, 30 Mar 2022 00:39:45 +0000 (18:39 -0600)]
fix dif/2 crash (#1378)
Mark Thom [Tue, 29 Mar 2022 05:10:08 +0000 (23:10 -0600)]
Merge pull request #1373 from aarroyoc/http-open
Add Hyper based `http_open/3`
Mark Thom [Tue, 29 Mar 2022 01:03:28 +0000 (19:03 -0600)]
print closed stream handle as '$dropped_value' (#1376)
Mark Thom [Tue, 29 Mar 2022 00:58:38 +0000 (18:58 -0600)]
dereference numbervars terms (#1377)
Adrián Arroyo Calle [Mon, 28 Mar 2022 19:04:46 +0000 (21:04 +0200)]
Add close handling of http stream
Adrián Arroyo Calle [Sun, 27 Mar 2022 12:23:14 +0000 (14:23 +0200)]
http_open/3 try_or_throw
Adrián Arroyo Calle [Sun, 27 Mar 2022 12:18:38 +0000 (14:18 +0200)]
http_open/3 with headers and data
Adrián Arroyo Calle [Sat, 19 Mar 2022 21:53:24 +0000 (22:53 +0100)]
http_open/3 with method option
Mark Thom [Sun, 27 Mar 2022 19:34:29 +0000 (13:34 -0600)]
extend small_letter_char! to include all non-uppercase letters (#1364)
Mark Thom [Sun, 27 Mar 2022 19:08:43 +0000 (13:08 -0600)]
Stream::close() should close file handles (#1374)
Mark Thom [Sun, 27 Mar 2022 17:28:10 +0000 (11:28 -0600)]
use ryu to print floats with a modification for compatible syntax (#1368, #1372)
Mark Thom [Sun, 27 Mar 2022 03:44:37 +0000 (21:44 -0600)]
fix char comparison misordering (#1371)
Mark Thom [Sun, 27 Mar 2022 03:18:07 +0000 (21:18 -0600)]
retrieve F64 behind Cons tags properly (#1369)
Mark Thom [Sat, 26 Mar 2022 18:30:58 +0000 (12:30 -0600)]
Merge pull request #1370 from triska/files_must_be_chars
ENHANCED: use newly available must_be(chars, ...), which is very fast
Markus Triska [Sat, 26 Mar 2022 17:59:11 +0000 (18:59 +0100)]
ENHANCED: use newly available must_be(chars, ...), which is very fast
Mark Thom [Sat, 26 Mar 2022 00:07:22 +0000 (18:07 -0600)]
fix functor/3 arity check (#1366)
Mark Thom [Fri, 25 Mar 2022 23:30:47 +0000 (17:30 -0600)]
advance arg in arithmetic comparison code (#1367)
Mark Thom [Thu, 24 Mar 2022 16:25:42 +0000 (10:25 -0600)]
detect float rounding overflows (#1365)
Mark Thom [Wed, 23 Mar 2022 04:48:51 +0000 (22:48 -0600)]
recognize missing syntax errors (#1354, #1361)
Mark Thom [Tue, 22 Mar 2022 06:55:44 +0000 (00:55 -0600)]
compare TypedArenaPtr<T> by value not pointer (#1362)
Mark Thom [Sat, 19 Mar 2022 22:52:27 +0000 (16:52 -0600)]
use Rust's native UTF-8 functions (#1355)
Mark Thom [Sat, 19 Mar 2022 01:00:53 +0000 (19:00 -0600)]
correct float version of sign/1 (#1360)
Mark Thom [Fri, 18 Mar 2022 23:49:54 +0000 (17:49 -0600)]
accept remaining UTF-8 codepoints as alphabetic characters (#1355)
Mark Thom [Fri, 18 Mar 2022 00:43:30 +0000 (18:43 -0600)]
print most characters directly ((#1355)
Mark Thom [Fri, 18 Mar 2022 00:08:30 +0000 (18:08 -0600)]
check self.ignore_ops and max_depth in print_rational (#1359)
Mark Thom [Thu, 17 Mar 2022 01:11:39 +0000 (19:11 -0600)]
remove pstr offsets unconditionally from printer iteration stack, deal with fallout after the fact (#1357)
Mark Thom [Wed, 16 Mar 2022 00:43:57 +0000 (18:43 -0600)]
improve length/2 (#1325)
Mark Thom [Tue, 15 Mar 2022 05:31:50 +0000 (23:31 -0600)]
prepare for publishing to crates.io (#1335)
Mark Thom [Sun, 13 Mar 2022 18:53:31 +0000 (12:53 -0600)]
add (:) meta-predicate argument indicator (#1302)
Mark Thom [Sun, 13 Mar 2022 19:54:39 +0000 (13:54 -0600)]
derefence target variable in check_sort_errors (#1350)
Mark Thom [Sun, 13 Mar 2022 16:48:03 +0000 (10:48 -0600)]
throw errors on cycles in sort/2 and keysort/2 (#1350 and #1351)
Mark Thom [Sun, 13 Mar 2022 03:12:28 +0000 (20:12 -0700)]
point code index to switch_on_term after appending indexed clause to single-clause predicate (#1346)
Mark Thom [Sat, 12 Mar 2022 20:12:03 +0000 (13:12 -0700)]
Merge pull request #1349 from Skgland/min-rust-version
Set minimum rust version in Cargo.toml (Attempt 2)
Skgland [Sat, 12 Mar 2022 18:02:34 +0000 (19:02 +0100)]
add a CI job to verify msrv is still correct
Skgland [Sat, 12 Mar 2022 17:57:33 +0000 (18:57 +0100)]
add min rust version
was proposed in https://github.com/mthom/scryer-prolog/issues/1335#issuecomment-
1062039516 and got positive feedback
(cherry picked from commit
fcfa3beaa32f23f6c08fcc7d4f3755b10bc62431 )
Mark Thom [Sat, 12 Mar 2022 18:10:25 +0000 (11:10 -0700)]
Merge pull request #1348 from mthom/revert-1347-min-rust-version
Revert "Set minimum rust version in Cargo.toml"
Mark Thom [Sat, 12 Mar 2022 18:10:17 +0000 (11:10 -0700)]
Revert "Set minimum rust version in Cargo.toml"
Mark Thom [Sat, 12 Mar 2022 18:07:03 +0000 (11:07 -0700)]
Merge pull request #1347 from Skgland/min-rust-version
Set minimum rust version in Cargo.toml
Skgland [Sat, 12 Mar 2022 18:02:34 +0000 (19:02 +0100)]
add a CI job to verify msrv is still correct
Skgland [Sat, 12 Mar 2022 17:57:33 +0000 (18:57 +0100)]
add min rust version
was proposed in https://github.com/mthom/scryer-prolog/issues/1335#issuecomment-
1062039516 and got positive feedback
Mark Thom [Sat, 12 Mar 2022 01:25:47 +0000 (18:25 -0700)]
Merge pull request #1342 from wkral/no-add-history
Add --no-add-history flag
William Kral [Fri, 11 Mar 2022 05:48:41 +0000 (21:48 -0800)]
Add --no-add-history flag
Flag prevents the input stream from saving terms to ~/.scryer_history
when set. Use the flag when running tests to increase test isolation.
Mark Thom [Thu, 10 Mar 2022 04:24:16 +0000 (21:24 -0700)]
print rationals that are integers as integers (#663)
Mark Thom [Wed, 9 Mar 2022 05:05:54 +0000 (22:05 -0700)]
print variables instead of offsets in setup_call_cleanup tests
Mark Thom [Wed, 9 Mar 2022 05:00:12 +0000 (22:00 -0700)]
correct loading of variable name strings in write_term/3