Skip to content

Bump version for hotfix: tcgc@0.69.1#4670

Merged
tadelesh merged 3 commits into
release/june-2026from
publish/hotfix/tcgc-june-2026
Jun 22, 2026
Merged

Bump version for hotfix: tcgc@0.69.1#4670
tadelesh merged 3 commits into
release/june-2026from
publish/hotfix/tcgc-june-2026

Conversation

@tadelesh

Copy link
Copy Markdown
Member

Hotfix patch release for @azure-tools/typespec-client-generator-core0.69.1.

Cherry-picks #4650 (per-service api-version map for multi-service packages) onto release/june-2026 and bumps the patch version.

Changes

Notes

  • Targets release/june-2026 (not main)
  • Only @azure-tools/typespec-client-generator-core is affected
  • core submodule pointer unchanged

tadelesh and others added 2 commits June 22, 2026 11:46
… map for multi-service packages (#4650)

Fixes #4009

## Summary
Extends the TCGC `api-version` emitter option to accept either a
`string` or a `Record<string, string>` (a map from each service
namespace's full name to its desired version), enabling per-service
version selection for multi-service packages.

## Behavior
- **`string`** (e.g. `"2024-10-01"`): applies to single-service packages
only. Ignored for multi-service.
- **`"latest"`**: global keyword, applies regardless of service count.
- **`"all"`**: single-service only. **Multi-service packages do not
support `all`** (in either string or map form) — it is ignored and each
service falls back to its latest version.
- **`Record<string, string>`** (e.g. `{ "ServiceA": "av1", "ServiceB":
"bv2" }`): maps each service namespace full name to a version. Services
not listed default to their latest version.

## Implementation notes
- Added `resolveApiVersionForService` as the single source of truth for
resolving the version that applies to a given service.
- `getServiceNamespaces` is memoized on the context
(`__serviceNamespaces`) since it is consulted on the per-type hot path
via `getAvailableApiVersions`.
- `handleVersioningMutationForGlobalNamespace` now mutates each service
independently using its resolved version.

## Validation
- Added multi-service map tests (per-service versions, fallback to
latest, `all` ignored).
- Full TCGC suite: 1330 passed / 2 skipped. TypeScript build and ESLint
clean.

---------

Co-authored-by: tadelesh <chenjieshi@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: iscai-msft <isabellavcai@gmail.com>
@microsoft-github-policy-service microsoft-github-policy-service Bot added lib:tcgc Issues for @azure-tools/typespec-client-generator-core library meta:website TypeSpec.io updates labels Jun 22, 2026
@pkg-pr-new

pkg-pr-new Bot commented Jun 22, 2026

Copy link
Copy Markdown

Open in StackBlitz

@azure-tools/typespec-autorest

npm i https://pkg.pr.new/@azure-tools/typespec-autorest@4670

@azure-tools/typespec-azure-resource-manager

npm i https://pkg.pr.new/@azure-tools/typespec-azure-resource-manager@4670

@azure-tools/typespec-azure-rulesets

npm i https://pkg.pr.new/@azure-tools/typespec-azure-rulesets@4670

@azure-tools/typespec-client-generator-core

npm i https://pkg.pr.new/@azure-tools/typespec-client-generator-core@4670

@azure-tools/typespec-ts

npm i https://pkg.pr.new/@azure-tools/typespec-ts@4670

commit: c6b3f82

@github-actions

Copy link
Copy Markdown
Contributor

⚡ Benchmark Results

⚠️ 20 metric(s) regressed above the +5% threshold:

Metric Baseline Current Change
total 🔴 599.1ms 🔴 716.5ms +19.6% 🔴
loader 🟢 148.9ms 🟡 213.4ms +43.3% 🔴
resolver 🟢 16.2ms 🟢 19.6ms +20.9% 🔴
checker 🟢 186.4ms 🟡 203.5ms +9.2% 🔴
validation 🟢 41.0ms 🟢 44.1ms +7.7% 🔴
 ↳ validation/@typespec/versioning 🔴 27.1ms 🔴 28.7ms +5.7% 🔴
linter 🟢 132.1ms 🟢 151.7ms +14.9% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🟡 18.0ms 🔴 22.1ms +22.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🟡 19.8ms 🔴 23.0ms +16.0% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 24.5ms 🔴 27.8ms +13.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 22.5ms 🔴 24.5ms +9.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 4.4ms 🟢 5.4ms +23.5% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟡 13.0ms 🟡 15.1ms +16.4% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🔴 20.0ms 🔴 23.8ms +18.7% 🔴
emit 🔴 5.62s 🔴 6.18s +10.0% 🔴
 ↳ emit/@azure-tools/typespec-autorest 🟢 158.1ms 🟡 210.8ms +33.3% 🔴
 ↳ emit/@azure-tools/typespec-python 🔴 4.12s 🔴 4.55s +10.6% 🔴
 ↳ emit/@typespec/openapi3 🟢 143.3ms 🟢 161.6ms +12.8% 🔴
 ↳ emit/@typespec/openapi3/compute 🟢 124.7ms 🟢 142.2ms +14.0% 🔴
 ↳ emit/@typespec/openapi3/write 🟢 17.8ms 🟢 19.9ms +12.3% 🔴
Full details – comparing 9ca3b53 vs baseline d4128ef
Metric Baseline Current Change
total 🔴 599.1ms 🔴 716.5ms +19.6% 🔴
loader 🟢 148.9ms 🟡 213.4ms +43.3% 🔴
resolver 🟢 16.2ms 🟢 19.6ms +20.9% 🔴
checker 🟢 186.4ms 🟡 203.5ms +9.2% 🔴
validation 🟢 41.0ms 🟢 44.1ms +7.7% 🔴
 ↳ validation/@azure-tools/typespec-azure-core 🟢 6.4ms 🟢 7.2ms +13.2%
 ↳ validation/@typespec/http 🟢 5.5ms 🟢 5.9ms +6.5%
 ↳ validation/@typespec/rest 🟢 0.5ms 🟢 0.6ms +13.4%
 ↳ validation/@typespec/versioning 🔴 27.1ms 🔴 28.7ms +5.7% 🔴
 ↳ validation/compiler 🟢 1.3ms 🟢 1.5ms +9.3%
linter 🟢 132.1ms 🟢 151.7ms +14.9% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/auth-required 🟢 0.0ms 🟢 0.0ms +6.4%
 ↳ linter/@azure-tools/typespec-azure-core/bad-record-type 🟢 0.2ms 🟢 0.2ms -3.4%
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 5.6ms 🟢 6.3ms +13.1%
 ↳ linter/@azure-tools/typespec-azure-core/casing-style 🟢 0.6ms 🟢 0.7ms +11.1%
 ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance 🟢 0.1ms 🟢 0.1ms +23.8%
 ↳ linter/@azure-tools/typespec-azure-core/documentation-required 🟢 0.8ms 🟢 0.9ms +16.3%
 ↳ linter/@azure-tools/typespec-azure-core/friendly-name 🟢 0.7ms 🟢 0.6ms -5.3%
 ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required 🟢 0.2ms 🟢 0.2ms +9.6%
 ↳ linter/@azure-tools/typespec-azure-core/known-encoding 🟢 0.3ms 🟢 0.3ms +10.3%
 ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required 🟢 0.3ms 🟢 0.3ms +15.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch 🟢 0.2ms 🟢 0.3ms +15.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union 🟢 0.3ms 🟢 0.3ms +5.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-enum 🟢 0.0ms 🟢 0.0ms +17.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes 🟢 0.1ms 🟢 0.1ms +1.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops 🟢 0.1ms 🟢 0.1ms +8.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-format 🟢 0.6ms 🟢 0.6ms -0.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric 🟢 0.4ms 🟢 0.4ms +24.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🟡 18.0ms 🔴 22.1ms +22.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage 🟢 1.1ms 🟢 1.4ms +23.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator 🟢 0.1ms 🟢 0.1ms +16.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-nullable 🟢 0.2ms 🟢 0.3ms +11.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime 🟢 1.2ms 🟢 1.3ms +0.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-openapi 🟢 2.0ms 🟢 2.3ms +13.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-private-usage 🟢 1.8ms 🟢 2.0ms +9.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🟡 19.8ms 🔴 23.0ms +16.0% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 24.5ms 🔴 27.8ms +13.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces 🟢 0.0ms 🟢 0.0ms -0.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 4.8ms 🟢 5.6ms +18.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params 🟢 0.2ms 🟢 0.2ms +24.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator 🟢 0.0ms 🟢 0.0ms +11.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-unknown 🟢 0.2ms 🟢 0.2ms -6.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union 🟢 0.4ms 🟢 0.4ms +3.2%
 ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version 🟢 0.2ms 🟢 0.2ms -2.0%
 ↳ linter/@azure-tools/typespec-azure-core/request-body-problem 🟢 0.3ms 🟢 0.3ms +9.0%
 ↳ linter/@azure-tools/typespec-azure-core/require-versioned 🟢 0.0ms 🟢 0.0ms -2.3%
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 22.5ms 🔴 24.5ms +9.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body 🟢 0.3ms 🟢 0.4ms +17.6%
 ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model 🟢 0.3ms 🟢 0.3ms +1.8%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 5.9ms 🟢 6.2ms +4.1%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations 🟢 0.1ms 🟢 0.1ms +18.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-child-resources 🟢 3.9ms 🟢 4.8ms +23.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-lifecycle-operations 🟢 0.0ms 🟢 0.0ms +9.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version 🟢 3.7ms 🟢 4.3ms +16.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key 🟢 0.1ms 🟢 0.1ms +29.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage 🟢 0.1ms 🟢 0.1ms +17.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes 🟢 1.0ms 🟢 1.2ms +14.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts 🟢 4.2ms 🟢 4.7ms +12.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record 🟢 0.4ms 🟢 0.4ms -0.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes 🟢 0.4ms 🟢 0.5ms +16.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes 🟢 0.0ms 🟢 0.0ms -5.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment 🟢 0.2ms 🟢 0.2ms +1.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property 🟢 0.1ms 🟢 0.1ms +20.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator 🟢 0.0ms 🟢 0.0ms +1.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb 🟢 0.1ms 🟢 0.1ms -0.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property 🟢 0.1ms 🟢 0.1ms +10.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format 🟢 0.0ms 🟢 0.0ms -1.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars 🟢 0.2ms 🟢 0.3ms +15.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern 🟢 0.0ms 🟢 0.0ms -10.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation 🟢 0.2ms 🟢 0.2ms -1.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 4.4ms 🟢 5.4ms +23.5% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch 🟢 0.3ms 🟢 0.3ms +11.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars 🟢 0.2ms 🟢 0.2ms +1.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state 🟢 0.1ms 🟢 0.1ms +4.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels 🟢 0.1ms 🟢 0.1ms -4.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties 🟢 0.1ms 🟢 0.1ms +11.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation 🟢 0.0ms 🟢 0.0ms +2.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟡 13.0ms 🟡 15.1ms +16.4% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint 🟢 0.0ms 🟢 0.0ms +3.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers 🟢 0.3ms 🟢 0.3ms -10.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model 🟢 0.1ms 🟢 0.1ms +16.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-override-props 🟢 0.1ms 🟢 0.1ms -0.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation 🟢 0.2ms 🟢 0.2ms +20.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🔴 20.0ms 🔴 23.8ms +18.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope 🟢 0.1ms 🟢 0.2ms +7.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name 🟢 0.1ms 🟢 0.2ms +6.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop 🟢 2.2ms 🟢 2.3ms +5.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type 🟢 0.4ms 🟢 0.4ms +5.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression 🟢 0.0ms 🟢 0.0ms +2.4%
 ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict 🟢 1.1ms 🟢 1.1ms +6.8%
 ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix 🟢 0.2ms 🟢 0.2ms -0.8%
emit 🔴 5.62s 🔴 6.18s +10.0% 🔴
 ↳ emit/@azure-tools/typespec-autorest 🟢 158.1ms 🟡 210.8ms +33.3% 🔴
 ↳ emit/@azure-tools/typespec-python 🔴 4.12s 🔴 4.55s +10.6% 🔴
 ↳ emit/@typespec/http-client-js 🔴 1.12s 🔴 1.17s +4.4%
 ↳ emit/@typespec/openapi3 🟢 143.3ms 🟢 161.6ms +12.8% 🔴
 ↳ emit/@typespec/openapi3/compute 🟢 124.7ms 🟢 142.2ms +14.0% 🔴
 ↳ emit/@typespec/openapi3/write 🟢 17.8ms 🟢 19.9ms +12.3% 🔴

Averaged across 3 specs (azure-arm-resource-manager, azure-core-dataplane, azure-full).
Threshold: changes > ±5% are highlighted.
🟢 Fast · 🟡 Moderate (stages >200ms, rules >10ms) · 🔴 Slow (stages >400ms, rules >20ms)

@azure-sdk

azure-sdk commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

You can try these changes here

🛝 Playground 🌐 Website

@tadelesh tadelesh merged commit aa83552 into release/june-2026 Jun 22, 2026
27 checks passed
@tadelesh tadelesh deleted the publish/hotfix/tcgc-june-2026 branch June 22, 2026 04:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lib:tcgc Issues for @azure-tools/typespec-client-generator-core library meta:website TypeSpec.io updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants