Releases: cythral/lambdajection
v0.6.0-beta1
This release introduces the following:
- New Project Template Option: disposable - set this to true if you want the generated Lambda to implement IAsyncDisposable and IDisposable.
- Several examples have been updated to illustrate the use of the IAsyncDisposable / IDisposable pattern with Lambdajection.
- As a housekeeping item, CloudFormation stacks for examples are now deleted after end to end tests have finished running.
- The generator has been refactored with better modularity.
- BREAKING CHANGE: The context parameter (ILambdaContext) has been removed from ILambda.Handle. This can now (optionally) be accessed via a constructor argument instead. This was done to simplify the composition process and reduce the number of arguments that Handle will have - we plan on introducing cancellation tokens in the future here instead.
- Updated Microsoft.CodeAnalysis.* Dependencies from 3.8.0-5.final to 3.8.0
- Updated AWSSDK.Core from 3.5.1.34 to 3.5.1.42
- Updated AWSSDK.KeyManagementService from 3.5.0.36 to 3.5.0.42
v0.5.0
This release introduces the following:
- Updated outdated dependencies to latest versions, including:
- AWSSDK.Core (3.5.1.20 -> 3.5.1.34)
- AWSSDK.KeyManagementService (3.5.0.22 -> 3.5.0.36)
- Amazon.Lambda.Core (1.1.0 -> 1.2.0)
- Amazon.Lambda.Serialization.SystemTextJson (2.0.2 -> 2.1.0)
- Amazon.Lambda.RuntimeSupport (1.1.1 -> 1.2.0)
- Microsoft.Extensions.* (3.1.8 -> 5.0.0)
- Microsoft.CodeAnalysis.* (3.8.0-4.final -> 3.8.0-5.final)
- Updated testing requirements - now requiring >= 80% Coverage and is being enforced via CI with Codecov.
- Now building using the .NET 5 SDK!
Also includes everything from the first 3 previews:
- .NET Core Templates
- Handling disposables and async disposables
- Support for Lambda Custom Runtimes
- Rewritten as a .NET Source Generator
Release notes for the first 3 previews:
https://github.com/cythral/lambdajection/releases/tag/v0.5.0-beta1
https://github.com/cythral/lambdajection/releases/tag/v0.5.0-beta2
https://github.com/cythral/lambdajection/releases/tag/v0.5.0-beta3
v0.5.0-beta3
This release introduces the following:
- Fixes an issue where adding a static using statement in a source document would result in a compilation failure.
- Fixes an issue where Lambdajection.Generator was bringing in transitive dependencies to consuming projects.
- Fixes ready to run warnings in the Custom Runtime example.
- Fixes an issue where Cythral.CloudFormation.BuildTasks was bringing in transitive dependencies to example projects.
- Fixes several issues around running tests (multiple restores, organization, test assembly compilation and loading)
v0.5.0-beta2
This release introduces the following:
- Fixes an issue where several template symbols were being replaced where they should not be (ie Options being replaced in the LambdaOptions attribute if you specified a custom options class name).
- Fixes an issue where an IAwsFactory was not being generated and added to the service collection for IAmazonSecurityTokenService. This was not happening for any other service.
- Initialization services that implement IAsyncDisposabe or IDisposable will now be properly disposed prior to running your Lambda's handler.
- Adds support for Custom Runtimes via the Lambdajection.Runtime package.
- Lambdajection.Generator has been rewritten as a Source Generator and CGR has been ejected from all packages.
- Now building with .NET 5 RC2 SDK
v0.5.0-beta1
This release introduces the following:
- .NET Templates are here! Install via
dotnet new -i Lambdajection.Templates. Templates are available for both projects and options. - IDisposable and IAsyncDisposable Lambdas are now fully supported. Disposers will be called at the end of each invocation. If you implement both IDisposable and IAsyncDisposable, DisposeAsync will be preferred.
- Added an example for custom config factories.
- Upgrades Roslyn to 3.7.0 (via CodeGeneration.Roslyn) for latest bug and security fixes, along with increased nullability checks. Addressed changes around new possible null references.
v0.4.0
This release introduces the following:
- Updates several dependencies including:
- AWSSDK (Core, S3, KMS, STS) to latest respective versions for performance, bug, and security updates.
- Microsoft Extensions to 3.1.8 for security updates.
- FxCop Analyzers to 3.3.0 for additional code analyzers
- Various test project dependencies for performance and security updates.
- Addressed suggested changes by new code analyzer rules relating to cancellation tokens and default value assignment.
- Added an example demonstrating how to customize the serializer used for your Lambda.
Also includes everything from the 3 v0.4.0 previews:
v0.4.0-beta1
v0.4.0-beta2
v0.4.0-beta3
v0.4.0-beta3
This is a test release using an updated workflow.
v0.4.0-beta2
This release introduces the following:
- Updates decryption to use initialization services for the following benefits:
- Avoid possibility of deadlocks by not using Task.WaitAll in the post configure hook.
- Run decryption on multiple IOptions in parallel
- Run decryption in parallel with other initialization services.
- Fixes an issue where initialization services were getting called on every call to the Lambda.
- Now checking for correct formatting across the solution after every build, including in CICD. This means PR checks will fail if your changes to not comply with our preferred code style.
- Lambdajection.Attributes has been converted to a reference assembly so that it (and its dependencies) are not copied to the output folder of your project. This package has always only contained symbols that are compile-time only, so this will simply free up space in deployment packages.
- Bumped Amazon.Lambda.Serialization.SystemTextJson to v2.0.2
- Now publishing Symbols + SourceLink information for Lambdajection.Encryption
v0.4.0-beta1
This release introduces the following:
- You can now control the serializer used on the Lambda by setting the Serializer argument in the Lambda attribute. If your Lambda targets netcoreapp3.1, then DefaultLambdaJsonSerializer from Amazon.Lambda.Serialization.SystemTextJson is used by default.
- The startup argument in the Lambda attribute is now a constructor argument, rather than a named one. This was done to enforce setting the argument earlier in the pipeline, rather than just failing during code generation.
- File-based configuration is now turned off by default in favor of environment variables-based configuration. If you need to add file-based configuration back, you can specify a custom ILambdaConfigFactory type to the Lambda attribute's new ConfigFactory argument.
- Initialize data asynchronously or perform a startup task before the Lambda runs using initialization services! Implement ILambdaInitializationService and add it to the container as a singleton.
v0.3.0
The following was introduced in this release:
- We now run end to end tests before each release. This takes the form of deploying our examples to an AWS account, invoking them and checking the output for correctness.
- Lambda service providers are now initialized at their declaration, rather than inside the LambdaHostBuilder.Build method. This leads to faster (albeit slight) startup times due to the fact that the field does not get initialized to null once then be reassigned later during runtime.
- The GenerateRuntimeConfigurationFiles property is now set for you via the package properties in Lambdajection.Generator.
- Documentation was added around using development builds.
- Better organization around tests was introduced. Rather than having multiple test projects, we are now just using one and performing build tests using MSBuild Workspaces.
- If you attempt to inject an IAwsFactory without adding AWSSDK.SecurityToken as a dependency, you will now get a compile-time error. A limitation of this, is that the Generator will only search your compilation and not external references. If an injected class from a referenced assembly brings in an IAwsFactory, you will still receive a runtime error.
Also includes everything introduced in the three v0.3.0 previews:
- Inject AWS Service Clients and Client Factories
- Add options to your Lambda and automatically decrypt encrypted properties on startup
- Optionally use your own decryption service (default uses KMS)
- NuGet package XML documentation files
- Use dependency injection in your startup class
- Examples for AWS Service Client Factories and Encrypted Options
- Added a contributing guide
Release Notes for the previews:
https://github.com/cythral/lambdajection/releases/tag/v0.3.0-beta1
https://github.com/cythral/lambdajection/releases/tag/v0.3.0-beta2
https://github.com/cythral/lambdajection/releases/tag/v0.3.0-beta3