<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/src/lisp.h, branch scratch/ns/performance</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>Unbreak the MinGW build broken by recent changes in callproc.c</title>
<updated>2020-12-24T15:58:51+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2020-12-24T15:58:51+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=527cc64e5d7e8945dfb89bf44d5f4141bd221456'/>
<id>527cc64e5d7e8945dfb89bf44d5f4141bd221456</id>
<content type='text'>
* src/w32.h (set_process_dir):
* src/w32proc.c (set_process_dir): Change the argument to 'const
char *'.
* src/lisp.h (make_environment_block):
* src/callproc.c (make_environment_block): Now returns 'char **'.
(exec_failed) [DOS_NT]: Remove unused function.
* src/callproc.c (child_setup): NEW_ARGV and ENV are now 'char **'.
Making them 'const' breaks the MinGW build and is not needed for
other platforms.
* src/callproc.c (emacs_spawn): ARGV and ENVP arguments are now
'char *', for the same reason.
* src/process.c (create_process): Adapt to above changes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/w32.h (set_process_dir):
* src/w32proc.c (set_process_dir): Change the argument to 'const
char *'.
* src/lisp.h (make_environment_block):
* src/callproc.c (make_environment_block): Now returns 'char **'.
(exec_failed) [DOS_NT]: Remove unused function.
* src/callproc.c (child_setup): NEW_ARGV and ENV are now 'char **'.
Making them 'const' breaks the MinGW build and is not needed for
other platforms.
* src/callproc.c (emacs_spawn): ARGV and ENVP arguments are now
'char *', for the same reason.
* src/process.c (create_process): Adapt to above changes.
</pre>
</div>
</content>
</entry>
<entry>
<title>Centralize subprocess creation in a single function.</title>
<updated>2020-12-24T14:34:23+00:00</updated>
<author>
<name>Philipp Stephani</name>
</author>
<published>2020-12-24T14:27:45+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=bf7041a6f6ea2d57f842b9b2915cc58a90b01406'/>
<id>bf7041a6f6ea2d57f842b9b2915cc58a90b01406</id>
<content type='text'>
Getting the vfork + execve combination right isn't easy, and the code
was partially duplicated between callproc.c and process.c.  Centralize
the spawn operation in a single function that deals with the nasty
details.  Going forward, we should be able to use posix_spawn from
either libc or Gnulib (or CreateProcessW on Windows) in the non-pty
case.

* src/callproc.c (emacs_spawn): New function to start an asynchronous
subprocess.  Merge code from 'call_process' and 'create_process' into
this function.
(call_process): Use new 'emacs_spawn' function.
(child_setup): Make static, since there are no users outside this
compilation unit left.
(CHILD_SETUP_TYPE): Move from header file, since there are no users
outside this compilation unit left.

* src/process.c (create_process): Use new 'emacs_spawn' function.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Getting the vfork + execve combination right isn't easy, and the code
was partially duplicated between callproc.c and process.c.  Centralize
the spawn operation in a single function that deals with the nasty
details.  Going forward, we should be able to use posix_spawn from
either libc or Gnulib (or CreateProcessW on Windows) in the non-pty
case.

* src/callproc.c (emacs_spawn): New function to start an asynchronous
subprocess.  Merge code from 'call_process' and 'create_process' into
this function.
(call_process): Use new 'emacs_spawn' function.
(child_setup): Make static, since there are no users outside this
compilation unit left.
(CHILD_SETUP_TYPE): Move from header file, since there are no users
outside this compilation unit left.

* src/process.c (create_process): Use new 'emacs_spawn' function.
</pre>
</div>
</content>
</entry>
<entry>
<title>Declare argument vector as char *const *.</title>
<updated>2020-12-23T16:40:18+00:00</updated>
<author>
<name>Philipp Stephani</name>
</author>
<published>2020-12-23T16:40:18+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=40bc77d9a6b8d824690fb6ee3003d74951bb3ae5'/>
<id>40bc77d9a6b8d824690fb6ee3003d74951bb3ae5</id>
<content type='text'>
This matches the signature of execve.

* src/callproc.c (child_setup): Declare NEW_ARGV as char *const *.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This matches the signature of execve.

* src/callproc.c (child_setup): Declare NEW_ARGV as char *const *.
</pre>
</div>
</content>
</entry>
<entry>
<title>Pass C string pointer to current directory to 'child_setup'.</title>
<updated>2020-12-23T15:26:57+00:00</updated>
<author>
<name>Philipp Stephani</name>
</author>
<published>2020-12-23T15:26:57+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=bdcea81a2f906be3c573c42276dbfd35ccb432f9'/>
<id>bdcea81a2f906be3c573c42276dbfd35ccb432f9</id>
<content type='text'>
This avoids the impression that 'child_setup' could do anything
Lisp-related.

* src/callproc.c (child_setup): Pass C pointer to current directory
name.
(call_process): Adapt callers.

* src/process.c (create_process): Adapt callers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This avoids the impression that 'child_setup' could do anything
Lisp-related.

* src/callproc.c (child_setup): Pass C pointer to current directory
name.
(call_process): Adapt callers.

* src/process.c (create_process): Adapt callers.
</pre>
</div>
</content>
</entry>
<entry>
<title>Allocate environment block before forking.</title>
<updated>2020-12-23T14:55:23+00:00</updated>
<author>
<name>Philipp Stephani</name>
</author>
<published>2020-12-23T14:55:23+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=95334ee79ab60c0910a5528e586a24d11f91743b'/>
<id>95334ee79ab60c0910a5528e586a24d11f91743b</id>
<content type='text'>
While 'child_setup' carefully avoids calls to async-signal-unsafe
functions like 'malloc', it seems simpler and less brittle to use
normal allocation outside the critical section between 'fork' and
'exec'.

* src/callproc.c (make_environment_block): New function to create the
environment block for subprocesses.  Code largely extracted from
'child_setup' and adapted to use 'xmalloc' instead of 'alloca'.
(child_setup): Remove environment block allocation in favor of
passing the environment block as command-line argument.
(call_process): Adapt to new calling convention.

* src/process.c (create_process): Adapt to new calling convention.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While 'child_setup' carefully avoids calls to async-signal-unsafe
functions like 'malloc', it seems simpler and less brittle to use
normal allocation outside the critical section between 'fork' and
'exec'.

* src/callproc.c (make_environment_block): New function to create the
environment block for subprocesses.  Code largely extracted from
'child_setup' and adapted to use 'xmalloc' instead of 'alloca'.
(child_setup): Remove environment block allocation in favor of
passing the environment block as command-line argument.
(call_process): Adapt to new calling convention.

* src/process.c (create_process): Adapt to new calling convention.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove an unused parameter from 'child_setup' function.</title>
<updated>2020-12-23T10:44:54+00:00</updated>
<author>
<name>Philipp Stephani</name>
</author>
<published>2020-12-23T10:43:37+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=3edc4fd53ff9e1355da2371400aac4d5897ca190'/>
<id>3edc4fd53ff9e1355da2371400aac4d5897ca190</id>
<content type='text'>
* src/callproc.c (child_setup): Remove unused SET_PGRP parameter.

* src/callproc.c (call_process):
* src/process.c (create_process): Fix all callers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/callproc.c (child_setup): Remove unused SET_PGRP parameter.

* src/callproc.c (call_process):
* src/process.c (create_process): Fix all callers.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge from origin/emacs-27</title>
<updated>2020-12-09T16:50:12+00:00</updated>
<author>
<name>Glenn Morris</name>
</author>
<published>2020-12-09T16:50:12+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=3721cc58865673e3dd66a9d7a23d3b629432f077'/>
<id>3721cc58865673e3dd66a9d7a23d3b629432f077</id>
<content type='text'>
32090a3de4 Improve documentation of streams in batch mode
34feded008 Support ks_c_5601-1987 encoding
da00a6f317 Fix Xaw widget text disappearing when built with cairo (bu...
6916e7954a Improve documentation of 'ps-print-color-p'
6663b2f211 ; * lisp/simple.el (move-beginning-of-line): Doc fix.
a4dd03ebe9 ; * src/charset.c (Fmap_charset_chars): Doc fix.
d86cc3ffcb ; * src/chartab.c, src/lisp.h: Fix typos in comments.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
32090a3de4 Improve documentation of streams in batch mode
34feded008 Support ks_c_5601-1987 encoding
da00a6f317 Fix Xaw widget text disappearing when built with cairo (bu...
6916e7954a Improve documentation of 'ps-print-color-p'
6663b2f211 ; * lisp/simple.el (move-beginning-of-line): Doc fix.
a4dd03ebe9 ; * src/charset.c (Fmap_charset_chars): Doc fix.
d86cc3ffcb ; * src/chartab.c, src/lisp.h: Fix typos in comments.
</pre>
</div>
</content>
</entry>
<entry>
<title>* src/alloc.c (Fgarbage_collect_maybe): New function</title>
<updated>2020-12-04T22:21:02+00:00</updated>
<author>
<name>Spencer Baugh</name>
</author>
<published>2020-11-22T05:08:28+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=39915c708435cefd1c3eaddeec54d3b365d36515'/>
<id>39915c708435cefd1c3eaddeec54d3b365d36515</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't abort when terminated by SIGINT in -batch</title>
<updated>2020-12-04T14:47:49+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2020-12-04T14:47:49+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=190a6853708ab22072437f6ebd93beb3ec1a9ce6'/>
<id>190a6853708ab22072437f6ebd93beb3ec1a9ce6</id>
<content type='text'>
* src/xdisp.c (clear_message_stack): New function.
* src/emacs.c (terminate_due_to_signal): Call clear_message_stack
when we are being shut down by SIGINT under -batch.
* src/lisp.h (clear_message_stack): Add prototype.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/xdisp.c (clear_message_stack): New function.
* src/emacs.c (terminate_due_to_signal): Call clear_message_stack
when we are being shut down by SIGINT under -batch.
* src/lisp.h (clear_message_stack): Add prototype.
</pre>
</div>
</content>
</entry>
<entry>
<title>; * src/chartab.c, src/lisp.h: Fix typos in comments.</title>
<updated>2020-12-02T16:07:54+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2020-12-02T16:07:54+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=d86cc3ffcb348e6cf2c01182455387e39e1daaf9'/>
<id>d86cc3ffcb348e6cf2c01182455387e39e1daaf9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
