{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":157360730,"defaultBranch":"main","name":"ainur","ownerLogin":"xyproto","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-11-13T10:16:55.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/52813?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1701866362.0","currentOid":""},"activityList":{"items":[{"before":"56a434f6d3a1f291861c8604b3bbe01ef7df63d1","after":"8229fa8b53ed0f149433d26a6eb308c768d34286","ref":"refs/heads/main","pushedAt":"2024-04-17T12:55:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"xyproto","name":"Alexander F. Rødseth","path":"/xyproto","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/52813?s=80&v=4"},"commit":{"message":"Update README.md","shortMessageHtmlLink":"Update README.md"}},{"before":"92a02692aa11a13738cb5f0995304c2840138c85","after":"56a434f6d3a1f291861c8604b3bbe01ef7df63d1","ref":"refs/heads/main","pushedAt":"2024-03-29T11:48:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"xyproto","name":"Alexander F. Rødseth","path":"/xyproto","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/52813?s=80&v=4"},"commit":{"message":"[go]: Get compiler version in a more robust way.\n\nPreviously, we were scanning for the Go compiler version in\n.rodata. This often works, but is error-prone, since that section\ncan in general contain anything. For example, I saw some binaries that\nhad the string \"go1.9\" embedded in .rodata even though they were not\nbuilt with Go 1.9.\n\nAfter this commit, we first try finding the build ID the same way\n`debug/buildinfo` from the Go standard library does it (usually in the\n.go.buildinfo section). Most of the code was taken from\n[here](https://cs.opensource.google/go/go/+/refs/tags/go1.22.1:src/debug/buildinfo/buildinfo.go;l=101),\nwith a few changes by me to remove all non-ELF-related code and to use\nStreamReader for reading.","shortMessageHtmlLink":"[go]: Get compiler version in a more robust way."}},{"before":"87c76d2f6a3781ddcda550b62f9915617bb3c418","after":"92a02692aa11a13738cb5f0995304c2840138c85","ref":"refs/heads/main","pushedAt":"2023-12-06T12:39:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"xyproto","name":"Alexander F. Rødseth","path":"/xyproto","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/52813?s=80&v=4"},"commit":{"message":"New patch release","shortMessageHtmlLink":"New patch release"}},{"before":"4f7f417ce4ad6dbd029d7d66a87c794f19ca1ddd","after":"87c76d2f6a3781ddcda550b62f9915617bb3c418","ref":"refs/heads/main","pushedAt":"2023-12-06T12:38:20.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"xyproto","name":"Alexander F. Rødseth","path":"/xyproto","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/52813?s=80&v=4"},"commit":{"message":"Refactor + add more tests","shortMessageHtmlLink":"Refactor + add more tests"}},{"before":"db855584e31bf84ee5ec4ebb5b954e0b9880c8b8","after":"4f7f417ce4ad6dbd029d7d66a87c794f19ca1ddd","ref":"refs/heads/main","pushedAt":"2023-12-06T12:14:40.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"xyproto","name":"Alexander F. Rødseth","path":"/xyproto","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/52813?s=80&v=4"},"commit":{"message":"Remove the test-time dependency on the assert package","shortMessageHtmlLink":"Remove the test-time dependency on the assert package"}},{"before":"ab8d4702c27c37780a15a1ab8902727fcc63d2bb","after":"db855584e31bf84ee5ec4ebb5b954e0b9880c8b8","ref":"refs/heads/main","pushedAt":"2023-03-27T06:58:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"xyproto","name":"Alexander F. Rødseth","path":"/xyproto","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/52813?s=80&v=4"},"commit":{"message":"Faster Stripped","shortMessageHtmlLink":"Faster Stripped"}},{"before":"5ad043b1dc632e5d43c3cd42d5e0bad2ad368788","after":null,"ref":"refs/heads/master","pushedAt":"2023-03-10T23:16:28.254Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xyproto","name":"Alexander F. Rødseth","path":"/xyproto","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/52813?s=80&v=4"}},{"before":"ea229c5cc2cbec19302b503023dd931ff1305b07","after":"ab8d4702c27c37780a15a1ab8902727fcc63d2bb","ref":"refs/heads/main","pushedAt":"2023-03-10T20:46:08.474Z","pushType":"push","commitsCount":1,"pusher":{"login":"xyproto","name":"Alexander F. Rødseth","path":"/xyproto","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/52813?s=80&v=4"},"commit":{"message":"New patch release","shortMessageHtmlLink":"New patch release"}},{"before":"d801280ea6e85d9974dd8b5ac05a0b0b73eddf3e","after":"ea229c5cc2cbec19302b503023dd931ff1305b07","ref":"refs/heads/main","pushedAt":"2023-03-10T20:34:44.805Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"xyproto","name":"Alexander F. Rødseth","path":"/xyproto","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/52813?s=80&v=4"},"commit":{"message":"Use streaming reader to read ELF sections\n\nPreviously we read entire ELF sections into memory all at once and then\nsearch the byte slice. This was problematic because depending on the\ngiven ELF binary we load an unpredictable amount of heap.\n\nThis patch makes use of the previously introduced StreamReader to read\nthe ELF sections in chunks.\n\nNot only did this remove all heap spikes.\n\nTo test this, we used a very large Rust binary that was not stripped.\nBefore these changes we observed a heap of ~1GB.\n\n```\n$ /usr/bin/time -l -h -p go test -run TestRustXYZ\nPASS\nok github.com/xyproto/ainur 1.697s\n 1096564736 maximum resident set size\n ...\n```\n\nAfter these changes, we observed a heap of ~80mb (which is likely just\ndue to operating system accounting, nothing was found in heap profiling\ndata anymore).\n\n```\n$ /usr/bin/time -l -h -p go test -run TestRustXYZ\nPASS\nok github.com/xyproto/ainur 0.202s\n 84819968 maximum resident set size\n ...\n```\n\nLastly, not only did this remove heap spikes, we could also observe a\nmassive improvement in runtime speed:\n\n```\n$ benchstat old.txt new.txt\nname old time/op new time/op delta\nRustXYZ-10 1.54s ± 5% 0.01s ± 1% -99.61% (p=0.008 n=5+5)\n\nname old alloc/op new alloc/op delta\nRustXYZ-10 2.81GB ± 0% 0.00GB ± 1% -100.00% (p=0.008 n=5+5)\n\nname old allocs/op new allocs/op delta\nRustXYZ-10 24.4k ± 0% 0.4k ± 0% -98.44% (p=0.000 n=4+5)\n```\n\nLikely due to removed allocations.\n\nCo-Authored-By: Thor Hansen ","shortMessageHtmlLink":"Use streaming reader to read ELF sections"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEMxWj4gA","startCursor":null,"endCursor":null}},"title":"Activity · xyproto/ainur"}