NAME
Hypersonic::JIT::Util - Utilities for JIT compilation in Hypersonic
SYNOPSIS
use Hypersonic::JIT::Util;
# Get cache directory
my $cache = Hypersonic::JIT::Util->cache_dir('socket');
# Returns: _hypersonic_cache/socket
# Compile standalone modules in parallel
Hypersonic::JIT::Util->compile_standalone_modules(parallel => 1);
# Add common includes to builder
Hypersonic::JIT::Util->add_standard_includes($builder, qw(socket threading));
# Detect library
my $ssl = Hypersonic::JIT::Util->detect_openssl();
if ($ssl->{available}) {
# Use $ssl->{cflags} and $ssl->{ldflags}
}
DESCRIPTION
This module provides common utilities for JIT compilation across Hypersonic modules:
Unified cache directory structure
Fork-based parallel compilation
Standard include patterns
Library detection (Alien → pkg-config → path search)
METHODS
cache_dir($subdir)
Returns the cache directory path. With $subdir, returns _hypersonic_cache/$subdir.
compile_standalone_modules(%opts)
Compiles all standalone modules (Socket, Response, Session, TLS).
Options:
- parallel => 1
-
Use fork for parallel compilation (default: 1)
- modules => \@list
-
Override list of modules to compile
can_fork()
Returns true if fork() is available on this platform.
add_standard_includes($builder, @features)
Adds standard C includes to the builder based on features: socket, threading, time, signal, unistd, fcntl
detect_library($name, %opts)
Detects a C library. Returns hashref with available, cflags, ldflags.
detect_openssl(), detect_zlib(), detect_nghttp2()
Convenience methods for common libraries.
AUTHOR
Hypersonic Contributors
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 466:
Non-ASCII character seen before =encoding in '→'. Assuming UTF-8