---
title: October 2022
---

# Release Notes October 2022 (2022-10-12)

This release contains **breaking changes**:

- **`Cadl`**: Cannot `extends` or `is` a model expression via alias
- **`Api`**: Removed `createProgram` and changed `compile` parameter order
- **`Cadl`** **Deprecation** `@service` decorator replacing `@serviceTitle` and `@serviceVersion`
- **`Cadl`** **`Api`**: Move `@discriminator` to compiler

## [Cadl] Cannot `extends` or `is` a model expression via alias [PR 1004](https://github.com/microsoft/cadl/pull/1004)

Using model expression for `is` or `extends` directly was already forbidden.

<!-- prettier-ignore -->
```cadl
model IsModelExpr is {bar: string} {}

model ExtendsModelExpr extends {bar: string} {}
```

The following workaround was however tolerated. This PR remove this functionality.

<!-- prettier-ignore -->
```cadl
alias ModExpr = {bar: string};
model IsModelExprWAlias is ModExpr {}

model ExtendsModelExprWAlias extends ModExpr {}
```

Use a named model instead of an alias.

## [API] Removed `createProgram` and changed `compile` parameter order

`createProgram` has been removed in favor of `compile`. The new compile has the same parameter as `createProgram`

```ts
// Before
createProgram(host, "main.cadl);

// After
compile(host, "main.cadl");
```

`compile` api was changed to match the same order as old `createProggram`

```ts
// Before
compile("main.cadl", host);

// After
compile(host, "main.cadl");
```

## [Cadl] Deprecation: @service decorator replacing `@serviceTitle` and `@serviceVersion`

- `@serviceTitle` has been deprecated
- `@serviceVersion` has been deprecated

```cadl
// Before
@serviceTitle("Pet Store")
@serviceVersion("v1")
namespace PetStore;

// After
@service({"Pet Store", version: "v1"})
namespace PetStore;
```

This allows to specify the service namespace without any title or version

```cadl
@service
namespace PetStore;
```

## [Cadl] [Api] Move `@discriminator` to compiler

The `@discriminator` has been moved to the compiler. This means that if you were using the fully qualified name to reference the decorator `@Cadl.Rest.disriminator` it should be changed to `@discriminator`

**No changes**

```cadl
using Cadl.Rest;

@disriminator("kind")
model Pet {}
```

**Before**

```cadl
@Cadl.Rest.disriminator("kind")
model Pet {}
```

**After**

```cadl
@disriminator("kind")
model Pet {}
```

### Change to api

the `getDiscriminator` accessor has also been removed into the compiler.

Before

```ts
import { getDiscriminator } from "@cadl-lang/rest";
```

After

```ts
import { getDiscriminator } from "@cadl-lang/compiler";
```
