Commit Graph
100 Commits
Author SHA1 Message Date
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
Skgland 9376bc6369 fix mthom/scryer-prolog#3073 2025-09-27 22:48:05 +02:00
Skgland 2f43c3ff40 add regression test for issue 3073 2025-09-27 22:05:51 +02:00