public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "redi at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug libstdc++/114645] std::chrono::current_zone ignores $TZ on Linux Date: Tue, 09 Apr 2024 23:29:42 +0000 [thread overview] Message-ID: <bug-114645-4-ssCwtAYuek@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-114645-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114645 --- Comment #15 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Hristo Venev from comment #13) > > $TZ allows you to override it per-process (and even change it during the lifetime of a process by using setenv and tzset). We don't support that for current_zone(). > > /etc/localtime can also change. But not in a racy way. The filesystem serializes those changes so that inspecting the symlink with readlink(3) gives a single race-free answer at any one time. And if the application wants to query current_zone() once and then reuse the result of that query, it can, because the time_zone* is a value held by the application itself. That's an advantage of the std::chrono design which is absent from libc, where the application has very little control over the hidden state that libc maintains for time zone info. > > The intent is to infer an IANA time zone from the /etc/localtime symlink, if possible. If the intent was to match libc, it would look at $TZ. I've discussed this exact question with the author of that library (which is the origin of the std::chrono components too). What I said in comment 8 above is paraphrasing what he said. > > Point taken. Still, do you have any explanation for why this behavior was > chosen? Because the environment cannot be accessed safely, and because $TZ was traditionally used for POSIX time zones, which are inferior to the IANA zones in nearly every way (see the "POSIX style time zones" section of https://stackoverflow.com/tags/timezone/info for more details). > > Just do the easy thing yourself. > > The easy thing being to fix all applications that currently use or will ever > use current_zone(). Fun times ahead... Well they should not be assuming current_zone() uses $TZ in the first place - that has never been claimed or documented by any reputable source. You only need to "fix" the ones that were relying on something that was never part of the API.
next prev parent reply other threads:[~2024-04-09 23:29 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-04-08 19:01 [Bug libstdc++/114645] New: " hristo at venev dot name 2024-04-08 19:27 ` [Bug libstdc++/114645] " redi at gcc dot gnu.org 2024-04-08 20:23 ` hristo at venev dot name 2024-04-08 20:25 ` redi at gcc dot gnu.org 2024-04-08 20:46 ` hristo at venev dot name 2024-04-08 20:48 ` redi at gcc dot gnu.org 2024-04-08 20:51 ` redi at gcc dot gnu.org 2024-04-08 20:56 ` hristo at venev dot name 2024-04-09 9:19 ` redi at gcc dot gnu.org 2024-04-09 9:41 ` hristo at venev dot name 2024-04-09 9:46 ` xry111 at gcc dot gnu.org 2024-04-09 9:49 ` hristo at venev dot name 2024-04-09 16:40 ` redi at gcc dot gnu.org 2024-04-09 17:19 ` hristo at venev dot name 2024-04-09 23:29 ` harald at gigawatt dot nl 2024-04-09 23:29 ` redi at gcc dot gnu.org [this message] 2024-04-09 23:43 ` redi at gcc dot gnu.org 2024-04-09 23:47 ` redi at gcc dot gnu.org 2024-04-09 23:50 ` harald at gigawatt dot nl 2024-04-09 23:57 ` redi at gcc dot gnu.org 2024-04-10 0:07 ` redi at gcc dot gnu.org 2024-04-10 0:26 ` harald at gigawatt dot nl 2024-04-10 0:57 ` redi at gcc dot gnu.org 2024-04-10 1:10 ` redi at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-114645-4-ssCwtAYuek@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).