# TO DO * Have a good place for the cache directory. * Expire entries in the cache. * Possibly add my own anyhow "context", so when there's a permission issue, the user knows where to look. # So Far... * Fixes the GOROOT and GOPATH for files and directories with a+r only attributes. * tar strips off the "go" directory within the archive. # Go Ok, it looks like GOROOT is managed by go. See `go env`. GOPATH seems like it needs to be managed still. I've switched over to using `go env` for my information (OS, ARCH, VERSION). Which seems cleaner and clearer. # Memory Ok, memory usage is about 1.8MB peak heap usage. (Tokio & non-async), so chunks and write_to work the same. https://poby.medium.com/memory-profiling-using-valgrind-b30514f35117 `valgrind --log-file=memory1.log target/release/go-up update` No leaks. As if... ;) ## Viewing peak heap memory usage: ``` valgrind --tool=massif --stacks=yes --log-file=valgrind3.log target/release/go-up update massif-visualizer massif.out.2496324 ``` ## Valgrind memory usage Logging total memory usage: `cargo build --release; valgrind --log-file=memory1.log target/release/go-up update` ``` ==2470578== HEAP SUMMARY: ==2470578== in use at exit: 796,398 bytes in 5,858 blocks ==2470578== total heap usage: 217,384 allocs, 211,526 frees, 269,243,726 bytes allocated ==2470578== ``` I was concerned about the total bytes allocated, but that's not all at one time. Example run: ``` thor@mount-olympus:~/Development/rust/reqwest/go-up$ cargo run -- update Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.07s Running `target/debug/go-up update` Version: 1.24.2 [have 1.23.4] Downloading newer version... Clearing GOROOT /home/thor/go Clearing GOPATH /home/thor/gopath Extracting... Extract cache/go1.24.2.linux-amd64.tar.gz to /home/thor/go Updated 1.23.4 to 1.24.2 ```