Skip to content

Bump swift-subprocess to 1.0 - #936

Closed
rayman-zhao wants to merge 1 commit into
swiftlang:mainfrom
rayman-zhao:subprocess-1.0
Closed

rayman-zhao wants to merge 1 commit into
swiftlang:mainfrom
rayman-zhao:subprocess-1.0

Conversation

@rayman-zhao

Copy link
Copy Markdown
Contributor

Motivation

swift-java currently pins swift-subprocess to 0.4.0..<0.5.0, while Subprocess 1.0 has been released (shipping with Swift 6.4). The 0.4 pin makes it impossible to use swift-java in a package graph that also contains a package requiring swift-subprocess 1.0, since SwiftPM must pick a single version for the whole graph. Subprocess 1.0.0 also includes a PATH-resolution security fix for Executable.name(_:).

Changes

  • Package.swift: "0.4.0"..<"0.5.0" -> "1.0.0"..<"2.0.0" (the SubprocessFoundation trait is kept; it now provides .data(limit:))
  • JavaCallbacksBuildCommand.swift: FileDescriptorOutput.standardOutput/.standardError -> .currentStandardOutput/.currentStandardError (renamed in 0.5)
  • JavaDependencyResolver.swift, CompileJavaTool.swift: drop ?? "" fallbacks — StringOutput results are non-optional String since 1.0
  • StaticBuildConfigPluginExecutable.swift: replace the if let error = result.standardError optional binding with a plain non-optional check

Testing

Built on Windows (Swift 6.4.1, JDK 25): swift build --target swift-java, --target StaticBuildConfigPluginExecutable, and --target SwiftJavaToolLibTests all pass with swift-subprocess resolved at 1.0.2.

Update the swift-subprocess dependency from 0.4.x to 1.0 and adapt to
the API changes introduced along the way:

- FileDescriptorOutput.standardOutput/.standardError were renamed to
  .currentStandardOutput/.currentStandardError
- StringOutput's standardOutput/standardError are now non-optional
  String, dropping the '?? ""' fallbacks and the optional binding

Subprocess 1.0 ships with Swift 6.4 and includes a PATH-resolution
security fix for Executable.name(_:).
@rayman-zhao
rayman-zhao requested a review from ktoso as a code owner October 17, 2026 09:11
Comment thread Info.plist
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don’t think we need this?

Comment thread static-build-config.json
@@ -0,0 +1 @@
{"attributes":["propertyWrapper","resultBuilder","_opaqueReturnTypeOf","noDerivative","isolated","storageRestrictions","export","backDeployed","_local","exclusivity","inlinable","unchecked","dynamicCallable","inline","retroactive","transpose","available","_lifetime","objcMembers","globalActor","Sendable","_noMetadata","_addressable","concurrent","IBInspectable","nonobjc","_extern","NSManaged","IBAction","discardableResult","reparented","constInitialized","unsafe","abi","attached","IBSegueAction","UIApplicationMain","NSApplicationMain","frozen","lifetime","preconcurrency","IBDesignable","NSCopying","objc","IBOutlet","escaping","nonisolated","differentiable","const","reasync","main","nonexhaustive","dynamicMemberLookup","c","diagnose","requires_stored_property_inits","GKInspectable","warn_unqualified_access","autoclosure","_owned","usableFromInline","rethrows","convention","derivative"],"compilerVersion":{"components":[6,4,1]},"customConditions":[],"endianness":"little","features":["AsyncSequenceFailure","BuiltinStoreRaw","MarkerProtocol","InoutLifetimeDependence","BuiltinInterleave","NonexhaustiveAttribute","BuiltinBuildMainExecutor","BorrowInout","BuiltinContinuation","PrimaryAssociatedTypes2","GeneralizedIsSameMetaTypeBuiltin","ABIAttributeSE0479","ExtensionMacroAttr","TypedThrows","MoveOnly","EffectfulProp","SpecializeAttributeWithAvailability","CAttribute","BuiltinContinuationNonCopyableSuccess","BuiltinTaskCancellationShield","NewCxxMethodSafetyHeuristics","BuiltinCreateAsyncTaskInGroupWithExecutor","BuiltinAddTaskLocalValue","NonfrozenEnumExhaustivity","BodyMacros","AsyncAwait","NoAsyncAvailability","BuiltinUnprotectedAddressOf","BuiltinVectorsExternC","ExtensionMacros","BuiltinTaskGroupWithArgument","RawIdentifiers","IsolatedAny","ValueGenericsNameLookup","BuiltinCreateAsyncTaskOwnedTaskExecutor","RetroactiveAttribute","NonescapableAccessorOnTrivial","FreestandingExpressionMacros","MoveOnlyPartialConsumption","SendableCompletionHandlers","ObjCImplementation","BuiltinBuildComplexEqualityExecutor","BuiltinAddressOfRawLayout","MemorySafetyAttributes","NoncopyableGenerics2","ExpressionMacroDefaultArguments","Macros","NonescapableTypes","ParameterPacks","BuiltinAssumeAlignment","AttachedMacros","BorrowingSwitch","BuiltinHopToActor","ModuleSelector","Actors","BorrowingForLoop","FreestandingMacros","LayoutPrespecialization","AssociatedTypeAvailability","ImplicitSelfCapture","BuiltinCreateTaskGroupWithFlags","TildeSendable","ClosureLifetimes","AlwaysInheritActorContext","AsyncExecutionBehaviorAttributes","BuiltinUnprotectedStackAlloc","LifetimeDependenceMutableAccessors","IsolatedAny2","BuiltinBuildTaskExecutorRef","UnsafeInheritExecutor","BuiltinEmplaceTypedThrows","LexicalLifetimes","BuiltinExecutor","BuiltinConcurrencyStackNesting","ConformanceSuppression","BuiltinBuildExecutor","Sendable","BuiltinMarkDependence","NoncopyableGenerics","IsolatedConformances","BorrowAndMutateAccessors","BuiltinCreateAsyncTaskWithExecutor","InheritActorContext","BuiltinStackAlloc","InlineArrayTypeSugar","ValueGenerics","BuiltinCreateTask","BuiltinIntLiteralAccessors","BuiltinCreateAsyncDiscardingTaskInGroupWithExecutor","IsolatedDeinit","AssociatedTypeImplements","SendingArgsAndResults","BuiltinJob","BuiltinSelect","BitwiseCopyable","MoveOnlyResilientTypes","SuppressedAssociatedTypesWithDefaults","RethrowsProtocol","UnavailableFromAsync","ExcludePrivateFromMemberwiseInit","AddressOfProperty2","OptionalIsolatedParameters","InlineAlways","AnyAppleOSAvailability","BuiltinTaskRunInline","BuiltinCreateAsyncTaskInGroup","BitwiseCopyable2","SourceWarningControl","ConcurrentFunctions","BuiltinCreateAsyncDiscardingTaskInGroup","BorrowingSequence","GlobalActors","BuiltinCreateAsyncTaskName"],"languageMode":{"components":[5,10]},"targetArchitectures":["arm64"],"targetAtomicBitWidths":[128,64,32,16,8],"targetEnvironments":[],"targetOSs":["Linux"],"targetObjectFileFormats":["ELF"],"targetPointerAuthenticationSchemes":["_none"],"targetPointerBitWidth":64,"targetRuntimes":["_multithreaded","_Native"]} No newline at end of file

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don’t think we need this file either?

@rayman-zhao

Copy link
Copy Markdown
Contributor Author

Closing for now — I accidentally committed locally generated build artifacts (Info.plist, static-build-config.json, dummy.json). Will clean the branch up and resubmit. Thanks for the quick review!

@rayman-zhao

Copy link
Copy Markdown
Contributor Author

Reopened — the branch is cleaned up now and only contains the 5 intended source changes; the accidentally committed build artifacts are gone.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants