xet-runtime 1.5.2

Async runtime, configuration, logging, and utility infrastructure for the Hugging Face Xet client tools.
Documentation
#[cfg(target_os = "macos")]
pub fn raise_nofile_soft_to_hard() {
    use tracing::info;

    unsafe {
        use libc;

        let mut lim = libc::rlimit {
            rlim_cur: 0,
            rlim_max: 0,
        };
        if libc::getrlimit(libc::RLIMIT_NOFILE, &mut lim) != 0 {
            info!("Failed to get RLIMIT_NOFILE: {:?}", std::io::Error::last_os_error());
            return;
        }

        if lim.rlim_cur < lim.rlim_max {
            let new_lim = libc::rlimit {
                rlim_cur: lim.rlim_max,
                rlim_max: lim.rlim_max,
            };
            if libc::setrlimit(libc::RLIMIT_NOFILE, &new_lim) != 0 {
                info!(
                    "Failed to set RLIMIT_NOFILE soft limit from {} to {}: {:?}",
                    lim.rlim_cur,
                    lim.rlim_max,
                    std::io::Error::last_os_error()
                );
                return;
            }
            info!("Increased RLIMIT_NOFILE soft limit from {} to {}", lim.rlim_cur, lim.rlim_max);
        } else {
            info!("RLIMIT_NOFILE soft limit already at hard limit: {}", lim.rlim_cur);
        }
    }
}

#[cfg(not(target_os = "macos"))]
pub fn raise_nofile_soft_to_hard() {}