]>
Repositorios git - scryer-prolog.git/log
Mark Thom [Sat, 21 May 2022 18:32:48 +0000 (12:32 -0600)]
add max arity checks at various stages (#1459)
Mark Thom [Tue, 17 May 2022 02:45:45 +0000 (20:45 -0600)]
check asserta/2, assertz/2, abolish/2 for uninstantiated Module variables (#1475)
Mark Thom [Mon, 16 May 2022 22:32:38 +0000 (16:32 -0600)]
detect character type errors in atom_{chars|codes}/2 (#1472)
Mark Thom [Sun, 15 May 2022 15:44:44 +0000 (09:44 -0600)]
Merge pull request #1478 from triska/sgml_improvements
Various improvements to library(sgml)
Mark Thom [Sun, 15 May 2022 15:44:26 +0000 (09:44 -0600)]
Merge pull request #1477 from triska/document_tab_completion
document atom and predicate completion with TAB
Markus Triska [Sun, 15 May 2022 08:55:56 +0000 (10:55 +0200)]
indent enumerations
Markus Triska [Sun, 15 May 2022 08:55:27 +0000 (10:55 +0200)]
clarify the representation
Markus Triska [Sun, 15 May 2022 08:25:41 +0000 (10:25 +0200)]
strengthen and improve type checks
Markus Triska [Sun, 15 May 2022 08:23:00 +0000 (10:23 +0200)]
clarify comment
Markus Triska [Sun, 15 May 2022 08:19:00 +0000 (10:19 +0200)]
use phrase_from_file/2 directly on the file name
Markus Triska [Sun, 15 May 2022 08:04:45 +0000 (10:04 +0200)]
document atom and predicate completion with TAB
This feature, added via
https://github.com/mthom/scryer-prolog/pull/1467, makes the toplevel
interaction a lot more convenient in many cases.
Many thanks to @euanlacy!
Mark Thom [Sun, 15 May 2022 05:28:04 +0000 (23:28 -0600)]
Merge pull request #1474 from triska/correct_can_be_chars
FIXED: can_be(chars, [a,X]), i.e., if variables occur as elements
Mark Thom [Sat, 14 May 2022 17:01:26 +0000 (11:01 -0600)]
consider deallocate a head instruction (#1473)
Markus Triska [Sat, 14 May 2022 07:52:34 +0000 (09:52 +0200)]
prioritize type errors over instantiation errors
Example:
?- must_be(chars, [a,X,cc]).
error(type_error(character,cc),can_be/2).
See https://github.com/mthom/scryer-prolog/pull/1474#issuecomment-
1126664368
Markus Triska [Sat, 14 May 2022 06:09:01 +0000 (08:09 +0200)]
FIXED: can_be(chars, [a,X]), i.e., if variables occur as elements
This should simplify
2f3de51e554629d2e7b4ea023c9ef181c240692c and
other cases like it.
Mark Thom [Sat, 14 May 2022 00:38:02 +0000 (18:38 -0600)]
remove non-determinism in number_chars/2 and numbercodes/2 (#1473)
Mark Thom [Thu, 12 May 2022 06:00:37 +0000 (00:00 -0600)]
use must_be(chars) in number_chars/2 (#1470)
Mark Thom [Thu, 12 May 2022 04:32:09 +0000 (22:32 -0600)]
Merge pull request #1467 from euanlacy/master
Completion of predicates in repl
Euan Lacy [Wed, 11 May 2022 20:37:03 +0000 (21:37 +0100)]
wip: add more atoms to completion list
Euan Lacy [Tue, 10 May 2022 16:54:15 +0000 (17:54 +0100)]
fix: remove unnecessary string & vec allocations
Euan Lacy [Tue, 10 May 2022 03:40:22 +0000 (04:40 +0100)]
wip: basic completion of predicates
Mark Thom [Sun, 8 May 2022 20:52:22 +0000 (14:52 -0600)]
unify partial string tail later in create_partial_string (#1462, #1465, #1427)
Mark Thom [Fri, 6 May 2022 23:38:25 +0000 (17:38 -0600)]
fix culprit in stream_position permission_error (#1463)
Mark Thom [Fri, 6 May 2022 00:58:22 +0000 (18:58 -0600)]
correct cycle detection in unify_* (#1455)
Mark Thom [Thu, 5 May 2022 23:24:54 +0000 (17:24 -0600)]
Merge pull request #1461 from triska/clpz_sign
ADDED: sign/1
Markus Triska [Thu, 5 May 2022 20:49:48 +0000 (22:49 +0200)]
ADDED: sign/1
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)