# Precompilation of Rdkafka - Mission Accomplished As of 2025, **native extensions (precompiled binaries) are now available** for the rdkafka gem! This page documents the successful completion of one of the most challenging tasks in the Karafka ecosystem. ## Precompilation of Rdkafka - Mission Accomplished / The Challenge (Solved) The `rdkafka` gem previously required 60-90 seconds of compilation during installation. Here's the before and after: | Area | Before | After | | --- | --- | --- | | Docker build times | ❌ 60-90 seconds compilation | ✅ 3-10 seconds installation | | Development setup | ❌ Requires build dependencies | ✅ No build dependencies needed | | Deployment processes | ❌ Compilation failures possible | ✅ Reliable installation | | Developer productivity | ❌ Slow, error-prone installs | ✅ 10-100x faster installation | ## Precompilation of Rdkafka - Mission Accomplished / Why This Was Complex ### Precompilation of Rdkafka - Mission Accomplished / Why This Was Complex / ABI Compatibility Hell Unlike simpler gems, rdkafka has a complex dependency web that created ABI (Application Binary Interface) compatibility challenges: **System Library Dependencies:** - Different glibc/musl versions across Linux distributions - OpenSSL versions (1.1.x vs 3.0+) with breaking changes - Compression libraries (zlib, lz4, zstd, snappy) with varying versions - SASL libraries for authentication mechanisms - Different regex engines **Platform-Specific Variations:** - Package manager differences (`apt`, `yum`, `apk`, `brew`, `nix`) - Custom library installations in non-standard locations - FIPS compliance requirements in enterprise environments ### Precompilation of Rdkafka - Mission Accomplished / Why This Was Complex / Platform Matrix Explosion Supporting precompiled gems properly required: - **Ruby versions**: All actively maintained versions - **Primary platforms**: - x86_64-linux-gnu (Ubuntu/Debian/RHEL) - x86_64-linux-musl (Alpine) - arm64-darwin (Apple Silicon Mac) ### Precompilation of Rdkafka - Mission Accomplished / Why This Was Complex / Security Considerations Precompiled native extensions presented legitimate security concerns: **Supply Chain Security:** - Users cannot easily inspect compiled binaries - Trust must be placed in the build process - Potential for malicious code injection during compilation - FIPS compliance requirements in regulated industries ## Precompilation of Rdkafka - Mission Accomplished / What Was Accomplished | Feature | Description | | ------- | ----------- | | ✅ Native extensions | Available for major platforms (Linux, macOS, Windows) | | ✅ Self-contained libraries | All dependencies statically linked | | ✅ Supply chain security | SHA256 verification for all dependencies | | ✅ Enterprise features | Kerberos, SASL, SSL/TLS included | | ✅ Automatic fallback | Source compilation when needed | | ✅ Cryptographic attestation | RubyGems Trusted Publishing | ## Precompilation of Rdkafka - Mission Accomplished / Project Status | Phase | Description | Status | | ----- | ----------- | ------ | | Phase 1 | Foundation (Trusted Publishing, Build Infrastructure) | ✅ **COMPLETED** | | Phase 2 | Core Platform Support (Linux, macOS) | ✅ **COMPLETED** | | Phase 3 | Extended Platform Support (ARM64, Additional Variants) | ✅ **COMPLETED** | For complete documentation on using native extensions, see: **[Native Extensions](https://karafka.io/docs/Development-Native-Extensions.md)** --- **Note:** This represents the successful completion of a multi-month effort to solve one of Ruby's most complex native extension challenges. The Karafka ecosystem now provides installation speeds comparable to pure Ruby gems while maintaining full native library functionality. --- *Last modified: 2025-12-15 09:29:15*