Releases: newrelic/newrelic-lambda-extension
v2.4.6
What's New
New Features
- Added
NEW_RELIC_LAMBDA_EXTENSION_PROXYenvironment variable for proxy configuration - Added
NEW_RELIC_EXTENSION_SEND_LOGSenvironment variable to control log sending - Added
NEW_RELIC_EXTENSION_LOGS_ENABLEDenvironment variable for extension logging - Added release testing workflow for multiple runtimes
- Added prepare release automation script
- Enhanced Java test layer for Docker image publishing
Bug Fixes
- Fixed JSON logs with
"level": "Information"being incorrectly classified as errors - Improved request_id handling and tracking
- Fixed random number generation in TraceIDGenerator
Improvements
- Refactored request state management for better performance
- Enhanced test coverage with new unit tests
- Updated test layer deployment to include ca-central-1 region
- Optimized agent buffer handling and telemetry processing
Dependency Updates
- Bumped bytes from 1.10.1 to 1.11.1
- Bumped time from 0.3.46 to 0.3.47
Contributors
- Chodavarapu Naga Viswanadha Avinash
- Sashwatdas123
- Ashish Kumar Singh
- dependabot[bot]
v2.4.5
What's New:
Java runtime support improvements - automatic detection and proper mode routing
Enhanced log processing reliability - ensures all logs are properly tagged before sending
Bug Fixes:
Fixed Java agent version reporting
Fixed log metadata stamping for pre-invoke logs
Fixed unnecessary warning messages in APM mode
Performance:
Reduced resource usage by optimizing channel creation
Improved log processing efficiency
v2.4.4
🚀 Features & Enhancements
- Runtime Detection: Enhance runtime detection logic for improved agent compatibility
- Configuration: Add support for
NEW_RELIC_EXTENSION_SEND_PLATFORM_LOGS - Metadata: Add tags to entity for extension version and agent version
- Telemetry: Implement global fallback ARN handling across telemetry components
- Documentation: Update README for Rust extension
- Logging: Change secondary log level to
DEBUG - Validation: Update code for additional checks
📦 Maintenance
- Bump version to 2.4.4
❤️ Contributors
v2.4.3
- feat: implement pre-invoke log buffering with metadata validation and fallback ARN support
- fix: remove license key exposure from CloudWatch logs
- feat: remove debug log for buffering in pre-invoke buffer
- feat: Added fallback code for aws-arn
v2.4.2
- feat: Improve panic handling in main function to ensure Lambda continue
- fix: EU endpoint detection for license keys fetched from SSM/Secrets Manager
- feat: add new telemetry buffer for APM mode and shutdown logs
- feat: Enhance versioning support and logging in APM mode
- fix: updated platform report line to send as json instead of compressed
v2.4.1
-
fix: Resolved an issue where requests were occasionally not instrumented in APM mode.
-
fix: Enabled automatic
NEW_RELIC_LICENSE_KEYfallback. -
feat: Removed unnecessary trace logging for skipped function and extension logs.
-
feat: Updated parsing logic to scan the first 50 characters instead of a 100-byte slice. Ensuring safe handling of multi-byte
UTF-8characters (like emojis) without truncation errors.
v2.4.0
What's Changed
[2.4.0] - 2025-12-02
🎉 Major Release: Rust Rewrite
Complete rewrite of the New Relic Lambda Extension from Go (v2.3.24) to Rust for improved performance, memory safety, and reduced cold start times.
✨ New Features
-
APM Mode Support: Lambda functions can now report directly to New Relic APM platform as application entities
- Enable with
NEW_RELIC_APM_LAMBDA_MODE=true - Full support for metrics, spans, errors, events, and transaction traces
- Platform logs converted to APM metrics (
apm.lambda.transaction.*) - Enhanced error events for timeouts and faults with distributed tracing context
- See APM Mode Documentation for details
- Enable with
-
Request-Scoped Processing: Improved payload correlation and lifecycle management
-
Intelligent Buffer Management: Handles agent payloads that arrive before request context with automatic cleanup
🚀 Performance Improvements
- Faster Cold Starts: Optimized Rust compilation with minimal dependencies and LTO
- Lower Memory Usage: Reduced memory footprint with zero-cost abstractions
- Concurrent Processing: Parallel processing of logs, platform metrics, and agent telemetry
- Connection Pooling: HTTP client connection reuse across invocations
🔒 Security & Reliability
- Memory Safety: Rust's ownership system prevents memory leaks and buffer overflows
- Panic Safety: Global panic handler prevents Lambda crashes from extension failures
- Type Safety: Compile-time guarantees eliminate entire classes of runtime errors
🔧 Technical Changes
- Migrated from Go 1.23 to Rust 2021 edition
- Built on Tokio async runtime
- AWS SDK v1 for Rust (aws-config 1.8, aws-sdk-secretsmanager 1.88, aws-sdk-ssm 1.93)
- Modular architecture with clean separation of concerns
📝 Configuration
All existing environment variables remain unchanged for backwards compatibility. Key variables:
NEW_RELIC_LICENSE_KEY: New Relic license keyNEW_RELIC_APM_LAMBDA_MODE: Enable APM mode (default: false)NEW_RELIC_EXTENSION_SEND_FUNCTION_LOGS: Send function logs (default: false)NEW_RELIC_LAMBDA_LOG_LEVEL: Extension log level supports more granular control withinfo,debug,warn,error,trace,all
Full configuration details in the README.
🔄 Migration Notes
- Drop-in Replacement: No code changes required for existing users
- Environment Variables: All configuration remains the same
- Binary Compatibility: Maintains compatibility with existing New Relic agents
- Performance: Expect 20-40% faster cold starts and lower memory usage
[2.3.24] - Go Implementation (Legacy)
Last Go-based version before Rust migration. Maintained for reference and legacy support.
v2.3.24
What's Changed
- Updated
gostd lib version to1.23.12to resolve CVE-2025-47907 by @aavinash-nr in #351 - Added Log Level Prefix
DEBUGandINFOto the existing prefix[NR_EXT]by @aavinash-nr in #352 - APM Mode: Add tags to APM Mode by @chaudharysaket in #343
- APM Mode: Resolved license key issue with SM/SSM in APM Mode & resolved log prefix by @Sashwatdas123 in #350
- APM Mode: Added Lambda ARN to host for APM connect by @chaudharysaket in #348
- APM Mode: Update backoff duration for NEW_RELIC_HOST by @Sashwatdas123 in #357
- APM Mode: Refactor APM error event data by @chaudharysaket in #359
- APM Mode: Added ruby support by @chaudharysaket in #360
- GitHub Workflow: Added GitHub Actions workflow for publishing Lambda layers by @aavinash-nr in #353
Full Changelog: v2.3.23...v2.3.24
v2.3.23
What's Changed
- Upgrade AWS SDK and Go Version to address Security Vulnerabilities [CVE-2020-8911, CVE-2020-8912, CVE-2025-0913, CVE-2025-4673] by @aavinash-nr in #332
- Add option to build
nodejstest Layers for local testing by @aavinash-nr in #336
Full Changelog: v2.3.22...v2.3.23
v2.3.22
What's Changed
- APM connect retry logic by @chaudharysaket in #330
- Add requestId extraction from logs for
Node.jsruntime by @aavinash-nr in #329 - Add
godebugto resolve AWS Firewall issue by @chaudharysaket in #333 - Update Readme for
--enable-license-key-secretby @Sashwatdas123 in #328
Full Changelog: v2.3.21...v2.3.22