|
| 1 | +--- |
| 2 | +subject: "Lambda-Extension" |
| 3 | +releaseDate: '2025-12-02' |
| 4 | +version: 2.4.0 |
| 5 | +--- |
| 6 | + |
| 7 | +## Major Release: Rust Rewrite |
| 8 | + |
| 9 | +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. |
| 10 | + |
| 11 | +## New Features |
| 12 | + |
| 13 | +- **APM Mode Support**: Lambda functions can now report directly to New Relic APM platform as application entities |
| 14 | + - Enable with `NEW_RELIC_APM_LAMBDA_MODE=true` |
| 15 | + - Full support for metrics, spans, errors, events, and transaction traces |
| 16 | + - Platform logs converted to APM metrics (`apm.lambda.transaction.*`) |
| 17 | + - Enhanced error events for timeouts and faults with distributed tracing context |
| 18 | + - See [APM Mode Documentation](https://docs.newrelic.com/docs/serverless-function-monitoring/aws-lambda-monitoring/instrument-lambda-function/upgrade-to-apm-experience/) for details |
| 19 | + |
| 20 | +- **Request-Scoped Processing**: Improved payload correlation and lifecycle management |
| 21 | +- **Intelligent Buffer Management**: Handles agent payloads that arrive before request context with automatic cleanup |
| 22 | + |
| 23 | +## Performance Improvements |
| 24 | + |
| 25 | +- **Faster Cold Starts**: Optimized Rust compilation with minimal dependencies and LTO |
| 26 | +- **Lower Memory Usage**: Reduced memory footprint with zero-cost abstractions |
| 27 | +- **Concurrent Processing**: Parallel processing of logs, platform metrics, and agent telemetry |
| 28 | +- **Connection Pooling**: HTTP client connection reuse across invocations |
| 29 | + |
| 30 | +## Security & Reliability |
| 31 | + |
| 32 | +- **Memory Safety**: Rust's ownership system prevents memory leaks and buffer overflows |
| 33 | +- **Panic Safety**: Global panic handler prevents Lambda crashes from extension failures |
| 34 | +- **Type Safety**: Compile-time guarantees eliminate entire classes of runtime errors |
| 35 | + |
| 36 | +## Technical Changes |
| 37 | + |
| 38 | +- Migrated from Go `v1.23` to Rust 2021 edition |
| 39 | +- Built on Tokio async runtime |
| 40 | +- AWS SDK v1 for Rust (aws-config 1.8, aws-sdk-secretsmanager 1.88, aws-sdk-ssm 1.93) |
| 41 | +- Modular architecture with clean separation of concerns |
| 42 | + |
| 43 | +## Configuration |
| 44 | + |
| 45 | +All existing environment variables remain unchanged for backwards compatibility. Key variables: |
| 46 | +- `NEW_RELIC_LICENSE_KEY`: New Relic license key |
| 47 | +- `NEW_RELIC_APM_LAMBDA_MODE`: Enable APM mode (default: false) |
| 48 | +- `NEW_RELIC_EXTENSION_SEND_FUNCTION_LOGS`: Send function logs (default: false) |
| 49 | +- `NEW_RELIC_LAMBDA_LOG_LEVEL`: Extension log level supports more granular control with `info`, `debug`, `warn`, `error`, `trace`, `all` |
| 50 | + |
| 51 | +Full configuration details in the [README](https://github.com/newrelic/newrelic-lambda-extension/blob/2a5c012f5082d2f8f056252e87d2d3eecad5479a/README.md). |
| 52 | + |
| 53 | +## Migration Notes |
| 54 | + |
| 55 | +- **Drop-in Replacement**: No code changes required for existing users |
| 56 | +- **Environment Variables**: All configuration remains the same |
| 57 | +- **Binary Compatibility**: Maintains compatibility with existing New Relic agents |
| 58 | +- **Performance**: Expect 20-40% faster cold starts and lower memory usage |
| 59 | + |
| 60 | +--- |
| 61 | + |
| 62 | +## [2.3.24] - Go Implementation (Legacy) |
| 63 | + |
| 64 | +Last Go-based version before Rust migration. Maintained for reference and legacy support. |
0 commit comments