Commit Graph

3495 Commits

Author SHA1 Message Date
Mark Thom
5ea262e1d3 replace tabs with spaces 2026-04-21 15:02:14 -07:00
Mark Thom
010b00f349 take Lis index from rd in copy_var (#3298) 2026-04-21 14:31:53 -07:00
Mark Thom
974722bc1c Merge pull request #3269 from no382001/quads
fix library paths and module qualification in quadtests.pl
2026-04-18 18:20:03 -06:00
Mark Thom
9cf0d8b484 Merge pull request #3274 from no382001/issue3262
fix read/1 on non-TTY stdin blocking until newline
2026-04-18 18:16:53 -06:00
Mark Thom
87f97c7e5c Merge pull request #3276 from Skgland/cleanup
remove unused file
2026-04-08 22:18:32 -06:00
Mark Thom
3e2f3ecfdb Merge pull request #3273 from no382001/issue2914
fix panic in current_prolog_flag/2 when arguments are the same variable
2026-04-04 13:06:11 -06:00
Mark Thom
2b6b11e6be Merge pull request #3271 from abmclin/update_rustyline
Resolves issue 2694 by updating rustyline to 17.0.2
2026-04-04 12:28:35 -06:00
Skgland
bb9c1cf5a2 remove unused file 2026-04-03 00:16:59 +02:00
no382001
28f8da5ce9 restructure based on suggestion
Co-authored-by: Bennet Bleßmann <3877590+Skgland@users.noreply.github.com>
2026-03-31 21:14:54 +02:00
no382001
c065b52778 fix read/1 on non-TTY stdin blocking until newline #3262 2026-03-31 15:52:27 +02:00
no382001
6a10c6d6a5 fix panic in current_prolog_flag/2 when arguments are the same variable 2026-03-31 12:01:00 +02:00
Alexander McLin
0623e8e7df Resolves issue 2694 by updating rustyline to 17.0.2 2026-03-29 14:49:51 -04:00
Skgland
3c9c7ade8d use checked_add to prevent silent overflow 2026-03-27 22:00:54 +01:00
no382001
13c85c74db fix library paths and module qualification in quadtests.pl 2026-03-27 21:27:15 +01:00
Skgland
5fc21241d6 hint to the compiler/branch-predictor that
we expect p to be in bound

if we are suffiently certain that p can never be oob
unsafe get_unchecked could be used to
eliminate bounds checking all together
which should improve performance further.
2026-03-21 19:01:52 +01:00
Skgland
833c3bd77f run rustfmt 2026-03-21 14:24:13 +01:00
Skgland
153f04b72a adjust interrupt handling
we used to spend ~5.8% of the time on getting the next value of the 0..INSTRUCTIONS_PER_INTERRUPT_POLL iterator

increment on Wrapping<u8> now only takes ~0.58 of the time
2026-03-21 14:20:11 +01:00
Skgland
8aab887388 switch from Integer to u128
- u128 is only 16 bytes instead of 24
- incrementing u128 does not involve heap allocations
- u128 should be sufficent
 it would take more than 2 sextilion years to overflow if we would be incrementing it every tick at 5GHz
   i.e. 2^128-1 / 5 GHz / 60 / 60 / 24 / 356 > 2 sextilion

before this ~3.2% of the execution time of the program in https://github.com/mthom/scryer-prolog/issues/3265#issuecomment-4103176469 was spend in the increment_call_count function, after this change it's down to 0.3%
2026-03-21 13:36:40 +01:00
Mark Thom
79a9b950cb Merge pull request #3243 from danilp-id/master
fix http stream not being closed fully
2026-03-19 23:36:58 -07:00
Mark Thom
fba2854f21 Merge pull request #3257 from triska/include
ISO: Implement the include/1 directive
2026-03-17 23:58:04 -07:00
Markus Triska
1c9fd1501a retain error context (load/1) when using :- D. 2026-03-16 07:36:55 +01:00
Mark Thom
b0b89a0aca Merge pull request #3258 from no382001/fix_load_xml/3
load_xml was returning a single term instead of a list of nodes
2026-03-14 22:46:03 -07:00
no382001
025da8315b load_xml was returning a single term instead of a list of nodes 2026-03-10 12:20:34 +01:00
Mark Thom
8002b9a78b Merge pull request #3234 from fusiongyro/patch-1
Fixed a typo in the documentation for atom_codes/2
2026-03-09 22:09:40 -07:00
Mark Thom
02f86587b5 Merge pull request #3232 from triska/not_si
ADDED: not_si/1
2026-03-09 22:09:09 -07:00
Mark Thom
4d144ea819 Merge pull request #3252 from Skgland/towards-a-crate-without-syn@1
replace custom modular_bitfields fork with update upstream
2026-03-09 22:08:28 -07:00
Mark Thom
02c927bb83 Merge pull request #3241 from Skgland/parse-error-improvements
change `ParserError` type
2026-03-09 22:07:03 -07:00
Mark Thom
4a8388a6e9 Merge pull request #3189 from Skgland/fix-function_casts_as_integer
fix `function_casts_as_integer` warning
2026-03-09 22:06:33 -07:00
Markus Triska
b41563e976 ENHANCED: support quads in included files
Suggested by @dcnorris, many thanks!

    https://github.com/mthom/scryer-prolog/issues/634#issuecomment-4003451420
2026-03-07 09:37:30 +01:00
Thierry Marianne
ead2fccdbb add documentation
Signed-off-by: Thierry Marianne <thierry@marianne.io>
2026-03-05 09:03:31 +01:00
Thierry Marianne
4bd0ff0fcb cargo fmt fixes
Signed-off-by: Thierry Marianne <thierry@marianne.io>
2026-03-04 14:04:47 +01:00
Thierry Marianne
ed59aa05b0 apply suggestion
Signed-off-by: Thierry Marianne <thierry@marianne.io>
2026-03-04 14:01:17 +01:00
Thierry M.
fa21ff4813 use CStr .to_str() method
Co-authored-by: Bennet Bleßmann <3877590+Skgland@users.noreply.github.com>
2026-03-04 14:00:44 +01:00
Thierry Marianne
fae9ca1bb9 fix utf-8 panic
Signed-off-by: Thierry Marianne <thierry@marianne.io>
2026-03-04 12:45:58 +01:00
Markus Triska
8f39bee463 ISO: Implement the include/1 directive
Quoting from the standard:

    7.4.2.7 include/1

    If F is an implementation defined ground term designating
    a Prolog text unit, then Prolog text P1 which contains
    a directive include(F) is identical to a Prolog text P2
    obtained by replacing the directive include(F) in P1 by
    the Prolog text denoted by F.

Example:

    :- include("hello.pl").

This addresses #583 and #634.
2026-02-28 14:49:13 +01:00
Skgland
2a79d6fc40 run cargo fmt 2026-02-20 22:52:25 +01:00
Skgland
49e49b425d fix clippy lint warning 2026-02-20 22:47:08 +01:00
Skgland
7d0d61d789 remove no longer necessary allows 2026-02-20 22:45:09 +01:00
Skgland
5ef5a3f30a replace custom modular_bitfields fork with update upstream
part of #2468
2026-02-20 22:40:33 +01:00
Danil Platonov
337d9c5583 move drop to impl Drop 2026-01-26 04:57:28 -08:00
Danil Platonov
26523139a8 fix http stream not being closed fully 2026-01-25 03:16:37 -08:00
Skgland
65aadb3b88 reduce visibility to pub(crate) to prevent accidentally exposing 2026-01-24 04:20:13 +01:00
Skgland
dfad71bc6e fix some lint warnings 2026-01-24 04:13:26 +01:00
Skgland
d8c6fa1fe5 don't expose lexical error and provide location 2026-01-24 04:08:41 +01:00
Skgland
18b476af28 make ParserError a struct with an enum kind field 2026-01-24 04:08:40 +01:00
Skgland
bd233fedfd add location to InvalidSingleQuotedCharacter 2026-01-24 04:08:40 +01:00
Skgland
083546442d make match exhaustive 2026-01-24 04:08:40 +01:00
Skgland
3343188756 replace pairs of usize with location struct 2026-01-24 04:08:40 +01:00
Daniel K Lyons
ed36aa7313 Fixed a typo in the documentation for atom_codes/2 2026-01-20 09:54:18 -07:00
Markus Triska
0dc94ecc0b ADDED: not_si/1
For a recent example that would benefit from this, see "Prolog Basics
Explained with Pokémon" by @alexpetros:

    https://unplannedobsolescence.com/blog/prolog-basics-pokemon/

Thank you a lot!
2026-01-18 09:58:31 +01:00