<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/src/thread.c, branch feature/igc</title>
<subtitle>Emacs is the extensible, customizable, self-documenting real-time display editor. 
</subtitle>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/'/>
<entry>
<title>; * src/thread.c (run_thread): Fix last change.</title>
<updated>2026-02-07T13:53:48+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2026-02-07T13:53:48+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=904159b4d992d8b9946199eca8a06feddd52dacf'/>
<id>904159b4d992d8b9946199eca8a06feddd52dacf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>* src/thread.c (run_thread): Do not igc_xfree handlers on macOS/arm64</title>
<updated>2026-02-07T13:46:11+00:00</updated>
<author>
<name>Gerd Möllmann</name>
</author>
<published>2026-02-07T13:30:18+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=661f4a0906515d2c20ddb6e7497ae0d0a297cb8f'/>
<id>661f4a0906515d2c20ddb6e7497ae0d0a297cb8f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' into feature/igc</title>
<updated>2026-01-02T20:01:55+00:00</updated>
<author>
<name>Helmut Eller</name>
</author>
<published>2026-01-02T20:01:55+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=e049ec683d3e504e2ae36b37500405b37a162786'/>
<id>e049ec683d3e504e2ae36b37500405b37a162786</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>; Add 2026 to copyright years.</title>
<updated>2026-01-01T12:54:34+00:00</updated>
<author>
<name>Sean Whitton</name>
</author>
<published>2026-01-01T12:54:34+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=c31f6adc31d48076c63ad82b83b2970e1b0d7b9b'/>
<id>c31f6adc31d48076c63ad82b83b2970e1b0d7b9b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Also put sys_cond_t variables in ordinary memory</title>
<updated>2025-10-18T13:29:52+00:00</updated>
<author>
<name>Pip Cet</name>
</author>
<published>2025-10-18T13:29:52+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=f42173775dca62fc292d2c549d884f233e2c4210'/>
<id>f42173775dca62fc292d2c549d884f233e2c4210</id>
<content type='text'>
* src/thread.c (lisp_mutex_init) [MPS]: Allocate condition variable.
(lisp_mutex_lock_for_thread):
(lisp_mutex_unlock):
(lisp_mutex_unlock_for_wait): Adjust to pointer type.
(lisp_mutex_destroy) [MPS]: Also free condition variable.
(Fmake_condition_variable) [MPS]: Allocate condition variable.
(condition_wait_callback):
(condition_notify_callback): Adjust to pointer type.
(finalize_one_condvar) [MPS]: Also free condition variable.
* src/thread.h (lisp_mutex_t, struct Lisp_CondVar): Make 'condition'
and 'cond' a pointer or single-element array.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/thread.c (lisp_mutex_init) [MPS]: Allocate condition variable.
(lisp_mutex_lock_for_thread):
(lisp_mutex_unlock):
(lisp_mutex_unlock_for_wait): Adjust to pointer type.
(lisp_mutex_destroy) [MPS]: Also free condition variable.
(Fmake_condition_variable) [MPS]: Allocate condition variable.
(condition_wait_callback):
(condition_notify_callback): Adjust to pointer type.
(finalize_one_condvar) [MPS]: Also free condition variable.
* src/thread.h (lisp_mutex_t, struct Lisp_CondVar): Make 'condition'
and 'cond' a pointer or single-element array.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix crashes when threads are put behind a barrier</title>
<updated>2025-10-18T13:12:13+00:00</updated>
<author>
<name>Pip Cet</name>
</author>
<published>2025-10-18T13:12:13+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=7e0b82481aabbb46208b562bd1ecfa7e48612ce8'/>
<id>7e0b82481aabbb46208b562bd1ecfa7e48612ce8</id>
<content type='text'>
On GNU/Linux, glibc expects condvars and mutexes to be in memory which
is always accessible.

* src/thread.c (main_thread_condvar): New variable.
(main_thread): Add reference to it.
(run_thread): Adjust.
(finalize_one_thread) [MPS]: Free 'thread_condvar'.
(Fmake_thread) [MPS]: Allocate 'thread_condvar'.
(thread_join_callback):
(init_threads): Adjust.
* src/thread.h (struct thread_state): Turn 'thread_condvar' into a
pointer or single-element array.
* test/src/igc-tests.el (igc-test--list-length): New variable.
(igc-test--trigger-incremental-gc): New function.
(igc-test-thread-incremental-gc): New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On GNU/Linux, glibc expects condvars and mutexes to be in memory which
is always accessible.

* src/thread.c (main_thread_condvar): New variable.
(main_thread): Add reference to it.
(run_thread): Adjust.
(finalize_one_thread) [MPS]: Free 'thread_condvar'.
(Fmake_thread) [MPS]: Allocate 'thread_condvar'.
(thread_join_callback):
(init_threads): Adjust.
* src/thread.h (struct thread_state): Turn 'thread_condvar' into a
pointer or single-element array.
* test/src/igc-tests.el (igc-test--list-length): New variable.
(igc-test--trigger-incremental-gc): New function.
(igc-test-thread-incremental-gc): New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>[MPS] Use xmalloc to allocate 'bc_thread_state' struct</title>
<updated>2025-10-13T18:25:19+00:00</updated>
<author>
<name>Pip Cet</name>
</author>
<published>2025-10-13T18:25:19+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=c6475fa2f20e92a32453272a547367232a1e3e83'/>
<id>c6475fa2f20e92a32453272a547367232a1e3e83</id>
<content type='text'>
This struct cannot live in MPS-managed memory because it's required
for scanning the bytecode stack.

* src/bytecode.c (free_bc_thread) [MPS]: Free bytecode structure.
(Finternal_stack_stats, exec_byte_code):
* src/igc.c (scan_bc): Adjust.
(root_create_bc): Save 'bc' pointer.
* src/lisp.h (get_act_rec, set_act_rec):
* src/thread.c (mark_one_thread, finalize_one_thread): Adjust.
(Fmake_thread) [MPS]:
(init_threads) [MPS]: Allocate bytecode structure.
* src/thread.h (struct thread_state): Turn 'bc' member into a
pointer (MPS) or single-member array.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This struct cannot live in MPS-managed memory because it's required
for scanning the bytecode stack.

* src/bytecode.c (free_bc_thread) [MPS]: Free bytecode structure.
(Finternal_stack_stats, exec_byte_code):
* src/igc.c (scan_bc): Adjust.
(root_create_bc): Save 'bc' pointer.
* src/lisp.h (get_act_rec, set_act_rec):
* src/thread.c (mark_one_thread, finalize_one_thread): Adjust.
(Fmake_thread) [MPS]:
(init_threads) [MPS]: Allocate bytecode structure.
* src/thread.h (struct thread_state): Turn 'bc' member into a
pointer (MPS) or single-member array.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Expand main_thread_getcjmp to word bounds (bug#79598)"</title>
<updated>2025-10-11T18:12:40+00:00</updated>
<author>
<name>Helmut Eller</name>
</author>
<published>2025-10-11T18:12:40+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=5787a817a6f5366d01c17aa8ddb38ec88b3ce8f4'/>
<id>5787a817a6f5366d01c17aa8ddb38ec88b3ce8f4</id>
<content type='text'>
This reverts commit 5fdabc0e7c8629f16a7726e8a43ab2344cec524d.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 5fdabc0e7c8629f16a7726e8a43ab2344cec524d.
</pre>
</div>
</content>
</entry>
<entry>
<title>Expand main_thread_getcjmp to word bounds (bug#79598)</title>
<updated>2025-10-09T15:23:08+00:00</updated>
<author>
<name>Helmut Eller</name>
</author>
<published>2025-10-09T15:23:08+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=5fdabc0e7c8629f16a7726e8a43ab2344cec524d'/>
<id>5fdabc0e7c8629f16a7726e8a43ab2344cec524d</id>
<content type='text'>
On MacOS/x86_64, sizeof (sys_jmp_buf) == 148.  We can't create a root
for this size because MPS requires word aligned sizes.

* src/thread.c (main_thread_getcjmp): Use GCALIGNED_STRUCT attribute.
* src/igc.c (root_create_main_thread): Round the size of the jumpbuf up
to GCALIGNMENT.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On MacOS/x86_64, sizeof (sys_jmp_buf) == 148.  We can't create a root
for this size because MPS requires word aligned sizes.

* src/thread.c (main_thread_getcjmp): Use GCALIGNED_STRUCT attribute.
* src/igc.c (root_create_main_thread): Round the size of the jumpbuf up
to GCALIGNMENT.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' into feature/igc</title>
<updated>2025-08-24T10:15:10+00:00</updated>
<author>
<name>Gerd Möllmann</name>
</author>
<published>2025-08-24T10:15:10+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=7d7ecea0eb3aaaee30aad76689d3b42ee25b5082'/>
<id>7d7ecea0eb3aaaee30aad76689d3b42ee25b5082</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
