[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master d27d9a43d4: Update some commentary for C23
From: |
Paul Eggert |
Subject: |
master d27d9a43d4: Update some commentary for C23 |
Date: |
Sat, 4 Feb 2023 18:58:49 -0500 (EST) |
branch: master
commit d27d9a43d4d1b3f8a213cb739f4d27793158a050
Author: Paul Eggert <eggert@cs.ucla.edu>
Commit: Paul Eggert <eggert@cs.ucla.edu>
Update some commentary for C23
---
doc/lispref/internals.texi | 21 ++++++++++++---------
src/floatfns.c | 7 +++++--
src/lisp.h | 7 ++++---
src/xdisp.c | 2 +-
4 files changed, 22 insertions(+), 15 deletions(-)
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index e1a4613875..deb1021283 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -732,14 +732,15 @@ Emacs session.
@section C Dialect
@cindex C programming language
-The C part of Emacs is portable to C99 or later: C11-specific features such
-as @samp{<stdalign.h>} and @samp{_Noreturn} are not used without a check,
+The C part of Emacs is portable to C99 or later: later C features such
+as @samp{<stdckdint.h>} and @samp{[[noreturn]]} are not used without a check,
typically at configuration time, and the Emacs build procedure
-provides a substitute implementation if necessary. Some C11 features,
+provides a substitute implementation if necessary. Some later features,
such as anonymous structures and unions, are too difficult to emulate,
so they are avoided entirely.
-At some point in the future the base C dialect will no doubt change to C11.
+At some point in the future the base C dialect will no doubt change to
+something later than C99.
@node Writing Emacs Primitives
@section Writing Emacs Primitives
@@ -894,15 +895,17 @@ Currently, only the following attributes are recognized:
@table @code
@item noreturn
Declares the C function as one that never returns. This corresponds
-to the C11 keyword @code{_Noreturn} and to @w{@code{__attribute__
-((__noreturn__))}} attribute of GCC (@pxref{Function Attributes,,,
-gcc, Using the GNU Compiler Collection}).
+to C23's @code{[[noreturn]]}, to C11's @code{_Noreturn}, and to GCC's
+@w{@code{__attribute__ ((__noreturn__))}} (@pxref{Function
+Attributes,,, gcc, Using the GNU Compiler Collection}). (Internally,
+Emacs's own C code uses @code{_Noreturn} as it can be defined as a
+macro on C platforms that do not support it.)
@item const
Declares that the function does not examine any values except its
arguments, and has no effects except the return value. This
-corresponds to @w{@code{__attribute__ ((__const__))}} attribute of
-GCC.
+corresponds to C23's @code{[[unsequenced]]} and to GCC's
+@w{@code{__attribute__ ((__const__))}}.
@item noinline
This corresponds to @w{@code{__attribute__ ((__noinline__))}}
diff --git a/src/floatfns.c b/src/floatfns.c
index 1d891ef3ce..13f0ca3e12 100644
--- a/src/floatfns.c
+++ b/src/floatfns.c
@@ -27,19 +27,22 @@ along with GNU Emacs. If not, see
<https://www.gnu.org/licenses/>. */
frexp, ldexp, log, log10 [via (log X 10)], *modf, pow, sin, *sinh,
sqrt, tan, *tanh.
- C99 and C11 require the following math.h functions in addition to
+ C99, C11 and C17 require the following math.h functions in addition to
the C89 functions. Of these, Emacs currently exports only the
starred ones to Lisp, since we haven't found a use for the others.
Also, it uses the ones marked "+" internally:
acosh, atanh, cbrt, copysign (implemented by signbit), erf, erfc,
exp2, expm1, fdim, fma, fmax, fmin, fpclassify, hypot, +ilogb,
- isfinite, isgreater, isgreaterequal, isinf, isless, islessequal,
+ +isfinite, isgreater, isgreaterequal, +isinf, isless, islessequal,
islessgreater, *isnan, isnormal, isunordered, lgamma, log1p, *log2
[via (log X 2)], logb (approximately; implemented by frexp),
+lrint/llrint, +lround/llround, nan, nearbyint, nextafter,
nexttoward, remainder, remquo, *rint, round, scalbln, +scalbn,
+signbit, tgamma, *trunc.
+ C23 requires many more math.h functions. Emacs does not yet export
+ or use them.
+
The C standard also requires functions for float and long double
that are not listed above. Of these functions, Emacs uses only the
following internally: fabsf, powf, sprintf.
diff --git a/src/lisp.h b/src/lisp.h
index 196615effd..0bc400ba78 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -272,7 +272,7 @@ DEFINE_GDB_SYMBOL_END (VALMASK)
emacs_align_type union in alloc.c.
Although these macros are reasonably portable, they are not
- guaranteed on non-GCC platforms, as C11 does not require support
+ guaranteed on non-GCC platforms, as the C standard does not require support
for alignment to GCALIGNMENT and older compilers may ignore
alignment requests. For any type T where garbage collection
requires alignment, use verify (GCALIGNED (T)) to verify the
@@ -2962,9 +2962,10 @@ XFLOAT_DATA (Lisp_Object f)
/* Most hosts nowadays use IEEE floating point, so they use IEC 60559
representations, have infinities and NaNs, and do not trap on
exceptions. Define IEEE_FLOATING_POINT to 1 if this host is one of the
- typical ones. The C11 macro __STDC_IEC_559__ is close to what is
+ typical ones. The C23 macro __STDC_IEC_60559_BFP__ (or its
+ obsolescent C11 counterpart __STDC_IEC_559__) is close to what is
wanted here, but is not quite right because Emacs does not require
- all the features of C11 Annex F (and does not require C11 at all,
+ all the features of C23 Annex F (and does not require C11 or later,
for that matter). */
#define IEEE_FLOATING_POINT (FLT_RADIX == 2 && FLT_MANT_DIG == 24 \
diff --git a/src/xdisp.c b/src/xdisp.c
index 72d3bfa639..398056144a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12448,7 +12448,7 @@ display_echo_area (struct window *w)
reset the echo_area_buffer in question to nil at the end because
with_echo_area_buffer will set it to an empty buffer. */
bool i = display_last_displayed_message_p;
- /* According to the C99, C11 and C++11 standards, the integral value
+ /* According to the C standard, the integral value
of a "bool" is always 0 or 1, so this array access is safe here,
if oddly typed. */
no_message_p = NILP (echo_area_buffer[i]);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master d27d9a43d4: Update some commentary for C23,
Paul Eggert <=