Closed
Description
Use build timestamp to distinguish different version of application binary is a common way in other languages.
eg: C has macros "__DATE__" and "__TIME__" to fetch compiler time.
But golang has no way to achive this feature nowadays.
I have made a patch to provide fllow API to achive it.
- func runtime.BuildTimestamp() int64
- func time.BuildTime() time.Time
runtime.BuildTimestamp defines a buildtimestamp value which will be written by linker(cmd/link).
time.BuildTime() converts runtime.BuildTimestamp() to time.Time.
The expected usage of BuildTimestamp API is as follow:
func main() {
println("hello world!")
println("buildtimestamp:", runtime.BuildTimestamp())
println("buildtime :", time.BuildTime().String())
// Output:
// hello world!
// buildtimestamp: 1513671919
// buildtime : 2017-12-19 16:25:19 +0800 CST
}
It will be my pleasure that if go team can accept this feature in go repository.
The branch
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
[-]runtime/time: API runtime.BuildTimestamp required to report appication build time[/-][+]runtime/time: API runtime.BuildTimestamp required to report application build time[/+][-]runtime/time: API runtime.BuildTimestamp required to report application build time[/-][+]proposal: runtime, time: add API BuildTimestamp to report an application's build time[/+]ghost commentedon Dec 19, 2017
This proposal conflicts with #16860.
ianlancetaylor commentedon Dec 19, 2017
If you want this, use the linker's -X option. We are not going to do this by default, as producing bit-identical binaries for bit-identical inputs is a goal. It would also prevent caching of
go build
results for main packages. Closing.