* [ruby-core:121475] [Ruby Bug#21205] File::Stat#birthtime is available on Linux
@ 2025-03-30 7:27 BertramScharpf (Bertram Scharpf) via ruby-core
2025-03-30 9:13 ` [ruby-core:121476] " byroot (Jean Boussier) via ruby-core
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: BertramScharpf (Bertram Scharpf) via ruby-core @ 2025-03-30 7:27 UTC (permalink / raw)
To: ruby-core; +Cc: BertramScharpf (Bertram Scharpf)
Issue #21205 has been reported by BertramScharpf (Bertram Scharpf).
----------------------------------------
Bug #21205: File::Stat#birthtime is available on Linux
https://bugs.ruby-lang.org/issues/21205
* Author: BertramScharpf (Bertram Scharpf)
* Status: Open
* ruby -v: ruby 3.3.7 (2025-01-15 revision be31f993d7) [x86_64-linux]
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
Not that I would run into any problem with it, but this behaviour is confusing:
RbConfig::CONFIG["platform"] #=> "amd64-freebsd14"
(File.birthtime "/").class #=> Time
(File.stat "/").birthtime.class #=> Time
RbConfig::CONFIG["platform"] #=> "x86_64-linux"
(File.birthtime "/").class #=> Time
(File.stat "/").birthtime # raises NotImplementedError
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 4+ messages in thread
* [ruby-core:121476] [Ruby Bug#21205] File::Stat#birthtime is available on Linux
2025-03-30 7:27 [ruby-core:121475] [Ruby Bug#21205] File::Stat#birthtime is available on Linux BertramScharpf (Bertram Scharpf) via ruby-core
@ 2025-03-30 9:13 ` byroot (Jean Boussier) via ruby-core
2025-03-31 5:48 ` [ruby-core:121479] " BertramScharpf (Bertram Scharpf) via ruby-core
2025-03-31 8:25 ` [ruby-core:121480] [Ruby Feature#21205] Make File::Stat#birthtime " byroot (Jean Boussier) via ruby-core
2 siblings, 0 replies; 4+ messages in thread
From: byroot (Jean Boussier) via ruby-core @ 2025-03-30 9:13 UTC (permalink / raw)
To: ruby-core; +Cc: byroot (Jean Boussier)
Issue #21205 has been updated by byroot (Jean Boussier).
Contrary to FreeBSD, on Linux the `birthtime` isn't present in the struct returned by `stat(2)`: https://man7.org/linux/man-pages/man3/stat.3type.html (see how there is no `btime`).
What `File.birthtime` does, it that it uses `statx(2)` https://man7.org/linux/man-pages/man2/statx.2.html
So the only way to fix the weirdness you point out, would be for `File.stat` to actually use `statx(2)` under the hood.
But it returns a lot more data, so there might be some performance considerations.
That being said, perhaps we should do it for correctness, because unless I'm mistaken, on Linux `stat(2)` return 32bit time, so it will wrap around in 2038. `statx(2)` returns 64-bit timestamps, so it seems that Linux want users to migrate to `statx(2)` eventually.
----------------------------------------
Bug #21205: File::Stat#birthtime is available on Linux
https://bugs.ruby-lang.org/issues/21205#change-112494
* Author: BertramScharpf (Bertram Scharpf)
* Status: Open
* ruby -v: ruby 3.3.7 (2025-01-15 revision be31f993d7) [x86_64-linux]
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
Not that I would run into any problem with it, but this behaviour is confusing:
RbConfig::CONFIG["platform"] #=> "amd64-freebsd14"
(File.birthtime "/").class #=> Time
(File.stat "/").birthtime.class #=> Time
RbConfig::CONFIG["platform"] #=> "x86_64-linux"
(File.birthtime "/").class #=> Time
(File.stat "/").birthtime # raises NotImplementedError
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 4+ messages in thread
* [ruby-core:121479] [Ruby Bug#21205] File::Stat#birthtime is available on Linux
2025-03-30 7:27 [ruby-core:121475] [Ruby Bug#21205] File::Stat#birthtime is available on Linux BertramScharpf (Bertram Scharpf) via ruby-core
2025-03-30 9:13 ` [ruby-core:121476] " byroot (Jean Boussier) via ruby-core
@ 2025-03-31 5:48 ` BertramScharpf (Bertram Scharpf) via ruby-core
2025-03-31 8:25 ` [ruby-core:121480] [Ruby Feature#21205] Make File::Stat#birthtime " byroot (Jean Boussier) via ruby-core
2 siblings, 0 replies; 4+ messages in thread
From: BertramScharpf (Bertram Scharpf) via ruby-core @ 2025-03-31 5:48 UTC (permalink / raw)
To: ruby-core; +Cc: BertramScharpf (Bertram Scharpf)
Issue #21205 has been updated by BertramScharpf (Bertram Scharpf).
byroot (Jean Boussier) wrote in #note-1:
> Contrary to FreeBSD, on Linux the `birthtime` isn't present in the struct returned by `stat(2)`: https://man7.org/linux/man-pages/man3/stat.3type.html (see how there is no `btime`).
I know. I did research about that but gave up.
This is how I solved my problem for now: <https://github.com/BertramScharpf/rbfind/commit/e6ed59668cb5707f4519272401113a8173f819af>.
----------------------------------------
Bug #21205: File::Stat#birthtime is available on Linux
https://bugs.ruby-lang.org/issues/21205#change-112497
* Author: BertramScharpf (Bertram Scharpf)
* Status: Open
* ruby -v: ruby 3.3.7 (2025-01-15 revision be31f993d7) [x86_64-linux]
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
Not that I would run into any problem with it, but this behaviour is confusing:
RbConfig::CONFIG["platform"] #=> "amd64-freebsd14"
(File.birthtime "/").class #=> Time
(File.stat "/").birthtime.class #=> Time
RbConfig::CONFIG["platform"] #=> "x86_64-linux"
(File.birthtime "/").class #=> Time
(File.stat "/").birthtime # raises NotImplementedError
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 4+ messages in thread
* [ruby-core:121480] [Ruby Feature#21205] Make File::Stat#birthtime available on Linux
2025-03-30 7:27 [ruby-core:121475] [Ruby Bug#21205] File::Stat#birthtime is available on Linux BertramScharpf (Bertram Scharpf) via ruby-core
2025-03-30 9:13 ` [ruby-core:121476] " byroot (Jean Boussier) via ruby-core
2025-03-31 5:48 ` [ruby-core:121479] " BertramScharpf (Bertram Scharpf) via ruby-core
@ 2025-03-31 8:25 ` byroot (Jean Boussier) via ruby-core
2 siblings, 0 replies; 4+ messages in thread
From: byroot (Jean Boussier) via ruby-core @ 2025-03-31 8:25 UTC (permalink / raw)
To: ruby-core; +Cc: byroot (Jean Boussier)
Issue #21205 has been updated by byroot (Jean Boussier).
Tracker changed from Bug to Feature
Subject changed from File::Stat#birthtime is available on Linux to Make File::Stat#birthtime available on Linux
ruby -v deleted (ruby 3.3.7 (2025-01-15 revision be31f993d7) [x86_64-linux])
Backport deleted (3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN)
Switching this to a feature request.
----------------------------------------
Feature #21205: Make File::Stat#birthtime available on Linux
https://bugs.ruby-lang.org/issues/21205#change-112498
* Author: BertramScharpf (Bertram Scharpf)
* Status: Open
----------------------------------------
Not that I would run into any problem with it, but this behaviour is confusing:
RbConfig::CONFIG["platform"] #=> "amd64-freebsd14"
(File.birthtime "/").class #=> Time
(File.stat "/").birthtime.class #=> Time
RbConfig::CONFIG["platform"] #=> "x86_64-linux"
(File.birthtime "/").class #=> Time
(File.stat "/").birthtime # raises NotImplementedError
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-03-31 8:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-30 7:27 [ruby-core:121475] [Ruby Bug#21205] File::Stat#birthtime is available on Linux BertramScharpf (Bertram Scharpf) via ruby-core
2025-03-30 9:13 ` [ruby-core:121476] " byroot (Jean Boussier) via ruby-core
2025-03-31 5:48 ` [ruby-core:121479] " BertramScharpf (Bertram Scharpf) via ruby-core
2025-03-31 8:25 ` [ruby-core:121480] [Ruby Feature#21205] Make File::Stat#birthtime " byroot (Jean Boussier) via ruby-core
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 NNTP newsgroup(s).