{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":193976164,"defaultBranch":"master","name":"libmultiprocess","ownerLogin":"chaincodelabs","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-06-26T20:53:18.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/8126973?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1561582452.0","currentOid":""},"activityList":{"items":[{"before":"015e95f7ebaa47619a213a19801e7fffafc56864","after":"f5a4957d2692e20de814dbbedb4faf33e35a74db","ref":"refs/heads/master","pushedAt":"2024-09-12T14:33:43.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#111: doc: Add internal design section\n\n1fa2ca7cd804d097d02eb7ad0927832e40c3f4a5 doc: Add internal design section (TheCharlatan)\n\nPull request description:\n\n I am not sure if the descriptions here are correct, or even all that useful, but I think some of the finer points are useful to document to serve as an anchor for future developers reading the code. Maybe I also missed some documentation in the headers and the other docs that already describe these things better.\n\n ~What could potentially also be useful are some diagrams to show the wrapping hierarchy as done below (again, not sure if actually correct, and given the polymorphism and templating going on it is also questionable if such a hierarchy can accurately be depicted as a diagram).~\n\n Given the points made by ryanofsky below, I don't think anymore than an object diagram will be particularly helpful.\n\n A sequence diagram that follows a call from its c++ callsite to the client invocation to the server receiving and processing it, the client resolving it and finally returning a c++ type again would probably be more useful.\n\nACKs for top commit:\n ryanofsky:\n ACK 1fa2ca7cd804d097d02eb7ad0927832e40c3f4a5. Looks good, and nice job incorporating the extra information, especially about the waiter object. I'll go ahead and merge this now but feel free to make more changes or suggest improvements.\n\nTree-SHA512: cc247c5ef8fa787f4cdf151958c21c1428c848979fb46765bb9dd104bb144438aec8a3b38c714d05fbac013c0aba0dc4e23f2fd84800efddc1af9c934f0372ce","shortMessageHtmlLink":"Merge #111: doc: Add internal design section"}},{"before":"f67cae89093ab4f963f8454896034f05768b764a","after":"015e95f7ebaa47619a213a19801e7fffafc56864","ref":"refs/heads/master","pushedAt":"2024-09-09T18:40:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#110: cmake: add target_capnp_sources headers target\n\n66e12f1fae6458788d234e8c1a0f43d34e72640b cmake: add target_capnp_sources headers target (Ryan Ofsky)\n\nPull request description:\n\n Modify target_capnp_sources function to create a custom cmake target depending on generated capnp headers, that can be listed as an explicit dependency of other c++ targets when cmake's implicit dependency tracking for included files doesn't work.\n\n This might help fix the build problem encountered https://github.com/bitcoin/bitcoin/pull/30510#issuecomment-2334799124\n\nACKs for top commit:\n TheCharlatan:\n lgtm ACK 66e12f1fae6458788d234e8c1a0f43d34e72640b\n\nTree-SHA512: e21cc3c58bf14af2c418f0c50af72f514c4a9358591dc9b63cfa5cec72f658d196fff15d94c9097bc552ee0443b8fcefcb4f99bbad89fe04393955892cdfb094","shortMessageHtmlLink":"Merge #110: cmake: add target_capnp_sources headers target"}},{"before":"8bb6eab71be6c99431b02cc1cc286c5cb1112e47","after":"f67cae89093ab4f963f8454896034f05768b764a","ref":"refs/heads/master","pushedAt":"2024-08-21T14:32:23.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#109: example: Add missing thread.join() call so example can exit cleanly\n\n70b2d8794f3b78c2028dd6e8d00444b178e76893 example: Add missing thread.join() call so example can exit cleanly (Ryan Ofsky)\n\nPull request description:\n\n Problem was pointed out by TheCharlatan in https://github.com/chaincodelabs/libmultiprocess/pull/107#issuecomment-2301338227\n\nACKs for top commit:\n TheCharlatan:\n ACK 70b2d8794f3b78c2028dd6e8d00444b178e76893\n\nTree-SHA512: 18a9642ca4579f5299264d1706556c9adff9794b191da24d1d997897fc7e46d4779cebf188453ecc60d671bc7bafca13fc8e756e229623ee983c574d3db0adbd","shortMessageHtmlLink":"Merge #109: example: Add missing thread.join() call so example can ex…"}},{"before":"17a2399fe1a0975a6be806d4d662bb7188a6d0bc","after":"8bb6eab71be6c99431b02cc1cc286c5cb1112e47","ref":"refs/heads/master","pushedAt":"2024-08-21T14:13:29.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#108: doc: Add comments for socket descriptor handling when forking\n\nb56bf218c7d5e2666dbc6b85900af113181260dc doc: Add comments for socket descriptor handling when forking (TheCharlatan)\n\nPull request description:\n\n I find logic around forking child processes always a bit confusing, hopefully these comments can make it a bit easier for a future reader.\n\nACKs for top commit:\n ryanofsky:\n Code review ACK b56bf218c7d5e2666dbc6b85900af113181260dc\n\nTree-SHA512: ce7d783d3cfd4b925c12459568e621f74e86ba7f38e534dd3d4e3fb728d743a13c32e3467f9402b16afa16045ff3270ae986019ca9b901c4460e46a61a9cc706","shortMessageHtmlLink":"Merge #108: doc: Add comments for socket descriptor handling when for…"}},{"before":"c1b4ab4eb897d3af09bc9b3cc30e2e6fff87f3e2","after":"17a2399fe1a0975a6be806d4d662bb7188a6d0bc","ref":"refs/heads/master","pushedAt":"2024-08-21T14:12:25.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#107: example: Remove manual client adding\n\n34998101a3cd6f7cb4764625d88437251a9ba723 example: Remove manual client adding (TheCharlatan)\n\nPull request description:\n\n Opening this more as a question, than a change request, because I am not sure what is going on here, since removing it does not seem to change anything in the program's functionality.\n\n This is probably needed, but it is not clear from the example, or the documentation for what. If it is indeed needed, could the documentation be improved a bit, a comment added to the example or could it alternatively be moved into the `EventLoop` constructor instead? From my understanding `addClient` is eventually called internally when a new connection or proxy is created.\n\nACKs for top commit:\n ryanofsky:\n Code review ACK 34998101a3cd6f7cb4764625d88437251a9ba723. This code change makes sense, and it definitely doesn't make sense to have an `addClient` call without a corresponding `removeClient` call here.\n\nTree-SHA512: 0072d429f6029ebd02f34d57996ae3fed94061d0fea3ebf057955632436f179c2cb88b4f4d54bac88b65c1d99060acb902b2ea514f7a88a14f5f7750c0672ea8","shortMessageHtmlLink":"Merge #107: example: Remove manual client adding"}},{"before":"a9e16da55e880e5a0aed5008307ea56edc33fbd1","after":"c1b4ab4eb897d3af09bc9b3cc30e2e6fff87f3e2","ref":"refs/heads/master","pushedAt":"2024-08-09T15:22:47.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#106: Bugfix: Clean up ThreadContext pointers when Connection is destroyed\n\n8ba0d03b4439fc0dd3298462caba47bb0a22578b Bugfix: Clean up ThreadContext pointers when Connection is destroyed (Ryan Ofsky)\n\nPull request description:\n\n Currently ThreadContext Connection* pointers are not removed up when a connection is destroyed. This is only a problem if a Connection instance is destroyed and new Connection is allocated at the same address, because the code assumes pointers uniquely identify connections. This causes a bug in a bitcoin IPC test which creates multiple connections in a loop, described in https://github.com/bitcoin/bitcoin/pull/30509#issuecomment-2276739868, and depending on how the heap allocator behaves, a new Connection could have the same address as a previously destroyed connection, and the code tries to use a thread reference associated with the previous connection when making a new call, and there is a segfault because the thread no longer exists.\n\n Fix this problem by adding Connection cleanup callbacks to remove Connection* pointers from the ThreadContext struct if the connection is destroyed before the thread is.\n\nTop commit has no ACKs.\n\nTree-SHA512: c715f15a2218e5c8073cf6e2852285b8ad295ed331187d7d4d454df28512621ef76067c7cb11ddf17065efdfa0f7096190ae9033466d252eea6ddae51ea44d64","shortMessageHtmlLink":"Merge #106: Bugfix: Clean up ThreadContext pointers when Connection i…"}},{"before":"6aca5f389bacf2942394b8738bbe15d6c9edfb9b","after":"a9e16da55e880e5a0aed5008307ea56edc33fbd1","ref":"refs/heads/master","pushedAt":"2024-07-24T21:04:10.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#105: types: Add Custom{Build,Read,Pass}Message hooks\n\nca2cfedd2b3f2be7df1c737f36d88c726a4d9a2f types: Add Custom{Build,Read,Pass}Message hooks (Ryan Ofsky)\n\nPull request description:\n\n Add `CustomBuildMessage`, `CustomReadMessage`, and `CustomPassMessage` hook functions. These functions can be defined to use custom code to convert C++ objects to and from Cap'n Proto messages. They work similarly to existing `CustomBuildField`, `CustomReadField,` and `CustomPassField` hooks, except they can be defined as normal functions not template functions, so they should be easier to use and require less verbosity in most cases, although they are less flexible.\n\n The unit tests added here are new but the feature was originally implemented in https://github.com/bitcoin/bitcoin/pull/10102 but and is being ported because it's a general purpose feature.\n\nTop commit has no ACKs.\n\nTree-SHA512: 95876eca7366b4c4f647bc2ea8841b2200b9959bcb5aa5a3873bbcb8bb275f89fadac16562b4d2a85677b31b56f906887b04b34c614fc6d0fa5fc15ea1a53eec","shortMessageHtmlLink":"Merge #105: types: Add Custom{Build,Read,Pass}Message hooks"}},{"before":"e4540729c9d4c2cc31db98571ec700f6fbdb4a27","after":"6aca5f389bacf2942394b8738bbe15d6c9edfb9b","ref":"refs/heads/master","pushedAt":"2024-07-23T18:44:20.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#104: Fix $Proxy.wrap mapping for empty structs with no fields\n\n90f8b37a3bb6e7b954c9e2846aea48ee82b3a06f Fix $Proxy.wrap mapping for empty structs with no fields (Ryan Ofsky)\n\nPull request description:\n\n Trying to pass an empty struct that is annotated with `$Proxy.wrap` and has no data fields fails because the `BuildOne` overload for the last field number is incorrectly declared to accept an lvalue builder reference instead of a universal reference, and the `CustomBuildField` overload which calls `BuildOne` passes an `rvalue` builder, so the call fails with error:\n\n ```c++\n include/mp/proxy-types.h:1066:5: error: no matching function for call to 'BuildOne'\n 1066 | BuildOne<0>(local_type, invoke_context, output.init(), value);\n\n include/mp/proxy-types.h:1050:6: note: candidate function [with index = 0, LocalType = mp::test::FooEmpty, Value = mp::test::FooEmpty, Output = mp::test::messages::FooEmpty::Builder] not viable: expects an lvalue for 3rd argument\n 1050 | void BuildOne(TypeList param,\n ```\n\n The problem did not happen as long as the wrapped struct had at least one field because `CustomBuildField` would call a different `BuildOne` overload for the first field number which does accept rvalue builders, and that `BuildOne` overload would call the next `BuildOne` overload for the next field number passing the builder as an lvalue.\n\nTop commit has no ACKs.\n\nTree-SHA512: eac746a523a860d07ac59525fe75c928487c90725c43183cb418dd9301438a2110092cbd9585de614ed8bbb614a712cf5b57563d91965671ec932268bb47da23","shortMessageHtmlLink":"Merge #104: Fix $Proxy.wrap mapping for empty structs with no fields"}},{"before":"8b8a4766ce0a1892b9e8a5eb73dc39821005e520","after":"e4540729c9d4c2cc31db98571ec700f6fbdb4a27","ref":"refs/heads/master","pushedAt":"2024-07-23T17:41:13.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#103: cmake: Fix package configuration file\n\nc373a94d5b4b3f9c3ee582d15db61d17525bb9bf cmake: Fix package configuration file (Hennadii Stepanov)\n\nPull request description:\n\n When loading a package configuration file, `find_package` defines variables to provide information about the call arguments. In particular, `CMAKE_FIND_PACKAGE_NAME` represents the package name.\n\n This PR uses this variable instead of a hardcoded name, making the use case suggested in https://github.com/chaincodelabs/libmultiprocess/pull/98#issuecomment-2243751206 workable:\n ```cmake\n find_package(Libmultiprocess COMPONENTS Lib)\n find_package(LibmultiprocessNative COMPONENTS Bin\n NAMES Libmultiprocess\n )\n ```\n\nACKs for top commit:\n ryanofsky:\n Code review ACK c373a94d5b4b3f9c3ee582d15db61d17525bb9bf\n\nTree-SHA512: 493cfd62c4992c9753772844c0a96004d45eb1c807986b7ce7871fdf0debede79d9f9fbe22ecce0a92d4d0b5a2d24f0067c2b5816f5210a8f5bcbb41d04fb917","shortMessageHtmlLink":"Merge #103: cmake: Fix package configuration file"}},{"before":"8da05246286cefe0e0aecdfc70dea5c5f214c920","after":"8b8a4766ce0a1892b9e8a5eb73dc39821005e520","ref":"refs/heads/master","pushedAt":"2024-06-13T18:20:25.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#102: doc: Document shutdown sequences better\n\n2c66dd59951cf75c91a2716a6cbff21f60f97f0b doc: Document shutdown sequences better (Ryan Ofsky)\n\nPull request description:\n\n Improve comments describing proxy server and proxy client object shutdown sequences.\n\n This also adds a new assert in ~ProxyServerBase()\n\nTop commit has no ACKs.\n\nTree-SHA512: 9d1fcf826f7b2f4e8f633e720b260ca34dee02b375e0f2e703aa06cb21d5936b55f81ffba365bdc14c08ad8fce33d24df9b3d347d28258df31019698d195f54d","shortMessageHtmlLink":"Merge #102: doc: Document shutdown sequences better"}},{"before":"53ee9faf8422cb62edeb4e5f33e76b4fe700fcde","after":"8da05246286cefe0e0aecdfc70dea5c5f214c920","ref":"refs/heads/master","pushedAt":"2024-06-13T15:50:05.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#101: connection: run async cleanups in LIFO not FIFO order\n\n6825523c6e35e6f8f56ff013d24b51d3ceb8f58d connection: run async cleanups in LIFO not FIFO order (Ryan Ofsky)\n\nPull request description:\n\n Run Connection class asynchronous cleanups in LIFO not FIFO order, which is more natural ordering and prevents a bitcoin wallet shutdown deadlock when the connection to the node process is broken. Also add comments better documenting cleanup order.\n\n This change fixes one of two shutdown deadlocks in the bitcoin wallet when the node process is killed in https://github.com/bitcoin/bitcoin/pull/10102 as of https://github.com/bitcoin/bitcoin/commit/3f12b4362c1b822835889151f6cd54c4829cf3ad. The other deadlock is caused by the `ProxyServerCustom` destructor in that PR and is described in commit efe42cc2879915b2ffdff04ec1cfe715e8dfa0a0 from #100.\n\n The bitcoin wallet shutdown deadlocks have probably been around for some time, but were not encountered because before https://github.com/bitcoin/bitcoin/commit/0b753156ce60c29efb2386954ba7555ad8f642f5 from https://github.com/bitcoin/bitcoin/pull/26606 there weren't any tests which killed the bitcoin node process and required the bitcoin-wallet process to shut down gracefully.\n\nTop commit has no ACKs.\n\nTree-SHA512: cbbedcc71e4c3ebb541d95f2444151c4058fff3b6357bed5c1b2929d5311fd2a621aeed1af7f56a6159bb3c1ac8abf051acc22830f748edaa6b61ecd557f5074","shortMessageHtmlLink":"Merge #101: connection: run async cleanups in LIFO not FIFO order"}},{"before":"e45c482c4081bb0f242ebd07f7b3af3cee5da603","after":"53ee9faf8422cb62edeb4e5f33e76b4fe700fcde","ref":"refs/heads/master","pushedAt":"2024-06-13T15:35:54.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#100: doc: Add various code comments and documentation\n\n537c645652cb98a641bb7e40ff541c89bf4ec471 doc: Improve ProxyServerCustom class documentation (Ryan Ofsky)\nd4d9f931756242a29f41b043286b834813caf439 doc: Document FunctionTraits/ProxyMethodTraits classes (Ryan Ofsky)\n78c7dd0be54219c4f5ac3e3ea285254b8f7eafce doc: Document ProxyClient construct/destroy methods (Ryan Ofsky)\ne99c0b75648aa2928c16f4de575786f66f785180 doc: Document clientInvoke/serverInvoke functions (Ryan Ofsky)\n2098ae1b186f96cd14b77eee7f5cc8504acba9a7 doc: Add comment on serverInvoke ReplaceVoid usage (Ryan Ofsky)\na1dfb0bab4778e8382848f6299fecb20afc9383f doc: Add comments to mp.Context PassField function on updating g_thread_context (Ryan Ofsky)\ne49a925a4055f27ee727377d7bea2423e33ba511 doc: Add comments to mp.Context PassField function on mp.Context.thread lookup (Ryan Ofsky)\n\nPull request description:\n\n Add code comments and documentation. Most of these comments were originally added as part of #94 but are being moved to a separate PR so they can be merged sooner\n\nTop commit has no ACKs.\n\nTree-SHA512: 284325513d3244313a4ff54ed20648061a6142ce89f4449bb046938780f1d74c7691dba5fdff5f478f585e95e5ea0987af2fde2e67c049adc8a6b7db21371341","shortMessageHtmlLink":"Merge #100: doc: Add various code comments and documentation"}},{"before":"e29f74e8ff00554832a941b4952999daac693ff3","after":"e45c482c4081bb0f242ebd07f7b3af3cee5da603","ref":"refs/heads/master","pushedAt":"2024-06-13T13:09:13.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#99: proxy-types: Fix missing space in server destroy log print\n\n0c70a0f89ec4c1b13df6a9a55404cc2ef85c5f39 proxy-types: Fix missing space in server destroy log print (Ryan Ofsky)\n\nPull request description:\n\nTop commit has no ACKs.\n\nTree-SHA512: f9a53e7a59131f3079c682b0c132e84a6cbb36bd7eb2aa8fec9921b14ac110d734e858233031b27082e516c68151ad081967a8a1331afd94fbffd1d4ee02543b","shortMessageHtmlLink":"Merge #99: proxy-types: Fix missing space in server destroy log print"}},{"before":"3f8483b61a5eee3e958328d90f25f29a1a61ae7b","after":"e29f74e8ff00554832a941b4952999daac693ff3","ref":"refs/heads/master","pushedAt":"2024-04-01T18:52:24.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#98: cmake: Combine installed packages\n\ndc9b4e6a9903f7fdfd0ae14c5a9a672b271e3eea cmake: Combine installed packages (Ryan Ofsky)\n2ed1e9aedbbb5b8d2c61054362faeaef84aed012 cmake: CMakeLists.txt cleanup (Ryan Ofsky)\n\nPull request description:\n\n This change combines previous installed:\n\n - `cmake/LibmultiprocessLibConfig.cmake`\n - `cmake/LibmultiprocessBinConfig.cmake`\n\n files into a single:\n\n - `cmake/Libmultiprocess/LibmultiprocessConfig.cmake`\n\n file, so it can be imported with `find_package(Libmultiprocess)`.\n\n The previous locations which were set in https://github.com/chaincodelabs/libmultiprocess/pull/97 were not compatible with `find_package` search behavior by default.\n\n The change also adds some documentation about using the new package to doc/install.md.\n\nTop commit has no ACKs.\n\nTree-SHA512: 506a2f73f19de541d36cc192f3553ae583e78644f60e958234b2a29d0c5f053890bbe176f7dbd38bad0598a5fa2426a34e64b0f266bc87a01eaa21cb7ecd1226","shortMessageHtmlLink":"Merge #98: cmake: Combine installed packages"}},{"before":"003eb04d6d0029fd24a330ab63d5a9ba08cf240f","after":"3f8483b61a5eee3e958328d90f25f29a1a61ae7b","ref":"refs/heads/master","pushedAt":"2024-03-30T00:38:38.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#97: cmake: rename new packages and module introduced in #95 and #96\n\nc6a1d7fb6b0730eb7aa3edcdd62b9c41b1d31896 cmake: rename new packages and module introduced in #95 and #96 (Ryan Ofsky)\n\nPull request description:\n\n Rename \"LibmultiprocessMacros.cmake\" module introduced in #95 to \"TargetCapnpSources.cmake\" to match the name of the `target_capnp_sources` function it contains. Also install it to:\n\n ```sh\n /lib/cmake/Libmultiprocess/TargetCapnpSources.cmake\n ```\n\n instead of:\n\n ```sh\n /lib/cmake/LibmultiprocessGen/LibmultiprocessMacros.cmake\n ```\n\n Rename the \"Libmultiprocess\" and \"LibmultiprocessGen\" packages introduced in #96 to \"LibmultiprocessLib\" and \"LibmultiprocessBin\", so package names are consistent with component names \"lib\" and \"bin\", and one package name is not a prefix of the other. Also rename intermediate files to match component names.\n\n | | New | Current |\n |----------------|----------------------------------|----------------------------------------------|\n | Component name | lib | lib |\n | Package name | LibmultiprocessLib | Libmultiprocess |\n | Config file | LibmultiprocessLibConfig.cmake | Libmultiprocess/LibmultiprocessConfig.cmake |\n | Targets file | Libmultiprocess/LibTargets.cmake | Libmultiprocess/LibmultiprocessTargets.cmake |\n\n | | New | Current |\n |----------------|----------------------------------|----------------------------------------------------|\n | Component name | bin | bin |\n | Package name | LibmultiprocessBin | LibmultiprocessGen |\n | Config file | LibmultiprocessBinConfig.cmake | LibmultiprocessGen/LibmultiprocessGenConfig.cmake |\n | Targets file | Libmultiprocess/BinTargets.cmake | LibmultiprocessGen/LibmultiprocessGenTargets.cmake |\n\nTop commit has no ACKs.\n\nTree-SHA512: db099f34e14f5433c644190359bef0f3b836401b31c8eea3c4f7d732ec06402eb01063360d8b7ebbed9522be9c6758e157e46e15cafd80ac2bebc5c915ad2160","shortMessageHtmlLink":"Merge #97: cmake: rename new packages and module introduced in #95 and "}},{"before":"19dea85cf24eba0d2d63b2345a415ebab1c8b1ce","after":"003eb04d6d0029fd24a330ab63d5a9ba08cf240f","ref":"refs/heads/master","pushedAt":"2024-03-30T00:20:17.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#96: cmake: Introduce packages\n\n4e70ad47191f85188da869400690c22f6f81e1e0 cmake, refactor: Rename target export files (Hennadii Stepanov)\n694b6b13e92bd3f71fac3f7083d4d250546571c6 cmake: Configure `LibmultiprocessGen` package (Hennadii Stepanov)\n3b20e35ab8a63b16660545668c0c056ad73f35ce cmake: Configure `Libmultiprocess` package (Hennadii Stepanov)\n\nPull request description:\n\n This PR adds configurations for the `Libmultiprocess` and `LibmultiprocessGen` packages.\n\n The Bitcoin Core branch, with uses this PR branch, is available [here](https://github.com/hebasto/bitcoin/tree/240329-cmake-CI-mpgen).\n\n As a suggestion for a follow-up, it seems worth disabling `mpgen` target for cross-compiling (see https://github.com/bitcoin/bitcoin/pull/29665#issuecomment-2002027957 and CMake [docs](https://cmake.org/cmake/help/book/mastering-cmake/chapter/Cross%20Compiling%20With%20CMake.html#running-executables-built-in-the-project)).\n\n Based on https://github.com/chaincodelabs/libmultiprocess/pull/95.\n\nACKs for top commit:\n ryanofsky:\n Code review ACK 4e70ad47191f85188da869400690c22f6f81e1e0. This should make it easier to depend on libmultprocess in cmake projects, using a find_package call and not having to include files directly.\n\nTree-SHA512: 231d00fd3b03bff40d010d39636a4c6b26e071a1d2c220f204ef536d6f3f7b3c81d2d05a16e3bb23f405a45e2b763cd88344cabd9eb407f1967b766b328815a4","shortMessageHtmlLink":"Merge #96: cmake: Introduce packages"}},{"before":"8da797c5f1644df1bffd84d10c1ae9836dc70d60","after":"19dea85cf24eba0d2d63b2345a415ebab1c8b1ce","ref":"refs/heads/master","pushedAt":"2024-03-29T23:38:47.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#95: cmake: Introduce `LibmultiprocessMacros` module\n\n66643d8eaabdaf6b2d69ecc0659350175a394d5b cmake, refactor: Use `target_capnp_sources` for examples (Hennadii Stepanov)\nbd2dfe27b02612e03d0800d7c5de44fabda59913 cmake, refactor: Use `target_capnp_sources` for `mptest` target (Hennadii Stepanov)\nd9ec22f81bef9c42d583e9db0aab52f774e2faeb cmake: Add `LibmultiprocessMacros` module (Hennadii Stepanov)\n\nPull request description:\n\n This PR introduces the `LibmultiprocessMacros` module that is used internally and might be exported as a part of the (future) `LibmultiprocessGen` package (it is a subject of the follow-up [PR](https://github.com/chaincodelabs/libmultiprocess/pull/96)).\n\n Also see a discussion in https://github.com/hebasto/bitcoin/pull/118.\n\nACKs for top commit:\n ryanofsky:\n Code review ACK 66643d8eaabdaf6b2d69ecc0659350175a394d5b\n\nTree-SHA512: b97fcb2ce7b2085b3a041c422e3f51f06b8bf7a0abaa5baa7f39db2bf03491447bf7af073c95fb8bb6bc602d30e0c8856ae523954980cdb85afd87442c0b909a","shortMessageHtmlLink":"Merge #95: cmake: Introduce LibmultiprocessMacros module"}},{"before":"7d1fee06d65cefd4a59c51f1f6ea4754d0efbd99","after":"8da797c5f1644df1bffd84d10c1ae9836dc70d60","ref":"refs/heads/master","pushedAt":"2024-01-22T16:43:09.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#93: Fix support for vector serialization with libc++\n\n10fc3eda9cf383d111b155d87208bf36e113ce13 Fix support for vector serialization with libc++ (Ryan Ofsky)\n\nPull request description:\n\n The vector serialization supported added in https://github.com/chaincodelabs/libmultiprocess/pull/86 commit 1c6fb04dddfc0de35eb5952649fda83a030ff288 was only tested with libstdc++ not libc++ and caused a test compilation failure when compiling on macos, reported by edilmedeiros in https://github.com/chaincodelabs/libmultiprocess/issues/92\n\n Fix the issue that was causing the build to fail: trying to use using vector's reference type instead of const_reference type when serializing the vector.\n\n Fixes #92\n\nTop commit has no ACKs.\n\nTree-SHA512: ad295f384fd10be94640809877a8e04d280ab837348ed3427b5c0eeae244f86c092048e148ffe7d37de10d0caa6a38a0839910481fdff711e0ab9ac18eb2a784","shortMessageHtmlLink":"Merge #93: Fix support for vector<bool> serialization with libc++"}},{"before":"2cbbd09d8b9972a8f5c68b510c0dae9a9f7a22da","after":"7d1fee06d65cefd4a59c51f1f6ea4754d0efbd99","ref":"refs/heads/master","pushedAt":"2024-01-18T20:05:17.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#91: util: Drop Bind, BindTuple, ComposeFn, GetFn, and ThrowFn helpers\n\n65260d1851ff2ec66d1f4969354eb2edb5b4b89b util: Drop Bind, BindTuple, ComposeFn, GetFn, and ThrowFn helpers (Ryan Ofsky)\n\nPull request description:\n\n Last remaining uses of these utilities except for ThrowFn were removed in https://github.com/chaincodelabs/libmultiprocess/pull/31.\n\n Last remaining use of ThrowFn is removed here. After C++14 it is easily replaced with a perfect-forwarding auto&& lambda.\n\n Immediate motivation for this change is to fix C++20 compilers complaining about reference to std::result_of in the unused code:\n https://github.com/bitcoin/bitcoin/issues/29248\n\nTop commit has no ACKs.\n\nTree-SHA512: ecf60074101c04102e1119f08b7201fc81640a63eb7590db93a77af7be7ff80af5262190fe2ba87ce00c5638323ee863f2852942b91fd51d06d35079a00d122d","shortMessageHtmlLink":"Merge #91: util: Drop Bind, BindTuple, ComposeFn, GetFn, and ThrowFn …"}},{"before":"02711958d968b7828e2afdc6e42c16122d07b579","after":"2cbbd09d8b9972a8f5c68b510c0dae9a9f7a22da","ref":"refs/heads/master","pushedAt":"2024-01-11T19:37:08.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#90: pkgconfig: Use @CMAKE_INSTALL_LIBDIR@ variable\n\n0f9605b026938b9aa69cbe30a9ff7e54283ea2ce pkgconfig: Use @CMAKE_INSTALL_LIBDIR@ variable (Ryan Ofsky)\n\nPull request description:\n\n Use @CMAKE_INSTALL_LIBDIR@ variable instead of hardcoding \"lib\" as the libdir. This is needed after 54bd57fb3b064c7f3d556b015e8f64fd8d234c19 (https://github.com/chaincodelabs/libmultiprocess/pull/79) which changed the installation to sometimes install to \"lib64\".\n\n This fixes error \"ld: cannot find -lmultiprocess: No such file or directory\" in Bitcoin Core.\n\n Also replace hardcoded \"include\" with @CMAKE_INSTALL_INCLUDEDIR@ for consistency.\n\nTop commit has no ACKs.\n\nTree-SHA512: f6bf645b9ad9575b4f1847a65839de01546dea574787ac1789cfffc9b144545dfc70b552d986e003ef845c40b011393b6be0d1e324e4bd6ba4e4e89d29c3a91a","shortMessageHtmlLink":"Merge #90: pkgconfig: Use @CMAKE_INSTALL_LIBDIR@ variable"}},{"before":"414542f81e0997354b45b8ade13ca144a3e35ff1","after":"02711958d968b7828e2afdc6e42c16122d07b579","ref":"refs/heads/master","pushedAt":"2024-01-11T19:36:40.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#89: pkgconfig: Drop -std=c++17 compile flag\n\n590d1e737c71e026faea3313ed5789658898dade pkgconfig: Drop -std=c++17 compile flag (Ryan Ofsky)\n\nPull request description:\n\n This compile flag was required previously when Bitcoin Core was using C++11, and libmultiprocess headers needed to be compiled with C++14 in order to be compatible with newer versions of Cap'n Proto. The flag was updated to C++17 since then.\n\n But now Bitcoin Core has been updated to use C++20 and having the C++17 flag causes errors when the std::u8string type is referenced in bitcoin code. So just remove the C++ flag and let the application be responsible for choosing the C++ version.\n\nTop commit has no ACKs.\n\nTree-SHA512: bfeb2f781509fe76f1a032551e0af8267968e7e4c80dff8b3b9cde03595616926cadae386dd4976d0ddf090cf7d9a18d0fcc66774260446d66ca16bc275b642f","shortMessageHtmlLink":"Merge #89: pkgconfig: Drop -std=c++17 compile flag"}},{"before":"61d5a0e661f20a4928fbf868ec9c3c6f17883cc7","after":"414542f81e0997354b45b8ade13ca144a3e35ff1","ref":"refs/heads/master","pushedAt":"2023-11-17T20:07:13.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#88: Fix current deprecation warnings as of capnproto-1.0.1\n\n962e68135642c4108a17aff422460047a33e9d4f mpgen: Avoid deprecated SchemaParser::parseDiskFile call (Ryan Ofsky)\ne8e89dfd37d84b7758a449b5e7dc780484747523 Remove deprecated kj::mvCapture calls to avoid warnings (Ryan Ofsky)\n\nPull request description:\n\n This drops compatibility with capnproto versions before 0.7.0 and also adds a hard dependency on the kj/filesystem.h library which was previously optional\n\n Fixes #87 and #39\n\nTop commit has no ACKs.\n\nTree-SHA512: fcfce7ec96c44eebba9e59f9d00c1a05f1c5189ecafa7331da87c130eb077d5c5c2cb92c57b00df9f16fd72a88d74a2f4c2604069e358e1783bc321635a0d5d1","shortMessageHtmlLink":"Merge #88: Fix current deprecation warnings as of capnproto-1.0.1"}},{"before":"aea56f0e2a88e1d4409285f040612a0566335e7e","after":"61d5a0e661f20a4928fbf868ec9c3c6f17883cc7","ref":"refs/heads/master","pushedAt":"2023-09-27T21:00:57.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#86: Add support for vector serialization\n\n1c6fb04dddfc0de35eb5952649fda83a030ff288 Add support for vector serialization (Ryan Ofsky)\n\nPull request description:\n\n Needed to support `vector` `txout_is_change` field added in https://github.com/bitcoin-core/gui/pull/119\n\nTop commit has no ACKs.\n\nTree-SHA512: e7b87a6c52c09631c6effef66f79fa2954e8e5a6e4d17f348dc7295d6c3bd13da29922bd8802dcf5d566c2c72dcfed37da6889cc733850c8479bdd3113e2f6c9","shortMessageHtmlLink":"Merge #86: Add support for vector<bool> serialization"}},{"before":"fc28a48f01af9730be3b49585e718e11c5eea0c5","after":"aea56f0e2a88e1d4409285f040612a0566335e7e","ref":"refs/heads/master","pushedAt":"2023-09-20T00:40:30.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ryanofsky","name":"Ryan Ofsky","path":"/ryanofsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7133040?s=80&v=4"},"commit":{"message":"Merge chaincodelabs/libmultiprocess#85: Remove naming requirement for std::pair/std::tuple\n\n3df497456b9b1d57dec1b03dc1052b8a8258fa30 Remove naming requirement for std::pair/std::tuple (Ryan Ofsky)\n\nPull request description:\n\n When converting C++ std::pair and length 2 std::tuple values to and from capn'proto structs, no longer require the struct to have fields named \"key\" and \"value\". Instead always map the first pair/tuple element to the first struct field, and the second element to the second field.\n\n This allows anonymous std::pair and std::tuple types used in the C++ interface to have names and custom Read/Build logic when they are serialized as capn'proto messages.\n\n For now only length-2 tuples are supported but this could be extended to support converting c++ tuples of arbitrary length to capn'proto structs with the same number of fields.\n\nTop commit has no ACKs.\n\nTree-SHA512: 313d55acfd82b40c9e209c582aa94c5c7f7fe33fba10b5de29deeb3fea6dfcd30229fd463587639af034eb9c37cdccf0c9f76f822f371ba26ed87ffdd215eb2c","shortMessageHtmlLink":"Merge #85: Remove naming requirement for std::pair/std::tuple"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xMlQxNDozMzo0My4wMDAwMDBazwAAAAS0gBoM","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xMlQxNDozMzo0My4wMDAwMDBazwAAAAS0gBoM","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0wOS0yMFQwMDo0MDozMC4wMDAwMDBazwAAAAOEXdxq"}},"title":"Activity · chaincodelabs/libmultiprocess"}