Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 156 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,159 @@
# Change Log
## 1.0.0 (03/31/2026)
> [!IMPORTANT]
> This is the first GA release of Smithy Java. All client modules are now considered stable.
> Some modules, including server, CLI, and MCP, are still in developer-preview and may contain bugs.
> No guarantee is made about their API stability. Unstable modules are marked with a warning in their
> `README.md` and with the `@SmithyUnstableApi` annotation in their `package-info.java`.

### Features
- Added endpoint rules engine with BDD codegen, fused opcodes, and peephole optimizations. ([#1035](https://github.com/smithy-lang/smithy-java/pull/1035))
- Added support for AWS Query protocol in the client.
- Added support for request compression. ([#968](https://github.com/smithy-lang/smithy-java/pull/968))
- Added checksum support in requests. ([#911](https://github.com/smithy-lang/smithy-java/pull/911))
- Added event streams support to AWS JSON protocols. ([#1076](https://github.com/smithy-lang/smithy-java/pull/1076))
- Added event stream implementation for RPCv2. ([#849](https://github.com/smithy-lang/smithy-java/pull/849))
- Added support for `@eventHeader` and `@eventPayload` for RPC protocols. ([#864](https://github.com/smithy-lang/smithy-java/pull/864))
- Added event stream signing support. ([#1054](https://github.com/smithy-lang/smithy-java/pull/1054))
- Implemented new event streams API. ([#1035](https://github.com/smithy-lang/smithy-java/pull/1035))
- Added an OpenTelemetry based plugin to publish operation metrics. ([#1030](https://github.com/smithy-lang/smithy-java/pull/1030))
- Added support for native remote MCP servers. ([#943](https://github.com/smithy-lang/smithy-java/pull/943))
- Added MCP ping request support. ([#1016](https://github.com/smithy-lang/smithy-java/pull/1016))
- Added MCP proxy server support for prompts.
- Added MCP metrics observer support to McpServerBuilder.
- Added support for SSE + streaming with MCP notifications.
- Added structured content to MCP tool responses when possible.
- Added output schema to MCP tools/list.
- Added protocol version to MCP initialize response.
- Added workingDirectory to StdioProxy.
- Added error response parsing for restXml. ([#922](https://github.com/smithy-lang/smithy-java/pull/922))
- Added support for BigDecimal Documents in CBOR.
- Added map input for dynamic client.
- Added `DataStream.writeTo()` and IO utilities.
- Added `isAvailable` to check if DataStream has not been consumed.
- Added close to DataStream to allow closing resources.
- Added generic types to JMESPath predicates. ([#1067](https://github.com/smithy-lang/smithy-java/pull/1067))
- Added utility to fill shapes with random values.
- Added fuzz testing framework.
- Added document discriminator sanitizer for JSON protocols. ([#932](https://github.com/smithy-lang/smithy-java/pull/932))
- Added plugin phases, auto-plugins, and hierarchy for codegen.
- Added ability to register default plugins in codegen.
- Added new code sections to support deserialization overrides.
- Added plugin test runner. ([#855](https://github.com/smithy-lang/smithy-java/pull/855))
- Added compile method for EndpointRuleSet in RulesEngineBuilder.
- Added singletons for AwsCredentialsResolver implementations. ([#1059](https://github.com/smithy-lang/smithy-java/pull/1059))
- Added strategy for writing error types to headers.
- Added ModifiableHttpHeaders method to overwrite HTTP header values.
- Generated input shape with additionalInput member for operations with Unit input.
- Added model bundle version to decide whether to wrap input or not.
- Added additionalInfo to BundleMetadata.
- Allowed event processors to compose. ([#1095](https://github.com/smithy-lang/smithy-java/pull/1095))
- Allowed lists to be marked as httpPayload.
- Added KEYS synchronization.
- Added HttpTransportConfig for transport settings.

### Bug Fixes
- Fixed CBOR deserializer crash on empty input for no-input operations. ([#1103](https://github.com/smithy-lang/smithy-java/pull/1103))
- Fixed protocol initialization for AwsRestJson1Protocol. ([#1023](https://github.com/smithy-lang/smithy-java/pull/1023))
- Fixed incorrect codegen for HttpApiKeyAuthTrait.
- Fixed encoding/decoding of errors and exception events. ([#1055](https://github.com/smithy-lang/smithy-java/pull/1055))
- Fixed SchemaIndex collision for Unit inputs/outputs.
- Fixed handling of timestamps inside oneOf unions.
- Fixed handling of event payload members of blob and string type. ([#1064](https://github.com/smithy-lang/smithy-java/pull/1064))
- Fixed bug of adding a null element to the list when list is empty or null.
- Fixed Sigv4 multivalued query key ordering and double path encoding. ([#984](https://github.com/smithy-lang/smithy-java/pull/984))
- Fixed query params with more than one value per key. ([#973](https://github.com/smithy-lang/smithy-java/pull/973))
- Fixed double encoding URIs for signing. ([#972](https://github.com/smithy-lang/smithy-java/pull/972))
- Fixed httpQuery related protocol tests. ([#945](https://github.com/smithy-lang/smithy-java/pull/945))
- Fixed httpHeader and httpPrefixHeaders protocol tests. ([#914](https://github.com/smithy-lang/smithy-java/pull/914))
- Fixed QueryCustomizedError protocol test.
- Fixed type conversion issues in MCP.
- Fixed naming conflict between class name and Schema field when structure name is all capitals.
- Fixed name conflicts resolving. ([#902](https://github.com/smithy-lang/smithy-java/pull/902))
- Fixed builder setters to use the correct boxed or primitive type.
- Fixed javadoc link. ([#987](https://github.com/smithy-lang/smithy-java/pull/987))
- Fixed URI concat issue with HttpClientProtocol.
- Fixed bytecode loading and creation.
- Fixed O(N!) allocations for recursive union variants.
- Fixed content-type for http-payload when already in headers.
- Fixed skipping OperationGenerator in types-only codegen mode.
- Fixed gradle to generate javadoc and sources jar for publishing. ([#854](https://github.com/smithy-lang/smithy-java/pull/854))
- Fixed delay publishing the initial event until fully wired. ([#865](https://github.com/smithy-lang/smithy-java/pull/865))
- Fixed null protocol version handling in MCP requests.
- Fixed proxy initialization failures no longer silently swallowed.
- Correctly handled BigInteger and BigDecimal defaults.
- Correctly adapted oneOf unions nested in oneOfUnions.
- Properly supported lists of Documents. ([#869](https://github.com/smithy-lang/smithy-java/pull/869))

### Improvements
- Switched to faster and cheaper array-backed headers.
- Optimized Context implementation with chunked array storage.
- Optimized SchemaConverter and MCP Schema conversion.
- Optimized string validation.
- Optimized endpoints VM with fused opcodes, `ite`, negative indexing, and `SPLIT` opcode.
- Optimized timestamp handling with minor improvements.
- Avoided unnecessary UTF-8 decoding and byte[] allocations when flushing MCP structs.
- Avoided boxing for primitive Documents and fixed equals for various Documents.
- Used SmithyUri instead of URI for performance.
- Improved HttpHeaders to only allocate names when needed.
- Added upper bound on container pre-allocation during deserialization.
- Prevented allocating large arrays based on BigInteger lengths.
- Added stricter verifications while reading lists in Json Codec.
- Added better header and value validation.
- Improved client content-type deserialization handling.
- Converted Jackson exceptions to SerializationException.
- Used JmespathRuntime for JMESPath evaluation.
- Used proper classloader for loading services. ([#958](https://github.com/smithy-lang/smithy-java/pull/958))
- Used symbols instead of hardcoded strings. ([#1072](https://github.com/smithy-lang/smithy-java/pull/1072))
- Used sealed interfaces for enums and records for unions.
- Oriented DataStream around InputStream.
- Made Client implement Closeable.
- Made ClientTransport extend Closeable.
- Made rules engine independent of client.
- Moved to blocking client, towards virtual threads.
- Increased default MCP HTTP proxy timeout from 60s to 5 minutes.
- Upgraded to Jackson 3.0.3.

### Documentation
- Added package info and unstable annotations. ([#1094](https://github.com/smithy-lang/smithy-java/pull/1094))
- Reviewed and annotated public classes with unstable annotation as needed. ([#1077](https://github.com/smithy-lang/smithy-java/pull/1077))
- Added docs and tests for FormUrlEncodedSink.
- Added message member to DocumentException toString.
- Used snippets for code comments.

### Breaking Changes
- Removed tracing API. ([#1068](https://github.com/smithy-lang/smithy-java/pull/1068))
- Removed ExternalSymbols.
- Removed MCP CLI functionality.
- Removed MCP bundles module.
- Removed unused ExecutorService from call context.
- Removed map* methods from Hooks and replaced with cast.
- Removed logic to deserialize using the protocol codec. ([#870](https://github.com/smithy-lang/smithy-java/pull/870))
- Removed default from JsonArraySchema.
- Removed unused jline dependency.
- Split codegen-plugins back into codegen-core and removed client-api. ([#1091](https://github.com/smithy-lang/smithy-java/pull/1091))
- Moved from plugin-based codegen to mode-based codegen for types, client, and server.
- Moved endpoints to upper level.
- Separated java and resources into different folders. ([#1078](https://github.com/smithy-lang/smithy-java/pull/1078))
- Surface area review of client packages. ([#1086](https://github.com/smithy-lang/smithy-java/pull/1086))
- Surface area review of CLI package API. ([#1085](https://github.com/smithy-lang/smithy-java/pull/1085))
- Made errorSchemas non-default in the interface.
- Made union members implicitly type-cast in getValue.
- Made additionalProperties a Document.

### Other
- Bumped dependencies across multiple Gradle groups.
- Bumped Gradle actions, checkout, upload-artifact, cache, and setup-java actions.
- Added integration tests to compile and check AWS endpoints.
- Added S3 model from Maven.
- Updated to latest Smithy with stricter BDD validation.
- Built examples explicitly using JDK21.
- Made mcp-schemas and smithy-ai-traits jars reproducible.
- Fixed build cache misses.
- Moved examples and mcp-schemas to new structure.
- Tests and codegen fixes to build most AWS API models. ([#1081](https://github.com/smithy-lang/smithy-java/pull/1081))
- Removed build warnings. ([#1109](https://github.com/smithy-lang/smithy-java/pull/1109))

## 0.0.3 (08/21/2025)
> [!WARNING]
> This is a developer-preview release and may contain bugs. **No** guarantee is made about API stability.
Expand Down Expand Up @@ -69,4 +224,4 @@
- Added JSON protocol support - restJson1, awsJson.
- Added RPCV2 CBOR protocol support.
- Implemented Dynamic client that can load a Smithy model to call a service.
- Added Smithy Lambda Endpoint wrapper to run generated server stubs in AWS Lambda.
- Added Smithy Lambda Endpoint wrapper to run generated server stubs in AWS Lambda.
3 changes: 1 addition & 2 deletions VERSION
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
0.0.3

1.0.0
7 changes: 7 additions & 0 deletions aws/aws-service-bundle/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## aws-service-bundle

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Provides generic request parameters for interacting with AWS services described by an AWS service bundle.
7 changes: 7 additions & 0 deletions aws/aws-service-bundler/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## aws-service-bundler

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Produces service bundles for AWS services from Smithy models.
7 changes: 7 additions & 0 deletions aws/integrations/aws-lambda-endpoint/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## aws-lambda-endpoint

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Provides an endpoint implementation for running Smithy Java server stubs as AWS Lambda request handlers.
3 changes: 2 additions & 1 deletion cli/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
## smithy-call

> [!WARNING]
> This project is still in development and is not intended for use in production.
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
This module contains the base-version of smithy-call: a CLI that uses ahead-of-time compilation and the dynamic client to make adhoc calls to services.

Expand Down
7 changes: 7 additions & 0 deletions codegen/test-utils/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## codegen-test-utils

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Provides utilities for testing Smithy Java codegen plugins.
7 changes: 7 additions & 0 deletions mcp/mcp-server/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## mcp-server

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Provides Model Context Protocol (MCP) server support for Smithy Java, enabling MCP server generation from Smithy models.
7 changes: 7 additions & 0 deletions model-bundle/model-bundle-api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## model-bundle-api

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Implements the model-bundle utility for packaging and loading Smithy models at runtime.
5 changes: 5 additions & 0 deletions server/server-api/README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
## server-api

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.

Provides the base API for servers.
5 changes: 5 additions & 0 deletions server/server-core/README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
## server-core

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Provides core server functionality for the Smithy Java framework.
5 changes: 5 additions & 0 deletions server/server-netty/README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
## server-netty

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Netty-based implementation of a Smithy Java server.
7 changes: 7 additions & 0 deletions server/server-proxy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## server-proxy

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Provides proxy server functionality for the Smithy Java framework, enabling request forwarding using the dynamic client.
7 changes: 6 additions & 1 deletion server/server-rpcv2-cbor/README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
### server-rpcv2-cbor
## server-rpcv2-cbor

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Server implementation of the [RPCv2](https://smithy.io/2.0/additional-specs/protocols/smithy-rpc-v2.html) CBOR protocol.
7 changes: 7 additions & 0 deletions smithy-ai-traits/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## smithy-ai-traits

> [!WARNING]
> This is a developer-preview module and may contain bugs. No guarantee is made about API stability.
> This module is not recommended for production use.
Defines Smithy AI traits for annotating models with AI-specific metadata such as prompts and tool definitions.