Skip to main content

haagenti_serverless/
lib.rs

1//! Serverless deployment with cold start optimization
2//!
3//! This crate provides optimized serverless deployment with:
4//! - Pre-warmed fragment pools for sub-100ms cold starts
5//! - GPU memory snapshot/restore for fast instance recovery
6//! - Efficient state serialization for function hibernation
7//! - Multi-provider support (AWS Lambda, Cloudflare Workers)
8
9mod cold_start;
10mod error;
11mod fragment_pool;
12mod provider;
13mod snapshot;
14mod state;
15
16pub use cold_start::{
17    ColdStartMetrics, ColdStartOptimizer, WarmupConfig, WarmupScheduler, WarmupStats,
18};
19pub use error::{Result, ServerlessError};
20pub use fragment_pool::{FragmentPool, FragmentPrewarmer, PoolConfig, PooledFragment};
21pub use provider::{Provider, ProviderCapabilities, ProviderConfig, ProviderType, RequestContext};
22pub use snapshot::{GpuSnapshot, SnapshotConfig, SnapshotManager};
23pub use state::{FunctionState, StateDiff, StateManager, StateSerializer};
24
25/// Serverless deployment environment
26pub mod env {
27    /// Check if running in AWS Lambda
28    pub fn is_lambda() -> bool {
29        std::env::var("AWS_LAMBDA_FUNCTION_NAME").is_ok()
30    }
31
32    /// Check if running in Cloudflare Workers
33    pub fn is_cloudflare() -> bool {
34        // Cloudflare Workers runtime detection
35        std::env::var("CF_WORKER").is_ok()
36    }
37
38    /// Check if running in any serverless environment
39    pub fn is_serverless() -> bool {
40        is_lambda() || is_cloudflare()
41    }
42
43    /// Get function name
44    pub fn function_name() -> Option<String> {
45        std::env::var("AWS_LAMBDA_FUNCTION_NAME")
46            .ok()
47            .or_else(|| std::env::var("CF_WORKER_NAME").ok())
48    }
49
50    /// Get memory limit in MB
51    pub fn memory_limit_mb() -> Option<u64> {
52        std::env::var("AWS_LAMBDA_FUNCTION_MEMORY_SIZE")
53            .ok()
54            .and_then(|s| s.parse().ok())
55    }
56}