{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":512489149,"defaultBranch":"master","name":"gvl-tracing","ownerLogin":"ivoanjo","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-07-10T16:52:31.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2785847?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1712401653.0","currentOid":""},"activityList":{"items":[{"before":"6c5a58409932bb160fb272f319659e1e9a6ebeb9","after":"3368ed409215650a5d7efdb80da3ce6de1fd0e02","ref":"refs/heads/master","pushedAt":"2024-04-06T11:10:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Prepare for next development iteration, 1.6.0.dev","shortMessageHtmlLink":"Prepare for next development iteration, 1.6.0.dev"}},{"before":"8f75540b8db424e378a56975cd896a989266416d","after":"6c5a58409932bb160fb272f319659e1e9a6ebeb9","ref":"refs/heads/master","pushedAt":"2024-04-06T11:09:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Release 1.5.2","shortMessageHtmlLink":"Release 1.5.2"}},{"before":"1409a8c3fe982393e52128242df62f07424206db","after":"8f75540b8db424e378a56975cd896a989266416d","ref":"refs/heads/master","pushedAt":"2024-04-06T11:07:31.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Release 1.5.2","shortMessageHtmlLink":"Release 1.5.2"}},{"before":"e638b0714f27ec54552eafc410dfd06d32049d18","after":"205ff410452a2b2d8369c46757040d5ec92e933f","ref":"refs/heads/fix-macos-support","pushedAt":"2024-04-06T11:04:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Fix wrong integer width for `native_thread_id` on macOS on Ruby 3.2","shortMessageHtmlLink":"Fix wrong integer width for native_thread_id on macOS on Ruby 3.2"}},{"before":null,"after":"e638b0714f27ec54552eafc410dfd06d32049d18","ref":"refs/heads/fix-macos-support","pushedAt":"2024-04-06T10:46:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Replace C11 threads with pthreads\n\nSo, TIL. Clearly it should've been obvious that in 2024, one cannot\njust _assume_ that reasonable mainstream compilers will support... C11.\n\nAnd thus it looks like that clang on macOS for some really bizarre\nfeature never bothered to implement C11 threads.h (although it supports\nother C11 APIs and features).\n\nSo here's me porting over the use of C11 `mutex_t` to pthreads.","shortMessageHtmlLink":"Replace C11 threads with pthreads"}},{"before":"a26b146e65873d8821ec53b1b9faaed44f5ff444","after":"1409a8c3fe982393e52128242df62f07424206db","ref":"refs/heads/master","pushedAt":"2024-03-29T12:52:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Prepare for next development iteration, 1.6.0.dev","shortMessageHtmlLink":"Prepare for next development iteration, 1.6.0.dev"}},{"before":"ec1f4c31e93feadf366eb15061279983f0c8a862","after":"a26b146e65873d8821ec53b1b9faaed44f5ff444","ref":"refs/heads/master","pushedAt":"2024-03-29T12:51:41.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Release 1.5.1","shortMessageHtmlLink":"Release 1.5.1"}},{"before":"acf2a15729d13fc86e60552192e9af9ff66558bb","after":"ec1f4c31e93feadf366eb15061279983f0c8a862","ref":"refs/heads/master","pushedAt":"2024-03-29T00:17:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Prepare for next development iteration, 1.6.0.dev","shortMessageHtmlLink":"Prepare for next development iteration, 1.6.0.dev"}},{"before":"0f3f408aa61909ef4c44a9b3374837cf7a24fb19","after":"acf2a15729d13fc86e60552192e9af9ff66558bb","ref":"refs/heads/master","pushedAt":"2024-03-29T00:16:16.000Z","pushType":"push","commitsCount":16,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Release 1.5.0\n\nFinally, Ruby 3.3 support!!! :)","shortMessageHtmlLink":"Release 1.5.0"}},{"before":"4ffa17f7d496761f3199c08b664e5b2eb2ca5443","after":"0f3f408aa61909ef4c44a9b3374837cf7a24fb19","ref":"refs/heads/master","pushedAt":"2024-03-27T18:09:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Remove CI jobs for windows\n\nSince Windows never worked, they were definitely a false sense of\nsafety.","shortMessageHtmlLink":"Remove CI jobs for windows"}},{"before":"4e9c44981c374868fa836ca58da9b69e94344c38","after":"0f3f408aa61909ef4c44a9b3374837cf7a24fb19","ref":"refs/heads/fix-windows","pushedAt":"2024-03-27T18:09:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Remove CI jobs for windows\n\nSince Windows never worked, they were definitely a false sense of\nsafety.","shortMessageHtmlLink":"Remove CI jobs for windows"}},{"before":"c56286f13166dc4c955bed08c5a45a18f414fe29","after":"4e9c44981c374868fa836ca58da9b69e94344c38","ref":"refs/heads/fix-windows","pushedAt":"2024-03-27T18:05:02.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Add prettier name for CI jobs","shortMessageHtmlLink":"Add prettier name for CI jobs"}},{"before":null,"after":"c56286f13166dc4c955bed08c5a45a18f414fe29","ref":"refs/heads/fix-windows","pushedAt":"2024-03-27T17:59:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Add nice warning message that gem doesn't work on Windows","shortMessageHtmlLink":"Add nice warning message that gem doesn't work on Windows"}},{"before":"3c98c992e48c44cfb47eb922a7126f7e4d3f41bf","after":"4ffa17f7d496761f3199c08b664e5b2eb2ca5443","ref":"refs/heads/master","pushedAt":"2024-02-21T14:58:11.000Z","pushType":"pr_merge","commitsCount":8,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Support for 3.3 and N:M threads (#18)\n\nFix #17 \r\nPaired with @byroot \r\n\r\nThis PR adds support for Ruby 3.3 by using the new\r\n`rb_internal_thread_specific_get` which allows accessing data specific\r\nto a Ruby thread without requiring the GVL to be locked. It also handles\r\nN:M threads automatically.\r\n\r\nMore info here:\r\nhttps://github.com/ruby/ruby/commit/352a885a0f1a4d4576c686301ee71ea887a345e5\r\n\r\nIn Ruby 3.3, the thread events don't necessarily run from the thread\r\nthey correspond to, so the thread corresponding to the event is sent in\r\n`event_data`, and now `GT_LOCAL_STATE` needs to take the thread too.\r\n\r\nTo handle GC, the thread specific data is wrapped into a TypedData\r\nstruct and stored in the Ruby thread as a instance variable. This\r\nrequires getting the GVL, so we have an `allocate` flag on\r\n`GT_LOCAL_STATE` too, which is false when we're not running from the\r\nthread and can't allocate. The hook only runs from its corresponding\r\nthread for the `RUBY_INTERNAL_THREAD_EVENT_STARTED` and\r\n`RUBY_INTERNAL_THREAD_EVENT_RESUMED` events, so we can allocate there.\r\n\r\nIf the local state hasn't been initialized yet, we just return early.\r\nThis means we would skipping events from already existing threads that\r\nhaven't been resumed yet. To avoid this, we initialize all threads when\r\ntracing starts. We do this from Ruby, which ensures we have the GVL. We\r\nadded a spec for that, which passes on main on 3.2, but not on 3.3.\r\n\r\nTo support N:M threads (and differentiate events from different threads\r\nbut the same native thread), instead of returning the native thread id,\r\nwe know return the address of the Ruby thread in `tid` (on Ruby 3.3).","shortMessageHtmlLink":"Support for 3.3 and N:M threads (#18)"}},{"before":"a7043bdbb3a2368ac599fe545258e4cd9900e865","after":"3c98c992e48c44cfb47eb922a7126f7e4d3f41bf","ref":"refs/heads/master","pushedAt":"2024-01-20T16:54:53.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Add note that gem doesn't really work on Windows","shortMessageHtmlLink":"Add note that gem doesn't really work on Windows"}},{"before":"397c222bf450105e5d177def3350808a47063c92","after":"a7043bdbb3a2368ac599fe545258e4cd9900e865","ref":"refs/heads/master","pushedAt":"2023-12-09T18:27:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Fix typo in comment","shortMessageHtmlLink":"Fix typo in comment"}},{"before":"49d2665723df78b96c4911fbe35613930e0cc21a","after":"397c222bf450105e5d177def3350808a47063c92","ref":"refs/heads/master","pushedAt":"2023-12-09T18:12:25.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Fixes block form of #start + add specs (#15)\n\n* Because the ensure calls `_stop` instead of `stop`, the block form\r\nproduces invalid json\r\n\r\n* Perfetto is pretty permissive about this and still accepts the file -\r\nbut other tools break and JSON parsing is broken\r\n\r\n* Also adds first specs for the project, covering a few different\r\nscenarios 🎉","shortMessageHtmlLink":"Fixes block form of #start + add specs (#15)"}},{"before":"4db8081f67cc2a70739c006ab6f6d096834b24bd","after":"49d2665723df78b96c4911fbe35613930e0cc21a","ref":"refs/heads/master","pushedAt":"2023-09-20T06:14:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Replace link to first blog post with link to RubyKaigi talk","shortMessageHtmlLink":"Replace link to first blog post with link to RubyKaigi talk"}},{"before":"fc2bf9204fea617854118998ee0d8aaca8718a6e","after":"4db8081f67cc2a70739c006ab6f6d096834b24bd","ref":"refs/heads/master","pushedAt":"2023-09-06T17:45:36.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Minor code style fixes","shortMessageHtmlLink":"Minor code style fixes"}},{"before":"52acb9574d145d317e8575874f9eb74feaa05b33","after":"fc2bf9204fea617854118998ee0d8aaca8718a6e","ref":"refs/heads/master","pushedAt":"2023-09-06T17:37:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Fix broken CI due to C compiler warning","shortMessageHtmlLink":"Fix broken CI due to C compiler warning"}},{"before":"7e0f90dea28a133a1d8ac7c4b83efc11f2b4c395","after":"52acb9574d145d317e8575874f9eb74feaa05b33","ref":"refs/heads/master","pushedAt":"2023-09-05T16:13:52.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Release version 1.4.0","shortMessageHtmlLink":"Release version 1.4.0"}},{"before":"3715cbfd59146f732f956dadd4af46526d7bc373","after":"7e0f90dea28a133a1d8ac7c4b83efc11f2b4c395","ref":"refs/heads/master","pushedAt":"2023-07-01T08:20:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Prepare for next development iteration, 1.4.0.dev","shortMessageHtmlLink":"Prepare for next development iteration, 1.4.0.dev"}},{"before":"8eaba2d0be0918c3dbb907d7113228ff3e559e07","after":"3715cbfd59146f732f956dadd4af46526d7bc373","ref":"refs/heads/master","pushedAt":"2023-07-01T08:20:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Release version 1.3.0","shortMessageHtmlLink":"Release version 1.3.0"}},{"before":"884c6be3a3e05ca2d6efdf5b74784147d07015be","after":"8eaba2d0be0918c3dbb907d7113228ff3e559e07","ref":"refs/heads/master","pushedAt":"2023-06-12T09:03:20.120Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Add support for passing a block to `start` method (#14)\n\nAdd a new module function `execute(filename)` into `GvlTracing` wrapping\r\ncall of `start` and `stop` methods.\r\n\r\nThis is one of the tasks from\r\nhttps://github.com/ivoanjo/gvl-tracing/issues/13","shortMessageHtmlLink":"Add support for passing a block to start method (#14)"}},{"before":"5116a15f7fa8daba43709fde2973c8db3326fcc1","after":"884c6be3a3e05ca2d6efdf5b74784147d07015be","ref":"refs/heads/master","pushedAt":"2023-06-06T21:09:41.682Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Prepare for next development iteration, 1.3.0.dev","shortMessageHtmlLink":"Prepare for next development iteration, 1.3.0.dev"}},{"before":"f0de45da9a0246b7b93fd0056442fbcc8d1e1757","after":"5116a15f7fa8daba43709fde2973c8db3326fcc1","ref":"refs/heads/master","pushedAt":"2023-06-06T21:08:03.224Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Release version 1.2.0","shortMessageHtmlLink":"Release version 1.2.0"}},{"before":"ab7d9e7efa7442069e028cf12630c04595a14f0b","after":"f0de45da9a0246b7b93fd0056442fbcc8d1e1757","ref":"refs/heads/master","pushedAt":"2023-06-06T20:55:49.447Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Use `uint64_t` for thread_id\n\nThis avoids any OS/hardware int size differences.","shortMessageHtmlLink":"Use uint64_t for thread_id"}},{"before":"d8e56966969c9cef3553042a3dc965f04fb6ab49","after":"ab7d9e7efa7442069e028cf12630c04595a14f0b","ref":"refs/heads/master","pushedAt":"2023-06-06T20:49:05.514Z","pushType":"push","commitsCount":2,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Tweak printing of pid to avoid compiler warnings on windows","shortMessageHtmlLink":"Tweak printing of pid to avoid compiler warnings on windows"}},{"before":"9b2a53a14982972fab70e17a5857ac6e67a4068f","after":"d8e56966969c9cef3553042a3dc965f04fb6ab49","ref":"refs/heads/master","pushedAt":"2023-06-06T20:30:23.836Z","pushType":"push","commitsCount":1,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Try to trigger CI failures on compiler warnings","shortMessageHtmlLink":"Try to trigger CI failures on compiler warnings"}},{"before":"2ca630f64e9b825a68ddd482a500efcf6bb474ef","after":"9b2a53a14982972fab70e17a5857ac6e67a4068f","ref":"refs/heads/master","pushedAt":"2023-06-06T20:25:09.106Z","pushType":"push","commitsCount":4,"pusher":{"login":"ivoanjo","name":"Ivo Anjo","path":"/ivoanjo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2785847?s=80&v=4"},"commit":{"message":"Tweak `thread_name_with_extension.rb` example to observe thread pool executing\n\nThe previous version of the example was a bit of a race, and the main\nthread could get to `GvlTracing.stop` before interesting things happened\nin the thread pool.\n\nThis tweak ensures that interesting things do show up.","shortMessageHtmlLink":"Tweak thread_name_with_extension.rb example to observe thread pool …"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEKZJJJAA","startCursor":null,"endCursor":null}},"title":"Activity · ivoanjo/gvl-tracing"}