Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.std.c > #6504

Re: C23: asctime is obsolescent

From Keith Thompson <Keith.S.Thompson+u@gmail.com>
Newsgroups comp.std.c
Subject Re: C23: asctime is obsolescent
Date 2023-07-20 15:20 -0700
Organization None to speak of
Message-ID <87y1jaql6x.fsf@nosuchdomain.example.com> (permalink)
References <875yf5ksn9.fsf@nosuchdomain.example.com> <20230720101225.383@kylheku.com>

Show all headers | View raw


Kaz Kylheku <864-117-4973@kylheku.com> writes:
> On 2022-11-24, Keith Thompson <Keith.S.Thompson+u@gmail.com> wrote:
>> In the latest C23 draft:
>>     https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf
>> the descriptions of the __DATE__ and __TIME__ macros refer to the
>> asctime() function.
>>
>> That's not new.  What's new is that asctime() is deprecated.
>>
>> Referring to a deprecated function isn't really a problem, but if
>> asctime() is actually removed in a future standard the descriptions of
>> __DATE__ and __TIME__ will need to be updated.
>
> This seems like a minor oversight. __DATE__ and __TIME__ do not
> depened on the semantics of asctime in any deep way; just that
> __DATE__ produces a "Mmm dd yyyy" time in the same way that
> asciitime would generate those fields, and similarly for __TIME__'s
> "hh:mm:ss".
>
> The documentation could refer to specific conversion specifiers of
> strftime. __DATE__'s "Mmm dd yyyy" corresponds to "%b %d %Y".

I like it.

> The minor oversight points at a possible process problem though; it
> seems that someone carelessly deprecated a function without searching
> the document for occurrences of that name, and doing something about it,
> resulting in requirements of a non-obsolescent feature being described
> with the help of an obsolescent feature.

Sounds about right.

It's the same in the last public C23 draft, N3096, dated April 1, 2023.
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf

>> It would also be nice to have a new macro that expands to the current
>> date in the form "YYYY-MM-DD".  I do not suggest changing the behavior
>> of __DATE__, but perhaps something like __ISODATE__ could be added.
>
> How about:
>
>   __DATEF("%Y-%M-%d")

You'd need some special-case rules; it wouldn't quite act like a normal
macro.  I presume the argument would have to be a string literal (or
something that expands to a string literal, or two or more string
literals like `__DATEF("%Y-%M" "%d")`).  The form implies that something
like `__DATEF("%Y")` should also work; I'm not convinced that level of
flexibility is necessary.

> Let's nuke trailing underscores Two leading underscores give us the
> needed namespace privacy. Or just _DATEF, for that matter.

I see what you mean, but all the other mandatory macros are of the form
__FOO__.  I don't think it would be good for _DATEF to stand out from
the others.

>> Question: If this is done, should __DATE__ be deprecated?
>
> Deprecating safe features used in countless code bases doesn't seem very
> productive; it's just disruptive.

I agree.  The same argument could be made about deprecating asctime(),
but I don't think it's used as widely.

-- 
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
Will write code for food.
void Void(void) { Void(); } /* The recursive call of the void */

Back to comp.std.c | Previous | NextPrevious in thread | Find similar


Thread

C23: asctime is obsolescent Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-11-23 18:12 -0800
  Re: C23: asctime is obsolescent Tim Rentsch <tr.17687@z991.linuxsc.com> - 2023-01-02 08:11 -0800
    Re: C23: asctime is obsolescent Richard Damon <Richard@Damon-Family.org> - 2023-01-02 12:11 -0500
      Re: C23: asctime is obsolescent Tim Rentsch <tr.17687@z991.linuxsc.com> - 2023-01-29 10:33 -0800
        Re: C23: asctime is obsolescent Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2023-01-29 16:49 -0800
          Re: C23: asctime is obsolescent Pete Forman <petef4+usenet@gmail.com> - 2023-01-30 23:23 +0000
          Re: C23: asctime is obsolescent Tim Rentsch <tr.17687@z991.linuxsc.com> - 2023-07-20 10:11 -0700
            Re: C23: asctime is obsolescent Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2023-07-20 15:04 -0700
              Re: C23: asctime is obsolescent Tim Rentsch <tr.17687@z991.linuxsc.com> - 2023-08-13 15:26 -0700
                Re: C23: asctime is obsolescent Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2023-08-13 16:47 -0700
                Re: C23: asctime is obsolescent Jakob Bohm <jb-usenet@wisemo.com.invalid> - 2023-08-17 21:18 +0200
                Re: C23: asctime is obsolescent Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2023-08-17 13:14 -0700
                Re: C23: asctime is obsolescent Jakob Bohm <jb-usenet@wisemo.com.invalid> - 2023-08-18 01:26 +0200
                Re: C23: asctime is obsolescent Pete Forman <petef4+usenet@gmail.com> - 2023-08-21 17:42 +0100
                Re: C23: asctime is obsolescent Tim Rentsch <tr.17687@z991.linuxsc.com> - 2023-08-29 02:37 -0700
    Re: C23: asctime is obsolescent Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2023-01-02 16:47 -0800
      Re: C23: asctime is obsolescent David Brown <david.brown@hesbynett.no> - 2023-01-03 09:40 +0100
      Re: C23: asctime is obsolescent Pete Forman <petef4+usenet@gmail.com> - 2023-01-03 15:15 +0000
        Re: C23: asctime is obsolescent Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2023-01-03 10:35 -0800
        Re: C23: asctime is obsolescent Phil Carmody <pc+usenet@asdf.org> - 2023-01-04 18:22 +0200
          Re: C23: asctime is obsolescent James Kuyper <jameskuyper@alumni.caltech.edu> - 2023-01-04 15:04 -0500
      Re: C23: asctime is obsolescent Tim Rentsch <tr.17687@z991.linuxsc.com> - 2023-01-29 10:43 -0800
  Re: C23: asctime is obsolescent Tim Rentsch <tr.17687@z991.linuxsc.com> - 2023-01-02 08:20 -0800
  Re: C23: asctime is obsolescent Kaz Kylheku <864-117-4973@kylheku.com> - 2023-07-20 17:29 +0000
    Re: C23: asctime is obsolescent Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2023-07-20 15:20 -0700

csiph-web