# Chapter 1 lab — reproduce every result in the chapter. # # make escape # print escape-analysis decisions (-m=2) # make inline # print inlining/devirtualization decisions (Experiment 5) # make bench # run allocation benchmarks # make golden # capture reference outputs into ./golden # # Requires Go 1.25. .PHONY: escape inline bench golden clean escape: go build -gcflags='-m=2' ./... 2>&1 | grep -E 'heap|does not escape|escapes to heap|leaking|devirtualizing' inline: go build -gcflags='-m=2' ./... 2>&1 | grep -E 'can inline|inlining call|devirtualizing|leaking' bench: go test -bench=. -benchmem -count=6 . golden: @mkdir -p golden go version > golden/go-version.txt go build -gcflags='-m=2' ./... 2>&1 | grep -E 'heap|does not escape|escapes to heap|leaking|devirtualizing' > golden/escape.txt || true go build -gcflags='-m=2' ./... 2>&1 | grep -E 'can inline|inlining call|devirtualizing|leaking' > golden/inline.txt || true go test -bench=. -benchmem -count=10 . | tee golden/bench.txt @echo "wrote golden/escape.txt, golden/inline.txt, golden/bench.txt, golden/go-version.txt" clean: go clean rm -rf golden