{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":233480588,"defaultBranch":"no-gods-no-","name":"yaxpeax-x86","ownerLogin":"iximeow","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-01-13T00:30:24.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/4615790?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1719269425.0","currentOid":""},"activityList":{"items":[{"before":"96a83895ae7b99efe35c45066e4f35b4c441e359","after":"681262f4472ba4f452446e86012ce629b849d8d9","ref":"refs/heads/no-gods-no-","pushedAt":"2024-06-24T22:48:40.000Z","pushType":"push","commitsCount":96,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"summary description of opt work\n\nthis empty commit reproduces a github comment that describes the work on\ncommits from this point back to, roughly, 1.2.2. since many commits\nbetween these two points are interesting in the context of performance\noptimization (especially uarch-relevant tweaks), many WIP commits are\npreserved. as a result there is no clear squash merge, and this commit\nwill be the next best thing.\n\non Rust 1.68.0 and a Xeon E3-1230 V2, relative changes are measured\nroughly as:\n starting at ed4f238a4c2d860e6fadc8abeaa0cba36ed1df8a:\n - non-fmt ns/decode: 15ns\n - non-fmt instructions/decode: 94.6\n - non-fmt IPC: 1.71\n - fmt ns/decode+display: 91ns\n - fmt instructions/decode+display: 683.8\n - fmt IPC: 2.035\n\n ending at 6a5ea107475284756070614a566970fbb383c4e6\n - non-fmt ns/decode: 15ns\n - non-fmt instructions/decode: 94.6\n - non-fmt IPC: 1.71\n - fmt ns/decode+display: 47ns\n - fmt instructions/decode+display: 329.6\n - fmt IPC: 1.898\n\nfor an overall ~50% reduction in runtimes to display instructions.\nwriting into InstructionTextBuffer reduces overhead another ~10%.\n\n-- original message follows --\n\nthis is where much of https://github.com/iximeow/yaxpeax-arch/pull/7\noriginated.\n\n`std::fmt` as a primary writing mechanism has.. some limitations:\n* https://github.com/rust-lang/rust/issues/92993#issuecomment-2028915232\n* https://github.com/llvm/llvm-project/issues/87440\n* https://github.com/rust-lang/rust/pull/122770\n\nand some more interesting more fundamental limitations - writing to a\n`T: fmt::Write` means implementations don't know if it's possible to\nwrite bytes in reverse order (useful for printing digits) or if it's OK\nto write too many bytes and then only advance `len` by the correct\namount (useful for copying variable-length-but-short strings like\nregister names). these are both perfectly fine to a `String` or `Vec`,\nless fine to do to a file descriptor like stdout.\n\nat the same time, `Colorize` and traits depending on it are very broken,\nfor reasons described in yaxpeax-arch.\n\nso, this adapts `yaxpeax-x86` to use the new `DisplaySink` type for\nwriting, with optimizations where appropriate and output spans for\ncertain kinds of tokens - registers, integers, opcodes, etc. it's not\na perfect replacement for Colorize-to-ANSI-supporting-outputs but it's\nmore flexible and i think can be made right.\n\nalong the way this completes the move of `safer_unchecked` out to\nyaxpeax-arch (ty @5225225 it's still so useful), cleans up some docs,\nand comes with a few new test cases.\n\nbecause of the major version bump of yaxpeax-arch, and because this\nremoves most functionality of the Colorize impl - it prints the\ncorrect words, just without coloring - this is itself a major version\nbump to 2.0.0. yay! this in turn is a good point to change the\n`Opcode` enums from being tuple-like to struct-like, and i've done so\nin\nhttps://github.com/iximeow/yaxpeax-x86/commit/1b8019d5b39a05c109399b8628a1082bfec79755.\n\nfull notes in CHANGELOG ofc. this is notes for myself when i'm trying\nto remember any of this in two years :)","shortMessageHtmlLink":"summary description of opt work"}},{"before":"cbc90f43a1827a75e6858968d94be2815df9ab3f","after":"24b33d5fdc9513c1b46e99b526d21e0a7b5eea38","ref":"refs/heads/display-opt","pushedAt":"2024-06-24T22:24:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"document one more stray unsafe","shortMessageHtmlLink":"document one more stray unsafe"}},{"before":"6a5ea107475284756070614a566970fbb383c4e6","after":"cbc90f43a1827a75e6858968d94be2815df9ab3f","ref":"refs/heads/display-opt","pushedAt":"2024-06-24T22:22:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"document one more stray unsafe","shortMessageHtmlLink":"document one more stray unsafe"}},{"before":"016583f3f237938816a819a882510e9a57a141ad","after":"6a5ea107475284756070614a566970fbb383c4e6","ref":"refs/heads/display-opt","pushedAt":"2024-06-24T22:14:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"add missing feature flag to real-mode ffi library\n\nffi/ still needs... much more work","shortMessageHtmlLink":"add missing feature flag to real-mode ffi library"}},{"before":"42f29e3f6194166ae954acee4591ee23d5d6494c","after":"016583f3f237938816a819a882510e9a57a141ad","ref":"refs/heads/display-opt","pushedAt":"2024-06-24T21:32:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"bench: fetch from fork updated for yaxpeax-x86 2.0.0","shortMessageHtmlLink":"bench: fetch from fork updated for yaxpeax-x86 2.0.0"}},{"before":"dd8bd5ce0772b08c271205508e48e98ef1c58ea8","after":"42f29e3f6194166ae954acee4591ee23d5d6494c","ref":"refs/heads/display-opt","pushedAt":"2024-06-24T21:29:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"bump cargo version to 2.0.0, not quite releasing yet","shortMessageHtmlLink":"bump cargo version to 2.0.0, not quite releasing yet"}},{"before":"70f767370feb9ca056e4baf32f37c6d8d8235e0c","after":"dd8bd5ce0772b08c271205508e48e98ef1c58ea8","ref":"refs/heads/display-opt","pushedAt":"2024-06-24T21:28:58.000Z","pushType":"push","commitsCount":35,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"justify the current max instruction length\n\nthis is also checked by a new fuzz target","shortMessageHtmlLink":"justify the current max instruction length"}},{"before":"3c8271ae9d45bdae33f0d1d057fb5239c893b6c5","after":"70f767370feb9ca056e4baf32f37c6d8d8235e0c","ref":"refs/heads/display-opt","pushedAt":"2024-06-20T20:21:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"swap printed size check and lzcnt\n\nif printed_size == 0 then the value must be 0, but we can check if the value is 0 before doing all that stuff","shortMessageHtmlLink":"swap printed size check and lzcnt"}},{"before":"89b8aeef32518a0fece8c1283fe83da369113afd","after":"3c8271ae9d45bdae33f0d1d057fb5239c893b6c5","ref":"refs/heads/display-opt","pushedAt":"2024-06-20T20:06:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"slightly simpler (?) write_u* impls","shortMessageHtmlLink":"slightly simpler (?) write_u* impls"}},{"before":"55a64ffa7fddc9d8372e4072c554a676e2f0fc17","after":"89b8aeef32518a0fece8c1283fe83da369113afd","ref":"refs/heads/display-opt","pushedAt":"2024-06-20T19:43:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"starting to get new DisplaySink stuff ready to extract...","shortMessageHtmlLink":"starting to get new DisplaySink stuff ready to extract..."}},{"before":"6dd30963a0e8f5af719fcce43ffbeecb6d672391","after":"55a64ffa7fddc9d8372e4072c554a676e2f0fc17","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T21:31:01.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"better testing for alternate sinks, fix hex formatting bug....","shortMessageHtmlLink":"better testing for alternate sinks, fix hex formatting bug...."}},{"before":"4a01c5c4786a428e46f509731f37d963ba43d7b0","after":"6dd30963a0e8f5af719fcce43ffbeecb6d672391","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T21:29:22.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"better testing for alternate sinks, fix hex formatting bug....","shortMessageHtmlLink":"better testing for alternate sinks, fix hex formatting bug...."}},{"before":"8b1677e14e59c8ed5c61e200863a19576034d62e","after":"4a01c5c4786a428e46f509731f37d963ba43d7b0","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T19:29:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"no more fmt in display code, remove more dead struct fields","shortMessageHtmlLink":"no more fmt in display code, remove more dead struct fields"}},{"before":"19bebd19a6f5f952094f7e6c84c1c66ea1c87ca5","after":"8b1677e14e59c8ed5c61e200863a19576034d62e","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T18:57:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"dedup mem size prefix printing","shortMessageHtmlLink":"dedup mem size prefix printing"}},{"before":"1b65f5bc6320cfbbcf4f0b264c71270304973a84","after":"19bebd19a6f5f952094f7e6c84c1c66ea1c87ca5","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T18:35:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"visit_disp is only outlined for bad reasons","shortMessageHtmlLink":"visit_disp is only outlined for bad reasons"}},{"before":"2e7bdee5a9c8a2d182ccbd643e5faf2fdf6442b7","after":"1b65f5bc6320cfbbcf4f0b264c71270304973a84","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T18:19:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"clean up warnings, scope unsafe blocks better","shortMessageHtmlLink":"clean up warnings, scope unsafe blocks better"}},{"before":"49e910b50066161fcf581c4aec775655f85cffe3","after":"2e7bdee5a9c8a2d182ccbd643e5faf2fdf6442b7","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T18:10:37.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"write_2 did its job, seem to have reaped all that can be reaped","shortMessageHtmlLink":"write_2 did its job, seem to have reaped all that can be reaped"}},{"before":"85700ee8b91afcada27a9b4fffda498adf4573dc","after":"49e910b50066161fcf581c4aec775655f85cffe3","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T17:22:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"more profiling outlining","shortMessageHtmlLink":"more profiling outlining"}},{"before":"b3669cd29e27a239ea3ee9cbac809636a50d8560","after":"85700ee8b91afcada27a9b4fffda498adf4573dc","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T08:32:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"write_u64 helpers","shortMessageHtmlLink":"write_u64 helpers"}},{"before":"f6ad0a91226b12cb7ec928dbbb6983ea0425d9e2","after":"b3669cd29e27a239ea3ee9cbac809636a50d8560","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T08:22:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"write_u64 helpers","shortMessageHtmlLink":"write_u64 helpers"}},{"before":"cc6f7cabfdd7e48f71241ffc8e4860be6d26ba93","after":"f6ad0a91226b12cb7ec928dbbb6983ea0425d9e2","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T08:01:53.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"hint better about codegen for contextualize_intel","shortMessageHtmlLink":"hint better about codegen for contextualize_intel"}},{"before":"e904f613a29a5e3edfe20991b38356e77c857ba9","after":"cc6f7cabfdd7e48f71241ffc8e4860be6d26ba93","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T06:21:52.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"helpers for those i8/u8 immediates too","shortMessageHtmlLink":"helpers for those i8/u8 immediates too"}},{"before":"39c75af6fb43e9e6e8672e83f1f2ae6cf0d26855","after":"e904f613a29a5e3edfe20991b38356e77c857ba9","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T05:38:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"try grouping characters printed with or without segment prefixes","shortMessageHtmlLink":"try grouping characters printed with or without segment prefixes"}},{"before":"cbdfa8402603e3a756b10d1527f1dc3c594f57cd","after":"39c75af6fb43e9e6e8672e83f1f2ae6cf0d26855","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T05:36:58.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"try grouping characters printed with or without segment prefixes","shortMessageHtmlLink":"try grouping characters printed with or without segment prefixes"}},{"before":"2475794b7042fea9e8e3d637a5b3787a0939e89e","after":"cbdfa8402603e3a756b10d1527f1dc3c594f57cd","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T05:10:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"inline the write u8/u32 helpers, lets see what that does","shortMessageHtmlLink":"inline the write u8/u32 helpers, lets see what that does"}},{"before":"eff863b487198106f55d459024d91f9b44ea761f","after":"2475794b7042fea9e8e3d637a5b3787a0939e89e","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T04:57:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"move avx512 operand printing off of fmt","shortMessageHtmlLink":"move avx512 operand printing off of fmt"}},{"before":"1506b8fc0f58a7b1eb91009302b79750ff7cbc8b","after":"eff863b487198106f55d459024d91f9b44ea761f","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T04:47:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"whats it do without the unused colors parameter","shortMessageHtmlLink":"whats it do without the unused colors parameter"}},{"before":"8de036c2ac6777220a2d1d755036896ab295f7bb","after":"1506b8fc0f58a7b1eb91009302b79750ff7cbc8b","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T00:53:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"use hex printer helpers for relative offsets too","shortMessageHtmlLink":"use hex printer helpers for relative offsets too"}},{"before":"95c3f4831af654b932e55290540e1435a7e46341","after":"8de036c2ac6777220a2d1d755036896ab295f7bb","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T00:49:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"use specialized printers for immediate operands","shortMessageHtmlLink":"use specialized printers for immediate operands"}},{"before":"afc361c6a9d797a4ca9ffc913079082779984a83","after":"95c3f4831af654b932e55290540e1435a7e46341","ref":"refs/heads/display-opt","pushedAt":"2024-06-19T00:41:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"iximeow","name":"iximeow","path":"/iximeow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4615790?s=80&v=4"},"commit":{"message":"use specialized write helpers for register labels","shortMessageHtmlLink":"use specialized write helpers for register labels"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNi0yNFQyMjo0ODo0MC4wMDAwMDBazwAAAARuAhI0","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNi0yNFQyMjo0ODo0MC4wMDAwMDBazwAAAARuAhI0","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNi0xOVQwMDo0MTowOC4wMDAwMDBazwAAAARpAzO_"}},"title":"Activity ยท iximeow/yaxpeax-x86"}