mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
It is good practice to build with 64-bit `time_t`/timeval on 32-bit platforms to avoid the Y2038 issue. This is the default when building on Yocto for armv7, for example. Unfortunately `suseconds_t` is not an alias to a type of the correct width (unlike time_t). Question: on release/6.1, tv_usec is assumed to be `Int32`, but on main it is `Int`, but appears to be the same commit hash? #### git blame main stdlib/public/Platform/Platform.swift ```e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 350) @available(SwiftStdlib 5.7, *)e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 351) extension timeval {e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 352) @available(SwiftStdlib 5.7, *)e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 353) public init(_ duration: Duration) {e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 354) let comps = duration.componentse675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 355) // Linux platforms define timeval as Int/Inte675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 356) self.init(tv_sec: Int(comps.seconds),e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 357) tv_usec: Int(comps.attoseconds / 1_000_000_000_000))e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 358) }e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 359) } ``` #### git blame release/6.1 stdlib/public/Platform/Platform.swift ```e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 455) @available(SwiftStdlib 5.7, *)e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 456) extension timeval {e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 457) @available(SwiftStdlib 5.7, *)e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 458) public init(_ duration: Duration) {e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 459) let comps = duration.componentse675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 460) #if os(Linux)e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 461) // Linux platforms define timeval as Int/Inte675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 462) self.init(tv_sec: Int(comps.seconds),e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 463) tv_usec: Int(comps.attoseconds / 1_000_000_000_000))e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 464) #elsee675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 465) // Darwin platforms define timeval as Int/Int32e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 466) self.init(tv_sec: Int(comps.seconds),e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 467) tv_usec: Int32(comps.attoseconds / 1_000_000_000_000))e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 468) #endife675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 469) }e675b310f8(Philippe Hausler 2022-02-17 09:32:46 -0800 470) } ```
This directory holds the Swift Standard Library's Glibc Module, comprised of
- The overlay library, which amends some APIs imported from Clang module.
- The clang module map which specifies which headers need to be imported from Glibc for bare minimum functionality.
Note: Darwin platforms provide their own overlays and module maps in the system SDK.