<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/src, branch scratch/exec-byte-code</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>Disable -Wclobbered around exec_byte_code (bug#79610)</title>
<updated>2025-10-17T11:07:45+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2025-10-17T11:03:13+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=b66680ad32e280b3c4286a9abfef8df5ff566ed0'/>
<id>b66680ad32e280b3c4286a9abfef8df5ff566ed0</id>
<content type='text'>
* src/bytecode.c (exec_byte_code):
The old hack for working around spurious -Wclobbered warnings from GCC
no longer suffices; disable the warning locally.
This also makes the code slightly smaller and faster.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/bytecode.c (exec_byte_code):
The old hack for working around spurious -Wclobbered warnings from GCC
no longer suffices; disable the warning locally.
This also makes the code slightly smaller and faster.
</pre>
</div>
</content>
</entry>
<entry>
<title>; exec_byte_code: refactor branch case</title>
<updated>2025-10-16T17:27:18+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2025-10-16T15:01:24+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=37ff7a05f3e5af4d570db1b3ed4d4aa2190f70f5'/>
<id>37ff7a05f3e5af4d570db1b3ed4d4aa2190f70f5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>exec_byte_code: use fixed registers for top and pc (bug#79610)</title>
<updated>2025-10-16T17:27:17+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2025-10-08T16:03:08+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=f4e3fce9ea80973269d24b7179ae2ad2cbff83d0'/>
<id>f4e3fce9ea80973269d24b7179ae2ad2cbff83d0</id>
<content type='text'>
GCC seems to have difficulty allocating important global interpreter
variables in registers; telling it which ones to use for 'top' and 'pc'
makes a big difference and seems to ease pressure enough for it to
deal with other variables as well.

We do it for AMD64 and ARM64.  Clang doesn't seem to need these directives.
It does result in -Wclobbered warnings that seem difficult to silence.

* src/bytecode.c (BC_REG_TOP, BC_REG_PC): New.
(exec_byte_code): Use them.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
GCC seems to have difficulty allocating important global interpreter
variables in registers; telling it which ones to use for 'top' and 'pc'
makes a big difference and seems to ease pressure enough for it to
deal with other variables as well.

We do it for AMD64 and ARM64.  Clang doesn't seem to need these directives.
It does result in -Wclobbered warnings that seem difficult to silence.

* src/bytecode.c (BC_REG_TOP, BC_REG_PC): New.
(exec_byte_code): Use them.
</pre>
</div>
</content>
</entry>
<entry>
<title>; exec_byte_code: don't re-use op in FETCH2</title>
<updated>2025-10-16T17:27:17+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2025-09-23T13:01:20+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=8d6d4a9856f010519abeed503249e172625e9da5'/>
<id>8d6d4a9856f010519abeed503249e172625e9da5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>exec_byte_code: reduce use of semi-global 'op' (bug#79610)</title>
<updated>2025-10-16T17:27:17+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2025-09-22T16:33:01+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=58a5a1f0988790b94bf08cfa73864427a698ef64'/>
<id>58a5a1f0988790b94bf08cfa73864427a698ef64</id>
<content type='text'>
* src/bytecode.c (exec_byte_code):
Re-type op from int to ptrdiff_t, which avoids some useless conversions.
Reduce its use by using local variables for intra-block use,
and another variable (arg) where it doesn't need to be alive across
instruction dispatch.  We also eliminate it where performance doesn't
matter by re-fetching it from the instruction stream.

All this should help the register allocator.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/bytecode.c (exec_byte_code):
Re-type op from int to ptrdiff_t, which avoids some useless conversions.
Reduce its use by using local variables for intra-block use,
and another variable (arg) where it doesn't need to be alive across
instruction dispatch.  We also eliminate it where performance doesn't
matter by re-fetching it from the instruction stream.

All this should help the register allocator.
</pre>
</div>
</content>
</entry>
<entry>
<title>Return case common to all completions in try-completion</title>
<updated>2025-10-16T17:18:23+00:00</updated>
<author>
<name>Spencer Baugh</name>
</author>
<published>2025-09-03T12:48:05+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=17ac50ea9e105527753722b508ca44c58cbc892f'/>
<id>17ac50ea9e105527753722b508ca44c58cbc892f</id>
<content type='text'>
When completion-ignore-case is non-nil, if all completions share
a common prefix ignoring case, try-completion has always
returned that.  Now, if all completions also share a common
prefix including case, try-completion includes that common
prefix in its return value (bug#79377).

* lisp/minibuffer.el (completion-pcm--merge-completions): Always
use return value from try-completion, which may change case.
* src/minibuf.c (Ftry_completion): Return the common prefix
which changes case.
* test/lisp/minibuffer-tests.el (completion-pcm-bug4219)
(completion-substring-test-5): New tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When completion-ignore-case is non-nil, if all completions share
a common prefix ignoring case, try-completion has always
returned that.  Now, if all completions also share a common
prefix including case, try-completion includes that common
prefix in its return value (bug#79377).

* lisp/minibuffer.el (completion-pcm--merge-completions): Always
use return value from try-completion, which may change case.
* src/minibuf.c (Ftry_completion): Return the common prefix
which changes case.
* test/lisp/minibuffer-tests.el (completion-pcm-bug4219)
(completion-substring-test-5): New tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix MS-Windows tray notifications from different Emacs frames</title>
<updated>2025-10-11T11:00:09+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2025-10-11T11:00:09+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=dcea973c04bc9f1078444dc1faf9491408832423'/>
<id>dcea973c04bc9f1078444dc1faf9491408832423</id>
<content type='text'>
* src/w32fns.c (EMACS_TRAY_NOTIFICATION_ID_INIT): Rename from
EMACS_TRAY_NOTIFICATION_ID; all users adjusted.
(last_tray_notification_id): New static variable.
(add_tray_notification): Advance 'last_tray_notification_id' for
each new notification; wrap around to the fixed initial value when
reached the maximum.  This allows Lisp programs track notifications
and remove them from the same frame from which they were created.
(Fw32_notification_notify, Fw32_notification_close): Doc fixes.

* doc/lispref/os.texi (Desktop Notifications): Update the
documentation of 'w32-notification-notify' and
'w32-notification-close'.

Bug#79400
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/w32fns.c (EMACS_TRAY_NOTIFICATION_ID_INIT): Rename from
EMACS_TRAY_NOTIFICATION_ID; all users adjusted.
(last_tray_notification_id): New static variable.
(add_tray_notification): Advance 'last_tray_notification_id' for
each new notification; wrap around to the fixed initial value when
reached the maximum.  This allows Lisp programs track notifications
and remove them from the same frame from which they were created.
(Fw32_notification_notify, Fw32_notification_close): Doc fixes.

* doc/lispref/os.texi (Desktop Notifications): Update the
documentation of 'w32-notification-notify' and
'w32-notification-close'.

Bug#79400
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge from origin/emacs-30</title>
<updated>2025-10-11T10:02:56+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2025-10-11T10:02:56+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=c723760f281036f5ae9fe651648ffc707340616d'/>
<id>c723760f281036f5ae9fe651648ffc707340616d</id>
<content type='text'>
1895ba3ba3b ; Document %i format
85db0ac0d6e ; * doc/lispref/nonascii.texi (Explicit Encoding): Fix a ...
c119a3600ed ; * doc/lispref/tips.texi (Documentation Tips): Document ...

Also fix trailing whitespace in test files.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
1895ba3ba3b ; Document %i format
85db0ac0d6e ; * doc/lispref/nonascii.texi (Explicit Encoding): Fix a ...
c119a3600ed ; * doc/lispref/tips.texi (Documentation Tips): Document ...

Also fix trailing whitespace in test files.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix last change</title>
<updated>2025-10-11T09:22:58+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2025-10-11T09:22:58+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=f8b4ce68432d513526a372b726afbdeb7310e407'/>
<id>f8b4ce68432d513526a372b726afbdeb7310e407</id>
<content type='text'>
At least on MS-Windows, the last change caused the
process-tests/fd-setsize-no-crash/make-process test to hang.
* src/process.c (wait_reading_process_output) [WINDOWSNT]: Do
not stop monitoring the process descriptor when zero bytes are
read.  The EOF indication from subprocesses on MS-Windows is
detected via an error condition (see w32.c), while zero-size
reads are not to be taken as such.  (Bug#79436)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
At least on MS-Windows, the last change caused the
process-tests/fd-setsize-no-crash/make-process test to hang.
* src/process.c (wait_reading_process_output) [WINDOWSNT]: Do
not stop monitoring the process descriptor when zero bytes are
read.  The EOF indication from subprocesses on MS-Windows is
detected via an error condition (see w32.c), while zero-size
reads are not to be taken as such.  (Bug#79436)
</pre>
</div>
</content>
</entry>
<entry>
<title>Stop monitoring fds after receiving EOF</title>
<updated>2025-10-11T09:22:17+00:00</updated>
<author>
<name>Spencer Baugh</name>
</author>
<published>2025-09-30T18:47:51+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=c172b6dded4f92f47f035b724605ecbb0e19970c'/>
<id>c172b6dded4f92f47f035b724605ecbb0e19970c</id>
<content type='text'>
When a subprocess closes its stdout/stderr pipe, that causes
pselect to always indicate that fd is readable, and read to
always return with EOF on that fd.  Therefore when we receive an
EOF we need to stop monitoring the fd.  Otherwise Emacs will
spin at 100% CPU, repeatedly reading that same EOF off the fd.

* src/process.c (wait_reading_process_output): When
'read_process_output' returns EOF indication, stop monitoring
the descriptor.  (Bug#79436)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a subprocess closes its stdout/stderr pipe, that causes
pselect to always indicate that fd is readable, and read to
always return with EOF on that fd.  Therefore when we receive an
EOF we need to stop monitoring the fd.  Otherwise Emacs will
spin at 100% CPU, repeatedly reading that same EOF off the fd.

* src/process.c (wait_reading_process_output): When
'read_process_output' returns EOF indication, stop monitoring
the descriptor.  (Bug#79436)
</pre>
</div>
</content>
</entry>
</feed>
