[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:
- Confirming all test modifications apply cleanly
- Verifying experimental feature entries are properly removed from ExperimentalFeature.cs
- Checking that Get-PSSubsystem cmdlet is correctly added to InitialSessionState (making PSSubsystemPluginModel stable)
- 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.