Merge pull request #228 from junkurihara/feat/fxhash-to-ahash

feat: change fxhash to ahash for hashmaps and hashsets
This commit is contained in:
Jun Kurihara 2025-01-06 17:48:57 +09:00 committed by GitHub
commit 6ace2af852
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 19 additions and 20 deletions

View file

@ -15,7 +15,7 @@ post-quantum = ["rustls-post-quantum"]
[dependencies] [dependencies]
url = { version = "2.5.4" } url = { version = "2.5.4" }
rustc-hash = "2.1.0" ahash = "0.8.11"
thiserror = "2.0.9" thiserror = "2.0.9"
tracing = "0.1.41" tracing = "0.1.41"
async-trait = "0.1.84" async-trait = "0.1.84"

View file

@ -4,7 +4,7 @@ use crate::{
error::RpxyAcmeError, error::RpxyAcmeError,
log::*, log::*,
}; };
use rustc_hash::FxHashMap as HashMap; use ahash::HashMap;
use rustls::ServerConfig; use rustls::ServerConfig;
use rustls_acme::AcmeConfig; use rustls_acme::AcmeConfig;
use std::{path::PathBuf, sync::Arc}; use std::{path::PathBuf, sync::Arc};

View file

@ -31,7 +31,7 @@ rpxy-lib = { path = "../rpxy-lib/", default-features = false, features = [
mimalloc = { version = "*", default-features = false } mimalloc = { version = "*", default-features = false }
anyhow = "1.0.95" anyhow = "1.0.95"
rustc-hash = "2.1.0" ahash = "0.8.11"
serde = { version = "1.0.217", default-features = false, features = ["derive"] } serde = { version = "1.0.217", default-features = false, features = ["derive"] }
tokio = { version = "1.42.0", default-features = false, features = [ tokio = { version = "1.42.0", default-features = false, features = [
"net", "net",

View file

@ -1,10 +1,10 @@
use super::toml::ConfigToml; use super::toml::ConfigToml;
use crate::error::{anyhow, ensure}; use crate::error::{anyhow, ensure};
use ahash::HashMap;
use clap::{Arg, ArgAction}; use clap::{Arg, ArgAction};
use hot_reload::{ReloaderReceiver, ReloaderService}; use hot_reload::{ReloaderReceiver, ReloaderService};
use rpxy_certs::{build_cert_reloader, CryptoFileSourceBuilder, CryptoReloader, ServerCryptoBase}; use rpxy_certs::{build_cert_reloader, CryptoFileSourceBuilder, CryptoReloader, ServerCryptoBase};
use rpxy_lib::{AppConfig, AppConfigList, ProxyConfig}; use rpxy_lib::{AppConfig, AppConfigList, ProxyConfig};
use rustc_hash::FxHashMap as HashMap;
#[cfg(feature = "acme")] #[cfg(feature = "acme")]
use rpxy_acme::{AcmeManager, ACME_DIR_URL, ACME_REGISTRY_PATH}; use rpxy_acme::{AcmeManager, ACME_DIR_URL, ACME_REGISTRY_PATH};

View file

@ -3,8 +3,8 @@ use crate::{
error::{anyhow, ensure}, error::{anyhow, ensure},
log::warn, log::warn,
}; };
use ahash::HashMap;
use rpxy_lib::{reexports::Uri, AppConfig, ProxyConfig, ReverseProxyConfig, TlsConfig, UpstreamUri}; use rpxy_lib::{reexports::Uri, AppConfig, ProxyConfig, ReverseProxyConfig, TlsConfig, UpstreamUri};
use rustc_hash::FxHashMap as HashMap;
use serde::Deserialize; use serde::Deserialize;
use std::{fs, net::SocketAddr}; use std::{fs, net::SocketAddr};
use tokio::time::Duration; use tokio::time::Duration;
@ -232,7 +232,7 @@ impl ConfigToml {
// Check unused fields during deserialization // Check unused fields during deserialization
let t = toml::de::Deserializer::new(&config_str); let t = toml::de::Deserializer::new(&config_str);
let mut unused = rustc_hash::FxHashSet::default(); let mut unused = ahash::HashSet::default();
let res = serde_ignored::deserialize(t, |path| { let res = serde_ignored::deserialize(t, |path| {
unused.insert(path.to_string()); unused.insert(path.to_string());

View file

@ -16,7 +16,7 @@ post-quantum = ["rustls-post-quantum"]
http3 = [] http3 = []
[dependencies] [dependencies]
rustc-hash = { version = "2.1.0" } ahash = { version = "0.8.11" }
tracing = { version = "0.1.41" } tracing = { version = "0.1.41" }
derive_builder = { version = "0.20.2" } derive_builder = { version = "0.20.2" }
thiserror = { version = "2.0.9" } thiserror = { version = "2.0.9" }

View file

@ -1,5 +1,5 @@
use crate::error::*; use crate::error::*;
use rustc_hash::FxHashMap as HashMap; use ahash::HashMap;
use rustls::{crypto::aws_lc_rs::sign::any_supported_type, pki_types, sign::CertifiedKey}; use rustls::{crypto::aws_lc_rs::sign::any_supported_type, pki_types, sign::CertifiedKey};
use std::sync::Arc; use std::sync::Arc;
use x509_parser::prelude::*; use x509_parser::prelude::*;

View file

@ -10,8 +10,8 @@ mod log {
} }
use crate::{error::*, log::*, reloader_service::DynCryptoSource}; use crate::{error::*, log::*, reloader_service::DynCryptoSource};
use ahash::HashMap;
use hot_reload::{ReloaderReceiver, ReloaderService}; use hot_reload::{ReloaderReceiver, ReloaderService};
use rustc_hash::FxHashMap as HashMap;
use rustls::crypto::CryptoProvider; use rustls::crypto::CryptoProvider;
use std::sync::Arc; use std::sync::Arc;

View file

@ -4,9 +4,9 @@ use crate::{
log::*, log::*,
server_crypto::{ServerCryptoBase, ServerNameBytes}, server_crypto::{ServerCryptoBase, ServerNameBytes},
}; };
use ahash::HashMap;
use async_trait::async_trait; use async_trait::async_trait;
use hot_reload::{Reload, ReloaderError}; use hot_reload::{Reload, ReloaderError};
use rustc_hash::FxHashMap as HashMap;
use std::sync::Arc; use std::sync::Arc;
/* ------------------------------------------------ */ /* ------------------------------------------------ */

View file

@ -1,5 +1,5 @@
use crate::{certs::SingleServerCertsKeys, error::*, log::*}; use crate::{certs::SingleServerCertsKeys, error::*, log::*};
use rustc_hash::FxHashMap as HashMap; use ahash::HashMap;
use rustls::{ use rustls::{
crypto::CryptoProvider, crypto::CryptoProvider,
server::{ResolvesServerCertUsingSni, WebPkiClientVerifier}, server::{ResolvesServerCertUsingSni, WebPkiClientVerifier},

View file

@ -37,7 +37,7 @@ post-quantum = [
[dependencies] [dependencies]
rand = "0.8.5" rand = "0.8.5"
rustc-hash = "2.1.0" ahash = "0.8.11"
bytes = "1.9.0" bytes = "1.9.0"
derive_builder = "0.20.2" derive_builder = "0.20.2"
futures = { version = "0.3.31", features = ["alloc", "async-await"] } futures = { version = "0.3.31", features = ["alloc", "async-await"] }

View file

@ -4,8 +4,8 @@ use crate::{
name_exp::{ByteName, ServerName}, name_exp::{ByteName, ServerName},
AppConfig, AppConfigList, AppConfig, AppConfigList,
}; };
use ahash::HashMap;
use derive_builder::Builder; use derive_builder::Builder;
use rustc_hash::FxHashMap as HashMap;
use std::borrow::Cow; use std::borrow::Cow;
use super::upstream::PathManager; use super::upstream::PathManager;

View file

@ -4,8 +4,8 @@ use super::{
Upstream, Upstream,
}; };
use crate::{constants::STICKY_COOKIE_NAME, log::*}; use crate::{constants::STICKY_COOKIE_NAME, log::*};
use ahash::HashMap;
use derive_builder::Builder; use derive_builder::Builder;
use rustc_hash::FxHashMap as HashMap;
use std::{ use std::{
borrow::Cow, borrow::Cow,
sync::{ sync::{

View file

@ -11,10 +11,10 @@ use crate::{
log::*, log::*,
name_exp::{ByteName, PathName}, name_exp::{ByteName, PathName},
}; };
use ahash::{HashMap, HashSet};
#[cfg(feature = "sticky-cookie")] #[cfg(feature = "sticky-cookie")]
use base64::{engine::general_purpose, Engine as _}; use base64::{engine::general_purpose, Engine as _};
use derive_builder::Builder; use derive_builder::Builder;
use rustc_hash::{FxHashMap as HashMap, FxHashSet as HashSet};
#[cfg(feature = "sticky-cookie")] #[cfg(feature = "sticky-cookie")]
use sha2::{Digest, Sha256}; use sha2::{Digest, Sha256};
use std::borrow::Cow; use std::borrow::Cow;

View file

@ -20,7 +20,7 @@ pub struct Globals {
#[cfg(feature = "acme")] #[cfg(feature = "acme")]
/// ServerConfig used for only ACME challenge for ACME domains /// ServerConfig used for only ACME challenge for ACME domains
pub server_configs_acme_challenge: std::sync::Arc<rustc_hash::FxHashMap<String, std::sync::Arc<rustls::ServerConfig>>>, pub server_configs_acme_challenge: std::sync::Arc<ahash::HashMap<String, std::sync::Arc<rustls::ServerConfig>>>,
} }
/// Configuration parameters for proxy transport and request handlers /// Configuration parameters for proxy transport and request handlers

View file

@ -48,7 +48,7 @@ pub struct RpxyOptions {
#[cfg(feature = "acme")] #[cfg(feature = "acme")]
/// ServerConfig used for only ACME challenge for ACME domains /// ServerConfig used for only ACME challenge for ACME domains
pub server_configs_acme_challenge: Arc<rustc_hash::FxHashMap<String, Arc<rustls::ServerConfig>>>, pub server_configs_acme_challenge: Arc<ahash::HashMap<String, Arc<rustls::ServerConfig>>>,
} }
/// Entrypoint that creates and spawns tasks of reverse proxy services /// Entrypoint that creates and spawns tasks of reverse proxy services

View file

@ -14,12 +14,11 @@ use crate::{
name_exp::ServerName, name_exp::ServerName,
}; };
use hyper_util::server::{self, conn::auto::Builder as ConnectionBuilder}; use hyper_util::server::{self, conn::auto::Builder as ConnectionBuilder};
use rustc_hash::FxHashMap as HashMap;
use rustls::ServerConfig; use rustls::ServerConfig;
use std::sync::Arc; use std::sync::Arc;
/// SNI to ServerConfig map type /// SNI to ServerConfig map type
pub type SniServerCryptoMap = HashMap<ServerName, Arc<ServerConfig>>; pub type SniServerCryptoMap = std::collections::HashMap<ServerName, Arc<ServerConfig>, ahash::RandomState>;
pub(crate) use proxy_main::Proxy; pub(crate) use proxy_main::Proxy;

View file

@ -294,7 +294,7 @@ where
let map = server_config.individual_config_map.clone().iter().map(|(k,v)| { let map = server_config.individual_config_map.clone().iter().map(|(k,v)| {
let server_name = ServerName::from(k.as_slice()); let server_name = ServerName::from(k.as_slice());
(server_name, v.clone()) (server_name, v.clone())
}).collect::<rustc_hash::FxHashMap<_,_>>(); }).collect::<std::collections::HashMap<_,_,ahash::RandomState>>();
server_crypto_map = Some(Arc::new(map)); server_crypto_map = Some(Arc::new(map));
} }
} }