Skip to content

Commit ec8c53a

Browse files
committed
chore: update CHANGELOG for v2.0.0 release and add new features; modify README for AOT compatibility instructions; adjust BuildContext for versioning format
1 parent 5c70831 commit ec8c53a

File tree

5 files changed

+157
-32
lines changed

5 files changed

+157
-32
lines changed

CHANGELOG.md

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,47 @@ This document outlines the changes, updates, and important notes for the LocalSt
44

55
See v1.x change log for previous versions: [CHANGELOG.md](https://github.com/localstack-dotnet/localstack-dotnet-client/blob/sdkv3-lts/CHANGELOG.md)
66

7-
### [v2.0.0-preview1](https://github.com/localstack-dotnet/localstack-dotnet-client/releases/tag/v2.0.0-preview1)
7+
## [v2.0.0](https://github.com/localstack-dotnet/localstack-dotnet-client/releases/tag/v2.0.0)
88

9-
#### 1. Breaking Changes
9+
> **Heads‑up**: Native AOT is not yet supported in GA.
10+
> Follow [draft PR #49](https://github.com/localstack-dotnet/localstack-dotnet-client/pull/49) for the reflection‑free path planned for v2.1.
11+
12+
### ✨ New features (since `v2.0.0‑preview1`)
13+
14+
- **Added Endpoints from [Localstack Python Client](https://github.com/localstack/localstack-python-client) v2.9:**
15+
- **Account Management**
16+
- **Certificate Manager Private Certificate Authority (ACMPCA)**
17+
- **Bedrock**
18+
- **Cloud Control API**
19+
- **Code Build**
20+
- **Code Connections**
21+
- **Code Deploy**
22+
- **Code Pipeline**
23+
- **Elastic Transcoder**
24+
- **MemoryDB for Redis**
25+
- **Shield**
26+
- **Verified Permissions**
27+
28+
### 🛠️ General
29+
30+
- **Testing Compatibility:**
31+
- Successfully tested against LocalStack versions:
32+
- **v3.7.1**
33+
- **v4.6.0**
34+
35+
*See [`v2.0.0-preview1`](#v200-preview1) for the complete migration from v1.x and the AWS SDK v4 overhaul.*
36+
37+
---
38+
39+
## [v2.0.0-preview1](https://github.com/localstack-dotnet/localstack-dotnet-client/releases/tag/v2.0.0-preview1)
40+
41+
### 1. Breaking Changes
1042

1143
- **Framework Support Updates:**
1244
- **Deprecated** support for **.NET Framework 4.6.2**.
1345
- **Added** support for **.NET Framework 4.7.2** (required for AWS SDK v4 compatibility).
1446

15-
#### 2. General
47+
### 2. General
1648

1749
- **AWS SDK v4 Migration:**
1850
- **Complete migration** from AWS SDK for .NET v3 to v4.
@@ -33,7 +65,7 @@ See v1.x change log for previous versions: [CHANGELOG.md](https://github.com/loc
3365
- **v3.7.1**
3466
- **v4.3.0**
3567

36-
#### 3. Important Notes
68+
### 3. Important Notes
3769

3870
- **Preview Release**: This is a preview release for early adopters and testing. See the [v2.0.0 Roadmap & Migration Guide](https://github.com/localstack-dotnet/localstack-dotnet-client/discussions/45) for the complete migration plan.
3971
- **No API Changes**: LocalStack.NET public APIs remain unchanged. All changes are internal to support AWS SDK v4 compatibility.

README.md

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,48 @@ Localstack.NET is an easy-to-use .NET client for [LocalStack](https://github.com
4141
- Public entry points that touch reflection are tagged with
4242
`[RequiresDynamicCode]` / `[RequiresUnreferencedCode]`.
4343
- You’ll see IL3050 / IL2026 warnings at compile time (promoted to errors in a strict AOT publish).
44-
- We ship the necessary linker descriptor with **`LocalStack.Client.Extensions`** to keep the private
45-
`ClientFactory<T>` members alive. No extra steps on your side.
46-
- Until the reflection‑free, source‑generated path lands (work in progress in
47-
[draft PR #49](https://github.com/localstack-dotnet/localstack-dotnet-client/pull/49) and tracked on
44+
- We already ship a linker descriptor with **`LocalStack.Client.Extensions`**
45+
to keep the private `ClientFactory<T>` machinery alive. **Nothing to configure for that part.**
46+
- Until the reflection‑free, source‑generated path lands (work in progress in
47+
[draft PR #49](https://github.com/localstack-dotnet/localstack-dotnet-client/pull/49) and tracked on
4848
[roadmap #48](https://github.com/localstack-dotnet/localstack-dotnet-client/discussions/48)):
49-
1. **Suppress** the warnings in your app *or* call the APIs that don’t rely on reflection.
50-
2. If you hit a runtime “missing member” error, ensure you’re on AWS SDK v4 **≥ 4.1.\*** and include the
51-
concrete `AWSSDK.*` package you’re instantiating.
49+
50+
1. **Suppress** the warnings in your app *or* call only the APIs that don’t rely on reflection.
51+
2. Add a tiny **service‑specific** linker descriptor for every `AWSSDK.*` package you reference
52+
(S3, DynamoDB, etc.). For example, for S3:
53+
54+
```xml
55+
<!-- ILLink.Descriptors.xml -->
56+
<linker>
57+
<assembly fullname="AWSSDK.S3">
58+
<type fullname="Amazon.S3.AmazonS3Client" />
59+
<type fullname="Amazon.S3.Internal.AmazonS3Metadata" />
60+
<type fullname="Amazon.S3.AmazonS3Config" />
61+
</assembly>
62+
63+
<!-- LocalStack options classes already carry [DAM] attributes,
64+
but you can include them if you prefer explicit rules -->
65+
<assembly fullname="LocalStack.Client">
66+
<type fullname="LocalStack.Client.Options.LocalStackOptions" />
67+
<type fullname="LocalStack.Client.Options.SessionOptions" />
68+
<type fullname="LocalStack.Client.Options.ConfigOptions" />
69+
</assembly>
70+
</linker>
71+
```
72+
73+
3. Wire it into your project once:
74+
75+
```xml
76+
<ItemGroup>
77+
<TrimmerRootDescriptor Include="ILLink.Descriptors.xml" />
78+
</ItemGroup>
79+
```
80+
81+
4. If you hit a runtime “missing member” error, ensure you’re on AWS SDK v4 **≥ 4.1.\*** and that
82+
the concrete `AWSSDK.*` package you’re using is included in the descriptor above.
5283

5384
> **Planned** – v2.1 will introduce an AOT‑friendly factory that avoids reflection entirely; once you
54-
> migrate to that API the warnings disappear.
85+
> migrate to that API these warnings and extra XML files go away.
5586

5687
### Build & Test Matrix
5788

build/LocalStack.Build/BuildContext.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -284,13 +284,13 @@ private string GetDynamicVersionFromProps(string versionPropertyName)
284284
// Simplified NuGet-compliant version format
285285
if (BranchName == "master")
286286
{
287-
// For master: 2.0.0-preview1-20240715-a1b2c3d
288-
return $"{baseVersion}-{buildDate}-{commitSha}";
287+
// Nightly off main — use build metadata
288+
return $"{baseVersion}+{buildDate}.{commitSha}";
289289
}
290290
else
291291
{
292-
// For feature branches: 2.0.0-preview1-feature-branch-20240715-a1b2c3d
293-
return $"{baseVersion}-{safeBranchName}-{buildDate}-{commitSha}";
292+
// Feature branch / preview line
293+
return $"{baseVersion}.{safeBranchName}.{buildDate}.{commitSha}";
294294
}
295295
}
296296

src/LocalStack.Client.Extensions/README.md

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,48 @@ Localstack.NET is an easy-to-use .NET client for [LocalStack](https://github.com
4141
- Public entry points that touch reflection are tagged with
4242
`[RequiresDynamicCode]` / `[RequiresUnreferencedCode]`.
4343
- You’ll see IL3050 / IL2026 warnings at compile time (promoted to errors in a strict AOT publish).
44-
- We ship the necessary linker descriptor with **`LocalStack.Client.Extensions`** to keep the private
45-
`ClientFactory<T>` members alive. No extra steps on your side.
46-
- Until the reflection‑free, source‑generated path lands (work in progress in
47-
[draft PR #49](https://github.com/localstack-dotnet/localstack-dotnet-client/pull/49) and tracked on
44+
- We already ship a linker descriptor with **`LocalStack.Client.Extensions`**
45+
to keep the private `ClientFactory<T>` machinery alive. **Nothing to configure for that part.**
46+
- Until the reflection‑free, source‑generated path lands (work in progress in
47+
[draft PR #49](https://github.com/localstack-dotnet/localstack-dotnet-client/pull/49) and tracked on
4848
[roadmap #48](https://github.com/localstack-dotnet/localstack-dotnet-client/discussions/48)):
49-
1. **Suppress** the warnings in your app *or* call the APIs that don’t rely on reflection.
50-
2. If you hit a runtime “missing member” error, ensure you’re on AWS SDK v4 **≥ 4.1.\*** and include the
51-
concrete `AWSSDK.*` package you’re instantiating.
49+
50+
1. **Suppress** the warnings in your app *or* call only the APIs that don’t rely on reflection.
51+
2. Add a tiny **service‑specific** linker descriptor for every `AWSSDK.*` package you reference
52+
(S3, DynamoDB, etc.). For example, for S3:
53+
54+
```xml
55+
<!-- ILLink.Descriptors.xml -->
56+
<linker>
57+
<assembly fullname="AWSSDK.S3">
58+
<type fullname="Amazon.S3.AmazonS3Client" />
59+
<type fullname="Amazon.S3.Internal.AmazonS3Metadata" />
60+
<type fullname="Amazon.S3.AmazonS3Config" />
61+
</assembly>
62+
63+
<!-- LocalStack options classes already carry [DAM] attributes,
64+
but you can include them if you prefer explicit rules -->
65+
<assembly fullname="LocalStack.Client">
66+
<type fullname="LocalStack.Client.Options.LocalStackOptions" />
67+
<type fullname="LocalStack.Client.Options.SessionOptions" />
68+
<type fullname="LocalStack.Client.Options.ConfigOptions" />
69+
</assembly>
70+
</linker>
71+
```
72+
73+
3. Wire it into your project once:
74+
75+
```xml
76+
<ItemGroup>
77+
<TrimmerRootDescriptor Include="ILLink.Descriptors.xml" />
78+
</ItemGroup>
79+
```
80+
81+
4. If you hit a runtime “missing member” error, ensure you’re on AWS SDK v4 **≥ 4.1.\*** and that
82+
the concrete `AWSSDK.*` package you’re using is included in the descriptor above.
5283

5384
> **Planned** – v2.1 will introduce an AOT‑friendly factory that avoids reflection entirely; once you
54-
> migrate to that API the warnings disappear.
85+
> migrate to that API these warnings and extra XML files go away.
5586

5687
### Build & Test Matrix
5788

src/LocalStack.Client/README.md

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,48 @@ Localstack.NET is an easy-to-use .NET client for [LocalStack](https://github.com
4141
- Public entry points that touch reflection are tagged with
4242
`[RequiresDynamicCode]` / `[RequiresUnreferencedCode]`.
4343
- You’ll see IL3050 / IL2026 warnings at compile time (promoted to errors in a strict AOT publish).
44-
- We ship the necessary linker descriptor with **`LocalStack.Client.Extensions`** to keep the private
45-
`ClientFactory<T>` members alive. No extra steps on your side.
46-
- Until the reflection‑free, source‑generated path lands (work in progress in
47-
[draft PR #49](https://github.com/localstack-dotnet/localstack-dotnet-client/pull/49) and tracked on
44+
- We already ship a linker descriptor with **`LocalStack.Client.Extensions`**
45+
to keep the private `ClientFactory<T>` machinery alive. **Nothing to configure for that part.**
46+
- Until the reflection‑free, source‑generated path lands (work in progress in
47+
[draft PR #49](https://github.com/localstack-dotnet/localstack-dotnet-client/pull/49) and tracked on
4848
[roadmap #48](https://github.com/localstack-dotnet/localstack-dotnet-client/discussions/48)):
49-
1. **Suppress** the warnings in your app *or* call the APIs that don’t rely on reflection.
50-
2. If you hit a runtime “missing member” error, ensure you’re on AWS SDK v4 **≥ 4.1.\*** and include the
51-
concrete `AWSSDK.*` package you’re instantiating.
49+
50+
1. **Suppress** the warnings in your app *or* call only the APIs that don’t rely on reflection.
51+
2. Add a tiny **service‑specific** linker descriptor for every `AWSSDK.*` package you reference
52+
(S3, DynamoDB, etc.). For example, for S3:
53+
54+
```xml
55+
<!-- ILLink.Descriptors.xml -->
56+
<linker>
57+
<assembly fullname="AWSSDK.S3">
58+
<type fullname="Amazon.S3.AmazonS3Client" />
59+
<type fullname="Amazon.S3.Internal.AmazonS3Metadata" />
60+
<type fullname="Amazon.S3.AmazonS3Config" />
61+
</assembly>
62+
63+
<!-- LocalStack options classes already carry [DAM] attributes,
64+
but you can include them if you prefer explicit rules -->
65+
<assembly fullname="LocalStack.Client">
66+
<type fullname="LocalStack.Client.Options.LocalStackOptions" />
67+
<type fullname="LocalStack.Client.Options.SessionOptions" />
68+
<type fullname="LocalStack.Client.Options.ConfigOptions" />
69+
</assembly>
70+
</linker>
71+
```
72+
73+
3. Wire it into your project once:
74+
75+
```xml
76+
<ItemGroup>
77+
<TrimmerRootDescriptor Include="ILLink.Descriptors.xml" />
78+
</ItemGroup>
79+
```
80+
81+
4. If you hit a runtime “missing member” error, ensure you’re on AWS SDK v4 **≥ 4.1.\*** and that
82+
the concrete `AWSSDK.*` package you’re using is included in the descriptor above.
5283

5384
> **Planned** – v2.1 will introduce an AOT‑friendly factory that avoids reflection entirely; once you
54-
> migrate to that API the warnings disappear.
85+
> migrate to that API these warnings and extra XML files go away.
5586

5687
### Build & Test Matrix
5788

0 commit comments

Comments
 (0)