This is an automated email from the ASF dual-hosted git repository. gkoszyk pushed a commit to branch partition_redesign in repository https://gitbox.apache.org/repos/asf/iggy.git
commit af85f513273a4b4893bebd2e3e7aab52913f80ff Author: numinex <[email protected]> AuthorDate: Fri Mar 20 09:27:02 2026 +0100 fix ci --- Cargo.toml | 2 +- DEPENDENCIES.md | 1 + core/buf/Cargo.toml | 17 +++++++++++++++++ core/buf/src/lib.rs | 33 +++++++++++++++++++++++++++------ 4 files changed, 46 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 067dd90d4..5cf08a4fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ members = [ "core/bench/dashboard/shared", "core/bench/report", "core/bench/runner", - "core/binary_protocol", + "core/binary_protocol", "core/buf", "core/cli", "core/clock", diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index e89e01db6..318beb266 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -127,6 +127,7 @@ brotli: 8.0.2, "BSD-3-Clause AND MIT", brotli-decompressor: 5.0.0, "BSD-3-Clause OR MIT", bson: 2.15.0, "MIT", bstr: 1.12.1, "Apache-2.0 OR MIT", +buf: 0.1.0, "N/A", built: 0.8.0, "MIT", bumpalo: 3.20.2, "Apache-2.0 OR MIT", byte-unit: 5.2.0, "MIT", diff --git a/core/buf/Cargo.toml b/core/buf/Cargo.toml index 8a5d193a9..b14799278 100644 --- a/core/buf/Cargo.toml +++ b/core/buf/Cargo.toml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + [package] name = "buf" version = "0.1.0" diff --git a/core/buf/src/lib.rs b/core/buf/src/lib.rs index 5d4075d74..307fc3034 100644 --- a/core/buf/src/lib.rs +++ b/core/buf/src/lib.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use std::mem::ManuallyDrop; use std::ptr::NonNull; use std::slice; @@ -44,7 +61,7 @@ impl<const ALIGN: usize> Owned<ALIGN> { // SAFETY: both pointers are constructed from the same `Inner` allocation, the split_at bounds are validated. // The control block captures original `Inner` metadata to allow reconstructing the original frame for merging/dropping. - // The ptr provenence rules are maintained by the use of `NonNull` apis. + // The ptr provenance rules are maintained by the use of `NonNull` apis. let base: NonNull<u8> = unsafe { NonNull::new_unchecked(ptr) }; let tail = unsafe { NonNull::new_unchecked(ptr.add(split_at)) }; let ctrlb = ControlBlock::new(base, len, capacity); @@ -114,10 +131,10 @@ impl<const ALIGN: usize> TwoHalves<ALIGN> { return Err(self); } - // Transfer ownership to prevent double-free + // Transfer ownership to prevent double-free. + // SAFETY: We read the inner tuple out of ManuallyDrop, which won't run TwoHalves::drop. let this = ManuallyDrop::new(self); - let head = this.inner.0; - let tail = this.inner.1; + let (head, tail) = unsafe { std::ptr::read(&this.inner) }; let split_at = head.len; // SAFETY: `tail.ctrlb` is unique at this point, @@ -216,7 +233,6 @@ impl ControlBlock { } } -#[derive(Copy)] struct Extent { ptr: NonNull<u8>, len: usize, @@ -262,7 +278,12 @@ impl Clone for Extent { .ref_count .fetch_add(1, Ordering::Relaxed); } - *self + Self { + ptr: self.ptr, + len: self.len, + ctrlb: self.ctrlb, + _pad: 0, + } } }
