Commit graph

5976 commits

Author SHA1 Message Date
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
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
Justin Ethier
37b39693ed Bump to 0.37.0 2024-03-05 17:54:06 -08:00
Justin Ethier
eb53b0fb16 Document PR fix 2024-03-05 17:53:43 -08:00
Justin Ethier
16a4323d4a Merge branch 'master' of github.com:justinethier/cyclone 2024-03-05 17:52:53 -08:00
Justin Ethier
706f7ef2a8
Merge pull request #528 from yorickhardy/master
Define *ai-v4mapped* to zero on platforms where AI_V4MAPPED is undefined
2024-03-05 20:51:54 -05:00
Justin Ethier
a53f42d082 Merge branch 'master' of github.com:justinethier/cyclone 2024-03-05 17:48:26 -08:00
Yorick Hardy
bb3df95d13 Define *ai-v4mapped* to zero on platforms where AI_V4MAPPED is undefined.
This change defines *ai-v4mapped* to zero when AI_V4MAPPED is undefined
and similarly for *ai-all* (similar to other patches). This allows
(srfi 106) to be available on NetBSD and other platforms without
AI_V4MAPPED and is the recommended behaviour by the author of SRFI-106:

https://srfi-email.schemers.org/srfi-106/msg/2762553/
2024-03-05 22:18:44 +02:00
Justin Ethier
a6aa16de52
Added WASM release instructions 2024-02-19 22:44:02 -05:00