{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":381569846,"defaultBranch":"master","name":"segvec","ownerLogin":"mccolljr","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-06-30T04:00:46.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/8538024?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1703354233.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"e6dc38259ac7a378fa525efaeb770cda5f1a41bc","ref":"refs/heads/minor_cleanup","pushedAt":"2023-12-23T17:57:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"update dependencies","shortMessageHtmlLink":"update dependencies"}},{"before":"9158ca02895daf0f5acb4caf6f14ac31d108e46e","after":"5032a56d1e3ef9ea0227db21c4b9b210c9229d15","ref":"refs/heads/master","pushedAt":"2023-12-19T14:49:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"impl `std::io::Write` for SegVec (#40)","shortMessageHtmlLink":"impl std::io::Write for SegVec (#40)"}},{"before":null,"after":"e29170c9211d8f986e57e8de1c555ca332412c90","ref":"refs/heads/minor_cleanup_actions","pushedAt":"2023-12-19T02:40:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"enable and fix some tests","shortMessageHtmlLink":"enable and fix some tests"}},{"before":"a9f31ff1688ba9c014fc6c81f5b7038dafdf284d","after":"9158ca02895daf0f5acb4caf6f14ac31d108e46e","ref":"refs/heads/master","pushedAt":"2023-12-19T02:15:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"add `extend_from_slice` method (#41)\n\n* fix extend reserving twice\r\n\r\n* implement `extend_from_slice`\r\n\r\n* add test for `extend_from_slice`\r\n\r\n* add benchmark for extend methods\r\n\r\n* add documentation to `extend_from_slice`\r\n\r\n* fix unsoundness in extend\r\n\r\n* fix test not checking whole segvec","shortMessageHtmlLink":"add extend_from_slice method (#41)"}},{"before":"fd5bf7b796a560fe5afa706490bc5f625e796da8","after":"a9f31ff1688ba9c014fc6c81f5b7038dafdf284d","ref":"refs/heads/master","pushedAt":"2023-11-23T22:17:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"add `as_contiguous` to `Slice` (#39)\n\n* add as_contiguous to slice\n\n* relax as_contiguous returned lifetime","shortMessageHtmlLink":"add as_contiguous to Slice (#39)"}},{"before":"d466ce46f0fa5f2d59d7c5bb4edc2a3c495e8177","after":"fd5bf7b796a560fe5afa706490bc5f625e796da8","ref":"refs/heads/master","pushedAt":"2023-10-24T22:17:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"update workflows (#38)\n\n- update checkout to v4\r\n- replace deprecated actions-rs with dtolnay/rust-toolchain\r\n- test with miri","shortMessageHtmlLink":"update workflows (#38)"}},{"before":"afae126e7a49cb47f99c03b1f511cecf5e645f92","after":"d466ce46f0fa5f2d59d7c5bb4edc2a3c495e8177","ref":"refs/heads/master","pushedAt":"2023-10-24T03:37:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Enable miri in CI (#37)\n\nEnable very basic miri support to CI. Only runs tests with the default features under miri, but its a start.","shortMessageHtmlLink":"Enable miri in CI (#37)"}},{"before":"7d82f9556b13e9756428e1a4a2925a84c6275760","after":"bb43432820c7a547a14b57a6bffc60864d2608c3","ref":"refs/heads/add-miri-to-ci","pushedAt":"2023-10-24T03:33:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Update rust-build-and-test.yml","shortMessageHtmlLink":"Update rust-build-and-test.yml"}},{"before":"3ec05d86b5d248850669acc9f5fd7ea1fbdd051d","after":"7d82f9556b13e9756428e1a4a2925a84c6275760","ref":"refs/heads/add-miri-to-ci","pushedAt":"2023-10-24T03:26:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Update rust-build-and-test.yml","shortMessageHtmlLink":"Update rust-build-and-test.yml"}},{"before":null,"after":"3ec05d86b5d248850669acc9f5fd7ea1fbdd051d","ref":"refs/heads/add-miri-to-ci","pushedAt":"2023-10-24T03:23:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Enable miri in CI","shortMessageHtmlLink":"Enable miri in CI"}},{"before":"fe17cf7a33579c1d3006de844e97e3f9dc9a853d","after":"afae126e7a49cb47f99c03b1f511cecf5e645f92","ref":"refs/heads/master","pushedAt":"2023-10-24T03:21:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"make miri happy (#36)\n\n* rustfmt doing its thing\r\n\r\n* fix stacked borrows error in remove\r\n\r\nthis makes pointers exist in the borrow stack of the entire buffer instead of a single element\r\n\r\n* fix stacked borrows error in swap (sorting)\r\n\r\nthis creates a single unique reference to the segments, thus avoiding invalidation of pointers\r\n\r\n* fix stacked borrows error in test_drain\r\n\r\n* rustfmt (again) + make test_sort faster under miri","shortMessageHtmlLink":"make miri happy (#36)"}},{"before":"5e2aba8413aaaab1e1598e814cae66aa49ea33f8","after":"fe17cf7a33579c1d3006de844e97e3f9dc9a853d","ref":"refs/heads/master","pushedAt":"2023-08-21T16:34:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"get_unchecked(_mut) added (#34)\n\n* get_unchecked(_mut) added\n\n* inlines added\n\n* test added","shortMessageHtmlLink":"get_unchecked(_mut) added (#34)"}},{"before":"fe828b9f83def7b9f497992cca1c5c8f262e5a08","after":"5e2aba8413aaaab1e1598e814cae66aa49ea33f8","ref":"refs/heads/master","pushedAt":"2023-07-31T04:33:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"version bump","shortMessageHtmlLink":"version bump"}},{"before":"cdb5bb09bc70c3990abaef40eaa1f63ea2ccd27a","after":"fe828b9f83def7b9f497992cca1c5c8f262e5a08","ref":"refs/heads/master","pushedAt":"2023-07-15T22:43:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Faster indexing (#32)\n\n* remove checked_log2_floor(), not needed anymore\r\n\r\n* Add allow(clippy::comparison_chain)\r\n\r\nThe code clippy warns is well readable as is.\r\n\r\n* various trivial style fixes (clippy)\r\n\r\n* add FromIterator/IntoIterator impls for Slice->SegVec conversion\r\n\r\n* unchecked indexing operations in lib.rs\r\n\r\nThe implementation already validates that a index is within bounds (against self.len) in many\r\nplaces. This makes indexing into Segments infallible, thus we can use\r\n.get_unchecked()/.get_unchecked_mut() instead Index::index() in many places. This gives a\r\ndecent speedup for the indexing operations becoming closer to std Vec speeds.\r\n\r\n* unchecked indexing for slice.rs\r\n\r\nThis changes the SegmentIndex/SegmentIndexMut segment() accessors into unsafe *_unchchecked()\r\nvariants and uses these for slice operations as well doing this for the element access within\r\nslices.\r\n\r\n---------\r\n\r\nCo-authored-by: Jacob Ryan McCollum ","shortMessageHtmlLink":"Faster indexing (#32)"}},{"before":"4ae9fb4d1c53e65b0517efea00b1df4b4bc7b51f","after":"cdb5bb09bc70c3990abaef40eaa1f63ea2ccd27a","ref":"refs/heads/master","pushedAt":"2023-07-15T22:25:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Clippy cleanup (#28)\n\n* remove checked_log2_floor(), not needed anymore\r\n\r\n* Add allow(clippy::comparison_chain)\r\n\r\nThe code clippy warns is well readable as is.\r\n\r\n* various trivial style fixes (clippy)","shortMessageHtmlLink":"Clippy cleanup (#28)"}},{"before":"81a1028efeebd43d103b70ef7b3e38be196ef9c6","after":"4ae9fb4d1c53e65b0517efea00b1df4b4bc7b51f","ref":"refs/heads/master","pushedAt":"2023-07-05T18:07:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Iterator/Slice improvements (#27)\n\n* implement From for SegVec\r\n\r\nCreates a new/owned SegVec from a given slice\r\n\r\n* Remove the 'From' impls\r\n\r\nThese will be reimplemented soon using from_iter() as in:\r\nhttps://github.com/mccolljr/segvec/pull/26#issuecomment-1614107293\r\n\r\n* simplify the SegmentedIter\r\n\r\n* impl<'a, T> DoubleEndedIterator for SegmentedIter\r\n\r\n* impl DoubleEndedIterator for SliceIter\r\n\r\n* comments/wording\r\n\r\n* factor the slices stuff into slice.rs\r\n\r\nThe lib.rs is somewhat unwieldly, putting things into dedicate files makes easier to\r\nhandle (IMO).\r\n\r\nEventually this should be done with the iterator into a 'iter.rs' as well.\r\n\r\n* move SegmentIndex trait to slice.rs, prep for 'mut' variants\r\n\r\n* fix some clippy suggestions/style\r\n\r\n* remove unnecessary lifetime annotation\r\n\r\n* move slice_index_to_base_index to slice.rs\r\n\r\n* prepare SegmentIndex and SegmentIndexMut for SliceMut\r\n\r\n* Fix Slice/SliceIter etc\r\n\r\n* WIP: new implementation of SliceMut/SliceMutIter (no IntoIter yet)\r\n\r\n* IntoIter for SliceMut became a bit more tricky\r\n\r\n* enamble the commented out 'into_iter()' test bits\r\n\r\n* silence clippy by allowing a slightly complex type\r\n\r\nThe Either construct isnt exported or used much. I think its ok to leave the type as is here.","shortMessageHtmlLink":"Iterator/Slice improvements (#27)"}},{"before":"58af0db7e98a9f2bcef2d4193675763dc33f9210","after":"81a1028efeebd43d103b70ef7b3e38be196ef9c6","ref":"refs/heads/master","pushedAt":"2023-06-30T20:43:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Subslicing and SegVec::from(Slice) (#26)\n\n* begin SegmentedIter implementation\n\nA SegmentedIter returns &[T] from the segments. This will be more efficient than accessing\nsingle elements by index. Later this will be used to improve the Slice iterator (and others as\nwell). SegmentedIter is exported as public interface as well. Since this is SegVec there is\nnothing to hide about that it is based on Segments.\n\n* new SliceIter implementation, using Flatten\n\nAdded benchmark, improvement for iterating slices is +64%\n\n* This magic #[inline] makes it 80% faster again!\n\n* add benchmark comparing Iter vs SliceIter\n\n* implement Slice::slice() -> Slice for subslicing\n\n* implement From for SegVec\n\nCreates a new/owned SegVec from a given slice\n\n* Add benchmark: iterate over Vec\n\n* FIX: indexing benchmark did modulo one where it should be 8900\n\n* put test-vec generation into the bench-functions\n\n* Remove the 'From' impls\n\nThese will be reimplemented soon using from_iter() as in:\nhttps://github.com/mccolljr/segvec/pull/26#issuecomment-1614107293","shortMessageHtmlLink":"Subslicing and SegVec::from(Slice) (#26)"}},{"before":"204358ffb2146e9b7b022a045b597ecd05b4c97e","after":"58af0db7e98a9f2bcef2d4193675763dc33f9210","ref":"refs/heads/master","pushedAt":"2023-06-20T01:48:08.743Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Remove phantomdata/Stateful MemConfig (#22)\n\n* stateful MemConfig\r\n\r\n- Removes the PhantomData field and allows MemConfig to have some state.\r\n- MemConfig can be stateless ZST's as Linear and Proportional are\r\n- Exponential caches the capacity\r\n- Benchmarks shown that Proportional won't benefit from cached capacity\r\n\r\n* remove capacity again and make Exponential stateful\r\n\r\nMixed results:\r\n- Linear stays about the same performance\r\n- Exponential becomes soemtimes about 10% slower (it shouldn't) there is prolly some\r\n optimization opportunity missed.\r\n\r\nCurrent benchmarks only target 'push()' which is heavy on the capacity checks. Most other\r\noperations dont even look at capacity so there should be no performance impact.\r\n\r\nEventually we need better benchmarks. I started some for the 'SegmentCache' these can be\r\nintegrated here (without the cached parts)\r\n\r\nhttps://github.com/cehteh/segvec/blob/segmentcache/benches/segvec_cached.rs\r\n\r\n* Add benchmark for access patterns\r\n\r\nPremature, needs to be improved, just to have something to compare changes against.\r\n\r\n* add 'Proportional<1>' to the push() benchmark","shortMessageHtmlLink":"Remove phantomdata/Stateful MemConfig (#22)"}},{"before":"5f49334968184496cbfae9e1233bb3cf8cb2081f","after":"204358ffb2146e9b7b022a045b597ecd05b4c97e","ref":"refs/heads/master","pushedAt":"2023-06-19T12:56:40.891Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Small simplification (#24)\n\nthe special case for segment == 0 is not neccessary","shortMessageHtmlLink":"Small simplification (#24)"}},{"before":"e2442543d20a774135fa51cb844c07baa86ff7f4","after":"5f49334968184496cbfae9e1233bb3cf8cb2081f","ref":"refs/heads/master","pushedAt":"2023-06-16T11:07:21.517Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Memconfig (#21)\n\n* DOC: improve docs\n\n* update criterion, cleanup benchmarks","shortMessageHtmlLink":"Memconfig (#21)"}},{"before":"079474b0c7561cc5a498a7380ad0fee57553ad7e","after":"e2442543d20a774135fa51cb844c07baa86ff7f4","ref":"refs/heads/master","pushedAt":"2023-06-16T11:03:46.679Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Optimize Exponential (#23)\n\nSubtraction is faster than modulo of course .","shortMessageHtmlLink":"Optimize Exponential (#23)"}},{"before":"aafec762096fab2fdea8bba46e2e1ea3d5e771c1","after":"079474b0c7561cc5a498a7380ad0fee57553ad7e","ref":"refs/heads/master","pushedAt":"2023-06-11T15:37:08.296Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"MemConfig integration (#19)\n\n* add mem_config.rs for different allocation policies\r\n\r\n* comment wording\r\n\r\n* The MemConfig impls must be public\r\n\r\n* add 'debug_assert_config' for validating config parameters\r\n\r\n* integrate MemConfig into SegVec\r\n\r\nThis removes the 'capacity' member for now, it might be added back in future or be part of the\r\nplanned 'cache' feature. Benchmarking will show.\r\n\r\n* fixing few clippy lints (some remain, to be addressed later)\r\n\r\n* split 'reserve()' into a hot and a cold path and add capacity back\r\n\r\nThis gives a *significant* performance improvement.\r\n\r\n* before\r\n * push 10k values with default growth factor\r\n * time: [133.64 µs 133.96 µs 134.29 µs]\r\n * push 10k values with large growth factor\r\n * time: [81.332 µs 81.857 µs 82.335 µs]\r\n\r\n* after\r\n * push 10k values with default growth factor\r\n * time: [79.874 µs 80.206 µs 80.643 µs]\r\n * push 10k values with large growth factor\r\n * time: [46.552 µs 46.704 µs 46.826 µs]\r\n\r\n* improve benchmarks\r\n\r\n* Increase the loop to 1Mio (from 10k)\r\n* Add benchmars for\r\n * std Vec to have something to compare to\r\n * Linear/Proportional/Exponential with FACTOR 32 to compare between them","shortMessageHtmlLink":"MemConfig integration (#19)"}},{"before":"90c3ff9229c0f19c05d3271b993f6515148077bb","after":"aafec762096fab2fdea8bba46e2e1ea3d5e771c1","ref":"refs/heads/master","pushedAt":"2023-06-04T16:55:04.574Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Make SegVec const-generic (#17)\n\n* make SegVec const-generic\r\n\r\n* SegVec::new can't be const because smallvec's new is non-const\r\n\r\n* Fix a bug where the truncate method improperly accounted for factor\r\n\r\n* Make some simple functions inline","shortMessageHtmlLink":"Make SegVec const-generic (#17)"}},{"before":"8ec86e44afa4650e866188bc7b800d0b7a72c6ce","after":"0d61f9e4b61acda6013173c7ee8995b0b309e7e3","ref":"refs/heads/mccolljr/const_generics","pushedAt":"2023-06-04T14:49:53.553Z","pushType":"push","commitsCount":3,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Make some simple functions inline","shortMessageHtmlLink":"Make some simple functions inline"}},{"before":null,"after":"8ec86e44afa4650e866188bc7b800d0b7a72c6ce","ref":"refs/heads/mccolljr/const_generics","pushedAt":"2023-06-04T04:44:02.085Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"make SegVec const-generic","shortMessageHtmlLink":"make SegVec const-generic"}},{"before":"65eda0ecb4dd3878568c50491d195268b546d1ba","after":"90c3ff9229c0f19c05d3271b993f6515148077bb","ref":"refs/heads/master","pushedAt":"2023-06-04T03:16:25.335Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"mccolljr","name":"Jacob McCollum","path":"/mccolljr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8538024?s=80&v=4"},"commit":{"message":"Merge pull request #15 from cehteh/patch-1\n\nUpdate Cargo.toml","shortMessageHtmlLink":"Merge pull request #15 from cehteh/patch-1"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAD0PcKXwA","startCursor":null,"endCursor":null}},"title":"Activity · mccolljr/segvec"}