<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/test/src, branch scratch/mps-import2</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>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>
<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>
<entry>
<title>Fix some tests on OpenBSD</title>
<updated>2025-08-07T14:43:58+00:00</updated>
<author>
<name>Manuel Giraud</name>
</author>
<published>2025-08-07T13:00:58+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=42b990cd201f078390525303a5bb7c526ae84d46'/>
<id>42b990cd201f078390525303a5bb7c526ae84d46</id>
<content type='text'>
* test/lisp/eshell/em-script-tests.el
(em-script-test/batch-file/shebang): "env -S" is not supported.
* test/src/fns-tests.el (fns-tests-random): 'random' is
non-deterministic on OpenBSD.  (Bug#79190)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/lisp/eshell/em-script-tests.el
(em-script-test/batch-file/shebang): "env -S" is not supported.
* test/src/fns-tests.el (fns-tests-random): 'random' is
non-deterministic on OpenBSD.  (Bug#79190)
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' into feature/igc</title>
<updated>2025-07-31T07:42:08+00:00</updated>
<author>
<name>Gerd Möllmann</name>
</author>
<published>2025-07-31T07:42:08+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=a0757e0ac05e6277d534c94792c1e5c2c3434399'/>
<id>a0757e0ac05e6277d534c94792c1e5c2c3434399</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move keyboard input functions from lread.c to keyboard.c</title>
<updated>2025-07-30T09:04:11+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2025-07-29T14:29:43+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=2d18878b962e3591fe5052ede88e520f9b861dda'/>
<id>2d18878b962e3591fe5052ede88e520f9b861dda</id>
<content type='text'>
These have nothing to do with the Lisp reader at all.

Suggested by Lynn Winebarger (bug#79035).

* src/lread.c (read_filtered_event, Fread_char, Fread_event)
(Fread_char_exclusive, Qascii_character): Move...
* src/keyboard.c: ...here.
* test/src/lread-tests.el (test-inhibit-interaction): Move...
* test/src/keyboard-tests.el (keyboard-inhibit-interaction): ...here.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These have nothing to do with the Lisp reader at all.

Suggested by Lynn Winebarger (bug#79035).

* src/lread.c (read_filtered_event, Fread_char, Fread_event)
(Fread_char_exclusive, Qascii_character): Move...
* src/keyboard.c: ...here.
* test/src/lread-tests.el (test-inhibit-interaction): Move...
* test/src/keyboard-tests.el (keyboard-inhibit-interaction): ...here.
</pre>
</div>
</content>
</entry>
</feed>
