The Adventurer’s Guide to Forking the Go Runtime - Dominic Black

Explore the thrilling world of forking the Go runtime, adding custom tracing, and modifying the language to suit your needs. Learn how to modify the Go runtime, add custom functionality, and create a custom tracing package.

Key takeaways
  • Modify the Go runtime to add custom functionality, such as tracing.
  • Create a custom version of Go by forking the Go repository and making changes to the code.
  • Use the go link command to manipulate the Go runtime’s linker to add custom functionality.
  • Use the init function to execute code at the beginning of a Go program.
  • Add span hooks to the standard library to track when Go routines are created and destroyed.
  • Use the net/http package to add tracing to HTTP requests and responses.
  • Modify the database/sql package to add tracing to database queries.
  • Use the github.com/google/open-telemetry package to report tracing data to Jaeger.
  • Create a custom tracing package outside of the Go standard library to manage tracing data.
  • Use the go link name command to modify the Go runtime’s linker to add custom functionality.
  • Use the git diff command to track changes to the Go code.
  • Create a build script to build a custom version of Go.
  • Use the go build command to build a custom version of Go.
  • Modify the Go runtime to add custom tracing functionality.
  • Use the go run command to run a custom version of Go.