2.30.0

(feat): Add sln-format configuration option. Set to "sln" to generate both a legacy .sln solution file and the modern .slnx file. The default value "slnx" generates only the .slnx file. This is useful for teams that need compatibility with older .NET tooling or CI systems that do not yet support the .slnx format.

1generators:
2 - name: fernapi/fern-csharp-sdk
3 config:
4 sln-format: sln

2.29.0

(feat): Rework enum JSON serialization to eliminate reflection. Each enum now gets a generated serializer with static dictionary lookups instead of the generic EnumSerializer<T> / StringEnumSerializer<T> that used Enum.GetValues, GetField, GetCustomAttributes, and Activator.CreateInstance at runtime. Serializer initialization is ~1,000x faster (18 ns vs 18 us) and allocates 160x less memory; steady-state throughput is unchanged. The generated code is also NativeAOT and IL-trimming compatible.

2.28.0

(feat): Generate a separate WireMock server for each test fixture instead of sharing a single global server across all mock server tests. Each test class now starts and stops its own WireMockServer in [OneTimeSetUp]/[OneTimeTearDown], and test fixtures are annotated with [Parallelizable(ParallelScope.Self)] so NUnit can run them in parallel.

2.27.1

(fix): Fix retry test assertions to match the SDK’s indented JSON serialization.

2.27.0

(feat): Improve gRPC code generation with the following:

  1. Updated enum representation and .ToProto + .FromProto mappers.
  2. Fix an issue with rendering the gRPC client reference.
  3. Update protoc-gen-openapi to unwrap synthetic oneof types (re: https://github.com/fern-api/protoc-gen-openapi/releases/tag/v0.1.7)