v5.0.0
Announcing [email protected]
Starting with this release, all packages in the jsii toolchain that internally use the TypeScript compiler (i.e: jsii
and jsii-rosetta
) will be released on a new release line that uses the same major.minor
number as the TypeScript compiler they are built against. All other packages (such as @jsii/spec
, jsii-pacmak
, etc...) will continue to be released against the same 1.x
release line they are currently released in.
The TypeScript compiler does not conform to semantic versioning), and instead guarantees the absence of breaking changes within a given major.minor
release line. We recommend developers model their dependencies on jsii
and jsii-rosetta
using a minor-pinned version range (e.g: ~5.0.0
) in order to avoid new TypeScript language versions breaking their codebases at undesirable times.
New features will be introduced only in the latest major.minor
release line of jsii
and jsii-rosetta
(typically corresponding to the current stable release of the TypeScript compiler). Breaking changes may be introduced with every new major.minor
release line and will continue to be documented in the CHANGELOG.
Users may need to modify their code when upgrading from one major.minor
release line to another (addressing TypeScript language evolutions and jsii
feature evolutions). While upgrading to the latest release line of jsii
helps minimize the effort required for these updates, the release strategy allows developers to do so on their own schedule.
This change is made to allow developers to benefit from the latest and greatest features of the TypeScript language without requiring the entire ecosystem to make the switch at the same time.
The complete support policy applicable for this release of jsii-rosetta
can be found on GitHub.
Breaking Changes
In order to allow developers to use the latest & greatest features of TypeScript, the jsii
compiler and jsii-rosetta
are now made in-line with those of the typescript
compiler (e.g: [email protected]
is built on TypeScript 5.0.x). Since the TypeScript compiler does not follow semantic versioning, we strongly recommend you upgrade your devDependency
on jsii
and jsii-rosetta
to use a tilde range (e.g: ~5.0.0
) to be able to control when you migrate to future TypeScript language versions. New jsii
and jsii-rosetta
features will only be introduced in the latest release line, while older release lines only receive bug fixes until they are declared end-of-life.
The [email protected]
release line silently ignored index signatures, which were consequently not available in non-Javascript/TypeScript APIs. These are now an error with [email protected]
. Users can explicitly opt index signatures out of their multi-language api by using the @jsii ignore
doc-tag.
The [email protected]
release incorrectly interpreted tuple types as synonyms to object
, resulting in the API being unusable from non-Javascript/TypeScript languages (attempting to use would result in a runtime error). These are now an error with [email protected]
.
TypeScript Updates
This release of jsii-rosetta
is built on TypeScript 5.0. The TypeScript language includes syntax breaking changes since TypeScript 3.9 that is used by [email protected]
. More information can be found in the TypeScript release nodes:
- TypeScript 4.0 release notes
- TypeScript 4.1 release notes
- TypeScript 4.2 release notes
- TypeScript 4.3 release notes
- TypeScript 4.4 release notes
- TypeScript 4.5 release notes
- TypeScript 4.6 release notes
- TypeScript 4.7 release notes
- TypeScript 4.8 release notes
- TypeScript 4.9 release notes
- TypeScript 5.0 release notes
Full Changelog: https://github.com/aws/jsii-rosetta/commits/v5.0.0