{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":405527049,"defaultBranch":"master","name":"monkey","ownerLogin":"go-kiss","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-09-12T02:23:26.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/74040420?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715071875.0","currentOid":""},"activityList":{"items":[{"before":"eca9cd17dfa6dd150c3ebaf3485fbd3657082f5b","after":"d03795257a640512fbde9c438c33fe10c40e04b3","ref":"refs/heads/master","pushedAt":"2024-05-08T03:06:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"feat: restore PatchInstanceMethod (#20)\n\n* restore PatchInstanceMethod\r\n* fix global & restore test\r\n* fix test","shortMessageHtmlLink":"feat: restore PatchInstanceMethod (#20)"}},{"before":"0d43cc3a77d1bb14c6a69f9c73e8d15033488d1f","after":null,"ref":"refs/heads/action","pushedAt":"2024-05-07T08:51:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"}},{"before":"ca6162e0f3088684d4129125a0722c60b2d994aa","after":"eca9cd17dfa6dd150c3ebaf3485fbd3657082f5b","ref":"refs/heads/master","pushedAt":"2024-05-07T08:51:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"修复 Actions\n\nmacos-latest 改为 M1(ARM) 架构,本项目不支持。先改成 macos-13,\n后续可能要去掉 mac。\n\n另外加上 go1.22 测试。","shortMessageHtmlLink":"修复 Actions"}},{"before":null,"after":"0d43cc3a77d1bb14c6a69f9c73e8d15033488d1f","ref":"refs/heads/action","pushedAt":"2024-05-07T08:49:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"修复 Actions\n\nmacos-latest 改为 M1(ARM) 架构,本项目不支持。先改成 macos-13,\n后续可能要去掉 mac。\n\n另外加上 go1.22 测试。","shortMessageHtmlLink":"修复 Actions"}},{"before":"ebe8718646e6f555038a5373483c5a0c715747b9","after":"ca6162e0f3088684d4129125a0722c60b2d994aa","ref":"refs/heads/master","pushedAt":"2023-10-09T01:15:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"feat: 修改 getg 在amd64平台上的实现方式\n\n根据 https://go.googlesource.com/go/+/refs/heads/dev.regabi/src/cmd/compile/internal-abi.md\n的描述,go使用r14寄存器保存当前协程。","shortMessageHtmlLink":"feat: 修改 getg 在amd64平台上的实现方式"}},{"before":"c4eda85f2f6a507d1a0ac533e41598bd7f2a15cc","after":"ebe8718646e6f555038a5373483c5a0c715747b9","ref":"refs/heads/master","pushedAt":"2023-10-07T13:13:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"fix: 修复代码中的一些警告问题\n\n1. yoda conditions,go中不需要将常量放在等于判断的前部\n2. 使用 strings.Contains 替换 strings.Index 判断子串是否存在\n3. 使用 unsafe.Slice 替换 reflect.SliceHeader\n4. 移除未使用的函数 unpatch\n5. 获取 map 中的 value 后并未使用","shortMessageHtmlLink":"fix: 修复代码中的一些警告问题"}},{"before":"82cfbaaf6b8ae840d232e3a0b49561df36d8b056","after":null,"ref":"refs/heads/fix-go1.20","pushedAt":"2023-10-07T13:07:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"}},{"before":"a3f27e84086b8fb3bc912080732987f5b78b21ab","after":"c4eda85f2f6a507d1a0ac533e41598bd7f2a15cc","ref":"refs/heads/master","pushedAt":"2023-10-07T13:07:47.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"添加 win 平台说明","shortMessageHtmlLink":"添加 win 平台说明"}},{"before":"dd261b2a1670a533512e0cdfabaf4933b0978b59","after":"82cfbaaf6b8ae840d232e3a0b49561df36d8b056","ref":"refs/heads/fix-go1.20","pushedAt":"2023-10-07T13:05:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"添加 win 平台说明","shortMessageHtmlLink":"添加 win 平台说明"}},{"before":"dabd68aa6c9cf0e39c7eac2e080ceb4f18d90287","after":"dd261b2a1670a533512e0cdfabaf4933b0978b59","ref":"refs/heads/fix-go1.20","pushedAt":"2023-10-07T12:56:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"同时测试多个 Go 版本并临时移除 Win 平台","shortMessageHtmlLink":"同时测试多个 Go 版本并临时移除 Win 平台"}},{"before":"de00f6ef4e386925fd7864638686067179bc15a9","after":"dabd68aa6c9cf0e39c7eac2e080ceb4f18d90287","ref":"refs/heads/fix-go1.20","pushedAt":"2023-10-07T12:54:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"同时测试多个 Go 版本并临时移除 Win 平台","shortMessageHtmlLink":"同时测试多个 Go 版本并临时移除 Win 平台"}},{"before":"da0491df9949a26e554041a6b34a0ec356b8d449","after":"de00f6ef4e386925fd7864638686067179bc15a9","ref":"refs/heads/fix-go1.20","pushedAt":"2023-10-04T08:11:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"支持 go1.20 下泛型打桩\n\nGo 调用泛型函数时会先执行 LEA 指令,再执行 CALL 指令。我在上次提交\n\n1f9d72d787e9444e1c249acee84a2b31b5c10485\n\n中基于此特点跳过了跟 struct 传值产生的 CALL 指令,修复了 struct 传值导致\n泛型打桩卡住的问题。\n\n判断的依据是看 CALL 指令前面是否还有 LEA 指令且第一个参数为 RAX。\n\n根据 Ruomenger 的调查,Go1.20 在执行 LEA 指令时,其目的寄存器由 RAX\n改为 RBX,从而导致泛型 mock 出错。我还没找到对应的改动以及改动的原因。\n\nRuomenger 提议在检查 LEA 指令时同时支持 RAX 和 RBX 两种情况。但我认为\n这样做不能根除问题,以后 Go 编译器改版可能还会引出新问题。\n\n经过一番研究,我感觉使用函数名来判断可能是一个比较稳定的的办法。\ngetFirstCallFunc 最终找到泛型底层函数的地址。该地址对应的函数名包含`[...]`:\n\n```\ngithub.com/go-kiss/monkey_test.add2[...]\ngithub.com/go-kiss/monkey/demo.Add[...]\ngithub.com/go-kiss/monkey_test.(*S2__monkey__[...]).Foo\ngithub.com/go-kiss/monkey/demo.(*S2[...]).Foo\n```\n\n以此为基准来确定函数指针应该没问题。而且 Go 语言提供 runtime.FuncForPC 非常方便。\n\nFix #12","shortMessageHtmlLink":"支持 go1.20 下泛型打桩"}},{"before":"5c48dcdc021ccc72613dcee2db7ab96db2ca680f","after":"da0491df9949a26e554041a6b34a0ec356b8d449","ref":"refs/heads/fix-go1.20","pushedAt":"2023-10-04T08:03:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"支持 go1.20 下泛型打桩\n\nGo 调用泛型函数时会先执行 LEA 指令,再执行 CALL 指令。我在上次提交\n\n1f9d72d787e9444e1c249acee84a2b31b5c10485\n\n中基于此特点跳过了跟 struct 传值产生的 CALL 指令,修复了 struct 传值导致\n泛型打桩卡住的问题。\n\n判断的依据是看 CALL 指令前面是否还有 LEA 指令且第一个参数为 RAX。\n\n根据 Ruomenger 的调查,Go1.20 在执行 LEA 指令时,其目的寄存器由 RAX\n改为 RBX,从而导致泛型 mock 出错。我还没找到对应的改动以及改动的原因。\n\nRuomenger 提议在检查 LEA 指令时同时支持 RAX 和 RBX 两种情况。但我认为\n这样做不能根除问题,以后 Go 编译器改版可能还会引出新问题。\n\n经过一番研究,我感觉使用函数名来判断可能是一个比较稳定的的办法。\ngetFirstCallFunc 最终找到泛型底层函数的地址。该地址对应的函数名包含`[...]`:\n\n```\ngithub.com/go-kiss/monkey_test.add2[...]\ngithub.com/go-kiss/monkey/demo.Add[...]\ngithub.com/go-kiss/monkey_test.(*S2__monkey__[...]).Foo\ngithub.com/go-kiss/monkey/demo.(*S2[...]).Foo\n```\n\n以此为基准来确定函数指针应该没问题。而且 Go 语言提供 runtime.FuncForPC 非常方便。\n\nFix #12","shortMessageHtmlLink":"支持 go1.20 下泛型打桩"}},{"before":"73ba4438c5289510312a6a4a48c8960191b9c820","after":"5c48dcdc021ccc72613dcee2db7ab96db2ca680f","ref":"refs/heads/fix-go1.20","pushedAt":"2023-10-04T08:03:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"支持 go1.20 下泛型打桩\n\nGo 调用泛型函数时会先执行 LEA 指令,再执行 CALL 指令。我在上次提交\n\n1f9d72d787e9444e1c249acee84a2b31b5c10485\n\n中基于此特点跳过了跟 struct 传值产生的 CALL 指令,修复了 struct 传值导致\n泛型打桩卡住的问题。\n\n判断的依据是看 CALL 指令前面是否还有 LEA 指令且第一个参数为 RAX。\n\n根据 Ruomenger 的调查,Go1.20 在执行 LEA 指令时,其目的寄存器由 RAX\n改为 RBX,从而导致泛型 mock 出错。我还没找到对应的改动以及改动的原因。\n\nRuomenger 提议在检查 LEA 指令时同时支持 RAX 和 RBX 两种情况。但我认为\n这样做不能根除问题,以后 Go 编译器改版可能还会引出新问题。\n\n经过一番研究,我感觉使用函数名来判断可能是一个比较稳定的的办法。\ngetFirstCallFunc 最终找到泛型底层函数的地址。该地址对应的函数名包含`[...]`:\n\ngithub.com/go-kiss/monkey_test.add2[...]\ngithub.com/go-kiss/monkey/demo.Add[...]\ngithub.com/go-kiss/monkey_test.(*S2__monkey__[...]).Foo\ngithub.com/go-kiss/monkey/demo.(*S2[...]).Foo\n\n以此为基准来确定函数指针应该没问题。而且 Go 语言提供 runtime.FuncForPC 非常方便。\n\nFix #12","shortMessageHtmlLink":"支持 go1.20 下泛型打桩"}},{"before":"0ab0ba1d37c9b078e7ce3ec637140f7ec253bc8f","after":"73ba4438c5289510312a6a4a48c8960191b9c820","ref":"refs/heads/fix-go1.20","pushedAt":"2023-10-04T08:01:07.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"支持 go1.20 下泛型打桩\n\nGo 调用泛型函数时会先执行 LEA 指令,再执行 CALL 指令。我在上次提交\n\n1f9d72d787e9444e1c249acee84a2b31b5c10485\n\n中基于此特点跳过了跟 struct 传值产生的 CALL 指令,修复了 struct 传值导致\n泛型打桩卡住的问题。\n\n判断的依据是看 CALL 指令前面是否还有 LEA 指令且第一个参数为 RAX。\n\n根据 Ruomenger 的调查,Go1.20 在执行 LEA 指令时,其目的寄存器由 RAX\n改为 RBX,从而导致泛型 mock 出错。我还没找到对应的改动以及改动的原因。\n\nRuomenger 提议在检查 LEA 指令时同时支持 RAX 和 RBX 两种情况。但我认为\n这样做不能根除问题,以后 Go 编译器改版可能还会引出新问题。\n\n经过一番研究,我感觉使用函数名来判断可能是一个比较稳定的的办法。\ngetFirstCallFunc 最终找到泛型底层函数的地址。该地址对应的函数名包含 [...]\n表示泛型函数。以此为基准来确定函数指针应该没问题。而且 go 语言内置了\nruntime.FuncForPC 非常方便。\n\nFix #12","shortMessageHtmlLink":"支持 go1.20 下泛型打桩"}},{"before":null,"after":"0ab0ba1d37c9b078e7ce3ec637140f7ec253bc8f","ref":"refs/heads/fix-go1.20","pushedAt":"2023-10-04T08:00:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"支持 go1.20 下泛型打桩\n\nGo 调用泛型函数时会先执行 LEA 指令,再执行 CALL 指令。我在上次提交\n\n1f9d72d787e9444e1c249acee84a2b31b5c10485\n\n中基于此特点跳过了跟 struct 传值产生的 CALL 指令,修复了 struct 传值导致\n泛型打桩卡住的问题。\n\n判断的依据是看 CALL 指令前面是否还有 LEA 指令且第一个参数为 RAX。\n\n根据 Ruomenger 的调查,Go1.20 在执行 LEA 指令时,其目的寄存器由 RAX\n改为 RBX,从而导致泛型 mock 出错。我还没找到对应的改动以及改动的原因。\n\nRuomenger 提议在检查 LEA 指令时同时支持 RAX 和 RBX 两种情况。但我认为\n这样做不能根除问题,以后 Go 编译器改版可能还会引出新问题。\n\n经过一番研究,我感觉使用函数名来判断可能是一个比较稳定的的办法。\ngetFirstCallFunc 最终找到泛型底层函数的地址。该地址对应的函数名包含 [...]\n表示泛型函数。以此为基准来确定函数指针应该没问题。而且 go 语言内置了\nruntime.FuncForPC 非常方便。\n\nFix #12","shortMessageHtmlLink":"支持 go1.20 下泛型打桩"}},{"before":"dd9fefb2c016d79cc435d227b31316b6e6566e24","after":"a3f27e84086b8fb3bc912080732987f5b78b21ab","ref":"refs/heads/master","pushedAt":"2023-09-26T02:02:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"taoso","name":null,"path":"/taoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2030591?s=80&v=4"},"commit":{"message":"fix:修复examples下同时有多个main函数的问题","shortMessageHtmlLink":"fix:修复examples下同时有多个main函数的问题"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERC6Q5QA","startCursor":null,"endCursor":null}},"title":"Activity · go-kiss/monkey"}