Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update release notes for December release #2732

Merged
merged 1 commit into from
Dec 6, 2023
Merged
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
88 changes: 88 additions & 0 deletions docs/release-notes/release-2023-12-05.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
---
title: December 2023
---

# Release Notes December 2023 (2023-12-05)

:::danger
This release contains **breaking changes**
:::

## New Features

### `@typespec/compiler` New Features

- **New Language Feature** Added string template literal in typespec. Single and multi-line strings can be interpolated with `${` and `}`. Example `\\Doc for url ${url} is here: ${location}\\`
- [Emitter Framework]: `emitTypeReference` function takes an optional reference context that can be used to patch the context for the target.
- [Emitter Framework]: Added `absolute-path` as a known format for emitter options which will validate the value passed by the user resolve to an absolute path.
- [Emitter Framework]: Allow scalar and enum declarations to provide a reference context.
- [Emitter Framework]: Allow passing a custom context when calling `emitType`.
- Linter rules can now supply a full url to documentation.
- Upgrade formatter to `prettier` version 3.1.

### `@typespec/http` New Features

- Add diagnostic when a namespace exists with routes, but no namespace is marked with `@service`.

### `@typespec/json-schema` New Features

- Add support for simple literal default on model properties.
- Add support for `StringTemplate` literals.

### `@typespec/openapi3` New Features

- Now emits all properties of unreferenced schemas.
- Treat union variants as Discriminator.
- Emitter will now emit all properties of unreferenced schemas.

### `@typespec/playground` New features

- Add a format button to the playground command bar.
- Add a notification to the standalone playground when the playground has been saved.
- Enable changing the theme.
- Add resizable panes for the editor and output
- Add ability to pass a custom footer and use `Footer` and `FooterItem` component to build your own.
- Add `noopener noreferrer` to footer external link
- Move errors and warnings to a dedicated expandable banner at the bottom of the playground.
- **BREAKING CHANGE** Styles must be imported seperately with `import \"@typespec/playground/styles.css\";`
- Allow standalone playground to show a loading fallback.
- Upgrade swagger-ui component.

### `@typespec/rest` New Features

- Fix issue with `ResourceCreateModel` template collecting \"update\" properties instead of \"create\" properties.

## Bug Fixes

### `@typespec/compiler` Bug Fixes

- [Formatter]: Fix: Preserve parentheses in `valueof` expressions inside a union or array (e.g. `(value of strring) | Model`).
- Fix: Union variants are now assigned to the parent union.

### `@typespec/json-schema` Bug Fixes

- Fix: Enum with a value of `0` would have resulted in `type` of `string` and `number`.
- Fix: Scalar constraints combine with base scalar constraints.
- Fix `@maxValueExclusive` setting `minimumExclusive` instead of `maximumExclusive`

### `@typespec/openapi3` Bug Fixes

- Fix: Report diagnostic instead of throwing errors in the case of duplicate ids or unknown scalar.
- FIX: Handle `bytes` as a multipart part type correctly and produce `type: string, format: binary`

### `@typespec/playground` Bug Fixes

- Configure the program viewer to respect the color theme",

### `@typespec/versioning` Bug Fixes

- Fix crash in versioning library`.

## Breaking Changes

- **New Language Feature** string interpolation to strings in TypeSpec. Strings that use the sequence `${` are now expected to start a reference to an interpolated value. Strings that contain `${` and are not meant for interpolation must now be escaped with a `\`, like this: `\${`.

### Semantic Changes in OpenApi3 Output

- Previously, unreferenced `Model` types (types not used in any operation) were emitted using `read` visibility, meaning that properties that had only `create` or `update` visibility would not be included in the corresponding schema in the `@typespec/openapi3` emitter. In this release, all properties of unreferenced Model types will appear in the output.
- Previously, `bytes` types that appeared in a `multipart/form-data` request or response would be marked as a base64 encoded string. In this release, `multipart/form-data` `bytes` types appearing in parts with an `object` type will be treated as a base64-encoded string, while those in non-model parts will appear as raw binary data.
Loading