{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":277012240,"defaultBranch":"master","name":"btree.c","ownerLogin":"tidwall","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-07-04T00:46:03.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1156077?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1715438841.0","currentOid":""},"activityList":{"items":[{"before":"10d69a35f7ab98dcacecd8b29ed10db1d0e2dc82","after":"d53aaddbe282cc32253e5a5e9f5b17f3de2056a2","ref":"refs/heads/master","pushedAt":"2024-05-11T14:43:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Remove unneeded include","shortMessageHtmlLink":"Remove unneeded include"}},{"before":"c0cfc4ed9e965590796070e3c5957f34c552845d","after":"10d69a35f7ab98dcacecd8b29ed10db1d0e2dc82","ref":"refs/heads/master","pushedAt":"2024-05-11T00:50:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Copy fewer nodes on rebalance\n\nThis commit fixes a potential future memory error.\n\nIt can't be currently tested in production because the memmove\noverwrites a \"spare\" slot that isn't used during the\nrebalance operation. But without this fix, if at some point in\nthe future the spare slots are no longer located immediately\nafter the child nodes then a heap-buffer-overflow would have\nhappen.","shortMessageHtmlLink":"Copy fewer nodes on rebalance"}},{"before":"cf1bb9261dc89f94cd5c192f0e6eaef1b016be25","after":"c0cfc4ed9e965590796070e3c5957f34c552845d","ref":"refs/heads/master","pushedAt":"2024-05-03T01:53:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Fix reference counter falling belowing zero\n\nThis commit fixes an issue where a node's reference counter\nmay fall below zero when more than one tree share the same node\n(rc == 1) and then the both copy the node and fetch_subtract the\nrc. This is a hard to produce issue, but possible.\n\nThe rc must never fall below zero except when the node is\nabout to be freed by the node_free function.\n\nThis commit replaces the fetch_subtract with node_free which\ncorrectly frees the node when the rc == -1.","shortMessageHtmlLink":"Fix reference counter falling belowing zero"}},{"before":"9dbe6334730da5621d6bf17e4a34708bab16ffe3","after":"cf1bb9261dc89f94cd5c192f0e6eaef1b016be25","ref":"refs/heads/master","pushedAt":"2024-04-14T13:52:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Remove unneeded cast\n\nSee #4","shortMessageHtmlLink":"Remove unneeded cast"}},{"before":"e10178bbb16b0e268747c8e1a733c8e625bd63c8","after":"9dbe6334730da5621d6bf17e4a34708bab16ffe3","ref":"refs/heads/master","pushedAt":"2023-11-14T20:29:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Add custom searcher\n\nUsing the btree_set_searcher() function, it's now possible to add\na custom search operation on node items during tree traversal.\n\nThis is an advanced operation that puts the programmer in control\nof how items are searched, such as using a bsearch, sequentially\nscanning items, or maybe using SIMD.\n\nThe benchmarks now use a custom searcher that sequentially scans\nthe items instead of a traditional bsearch. Look at the\ntests/bench.c file for an example of usage. To bench using a\nbsearch use `BSEARCH=1 tests/run.sh bench`.","shortMessageHtmlLink":"Add custom searcher"}},{"before":"45ed2e759b37280aaff08bd35fe8b09e4f60a8ae","after":"e10178bbb16b0e268747c8e1a733c8e625bd63c8","ref":"refs/heads/master","pushedAt":"2023-11-14T20:28:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Using the btree_set_searcher() function, it's now possible to add\na custom search operation on node items during tree traversal.\n\nThis is an advanced operation that puts the programmer in control\nof how items are searched, such as using a bsearch, sequentially\nscanning items, or maybe using SIMD.\n\nThe benchmarks now use a custom searcher that sequentially scans\nthe items instead of a traditional bsearch. Look at the\ntests/bench.c file for an example of usage. To bench using a\nbsearch use `BSEARCH=1 tests/run.sh bench`.","shortMessageHtmlLink":"Using the btree_set_searcher() function, it's now possible to add"}},{"before":"45ed2e759b37280aaff08bd35fe8b09e4f60a8ae","after":null,"ref":"refs/tags/v0.6.1","pushedAt":"2023-11-14T20:26:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"}},{"before":"8692fdc426fbee065b5af5832f04eb2ec8e607c4","after":"45ed2e759b37280aaff08bd35fe8b09e4f60a8ae","ref":"refs/heads/master","pushedAt":"2023-11-14T20:25:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Add custom searcher\n\nUsing the btree_set_searcher function, it's now possible to add\na custom function that performs the search operation on node\nitems during tree traversal.\n\nThis an advanced operation that put's the programmer in control\nof how items are searched, such as using a bsearch, sequentially\nscanning items, or maybe using SIMD.\n\nThe benchmarks now use a custom searcher that sequentially scans\nthe items instead of a traditional bsearch. Look at the\ntests/bench.c file for an example of usage. To bench using a\nbsearch use `BSEARCH=1 tests/run.sh bench`.","shortMessageHtmlLink":"Add custom searcher"}},{"before":"9ec00432b859def76af08f25c7a1ed2649ca55c6","after":"8692fdc426fbee065b5af5832f04eb2ec8e607c4","ref":"refs/heads/master","pushedAt":"2023-11-14T19:45:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Minor code cleanup","shortMessageHtmlLink":"Minor code cleanup"}},{"before":"e3ff9cfda959610337eacc19caf1c5f6720685a9","after":"9ec00432b859def76af08f25c7a1ed2649ca55c6","ref":"refs/heads/master","pushedAt":"2023-11-14T15:48:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Refactor for embedded namespace\n\nThis commit adds the \"btree_\" or \"BTREE_\" prefixes to all members\nto ensure that source file will not cause conflicts when embedded.","shortMessageHtmlLink":"Refactor for embedded namespace"}},{"before":"0e0cf3f19d8b8cbd501927318a939c7ba86b6670","after":"e3ff9cfda959610337eacc19caf1c5f6720685a9","ref":"refs/heads/master","pushedAt":"2023-11-14T15:15:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Update README.md","shortMessageHtmlLink":"Update README.md"}},{"before":"244db9fdb7c17cd492ac9e7a7222e2c83685b490","after":"0e0cf3f19d8b8cbd501927318a939c7ba86b6670","ref":"refs/heads/master","pushedAt":"2023-11-14T01:21:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Update README.md","shortMessageHtmlLink":"Update README.md"}},{"before":"0687c8ebd6b57b765d74b1211f765df65391fd01","after":"244db9fdb7c17cd492ac9e7a7222e2c83685b490","ref":"refs/heads/master","pushedAt":"2023-11-14T01:15:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Add loop-based iteration\n\nFor example:\n struct btree_iter *iter = btree_iter_new(tr);\n bool ok = btree_iter_seek(iter, key);\n while (ok) {\n item = btree_iter_item(iter);\n ok = btree_iter_next(iter);\n }\n btree_iter_free(iter);\n\nSee the README.md for an example.","shortMessageHtmlLink":"Add loop-based iteration"}},{"before":"3382e670af974dbb87d5a770e86dcbe3c0f4d712","after":"0687c8ebd6b57b765d74b1211f765df65391fd01","ref":"refs/heads/master","pushedAt":"2023-11-14T01:12:26.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"For example:\n\n struct btree_iter *iter = btree_iter_new(tr);\n bool ok = btree_iter_seek(iter, key);\n while (ok) {\n item = btree_iter_item(iter);\n ok = btree_iter_next(iter);\n }\n btree_iter_free(iter);\n\nSee the README.md for an example.","shortMessageHtmlLink":"For example:"}},{"before":"cfb30155c6d4479dc8429f85b2eb970b0969b8e0","after":"3382e670af974dbb87d5a770e86dcbe3c0f4d712","ref":"refs/heads/master","pushedAt":"2023-11-14T01:10:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"This is an alternative to callback iteration.\n\nFor example:\n\n struct btree_iter *iter = btree_iter_new(tr);\n bool ok = btree_iter_seek(iter, key);\n while (ok) {\n item = btree_iter_item(iter);\n ok = btree_iter_next(iter);\n }\n btree_iter_free(iter);\n\nSee the README.md for an example.","shortMessageHtmlLink":"This is an alternative to callback iteration."}},{"before":"c903e3cb4cd9e3892fbdd29a69a1e7f9b4a60dd9","after":"cfb30155c6d4479dc8429f85b2eb970b0969b8e0","ref":"refs/heads/master","pushedAt":"2023-11-14T01:08:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Added loop-based iteration\n\nThis is an alternative to callback iteration.\n\nFor example:\n\n struct btree_iter *iter = btree_iter_new(tr);\n bool ok = btree_iter_seek(iter, key);\n while (ok) {\n item = btree_iter_item(iter);\n ok = btree_iter_next(iter);\n }\n btree_iter_free(iter);\n\nSee the README.md for an example.","shortMessageHtmlLink":"Added loop-based iteration"}},{"before":"38756f3cfbf629639565727b7c5e10dfe6f8c17a","after":"c903e3cb4cd9e3892fbdd29a69a1e7f9b4a60dd9","ref":"refs/heads/master","pushedAt":"2023-11-14T01:04:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Create main.yml","shortMessageHtmlLink":"Create main.yml"}},{"before":"49e65096ca5e5529ee0d41ab8a91b556d061f423","after":"38756f3cfbf629639565727b7c5e10dfe6f8c17a","ref":"refs/heads/master","pushedAt":"2023-11-14T01:03:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"wip - github actions","shortMessageHtmlLink":"wip - github actions"}},{"before":"a3cac353cd2305b4a19457e7f964e8d052d87784","after":"49e65096ca5e5529ee0d41ab8a91b556d061f423","ref":"refs/heads/master","pushedAt":"2023-11-14T01:01:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Update main.yml","shortMessageHtmlLink":"Update main.yml"}},{"before":"8c3c5c181c3697bf75300c78c40e6bed0470c60e","after":"a3cac353cd2305b4a19457e7f964e8d052d87784","ref":"refs/heads/master","pushedAt":"2023-11-14T00:54:51.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Added loop-based iteration\n\nThis is an alternative to callback iteration.\n\nFor example:\n\n struct btree_iter *iter = btree_iter_new(tr);\n bool ok = btree_iter_seek(iter, key);\n while (ok) {\n item = btree_iter_item(iter);\n ok = btree_iter_next(iter);\n }\n btree_iter_free(iter);\n\nSee the README.md for an example.","shortMessageHtmlLink":"Added loop-based iteration"}},{"before":"26d720b458546ef88b0dfdd575901a22f67346ea","after":"8c3c5c181c3697bf75300c78c40e6bed0470c60e","ref":"refs/heads/master","pushedAt":"2023-08-28T16:02:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Add BTREE_NOATOMICS option\n\nAdd the compiler define BTREE_NOATOMIC options to disable using\nan atomic reference counter. Instead a normal int will be used\nin its place.\n\nThis means that using btree_clone() will no longer result in a\nclone that is thread-safe, but it will still a valid clone for\nsingle threaded programs. This may be desired (or needed) for\nenvironments where there are no atomics, or where concurrency is\ncoroutine-based.\n\nUsage:\n cc -DBTREE_NOATOMICS btree.c","shortMessageHtmlLink":"Add BTREE_NOATOMICS option"}},{"before":"f9d7cc02ee3934a4c469f47810c339f3ac96d41f","after":"26d720b458546ef88b0dfdd575901a22f67346ea","ref":"refs/heads/master","pushedAt":"2023-05-16T17:58:58.584Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Add max_items limit and coerse signedness","shortMessageHtmlLink":"Add max_items limit and coerse signedness"}},{"before":"fec71b86ab705fbc72d4e67d6bfe0db5855b86a1","after":"f9d7cc02ee3934a4c469f47810c339f3ac96d41f","ref":"refs/heads/master","pushedAt":"2023-05-13T15:08:04.722Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Add inttypes.h","shortMessageHtmlLink":"Add inttypes.h"}},{"before":"2df112984379dfec9b3ab5729c16f48fc7eeb4dd","after":"fec71b86ab705fbc72d4e67d6bfe0db5855b86a1","ref":"refs/heads/master","pushedAt":"2023-05-04T20:22:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Update README.md","shortMessageHtmlLink":"Update README.md"}},{"before":"c3fd17ed9df8210f83190f532ab851ab001fde2b","after":"2df112984379dfec9b3ab5729c16f48fc7eeb4dd","ref":"refs/heads/master","pushedAt":"2023-05-04T20:19:36.000Z","pushType":"push","commitsCount":13,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Merge branch 'clone'","shortMessageHtmlLink":"Merge branch 'clone'"}},{"before":"7e46071ac6dd9bc60b383ca8fa0b05d133881767","after":"da5403a87994523e8c34c0d56f3747e0be782c26","ref":"refs/heads/clone","pushedAt":"2023-05-04T20:15:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Updated README.md","shortMessageHtmlLink":"Updated README.md"}},{"before":"9c4faa701b629ef046bae3addc4bc2178ac12b6f","after":"7e46071ac6dd9bc60b383ca8fa0b05d133881767","ref":"refs/heads/clone","pushedAt":"2023-05-04T20:08:41.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"Added comments to header","shortMessageHtmlLink":"Added comments to header"}},{"before":"669ebe918ef6d47a80d00df05f051c1747675c57","after":"c3fd17ed9df8210f83190f532ab851ab001fde2b","ref":"refs/heads/master","pushedAt":"2023-05-04T11:53:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"cleanup benchmark output","shortMessageHtmlLink":"cleanup benchmark output"}},{"before":"28c76a087e16af883ccf0d8df755f85917310d13","after":"9c4faa701b629ef046bae3addc4bc2178ac12b6f","ref":"refs/heads/clone","pushedAt":"2023-05-04T11:45:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"remove unneeded code","shortMessageHtmlLink":"remove unneeded code"}},{"before":"b91208253462712eae71360f2d942648273aff53","after":"28c76a087e16af883ccf0d8df755f85917310d13","ref":"refs/heads/clone","pushedAt":"2023-05-03T23:48:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tidwall","name":"Josh Baker","path":"/tidwall","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1156077?s=80&v=4"},"commit":{"message":"full coverage","shortMessageHtmlLink":"full coverage"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNS0xMVQxNDo0MzoyNC4wMDAwMDBazwAAAARHSI1m","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0wNS0wM1QyMzo0ODoyNi4wMDAwMDBazwAAAAMlmJmo"}},"title":"Activity ยท tidwall/btree.c"}