Skgland
3a2d57db33
add regression test for discussion 3359
2026-06-03 22:05:20 +02:00
Skgland
a4993284cd
fix parallel heap iter
2026-06-01 23:59:37 +02:00
Skgland
8aeb326e5c
use a pair for ParallelHeapIter
...
to ensure it is pushed popped in pairs
2026-06-01 23:58:17 +02:00
Skgland
bdba7ba0f5
merge crypto-impure feature into feature crypto-full
2026-05-25 19:07:20 +02:00
Skgland
6c7d5e8278
more spelling fixes
2026-05-25 16:39:37 +02:00
Skgland
61ebcdb56e
fix spelling
2026-05-24 23:55:19 +02:00
Skgland
f2195c2362
cleanup
...
- fix some warnings and mark others as expected
- make use of the msrv bump to 1.93.1 and cleanup compat and workarounds
2026-05-24 23:29:23 +02:00
Skgland
6150ca90d3
check individual features in CI
2026-05-24 23:00:27 +02:00
Skgland
938f588769
make crypto depending on ring optional
2026-05-24 23:00:27 +02:00
Skgland
1fd9246b16
configure linker via env var insread of .cargo/config.toml
...
someone might already have a .cargo/config.toml
2026-05-24 19:08:23 +02:00
Skgland
19974e580b
fix missing description
...
Github documentation states that it is a required field and my linter complained
https://docs.github.com/en/actions/reference/workflows-and-actions/metadata-syntax#description
2026-05-24 19:02:23 +02:00
Skgland
550efb8416
add a feature for things that are simple to cross-compile
2026-05-24 10:39:20 +02:00
Skgland
e0c491e9f3
fix miri not being passed the target
2026-05-24 10:39:20 +02:00
Skgland
f16850e5f8
fix ci and setup cross-compilation
2026-05-24 10:39:20 +02:00
Skgland
ca0d4e9aac
add miri CI for a big endian target
2026-05-24 10:39:20 +02:00
Skgland
6e50268efb
fix spelling again
2026-05-24 10:30:30 +02:00
Skgland
54b3034905
remove out-dated comment and fix spelling/grammar
2026-05-24 10:25:24 +02:00
Skgland
6b9a291f4e
fix spelling
2026-05-23 11:28:45 +02:00
Skgland
e4792429d3
reuse tabu list
2026-05-17 20:50:37 +02:00
Skgland
d50d425099
ensure pdl is pushed/popped in pairs
2026-05-17 19:48:52 +02:00
Skgland
ac18aed5a7
use BTree{Map,Set} to ensure a stable order based on the key/entry even if filesystem enumeration order changes
...
this should help with reproducibility
2026-05-14 01:02:19 +02:00
Skgland
0c313a0849
upgrade libffi dependency
2026-05-08 22:36:41 +02:00
Skgland
89dde3f370
un-ignore lorem_ipsum tests as they are no longer slow
2026-04-30 19:54:39 +02:00
Skgland
f8ddd78776
optimize CharReader
2026-04-30 19:46:40 +02:00
Skgland
327a677a7c
use a function rather than a closure
2026-04-30 19:02:27 +02:00
Skgland
48a34aa2cc
add a test with bad utf-8
2026-04-30 19:01:34 +02:00
Skgland
af54fb2aba
optimize put_back_char
...
Always encode the char directly into the buffer.
Only shift the buffer content if there isn't enough room in the front.
2026-04-26 14:13:55 +02:00
Skgland
eac7ff680c
fix ArenaPtr payload offset logic
...
the old logic would be incorrect if the payload has higher alignment than the ArenaHeader i.e. when there is padding between the ArenaHeader and the Payload
2026-04-25 18:12:32 +02:00
Skgland
b4db85c8c3
don't erase ptr type early when construction a Cons HeapCellValue
...
rather than passing an address as usize pass the ArenaHeader pointer
similarly don't return a u8 ptr but use a ArenaHeader pointer instead
Don't convert the pointer to a ConsPtr by going through native endian
bytes in between.
We are exploiting the fact that the 3 least significant bytes are zero
for pointer to types of alignment 8 and we expect these to line up with
the f, m, and tag field at the end of the ConsPtr struct, but using
native endiannes for this would only work on big endian systems.
2026-04-25 18:12:31 +02:00
Skgland
6765921666
fix unused import warning on windows
2026-04-25 16:19:58 +02:00
Skgland
ff293a56e6
fix large enum variant size difference warning of PermVarAllocation
...
by wrapping BranchNumber in an Arc.
PermVarAllocation::Done had size 208 and is now down to 32.
A Box rather than an Arc would be smaller, but it looks like BranchNumber/BranchDesignator are clones a bunch so I expect it to be beneficial to reduce allocations both of the Box itself as well as its content.
2026-04-25 16:19:53 +02:00
Skgland
ab2b652c84
fix linux tests on 1.85
...
old rust versions didn't print the pid
2026-04-25 15:19:41 +02:00
Skgland
83add732e0
adjust test expectations
2026-04-25 14:43:52 +02:00
Skgland
f8c4679850
add process_wait/3 release(Bool) option
...
make process_wait/3 release the Process by default
2026-04-25 14:35:20 +02:00
Skgland
3da2b8fba2
add tests
2026-04-25 14:35:07 +02:00
Skgland
f7dc1d72f6
remove unused HeapCellValueView
...
it is identical to HeapCellValueTag
2026-04-22 22:16:36 +02:00
Skgland
8bbb484f94
update pyTooling/Actions/with-post-step@v4.1.0 -> pyTooling/Actions/with-post-step@v7.7.0
2026-04-11 00:06:13 +02:00
Skgland
717c3c2db8
update actions/cache@v4.3.0 -> actions/cache@v5.0.4
2026-04-10 23:59:59 +02:00
Skgland
0aa6abe517
pin 3rd-party actions
...
following githubs recommendations[^3rd-p-a] to use full-length commit SHA for 3rd-party actions
setup dependabot to help keep dependencies up-to-date
[^3rd-p-a]: https://docs.github.com/en/actions/reference/security/secure-use#using-third-party-actions
2026-04-10 23:52:43 +02:00
Skgland
4a9f690c16
update docker/build-push-action@v6 -> docker/build-push-action@v7
2026-04-10 23:22:38 +02:00
Skgland
e3d020ea74
update docker/metadata-action@v5 -> docker/metadata-action@v6
2026-04-10 23:22:38 +02:00
Skgland
82378c6338
update docker/login-action@v3 -> docker/login-action@v4
2026-04-10 23:22:38 +02:00
Skgland
f456c98c5b
update docker/setup-buildx-action@v3 -> docker/setup-buildx-action@v4
2026-04-10 23:22:37 +02:00
Skgland
4db325e4b8
update actions/download-artifact@v4 -> actions/download-artifact@v8
2026-04-10 23:22:37 +02:00
Skgland
8f33eaf7d1
update actions/upload-artifact@v4 -> actions/upload-artifact@v7
2026-04-10 23:22:37 +02:00
Skgland
eba16a2213
update actions/checkout@v4 -> actions/checkout@v6
2026-04-10 23:22:37 +02:00
Skgland
bb9c1cf5a2
remove unused file
2026-04-03 00:16:59 +02:00
Skgland
3c9c7ade8d
use checked_add to prevent silent overflow
2026-03-27 22:00:54 +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
Skgland
2dc904aa73
run apt update before apt install
...
https://github.com/orgs/community/discussions/145882#discussioncomment-11447924
2026-02-20 23:00:45 +01:00
Skgland
0ceab41b39
fix warning in CI about using apt in a script
2026-02-20 22:57:44 +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
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
Skgland
b14e363d5e
run rustfmt to fix formatting
2026-01-10 18:31:40 +01:00
Skgland
5064760b1e
fix spelling
2026-01-10 18:13:59 +01:00
Skgland
eca4262be6
fix clippy lints
2026-01-10 17:52:34 +01:00
Skgland
73c26bed2a
extaract the static part of the instructions template directly into the instructions module
...
This way goto source doesn't end up in a generated file for those parts and they can be edited directly.
I have way too often accidentally edited the generated file.
2026-01-10 17:48:07 +01:00
Skgland
129cca53ed
throw error(resource_error(memory), []) when the list length exceeds usize.
2025-12-10 00:04:24 +01:00
Skgland
00aba96185
remove overengineered RecursionGuard
2025-12-08 22:27:24 +01:00
Skgland
616f071cd9
fix another integer overflow
2025-12-08 19:59:43 +01:00
Skgland
580572aec6
don't calculate panic message eagerly
2025-12-07 23:06:09 +01:00
Skgland
47e908bf76
handle overflown in Heap::with_cell_capacity
2025-12-07 22:59:00 +01:00
Skgland
11901b5fde
handle oob heap index calculation
2025-12-07 21:45:13 +01:00
Skgland
d63b0a192c
use checked multiplication in heap_index! macro
2025-12-07 21:31:24 +01:00
Skgland
2fc08dde1e
prevent multiply with overflow resulting in odd errors/segv
2025-12-07 21:27:24 +01:00
Skgland
193cfabc66
detect recursive throw_resource_error and panic instead of causing a segmentation fault
2025-12-07 21:08:17 +01:00
Skgland
7c3ffd0e87
deny function_casts_as_integer warnings
2025-12-04 23:35:35 +01:00
Skgland
797a8f8611
fix function_casts_as_integer warning
...
Comparing addresses of function pointers is brittle.
Functions may be duplicated resulting in function pointers to the same function to compare !=.
Functions may be merged/de-duplicated resulting in function pointers to different function to compare ==.
The later shouldn't be relevant here as the function differ in behavior, but mentioning it for completeness.
2025-12-04 23:35:23 +01:00
Skgland
6ec8c9064f
fix pstr_iter_tests test
2025-11-20 23:08:46 +01:00
Skgland
d4f2f7ba2b
remove RESOURCE_ERROR_OFFSET_INIT
...
With it when using multiple Machine in one process only the first would store the pre-allocated error.
Instead Heap.resource_err_loc is now Option<NonZero<usize>> instead of usize using None for uninitialized.
The cell at index 0 should alredy be used by a runtime reserved interstitial cell that is allocated prior. So requiring the offset to be non zero should be fine.
2025-11-20 21:44:29 +01:00
Skgland
a05dc79505
fix unecessary parens in macro
2025-11-20 21:24:47 +01:00
Skgland
e90c813528
return an AllocError instead of panicing in Heap::with_cell_capacity
2025-11-20 21:13:17 +01:00
Skgland
516848e214
wrap resource_error into an error/2 functor and don't wrap it into a syntax_error functor
2025-11-20 01:22:18 +01:00
Skgland
6063783e9d
propagate AllocErrro instead of unwrapping
2025-11-20 00:19:24 +01:00
Skgland
e9e97fe82a
handle machine heap/stack allocation error
2025-11-19 22:17:24 +01:00
Skgland
5686b69013
stub a clippy config
...
with things we need to get rid of replace if we want to eliminate panics due to oom
2025-11-19 19:23:42 +01:00
Skgland
248b05c992
use as_bytes().to_vec() instead of bytes().collect()
...
copying a slice into a vec should be easier to optimize by the complier than collecting a byte iteration into a vec
2025-11-19 19:23:41 +01:00
Skgland
a283c8bdc2
remove some uncessary allocations/copies
2025-11-19 19:23:41 +01:00
Skgland
6b5ec3fab8
ignore incompatible msrv in compat module
2025-11-19 19:23:41 +01:00
Skgland
a0b4162d7a
improve count_to_letter_code
...
- reserve the complete required length at the beginning to reduce reallocations
- use u8 instead of char so that we can re-use the allocation for the string
2025-11-19 19:23:41 +01:00
Skgland
119761ad10
ignore unused_parens warning
...
parens are generated by external macro
2025-11-18 21:42:00 +01:00
Skgland
bf8651db29
remove two unecessary clones
2025-11-18 21:29:22 +01:00
Skgland
f8b9944f5c
update documentation
2025-09-28 19:50:21 +02:00
Skgland
6e7dbfc75e
consistently treat bool as i8
2025-09-28 18:29:20 +02:00
Skgland
1add5a9a75
add ffi types for non-fixed-sized integers
2025-09-28 18:17:35 +02:00
Skgland
777e6de9ee
fix missing quotes
2025-09-28 13:43:09 +02:00
Skgland
2443af57d0
fixup quad
2025-09-27 23:14:14 +02:00
Skgland
ed03d5b1b4
move CI job release from retired ubuntu-20.04 image to ubuntu-22.04
...
the new image is the same as all other ubuntu jobs
2025-09-27 22:54:45 +02:00