diff --git a/crates/c/build.rs b/crates/c/build.rs index dad6633..8ff08b9 100644 --- a/crates/c/build.rs +++ b/crates/c/build.rs @@ -2,7 +2,7 @@ fn main() { println!("cargo:rerun-if-changed=src/c.h"); println!("cargo:rerun-if-changed=src/c.c"); cc::Build::new() - .compiler("/usr/bin/clang-16") + .compiler("/usr/local/bin/clang16") .file("./src/c.c") .opt_level(3) .debug(true) diff --git a/crates/service/src/lib.rs b/crates/service/src/lib.rs index b534589..4f550d1 100644 --- a/crates/service/src/lib.rs +++ b/crates/service/src/lib.rs @@ -1,4 +1,5 @@ #![feature(core_intrinsics)] +#![feature(int_roundings)] #![feature(avx512_target_feature)] pub mod algorithms; diff --git a/crates/service/src/prelude/scalar/mod.rs b/crates/service/src/prelude/scalar/mod.rs index 1894a90..eedc5d8 100644 --- a/crates/service/src/prelude/scalar/mod.rs +++ b/crates/service/src/prelude/scalar/mod.rs @@ -2,4 +2,4 @@ mod f16; mod f32; pub use f16::F16; -pub use f32::F32; root@test:/tmp/pgvecto.rs # root@test:/tmp/pgvecto.rs # gd gd: Command not found. root@test:/tmp/pgvecto.rs # git diff diff --git a/crates/c/build.rs b/crates/c/build.rs index dad6633..8ff08b9 100644 --- a/crates/c/build.rs +++ b/crates/c/build.rs @@ -2,7 +2,7 @@ fn main() { println!("cargo:rerun-if-changed=src/c.h"); println!("cargo:rerun-if-changed=src/c.c"); cc::Build::new() - .compiler("/usr/bin/clang-16") + .compiler("/usr/local/bin/clang16") .file("./src/c.c") .opt_level(3) .debug(true) diff --git a/crates/service/src/lib.rs b/crates/service/src/lib.rs index b534589..4f550d1 100644 --- a/crates/service/src/lib.rs +++ b/crates/service/src/lib.rs @@ -1,4 +1,5 @@ #![feature(core_intrinsics)] +#![feature(int_roundings)] #![feature(avx512_target_feature)] pub mod algorithms; diff --git a/crates/service/src/prelude/scalar/mod.rs b/crates/service/src/prelude/scalar/mod.rs index 1894a90..eedc5d8 100644 --- a/crates/service/src/prelude/scalar/mod.rs +++ b/crates/service/src/prelude/scalar/mod.rs @@ -2,4 +2,4 @@ mod f16; mod f32; pub use f16::F16; -pub use f32::F32; +pub use self::f32::F32; diff --git a/src/lib.rs b/src/lib.rs index cf69461..2267094 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,6 +4,8 @@ #![feature(offset_of)] #![feature(arbitrary_self_types)] #![feature(try_blocks)] +#![feature(strict_provenance)] +#![feature(const_maybe_uninit_zeroed)] mod bgworker; mod datatype; @@ -33,7 +35,7 @@ unsafe extern "C" fn _PG_init() { } ...skipping... + } +} + +#[cfg(target_os = "freebsd")] +pub fn futex_wake(futex: &AtomicU32) -> bool { + use std::ptr::null_mut; + unsafe { + libc::_umtx_op( + futex as *const AtomicU32 as *mut _, + libc::UMTX_OP_WAKE_PRIVATE, + 1, + null_mut(), + null_mut(), + ) + }; + false +} + #[cfg(target_os = "linux")] pub unsafe fn futex_wake(futex: &AtomicU32) { unsafe { @@ -26,7 +81,7 @@ pub unsafe fn futex_wake(futex: &AtomicU32) { } } -#[cfg(target_os = "linux")] +#[cfg(any(target_os = "linux", target_os="freebsd"))] pub fn memfd_create() -> std::io::Result { use rustix::fs::MemfdFlags; Ok(rustix::fs::memfd_create( @@ -35,7 +90,7 @@ pub fn memfd_create() -> std::io::Result { )?) } -#[cfg(target_os = "linux")] +#[cfg(any(target_os = "linux", target_os="freebsd"))] pub unsafe fn mmap_populate(len: usize, fd: impl AsFd) -> std::io::Result<*mut libc::c_void> { use std::ptr::null_mut; unsafe { @@ -43,7 +98,7 @@ pub unsafe fn mmap_populate(len: usize, fd: impl AsFd) -> std::io::Result<*mut l null_mut(), len, ProtFlags::READ | ProtFlags::WRITE, - MapFlags::SHARED | MapFlags::POPULATE, + MapFlags::SHARED, fd, 0, )?)