Commit graph

5983 commits

Author SHA1 Message Date
yorickhardy
f452b618d6
Merge branch 'justinethier:master' into threads-gc-work 2025-01-17 06:13:37 +02:00
Justin Ethier
2d833cd6c1
552 cond expand no match (#554)
* Issue #552 - Error if no match cond-expand clause

* Issue #552 - Document change to cond-expand
2025-01-16 22:31:08 -05:00
Yorick Hardy
ee4858087b srfi-18: revert thread-terminate! changes
These changes need to be revisited, and are not suitable for
the threads garbage collection pull request.
2025-01-12 16:42:41 +02:00
yorickhardy
b13c277677
Merge branch 'justinethier:master' into threads-gc-work 2025-01-03 01:14:43 +02:00
Yorick Hardy
d51384db61 gc: sweep and free empty heaps for the primordial thread
The primordial thread may not have an opportunity to sweep
heap pages which have been merged from terminated threads.
So sweep any unswept pages during the cooperation phase.

Partial work towards addressing issue #534.
2025-01-03 00:58:58 +02:00
Yorick Hardy
4915f53c25 gc: create a context for terminated thread objects
The context ensures that parametrised objects, continuations
and exception handlers can still be traced but are no longer
root objects (after thread terminations) and can be GCd eventually.

Partial work towards addressing issue #534.
2025-01-03 00:56:21 +02:00
Yorick Hardy
028f52c8ec gc: prepare heap objects for sweeping
Also introduce a global variable to track whether merged
heaps need to be swept.

Partial work towards addressing issue #534.
2025-01-03 00:55:06 +02:00
Yorick Hardy
cd4125bb97 types.h: make gc_alloc_pair public
This will be used to create the thread context.
Partial work towards addressing issue #534.
2025-01-03 00:51:02 +02:00
Yorick Hardy
db6956e5aa srfi-18: do a minor gc when terminating a thread
This ensures that any objects which are part of the
thread context are transferred to the heap.

Partial work towards addressing issue #534.
2025-01-03 00:48:45 +02:00
Yorick Hardy
dd2b5c1174 srfi-18: add a slot for thread context in the thread object
Partial work towards addressing issue #534.
2025-01-03 00:45:52 +02:00
Yorick Hardy
8e2d76fbce runtime: small (cosmetic) simplification 2025-01-02 14:06:44 +02:00
Yorick Hardy
5b590698bd gc: remove accidental double counting 2025-01-02 14:00:39 +02:00
Justin Ethier
398f8e91d6 Update copyright to 2025 2025-01-01 18:02:01 -08:00
Yorick Hardy
b755b40ee8 types: update forward declaration of gc_heap_merge()
Partial work towards addressing issue #534.
2024-12-31 11:50:39 +02:00
Yorick Hardy
20e1a14222 gc: oops, forgot the "freed" count (again)
Partial work towards addressing issue #534.
2024-12-31 11:48:49 +02:00
Yorick Hardy
fb334d1e89 gc: oops, forgot the "freed" count
Partial work towards addressing issue #534.
2024-12-31 11:46:29 +02:00
Yorick Hardy
546eb76861 gc: free empty pages in gc_heap_merge()
Moving the code from gc_merge_all_heaps to gc_heap_merge removes
special handling of the start of the list and is (hopefully)
easier to read.

Partial work towards addressing issue #534.
2024-12-31 11:40:10 +02:00
Yorick Hardy
48b95db3d2 gc: revert adding STAGE_FORCING
Use gc_start_major_collection() instead. Partial work towards
addressing issue #534.
2024-11-18 22:00:48 +02:00
Yorick Hardy
41ac00d6be srfi-18: thread-terminate! takes a thread as argument 2024-11-17 23:07:42 +02:00
Yorick Hardy
20fc3c6646 gc: free unused parts of the heap before merging
When a thread exits, the heap is merged into the main thread.
Before doing so, free any unused parts of the heap to reduce
memory usage. Attempts to partially address issue #534.
2024-11-15 23:14:21 +02:00
Yorick Hardy
bf9dda2fed srfi-18: call Cyc_end_thread on thread exits
This ensures that the collector has a chance to run whenever
a thread exits. Attempts to partially address issue #534.
2024-11-15 23:11:21 +02:00
Yorick Hardy
955695f554 runtime: force the garbage collector to run when a thread exits
This is a first attempt to improve the memory usage reported in
issue #534.
2024-11-15 23:02:55 +02:00
Yorick Hardy
d8aa289af4 gc: add a function to force the collector to run
This requires adding a "forced" stage for the collector,
which is the initial stage for a forced collection.
Thereafter, the collector continues to the usual stages
of collection.
2024-11-15 22:59:46 +02:00
Justin Ethier
86cfbeb72b Remove gcc 14 job for now since its not in ubuntu yet 2024-09-25 19:38:38 -07:00
Justin Ethier
49f1599107 Fix syntax 2024-09-25 19:33:38 -07:00
Justin Ethier
520eafabac Try with gcc 14 2024-09-25 19:31:41 -07:00
Justin Ethier
95f4557ec9 Add latest change 2024-09-25 19:28:43 -07:00
Sören Tempel
26d0e1f9e5
Fix open_memstream/fmemopen feature detection with GCC >= 14 (#544)
GCC 14 has enabled various warnings as errors by default, e.g.
-Wimplicit-function-declaration. This causes the current feature
detection code for `open_memstream(3)` and `fmemopen(3)` to fail
with GCC 14.

This commit restores compatibility with GCC 14 in this regard.

Note that it may also be beneficial to pass a feature test macro
such as -D_POSIX_C_SOURCE. See the feature test macro requirements
for open_memstream(3)` and `fmemopen(3)`.
2024-09-25 22:27:14 -04:00
Justin Ethier
45686f6c86
Issue 522 - Add unit test framework for C runtime (#545)
* WIP - C unit testing stubs

* Get test-lib to compile and run

* Add test-lib to CI

* Use cflags for test-lib

* Build runtime library

* Fix typo

* Break into separate CI tasks

* Cleanup

* Add example tests for non-CPS

* Include -g option for test-lib

* Add CI to build C runtime

Can expand into scheme at some point, this is a first step.

* Use latest upload workflow
2024-09-24 21:57:33 -04:00
Justin Ethier
645683937f
Merge pull request #539 from justinethier/issue-537-apply-in-icyc
Issue 537 apply in icyc
2024-05-21 21:59:37 -04:00
Justin Ethier
65fa16cce7 Issue #537 - Add tests 2024-05-21 18:58:49 -07:00
Justin Ethier
bb6b3eafed Issue #537 - Document bug fix 2024-05-21 18:54:17 -07:00
Justin Ethier
06219634e9 Issue #537 - Add useful comments 2024-05-21 18:41:41 -07:00
Justin Ethier
1ce4979658 Testing fix for issue #537 2024-05-20 19:31:38 -07:00
Justin Ethier
6b556d3a7a
Merge pull request #538 from justinethier/issue-534-tail-call-fixes
Issue 534 tail call fixes
2024-04-24 21:54:55 -04:00
Justin Ethier
8e74c0409e Add code change back 2024-04-22 18:32:06 -07:00
Justin Ethier
0a062177f7 Issue #534 - Bug fix for beta exp bug
Perform full scanning of function application list to ensure self-recursive calls are found. This prevents infinite loops in the beta expansion code when compiling simple recursive calls.
2024-04-02 18:54:15 -07:00
Justin Ethier
59096d9dc2
Merge pull request #533 from justinethier/issue-530-2
Resolve Issue 530
2024-03-14 22:43:32 -04:00
Justin Ethier
82b0f9f3e2 Cleanup 2024-03-14 19:42:42 -07:00
Justin Ethier
07e747a08f Revise doc for issue #530 2024-03-14 18:58:29 -07:00
Justin Ethier
0ea2457db6 Issue #530 - Adding more tests 2024-03-14 18:57:09 -07:00
Justin Ethier
92de62ce14 Issue #530 - Document changes 2024-03-13 19:33:00 -07:00
Justin Ethier
29b4c77922 Cleanup 2024-03-13 19:32:15 -07:00
Justin Ethier
6068b30ded Issue #530 - Handle parsing of +i / -i 2024-03-13 19:31:58 -07:00
Justin Ethier
1f76d474f7 Document fixes to sqrt 2024-03-12 19:25:23 -07:00
Justin Ethier
512e962a9b Add more sqrt tests 2024-03-12 19:22:09 -07:00
Justin Ethier
887e1e5aa9 Return fixnum if sqrt(fixnum) is an exact int 2024-03-12 19:06:54 -07:00
Justin Ethier
32af1bcd05 Removing top-level sqrt
This isn't good enough, there are going to be bootstrap compilation problems undoing this...
2024-03-11 19:29:54 -07:00
Justin Ethier
a2568d8589 Allow inline sqrt 2024-03-11 19:29:44 -07:00
Justin Ethier
fa6213b907 Issue #530 - First cut at improving sqrt
Improving sqrt to properly handle negative parameter values
2024-03-11 19:19:12 -07:00