Skip to content

Commit 80988b0

Browse files
authored
2 parents bce6a1d + fce089c commit 80988b0

File tree

45 files changed

+1325
-1310
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1325
-1310
lines changed

.github/workflows/yarn-upgrade.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ jobs:
130130
run: '[ -s ${{ runner.temp }}/upgrade.patch ] && git apply ${{ runner.temp }}/upgrade.patch || echo "Empty patch. Skipping."'
131131

132132
- name: Make Pull Request
133-
uses: peter-evans/create-pull-request@v4
133+
uses: peter-evans/create-pull-request@v5
134134
with:
135135
# Git commit details
136136
author: 'AWS CDK Automation <aws-cdk-automation@users.noreply.github.com>'

.mergify/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pull_request_rules:
3030
label:
3131
add: [contribution/core]
3232
conditions:
33-
- author~=^(RomainMuller|rix0rrr|Jerry-AWS|MrArnoldPalmer|iliapolo|madeline-k|comcalvi|kaizencc|corymhall|otaviomacedo|yuth|TheRealAmazonKendra|vinayak-kukreja|mrgrain|ryparker|Naumel)$
33+
- author~=^(RomainMuller|rix0rrr|Jerry-AWS|MrArnoldPalmer|iliapolo|madeline-k|comcalvi|kaizencc|corymhall|otaviomacedo|yuth|TheRealAmazonKendra|vinayak-kukreja|mrgrain|ryparker|Naumel|colifran)$
3434
- -label~="contribution/core"
3535
- name: Tell them we're good now
3636
actions:

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
22

33
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
44

5+
## [1.81.0](https://github.com/aws/jsii/compare/v1.80.0...v1.81.0) (2023-05-10)
6+
7+
8+
### Features
9+
10+
* **jsii-diff:** allow external stability to be treated as error ([#4076](https://github.com/aws/jsii/issues/4076)) ([95689ea](https://github.com/aws/jsii/commit/95689ea840a99f38f8449aab2bc452cf489e3e3f))
11+
* **jsii-pacmak:** parsing arguments in non-strict mode ([#4068](https://github.com/aws/jsii/issues/4068)) ([3d49d6f](https://github.com/aws/jsii/commit/3d49d6fd2dc64db45aa3f1164bb976c8cfe75175)), closes [#3465](https://github.com/aws/jsii/issues/3465)
12+
13+
14+
### Bug Fixes
15+
16+
* **pacmak:** go docs overview displays repeating description ([#4081](https://github.com/aws/jsii/issues/4081)) ([4fd596a](https://github.com/aws/jsii/commit/4fd596a467cdb422ebea3fdf01d068bc360b3757)), closes [/github.com/aws/jsii/pull/3698/files#diff-0a99c713a1282d6efe349c932d74dbfbdf1d926834c46ebfb5d65daeb27073f3R263](https://github.com/aws//github.com/aws/jsii/pull/3698/files/issues/diff-0a99c713a1282d6efe349c932d74dbfbdf1d926834c46ebfb5d65daeb27073f3R263) [/github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/package.json#L4](https://github.com/aws//github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/package.json/issues/L4) [/github.com/aws/jsii/blob/main/packages/jsii-reflect/lib/assembly.ts#L46-L52](https://github.com/aws//github.com/aws/jsii/blob/main/packages/jsii-reflect/lib/assembly.ts/issues/L46-L52)
17+
* **rosetta:** flakey trim-cache test ([#4043](https://github.com/aws/jsii/issues/4043)) ([f70c0f7](https://github.com/aws/jsii/commit/f70c0f77069c8beb30010395cfd5817ac013feba))
18+
519
## [1.80.0](https://github.com/aws/jsii/compare/v1.79.0...v1.80.0) (2023-04-04)
620

721

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,19 @@ usual), but also in **Python**, **Java**, **C#** (and other languages from the _
2020

2121
Head over to our [documentation website](https://aws.github.io/jsii)!
2222

23+
The jsii toolchain is spread out on multiple repositories:
24+
- [aws/jsii-compiler](https://github.com/aws/jsii-compiler) is where the `jsii` compiler is maintained (except releases
25+
in the `1.x` line, which are maintained in this repository)
26+
- [aws/jsii-rosetta](https://github.com/aws/jsii-rosetta) is where the `jsii-rosetta` sample code transliteration tool
27+
is maintained (except releases in the `1.x` line, which are maintained in this repository)
28+
- [aws/jsii](https://github.com/aws/jsii) is where the rest of the toolchain is maintained, including:
29+
- `@jsii/spec`, the package that defines the *`.jsii` assembly* specification
30+
- `jsii-config`, an interactive tool to help configure your jsii package
31+
- `jsii-pacmak`, the bindings generator for jsii packages
32+
- `jsii-reflect`, a higher-level way to process *`.jsii` assemblies*
33+
- The jsii runtime libraries for the supported jsii target languages
34+
- `1.x` release lines of `jsii` and `jsii-rosetta`
35+
2336
# :book: Blog Posts
2437

2538
Here's a collection of blog posts (in chronological order) related to `jsii`:
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
# Maintenance Announcement: `jsii` & `jsii-rosetta` 1.x
2+
3+
**Announcement Date:** `2023-04-24`
4+
5+
We have recently released `jsii@5.0.0` and `jsii-rosetta@5.0.0`, built on the TypeScript `5.0.x` compiler, allowing
6+
package maintainers to migrate to a more modern TypeScript language version than 3.9 (which the `1.x` release line is
7+
built on). This change was designed in [RFC-374], and removes the need for developers to pin some of their dependencies
8+
to releases still compatible with TypeScript 3.9 without necessarily requiring their dependents to do the same at the
9+
same time. Upgrading your `jsii` and `jsii-rosetta` dependencies to `v5.0.x` is transparent to your users.
10+
11+
[RFC-374]: https://github.com/aws/aws-cdk-rfcs/blob/rmuller/jsii-version-unlock/text/0374-jsii-ts-version.md
12+
13+
Starting with the `5.0.x` release of `jsii` and `jsii-rosetta`, we are using a new versioning strategy for these two
14+
tools. Going forward we will closely follow new TypeScript compiler releases with new `jsii` and `jsii-rosetta` releases,
15+
enabling the entire jsii developer community to adopt new TypeScript syntax & benefit from bug fixes and
16+
performance enhancements brought into the TypeScript compiler, while retaining the ability control the timeline of these
17+
upgrades.
18+
19+
We believe the new versioning strategy will result in an improved developer experience for jsii library maintainers, and
20+
have decided to start the process of retiring the `1.x` release line. In accordance with our maintenance commitment for
21+
the `1.x` release line, the retirement timeline is the following:
22+
23+
* On `2023-04-24`, `jsii@1.x` and `jsii-rosetta@1.x` will enter the **Maintenance Announcement** stage. During this
24+
stage, they will continue to be actively maintained, including new features back-ported from the current release
25+
(`5.0.x` or later), bug fixes, and security updates.
26+
* On `2023-10-31` (six months later), the releases will move into the **Maintenance** stage. During this stage, they
27+
will continue receiving bug fixes and security updates, but will no longer receive new features.
28+
* On `2024-10-31` (one year later), the releases will finally reach **End-of-Support**, and will no longer receive any
29+
features, bug fixes, or security udpates.
30+
31+
Future `1.x` releases of `jsii` and `jsii-rosetta` will soon start displaying a warning when used, encouraging customers
32+
to migrate to the newer releases, which we believe will provide a better experience.
33+
34+
## Frequently Asked Questions
35+
36+
### How difficult is it to migrate from `1.x` to `5.0.x`?
37+
38+
The TypeScript language incurred a number of breaking changes between 3.9 and 5.0, including the following:
39+
40+
* Catch bindings are typed as `unknown` by default instead of being implicitly `any`
41+
* You may need to explicitly type catch bindings as any: `catch (e)``catch (e: any)`
42+
* It is no longer allowed to declare abstract methods `async`
43+
* Simply remove the `async` keyword from `abstract` method declarations
44+
* Additional breaking changes may affect your code, and you can read more about these on the TypeScript release notes
45+
for the respective versions:
46+
* [TypeScript 4.0 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-0/)
47+
* [TypeScript 4.1 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/)
48+
* [TypeScript 4.2 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-2/)
49+
* [TypeScript 4.3 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-3/)
50+
* [TypeScript 4.4 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-4/)
51+
* [TypeScript 4.5 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-5/)
52+
* [TypeScript 4.6 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-6/)
53+
* [TypeScript 4.7 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-7/)
54+
* [TypeScript 4.8 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/)
55+
* [TypeScript 4.9 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/)
56+
* [TypeScript 5.0 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/)
57+
58+
In addition to these, two import changes affect jsii exported APIs specifically:
59+
60+
* The `1.x` release line silently ignores index signatures (these are hence unavailable in other languages), and the
61+
`5.0.x` release starts explicitly rejecting these
62+
* You can explicitly opt into the `1.x` behavior by adding the `@jsii ignore` doc-tag:
63+
```ts hl_lines="5"
64+
export interface Example {
65+
/**
66+
* This API is not visible in non-TS/JS languages.
67+
*
68+
* @jsii ignore
69+
*/
70+
readonly [key: string]: any;
71+
}
72+
```
73+
74+
* The `1.x` release line incorrectly interprets tuple types as synonyms to `object` (resulting in those APIs often being
75+
unusable from other languages), and the `5.0.x` release starts explicitly rejecting these
76+
* These APIs need to be replaced. You can use the `@jsii ignore` doc-tag to explicitly opt these APIs out of the
77+
multi-language supported API, and provide an alternate API:
78+
```ts hl_lines="3-4 8"
79+
export class Example {
80+
/**
81+
* @jsii ignore
82+
* @deprecated Prefer using `newMethod` instead.
83+
*/
84+
public method(): [string, number] { /* ... */ }
85+
86+
public newMethod(): StringAndNumber { /* ... */ }
87+
}
88+
89+
export interface StringAndNumber {
90+
readonly stringValue: string;
91+
readonly numberValue: number;
92+
}
93+
```
94+
95+
### What happens with other packages of the jsii toolchain (`jsii-pacmak`, `jsii-config`, etc...)?
96+
97+
The new versioning strategy only affects the `jsii` and `jsii-rosetta` packages. All other parts of the jsii toolchain
98+
will continue to be released under the `1.x` release line for the foreseeable future. The compilation artifacts produced
99+
by `jsii@5.0.0` and newer remain compatible with jsii tools from the `1.x` toolchain, so developers do not have to coordinate
100+
upgrades with their dependents and dependencies.
101+
102+
### If I upgrade my package to `jsii@5.0.0`, are my dependents required to do the same?
103+
104+
You can decide to upgrade your `jsii` compiler as well as `jsii-rosetta` independently from your dependencies and
105+
dependents. Output artifacts are compatible across all tool releases, including the `1.x` line, at least until they
106+
reach *End-of-Support*.
107+
108+
### Can my app have dependencies built by different `jsii` release lines?
109+
110+
The `jsii` compiler and `jsii-rosetta` versions used to build a library has no material impact on the runtime artifacts.
111+
The underlying runtime platform remains unchanged, and developers do not need to worry about which version of the
112+
compiler was used to produce their dependencies.
113+
114+
### How often will new `jsii` & `jsii-rosetta` release lines be started?
115+
116+
New releases will closely follow those of the TypeScript compiler, which are created approximately once per quarter.
117+
While we encourage customers to migrate to the latest release line as quickly as possible, the updated _Support &
118+
Maintenance Policy_ for these tools guarantees a minimum of six calendar months of bug fixes and security updates for
119+
non-current release lines, so that users can migrate on their own schedule.
120+
121+
### What is the support policy for the new `5.0.x` and newer releases?
122+
123+
The applicable maintenance and support policy is documented in the `SUPPORT.md` file of the
124+
[`aws/jsii-compiler`][compiler-support] and [`aws/jsii-rosetta`][rosetta-support] repositories. The main aspects of the
125+
new support policy are:
126+
127+
* Only the latest release line is deemed **Current**, and receives new features, bug fixes, and security updates;
128+
* Once a release stops being **Current**, it moves into **Maintenance**, where it continues receiving bug fixes and
129+
security updates, but no new features will be added;
130+
* After six (6) months in **Maintenance**, a release line moves to **End-of-Support**, and is no longer maintained.
131+
132+
[compiler-support]: https://github.com/aws/jsii-compiler/blob/v5.0.0/SUPPORT.md
133+
[rosetta-support]: https://github.com/aws/jsii-rosetta/blob/v5.0.0/SUPPORT.md
134+
135+
### What happens if I continue using releases after they reach End-of-Support?
136+
137+
Once End-of-Support is declared for the releases, we will no longer be able to provide support, bug fixes, or security
138+
updates for these releases. You may elect to continue to use them at your discretion (published releases will remain
139+
available to download from the [npmjs.com](http://npmjs.com/) package registry indefinitely). You should be aware that,
140+
although there is no plan to introduce non-backwards compatible features at this stage, it is possible that some of your
141+
librarys dependencies may stop being compatible with `1.x` releases of the compiler in the future, and your librarys
142+
dependents may at some point no longer be able to consume `1.x` compiler output artifacts.

gh-pages/content/overview/toolchain.md

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,43 @@
55
!!! info
66
We are considering creating an "umbrella entrypoint" to make it easier to consume.
77

8-
| Name | Stability | Description |
9-
| -------------- | ------------ | --------------------------------------------------------------------- |
10-
| [jsii] | Stable | Compiles TypeScript to jsii module |
11-
| [jsii-pacmak] | Stable | Creates ready-to-publish language-specific packages from jsii modules |
12-
| [jsii-reflect] | Stable | Strong-typed reflection library for jsii type systems |
13-
| [jsii-diff] | Stable | API backwards compatibility checker |
14-
| [jsii-rosetta] | Experimental | Transpile code snippets (in docs) from TypeScript to jsii languages |
15-
| [jsii-config] | Experimental | Interactive tool for generating jsii configuration |
16-
| [jsii-release] | Community | Publishes jsii modules to all supported package managers |
17-
| [jsii-srcmak] | Community | Generates relocatable source code in jsii languages from typescript |
18-
| [jsii-docgen] | Community | Generates markdown API documentation for jsii modules |
8+
| Name | Release | Stability | Description |
9+
| --------------- | ------- | -------------- | --------------------------------------------------------------------- |
10+
| [jsii1] | `1.x` | [Maintenance] | Compiles TypeScript to jsii module (TypeScript 3.9 Syntax) |
11+
| [jsii] | `5.0.x` | GA | Compiles TypeScript to jsii module (TypeScript 5.0 Syntax) |
12+
| [jsii-pacmak] | `1.x` | GA | Creates ready-to-publish language-specific packages from jsii modules |
13+
| [jsii-reflect] | `1.x` | GA | Strong-typed reflection library for jsii type systems |
14+
| [jsii-diff] | `1.x` | GA | API backwards compatibility checker |
15+
| [jsii-rosetta1] | `1.x` | [Maintenance] | Transpile code snippets (in docs) from TypeScript to jsii languages |
16+
| [jsii-rosetta] | `5.0.x` | Experimental | Transpile code snippets (in docs) from TypeScript to jsii languages |
17+
| [jsii-config] | `1.x` | Experimental | Interactive tool for generating jsii configuration |
18+
| [jsii-release] | `1.x` | Community | Publishes jsii modules to all supported package managers |
19+
| [jsii-srcmak] | `1.x` | Community | Generates relocatable source code in jsii languages from typescript |
20+
| [jsii-docgen] | `1.x` | Community | Generates markdown API documentation for jsii modules |
1921

2022
??? question "Stability Definitions"
21-
- **Stable**: Projects that comply with the [Semantic Versioning][semver] specification, and will hence not change
22-
behavior or receive other breaking changes across minor and patch version bumps.
23+
- **GA**: Projects that are deemed *Generally Available* and for which customers can expect full support, including
24+
new features, bug fixes, and security updates.
2325
- **Experimental**: Projects that are under active development and may change behavior or receive other breaking
2426
changes across minor releases.
2527
- **Community**: a community-maintained project, not officially supported by the *jsii core team*.
28+
- **[Maintenance]**: Project releases under *Maintenance* continue to receive full support, including new features,
29+
bug fixes, and security updates for a limited time before moving to *Support*.
30+
- **Support**: Deprecated projects no longer receive new features, and are only updated with severe bug fixes and
31+
security updates; until they are declared End-of-Support.
2632

2733
[semver]: https://semver.org/spec/v2.0.0.html
2834

2935

30-
[jsii]: https://github.com/aws/jsii/tree/main/packages/jsii
36+
[Maintenance]: ../compiler-and-rosetta-maintenance.md
37+
[jsii1]: https://github.com/aws/jsii/tree/main/packages/jsii
38+
[jsii]: https://github.com/aws/jsii-compiler#readme
3139
[jsii-pacmak]: https://github.com/aws/jsii/tree/main/packages/jsii-pacmak
3240
[jsii-reflect]: https://github.com/aws/jsii/tree/main/packages/jsii-reflect
3341
[jsii-config]: https://github.com/aws/jsii/tree/main/packages/jsii-config
3442
[jsii-diff]: https://github.com/aws/jsii/tree/main/packages/jsii-diff
35-
[jsii-rosetta]: https://github.com/aws/jsii/tree/main/packages/jsii-rosetta
43+
[jsii-rosetta1]: https://github.com/aws/jsii/tree/main/packages/jsii-rosetta
44+
[jsii-rosetta]: https://github.com/aws/jsii-rosetta#readme
3645
[jsii-release]: https://github.com/eladb/jsii-release
3746
[jsii-srcmak]: https://github.com/eladb/jsii-srcmak
3847
[jsii-docgen]: https://github.com/eladb/jsii-docgen

gh-pages/mkdocs.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ nav:
1818
- overview/features.md
1919
- overview/toolchain.md
2020
- overview/runtime-architecture.md
21+
- Maintenance Announcements:
22+
- jsii@v1.x & jsii-rosetta@v1.x: compiler-and-rosetta-maintenance.md
2123
- ...
2224

2325
extra:

gh-pages/requirements-dev.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
mkdocs~=1.4.2
2-
mkdocs-awesome-pages-plugin~=2.8.0
3-
mkdocs-material~=9.1.5
2+
mkdocs-awesome-pages-plugin~=2.9.0
3+
mkdocs-material~=9.1.8
44
mkdocs-git-revision-date-plugin~=0.3.2

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@
1010
"rejectCycles": true
1111
}
1212
},
13-
"version": "1.80.0"
13+
"version": "1.81.0"
1414
}

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616
},
1717
"devDependencies": {
1818
"@jest/types": "^28.1.3",
19-
"@types/jest": "^29.5.0",
19+
"@types/jest": "^29.5.1",
2020
"@types/node": "^14.18.42",
21-
"@typescript-eslint/eslint-plugin": "^5.57.0",
22-
"@typescript-eslint/parser": "^5.57.0",
21+
"@typescript-eslint/eslint-plugin": "^5.59.0",
22+
"@typescript-eslint/parser": "^5.59.0",
2323
"all-contributors-cli": "^6.24.0",
24-
"eslint": "^8.37.0",
24+
"eslint": "^8.38.0",
2525
"eslint-config-prettier": "^8.8.0",
2626
"eslint-import-resolver-node": "^0.3.7",
27-
"eslint-import-resolver-typescript": "^3.5.3",
27+
"eslint-import-resolver-typescript": "^3.5.5",
2828
"eslint-plugin-import": "2.26.0",
2929
"eslint-plugin-prettier": "^4.2.1",
3030
"jest": "^29.5.0",

0 commit comments

Comments
 (0)