|
1 | 1 | # Change Log |
| 2 | +## 1.0.0 (04/2/2026) |
| 3 | +> [!IMPORTANT] |
| 4 | +> This is the first GA release of Smithy Java. All client modules are now considered stable. |
| 5 | +> Some modules, including server, CLI, and MCP, are still in developer-preview and may contain bugs. |
| 6 | +> No guarantee is made about their API stability. Unstable modules are marked with a warning in their |
| 7 | +> `README.md` and with the `@SmithyUnstableApi` annotation in their `package-info.java`. |
| 8 | +
|
| 9 | +### Features |
| 10 | +- Added JSpecify nullness annotation support. |
| 11 | +- Added endpoint rules engine with BDD codegen, fused opcodes, and peephole optimizations. ([#1035](https://github.com/smithy-lang/smithy-java/pull/1035)) |
| 12 | +- Added support for AWS Query protocol in the client. |
| 13 | +- Added support for request compression. ([#968](https://github.com/smithy-lang/smithy-java/pull/968)) |
| 14 | +- Added checksum support in requests. ([#911](https://github.com/smithy-lang/smithy-java/pull/911)) |
| 15 | +- Added event streams support to AWS JSON protocols. ([#1076](https://github.com/smithy-lang/smithy-java/pull/1076)) |
| 16 | +- Added event stream implementation for RPCv2. ([#849](https://github.com/smithy-lang/smithy-java/pull/849)) |
| 17 | +- Added support for `@eventHeader` and `@eventPayload` for RPC protocols. ([#864](https://github.com/smithy-lang/smithy-java/pull/864)) |
| 18 | +- Added event stream signing support. ([#1054](https://github.com/smithy-lang/smithy-java/pull/1054)) |
| 19 | +- Implemented new event streams API. ([#1035](https://github.com/smithy-lang/smithy-java/pull/1035)) |
| 20 | +- Added an OpenTelemetry based plugin to publish operation metrics. ([#1030](https://github.com/smithy-lang/smithy-java/pull/1030)) |
| 21 | +- Added support for native remote MCP servers. ([#943](https://github.com/smithy-lang/smithy-java/pull/943)) |
| 22 | +- Added MCP ping request support. ([#1016](https://github.com/smithy-lang/smithy-java/pull/1016)) |
| 23 | +- Added MCP proxy server support for prompts. |
| 24 | +- Added MCP metrics observer support to McpServerBuilder. |
| 25 | +- Added support for SSE + streaming with MCP notifications. |
| 26 | +- Added structured content to MCP tool responses when possible. |
| 27 | +- Added output schema to MCP tools/list. |
| 28 | +- Added protocol version to MCP initialize response. |
| 29 | +- Added workingDirectory to StdioProxy. |
| 30 | +- Added error response parsing for restXml. ([#922](https://github.com/smithy-lang/smithy-java/pull/922)) |
| 31 | +- Added support for BigDecimal Documents in CBOR. |
| 32 | +- Added map input for dynamic client. |
| 33 | +- Added `DataStream.writeTo()` and IO utilities. |
| 34 | +- Added `isAvailable` to check if DataStream has not been consumed. |
| 35 | +- Added close to DataStream to allow closing resources. |
| 36 | +- Added generic types to JMESPath predicates. ([#1067](https://github.com/smithy-lang/smithy-java/pull/1067)) |
| 37 | +- Added utility to fill shapes with random values. |
| 38 | +- Added fuzz testing framework. |
| 39 | +- Added document discriminator sanitizer for JSON protocols. ([#932](https://github.com/smithy-lang/smithy-java/pull/932)) |
| 40 | +- Added plugin phases, auto-plugins, and hierarchy for codegen. |
| 41 | +- Added ability to register default plugins in codegen. |
| 42 | +- Added new code sections to support deserialization overrides. |
| 43 | +- Added plugin test runner. ([#855](https://github.com/smithy-lang/smithy-java/pull/855)) |
| 44 | +- Added compile method for EndpointRuleSet in RulesEngineBuilder. |
| 45 | +- Added singletons for AwsCredentialsResolver implementations. ([#1059](https://github.com/smithy-lang/smithy-java/pull/1059)) |
| 46 | +- Added strategy for writing error types to headers. |
| 47 | +- Added ModifiableHttpHeaders method to overwrite HTTP header values. |
| 48 | +- Generated input shape with additionalInput member for operations with Unit input. |
| 49 | +- Added model bundle version to decide whether to wrap input or not. |
| 50 | +- Added additionalInfo to BundleMetadata. |
| 51 | +- Allowed event processors to compose. ([#1095](https://github.com/smithy-lang/smithy-java/pull/1095)) |
| 52 | +- Allowed lists to be marked as httpPayload. |
| 53 | +- Added KEYS synchronization. |
| 54 | +- Added HttpTransportConfig for transport settings. |
| 55 | + |
| 56 | +### Bug Fixes |
| 57 | +- Fixed equals for float and double values. ([#1129](https://github.com/smithy-lang/smithy-java/pull/1129)) |
| 58 | +- Fixed CBOR deserializer crash on empty input for no-input operations. ([#1103](https://github.com/smithy-lang/smithy-java/pull/1103)) |
| 59 | +- Fixed protocol initialization for AwsRestJson1Protocol. ([#1023](https://github.com/smithy-lang/smithy-java/pull/1023)) |
| 60 | +- Fixed incorrect codegen for HttpApiKeyAuthTrait. |
| 61 | +- Fixed encoding/decoding of errors and exception events. ([#1055](https://github.com/smithy-lang/smithy-java/pull/1055)) |
| 62 | +- Fixed SchemaIndex collision for Unit inputs/outputs. |
| 63 | +- Fixed handling of timestamps inside oneOf unions. |
| 64 | +- Fixed handling of event payload members of blob and string type. ([#1064](https://github.com/smithy-lang/smithy-java/pull/1064)) |
| 65 | +- Fixed bug of adding a null element to the list when list is empty or null. |
| 66 | +- Fixed Sigv4 multivalued query key ordering and double path encoding. ([#984](https://github.com/smithy-lang/smithy-java/pull/984)) |
| 67 | +- Fixed query params with more than one value per key. ([#973](https://github.com/smithy-lang/smithy-java/pull/973)) |
| 68 | +- Fixed double encoding URIs for signing. ([#972](https://github.com/smithy-lang/smithy-java/pull/972)) |
| 69 | +- Fixed httpQuery related protocol tests. ([#945](https://github.com/smithy-lang/smithy-java/pull/945)) |
| 70 | +- Fixed httpHeader and httpPrefixHeaders protocol tests. ([#914](https://github.com/smithy-lang/smithy-java/pull/914)) |
| 71 | +- Fixed QueryCustomizedError protocol test. |
| 72 | +- Fixed type conversion issues in MCP. |
| 73 | +- Fixed naming conflict between class name and Schema field when structure name is all capitals. |
| 74 | +- Fixed name conflicts resolving. ([#902](https://github.com/smithy-lang/smithy-java/pull/902)) |
| 75 | +- Fixed builder setters to use the correct boxed or primitive type. |
| 76 | +- Fixed javadoc link. ([#987](https://github.com/smithy-lang/smithy-java/pull/987)) |
| 77 | +- Fixed URI concat issue with HttpClientProtocol. |
| 78 | +- Fixed bytecode loading and creation. |
| 79 | +- Fixed O(N!) allocations for recursive union variants. |
| 80 | +- Fixed content-type for http-payload when already in headers. |
| 81 | +- Fixed skipping OperationGenerator in types-only codegen mode. |
| 82 | +- Fixed gradle to generate javadoc and sources jar for publishing. ([#854](https://github.com/smithy-lang/smithy-java/pull/854)) |
| 83 | +- Fixed delay publishing the initial event until fully wired. ([#865](https://github.com/smithy-lang/smithy-java/pull/865)) |
| 84 | +- Fixed null protocol version handling in MCP requests. |
| 85 | +- Fixed proxy initialization failures no longer silently swallowed. |
| 86 | +- Correctly handled BigInteger and BigDecimal defaults. |
| 87 | +- Correctly adapted oneOf unions nested in oneOfUnions. |
| 88 | +- Properly supported lists of Documents. ([#869](https://github.com/smithy-lang/smithy-java/pull/869)) |
| 89 | + |
| 90 | +### Improvements |
| 91 | +- Optimized hashCode computation. ([#1130](https://github.com/smithy-lang/smithy-java/pull/1130)) |
| 92 | +- Cleaned up query/percent parsing and encoding utilities. |
| 93 | +- Removed indirection and overhead from interceptors ([#1127](https://github.com/smithy-lang/smithy-java/pull/1127)) |
| 94 | +- Optimized header name matching using generated buckets and identity checks. |
| 95 | +- Optimized equals and hashCode of SmithyUri. |
| 96 | +- Optimized request/response pipeline handling. |
| 97 | +- Replaced request/response builders with modifiable copies. |
| 98 | +- Switched to faster and cheaper array-backed headers. |
| 99 | +- Optimized Context implementation with chunked array storage. |
| 100 | +- Optimized SchemaConverter and MCP Schema conversion. |
| 101 | +- Optimized string validation. |
| 102 | +- Optimized endpoints VM with fused opcodes, `ite`, negative indexing, and `SPLIT` opcode. |
| 103 | +- Optimized timestamp handling with minor improvements. |
| 104 | +- Avoided unnecessary UTF-8 decoding and byte[] allocations when flushing MCP structs. |
| 105 | +- Avoided boxing for primitive Documents and fixed equals for various Documents. |
| 106 | +- Used SmithyUri instead of URI for performance. |
| 107 | +- Improved HttpHeaders to only allocate names when needed. |
| 108 | +- Added upper bound on container pre-allocation during deserialization. |
| 109 | +- Prevented allocating large arrays based on BigInteger lengths. |
| 110 | +- Added stricter verifications while reading lists in Json Codec. |
| 111 | +- Added better header and value validation. |
| 112 | +- Improved client content-type deserialization handling. |
| 113 | +- Converted Jackson exceptions to SerializationException. |
| 114 | +- Used JmespathRuntime for JMESPath evaluation. |
| 115 | +- Used proper classloader for loading services. ([#958](https://github.com/smithy-lang/smithy-java/pull/958)) |
| 116 | +- Used symbols instead of hardcoded strings. ([#1072](https://github.com/smithy-lang/smithy-java/pull/1072)) |
| 117 | +- Used sealed interfaces for enums and records for unions. |
| 118 | +- Oriented DataStream around InputStream. |
| 119 | +- Made Client implement Closeable. |
| 120 | +- Made ClientTransport extend Closeable. |
| 121 | +- Made rules engine independent of client. |
| 122 | +- Moved to blocking client, towards virtual threads. |
| 123 | +- Increased default MCP HTTP proxy timeout from 60s to 5 minutes. |
| 124 | +- Upgraded to Jackson 3.0.3. |
| 125 | + |
| 126 | +### Breaking Changes |
| 127 | +- Removed request/response builders in favor of modifiable copies. |
| 128 | +- Removed `useExternalTypes` option (unused). |
| 129 | +- Removed unused utility methods. |
| 130 | +- Removed tracing API. ([#1068](https://github.com/smithy-lang/smithy-java/pull/1068)) |
| 131 | +- Removed ExternalSymbols. |
| 132 | +- Removed MCP CLI functionality. |
| 133 | +- Removed MCP bundles module. |
| 134 | +- Removed unused ExecutorService from call context. |
| 135 | +- Removed map* methods from Hooks and replaced with cast. |
| 136 | +- Removed default from JsonArraySchema. |
| 137 | +- Removed unused jline dependency. |
| 138 | +- Split codegen-plugins back into codegen-core and removed client-api. ([#1091](https://github.com/smithy-lang/smithy-java/pull/1091)) |
| 139 | +- Moved from plugin-based codegen to mode-based codegen for types, client, and server. |
| 140 | +- Moved endpoints to upper level. |
| 141 | +- Separated java and resources into different folders. ([#1078](https://github.com/smithy-lang/smithy-java/pull/1078)) |
| 142 | +- Surface area review of client packages. ([#1086](https://github.com/smithy-lang/smithy-java/pull/1086)) |
| 143 | +- Surface area review of CLI package API. ([#1085](https://github.com/smithy-lang/smithy-java/pull/1085)) |
| 144 | +- Made errorSchemas non-default in the interface. |
| 145 | +- Made union members implicitly type-cast in getValue. |
| 146 | +- Made additionalProperties a Document. |
| 147 | + |
2 | 148 | ## 0.0.3 (08/21/2025) |
3 | 149 | > [!WARNING] |
4 | 150 | > This is a developer-preview release and may contain bugs. **No** guarantee is made about API stability. |
|
69 | 215 | - Added JSON protocol support - restJson1, awsJson. |
70 | 216 | - Added RPCV2 CBOR protocol support. |
71 | 217 | - Implemented Dynamic client that can load a Smithy model to call a service. |
72 | | -- Added Smithy Lambda Endpoint wrapper to run generated server stubs in AWS Lambda. |
| 218 | +- Added Smithy Lambda Endpoint wrapper to run generated server stubs in AWS Lambda. |
0 commit comments