[release/v7.6] Make some experimental features stable by TravisEz13 · Pull Request #26490 · PowerShell/PowerShell

Backport of #26348 to release/v7.6

Triggered by @TravisEz13 on behalf of @daxian-dbw

Original CL Label: CL-General

/cc @PowerShell/powershell-maintainers

Impact

REQUIRED: Choose either Tooling Impact or Customer Impact (or both). At least one checkbox must be selected.

Tooling Impact

  • Required tooling change
  • Optional tooling change (include reasoning)

Customer Impact

  • Customer reported
  • Found internally

This enables three experimental features by default in v7.6:

  • PSNativeWindowsTildeExpansion: Windows users get automatic tilde (~) expansion for home directory
  • PSRedirectToVariable: Users can redirect output to variables (e.g., command > $var)
  • PSSubsystemPluginModel: Get-PSSubsystem cmdlet becomes available without requiring experimental feature flag

These features were experimental and now become standard functionality, improving the user experience without requiring configuration.

Regression

REQUIRED: Check exactly one box.

  • Yes
  • No

This is not a regression.

Testing

Original PR included test cleanup to remove experimental feature checks. Backport verified by:

  1. Confirming all test modifications apply cleanly
  2. Verifying experimental feature entries are properly removed from ExperimentalFeature.cs
  3. Checking that Get-PSSubsystem cmdlet is correctly added to InitialSessionState (making PSSubsystemPluginModel stable)
  4. Ensuring experimental attributes are removed from affected cmdlets

Risk

REQUIRED: Check exactly one box.

  • High
  • Medium
  • Low

Medium risk: This stabilizes three experimental features (PSNativeWindowsTildeExpansion, PSRedirectToVariable, PSSubsystemPluginModel) that have been available and tested in previous releases. The changes affect core engine functionality but have been validated in the main branch. The features are well-tested and moving to stable status is appropriate for a release branch.

Merge Conflicts

The file src/System.Management.Automation/engine/ExperimentalFeature/ExperimentalFeature.cs had conflicts during cherry-pick.

Conflict: Release branch v7.6 contained experimental feature entries for PSNativeWindowsTildeExpansion and PSRedirectToVariable that were being removed by the PR to make them stable.

Resolution: Removed the two experimental feature entries from the engine features array, keeping only PSLoadAssemblyFromNativeCode, PSFeedbackProvider, PSSerializeJSONLongEnumAsNumber, and PSProfileDSCResource.

Context: The PR removes features from the experimental list because they are being stabilized (made available by default). PSSubsystemPluginModel was already absent from v7.6's experimental features list.