<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/test/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>Allow creating a pipe process without a buffer</title>
<updated>2025-10-11T09:14:10+00:00</updated>
<author>
<name>Spencer Baugh</name>
</author>
<published>2025-10-07T18:41:20+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=443af6fe1d0161142af0bc4578efd0653c3f1be9'/>
<id>443af6fe1d0161142af0bc4578efd0653c3f1be9</id>
<content type='text'>
Previously, even passing :buffer nil to make-pipe-process would
create a buffer.  Now, if you explicitly call (make-pipe-process
:buffer nil), it will create a pipe process without a buffer,
just like all the other process creation functions.

* src/process.c (Fmake_pipe_process): Check for explicit :buffer
nil and don't make a buffer. (bug#79596)
* doc/lispref/processes.texi (Asynchronous Processes): Update.
* test/src/process-tests.el
(process-test-make-pipe-process-no-buffer): Add test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, even passing :buffer nil to make-pipe-process would
create a buffer.  Now, if you explicitly call (make-pipe-process
:buffer nil), it will create a pipe process without a buffer,
just like all the other process creation functions.

* src/process.c (Fmake_pipe_process): Check for explicit :buffer
nil and don't make a buffer. (bug#79596)
* doc/lispref/processes.texi (Asynchronous Processes): Update.
* test/src/process-tests.el
(process-test-make-pipe-process-no-buffer): Add test.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix failed tests on emba</title>
<updated>2025-09-18T12:56:05+00:00</updated>
<author>
<name>Michael Albinus</name>
</author>
<published>2025-09-18T12:56:05+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=979ddc06019cce249a9ada359b85f3cd4b6a0149'/>
<id>979ddc06019cce249a9ada359b85f3cd4b6a0149</id>
<content type='text'>
* test/lisp/autorevert-tests.el (auto-revert-test05-global-notify)
(auto-revert-test07-auto-revert-several-buffers): Adapt tests.

* test/src/comp-resources/comp-test-funcs.el (foo): Define error symbol.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/lisp/autorevert-tests.el (auto-revert-test05-global-notify)
(auto-revert-test07-auto-revert-several-buffers): Adapt tests.

* test/src/comp-resources/comp-test-funcs.el (foo): Define error symbol.
</pre>
</div>
</content>
</entry>
<entry>
<title>; even less test log spam from load</title>
<updated>2025-09-12T08:41:43+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2025-09-11T20:21:57+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=464216ca737a3b98175b02244251878508e1ca15'/>
<id>464216ca737a3b98175b02244251878508e1ca15</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Ignore keymaps at point for positions outside the buffer</title>
<updated>2025-09-09T22:02:24+00:00</updated>
<author>
<name>Spencer Baugh</name>
</author>
<published>2025-08-28T18:13:24+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=0e9cee2bf5d97a23c47d99ffc47396dcd3bd50ee'/>
<id>0e9cee2bf5d97a23c47d99ffc47396dcd3bd50ee</id>
<content type='text'>
Correct a few edge cases where we used the keymaps at point when
looking up keymaps for an event position which is outside the
current buffer.  Namely:

- Clicking on a part of the mode line which is after the end of
  mode-line-format produces an event with non-nil posn-area but
  nil posn-string.

- Even if posn-string doesn't have a local keymap, we should
  still ignore the keymaps at point if posn-string is non-nil.

* src/keymap.c (Fcurrent_active_maps): Ignore keymaps at point
for more positions outside the buffer.  (bug#76620)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Correct a few edge cases where we used the keymaps at point when
looking up keymaps for an event position which is outside the
current buffer.  Namely:

- Clicking on a part of the mode line which is after the end of
  mode-line-format produces an event with non-nil posn-area but
  nil posn-string.

- Even if posn-string doesn't have a local keymap, we should
  still ignore the keymaps at point if posn-string is non-nil.

* src/keymap.c (Fcurrent_active_maps): Ignore keymaps at point
for more positions outside the buffer.  (bug#76620)
</pre>
</div>
</content>
</entry>
<entry>
<title>Disallow string data resizing (bug#79784)</title>
<updated>2025-08-24T08:28:27+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2024-05-02T16:05:21+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=308e3ab1dbd9633b843541af55d77c82b725df02'/>
<id>308e3ab1dbd9633b843541af55d77c82b725df02</id>
<content type='text'>
Only allow string mutation that is certain not to require string data to
be resized and reallocated: writing bytes into a unibyte string, and
changing ASCII to ASCII in a multibyte string.

This ensures that mutation will never transform a unibyte string to
multibyte, that the size of a string in bytes never changes, and that
the byte offsets of characters remain the same.  Most importantly, it
removes a long-standing obstacle to reform of string representation and
allow for future performance improvements.

* src/data.c (Faset): Disallow resizing string mutation.
* src/fns.c (clear_string_char_byte_cache):
* src/alloc.c (resize_string_data):  Remove.
* test/src/data-tests.el (data-aset-string): New test.
* test/lisp/subr-tests.el (subr--subst-char-in-string):
Skip error cases.
* test/src/alloc-tests.el (aset-nbytes-change):
Remove test that is no longer relevant.
* doc/lispref/strings.texi (Modifying Strings):
* doc/lispref/sequences.texi (Array Functions):
* doc/lispref/text.texi (Substitution):  Update manual.
* etc/NEWS: Announce.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Only allow string mutation that is certain not to require string data to
be resized and reallocated: writing bytes into a unibyte string, and
changing ASCII to ASCII in a multibyte string.

This ensures that mutation will never transform a unibyte string to
multibyte, that the size of a string in bytes never changes, and that
the byte offsets of characters remain the same.  Most importantly, it
removes a long-standing obstacle to reform of string representation and
allow for future performance improvements.

* src/data.c (Faset): Disallow resizing string mutation.
* src/fns.c (clear_string_char_byte_cache):
* src/alloc.c (resize_string_data):  Remove.
* test/src/data-tests.el (data-aset-string): New test.
* test/lisp/subr-tests.el (subr--subst-char-in-string):
Skip error cases.
* test/src/alloc-tests.el (aset-nbytes-change):
Remove test that is no longer relevant.
* doc/lispref/strings.texi (Modifying Strings):
* doc/lispref/sequences.texi (Array Functions):
* doc/lispref/text.texi (Substitution):  Update manual.
* etc/NEWS: Announce.
</pre>
</div>
</content>
</entry>
<entry>
<title>Speed up JSON parsing by not maintaining line and column (bug#79192)</title>
<updated>2025-08-21T14:42:45+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2025-08-06T13:29:58+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=c04553f655a05810f02dd77dac4f544018158e94'/>
<id>c04553f655a05810f02dd77dac4f544018158e94</id>
<content type='text'>
We use the current parsing position instead.  The line and column in the
error weren't used (nor very accurate to begin with) and the user can
easily compute them when needed.  The line number calculation is kept
just in case but deprecated, for removal in Emacs 32.

* src/json.c (struct json_parser, json_parser_init): Update parser state.
(json_signal_error): New position computation.
(json_skip_whitespace_internal): Remove.
(is_json_whitespace): New.
(json_skip_whitespace, json_skip_whitespace_if_possible)
(json_parse_unicode, json_parse_string, json_parse_number)
(json_parse_value): Simplify and rewrite for efficiency.
(count_chars, count_newlines)
(string_byte_to_pos, string_byte_to_line)
(buffer_byte_to_pos, buffer_byte_to_line): New.
(Fjson_parse_string, Fjson_parse_buffer): Adapt to new parser state.
* test/src/json-tests.el (json-tests--parse-string-error-pos)
(json-tests--parse-buffer-error-pos, json-parse-error-position): New.
* etc/NEWS: Note deprecation of line and column.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We use the current parsing position instead.  The line and column in the
error weren't used (nor very accurate to begin with) and the user can
easily compute them when needed.  The line number calculation is kept
just in case but deprecated, for removal in Emacs 32.

* src/json.c (struct json_parser, json_parser_init): Update parser state.
(json_signal_error): New position computation.
(json_skip_whitespace_internal): Remove.
(is_json_whitespace): New.
(json_skip_whitespace, json_skip_whitespace_if_possible)
(json_parse_unicode, json_parse_string, json_parse_number)
(json_parse_value): Simplify and rewrite for efficiency.
(count_chars, count_newlines)
(string_byte_to_pos, string_byte_to_line)
(buffer_byte_to_pos, buffer_byte_to_line): New.
(Fjson_parse_string, Fjson_parse_buffer): Adapt to new parser state.
* test/src/json-tests.el (json-tests--parse-string-error-pos)
(json-tests--parse-buffer-error-pos, json-parse-error-position): New.
* etc/NEWS: Note deprecation of line and column.
</pre>
</div>
</content>
</entry>
<entry>
<title>; Stabilize a Windows-specific process-test</title>
<updated>2025-08-16T10:11:19+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2025-08-16T10:11:19+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=9985e71eb79624a0722b00bb2108d90b6e7ab50e'/>
<id>9985e71eb79624a0722b00bb2108d90b6e7ab50e</id>
<content type='text'>
* test/src/process-tests.el (process-sentinel-interrupt-event):
Improve stability of results, and show all of the results.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/src/process-tests.el (process-sentinel-interrupt-event):
Improve stability of results, and show all of the results.
</pre>
</div>
</content>
</entry>
<entry>
<title>; Skip a process-test that is unreliable on MS-Windows</title>
<updated>2025-08-16T09:04:59+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2025-08-16T09:04:59+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=406140df33f9da3ac592a9a1d214d9c0bbce08c1'/>
<id>406140df33f9da3ac592a9a1d214d9c0bbce08c1</id>
<content type='text'>
* test/src/process-tests.el
(process-tests/multiple-threads-waiting): Skip on MS-Windows.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/src/process-tests.el
(process-tests/multiple-threads-waiting): Skip on MS-Windows.
</pre>
</div>
</content>
</entry>
<entry>
<title>; Fix thread-tests</title>
<updated>2025-08-10T04:40:58+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2025-08-10T04:40:58+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=45d4b0a97c23304495a4769a4458141566b9a2eb'/>
<id>45d4b0a97c23304495a4769a4458141566b9a2eb</id>
<content type='text'>
* test/src/thread-tests.el (make-thread): Fix declaration.
(thread-set-buffer-disposition, thread-buffer-disposition):
Declare.  (Bug#76969)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/src/thread-tests.el (make-thread): Fix declaration.
(thread-set-buffer-disposition, thread-buffer-disposition):
Declare.  (Bug#76969)
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow thread's buffer to be killed, by default</title>
<updated>2025-08-09T19:40:07+00:00</updated>
<author>
<name>Dmitry Gutov</name>
</author>
<published>2025-08-09T19:40:07+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=07eb39f1132ceb15e80e7912445890faa8f5b78c'/>
<id>07eb39f1132ceb15e80e7912445890faa8f5b78c</id>
<content type='text'>
* src/thread.c (Fmake_thread): Add new argument (bug#76969).
(thread_set_error): New function, extracted from thread-signal.
(Fthread_buffer_disposition): Add getter.
(Fthread_set_buffer_disposition): And setter.
(thread_check_current_buffer): Check the values of threads'
buffer_disposition.
(thread_all_before_buffer_killed): New function.
(init_threads): Set buffer_disposition to nil for the main thread.
(syms_of_threads): Add new symbols and define the error.

* src/thread.h (thread_state): New field buffer_disposition.
(thread_all_before_buffer_killed): Declare.

* src/buffer.c (Fkill_buffer): Call thread_check_current_buffer
one more time after all hooks and after that call
thread_all_before_buffer_killed.

* src/comp.c (ABI_VERSION): Increase the value.

* test/src/thread-tests.el (thread-buffer-disposition-t)
(thread-buffer-disposition-nil)
(thread-buffer-disposition-silently)
(thread-set-buffer-disposition)
(thread-set-buffer-disposition-main-thread): New tests.

* doc/lispref/threads.texi (Basic Thread Functions): Document
buffer-disposition in make-thread and its getter and setter.

* etc/NEWS: Add entry.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/thread.c (Fmake_thread): Add new argument (bug#76969).
(thread_set_error): New function, extracted from thread-signal.
(Fthread_buffer_disposition): Add getter.
(Fthread_set_buffer_disposition): And setter.
(thread_check_current_buffer): Check the values of threads'
buffer_disposition.
(thread_all_before_buffer_killed): New function.
(init_threads): Set buffer_disposition to nil for the main thread.
(syms_of_threads): Add new symbols and define the error.

* src/thread.h (thread_state): New field buffer_disposition.
(thread_all_before_buffer_killed): Declare.

* src/buffer.c (Fkill_buffer): Call thread_check_current_buffer
one more time after all hooks and after that call
thread_all_before_buffer_killed.

* src/comp.c (ABI_VERSION): Increase the value.

* test/src/thread-tests.el (thread-buffer-disposition-t)
(thread-buffer-disposition-nil)
(thread-buffer-disposition-silently)
(thread-set-buffer-disposition)
(thread-set-buffer-disposition-main-thread): New tests.

* doc/lispref/threads.texi (Basic Thread Functions): Document
buffer-disposition in make-thread and its getter and setter.

* etc/NEWS: Add entry.
</pre>
</div>
</content>
</entry>
</feed>
