profile
viewpoint
Harlan Haskins harlanhaskins Cupertino, CA https://www.harlanhaskins.com @harlanhaskins on Twitter

apple/swift 54873

The Swift Programming Language

apple/swift-evolution 11802

This maintains proposals for changes and user-visible enhancements to the Swift Programming Language.

apple/swift-package-manager 8136

The Package Manager for the Swift Programming Language

apple/swift-corelibs-foundation 4108

The Foundation Project, providing core utilities, internationalization, and OS independence

apple/swift-corelibs-libdispatch 1962

The libdispatch Project, (a.k.a. Grand Central Dispatch), for concurrency on multicore hardware

apple/swift-corelibs-xctest 872

The XCTest Project, A Swift core library for providing unit test support

apple/swift-llbuild 822

A low-level build system, used by Xcode and the Swift Package Manager

apple/swift-lldb 646

This is the version of LLDB that supports the Swift programming language & REPL.

pull request commentapple/swift-driver

Propagate Experimental Cross Module Incremental Build Flag

@swift-ci test

CodaFi

comment created time in 38 minutes

PR opened apple/swift-driver

Propagate Experimental Cross Module Incremental Build Flag

Match the legacy driver and propagate this flag to the merge-modules job so embedded incremental information winds up in swift modules.


Cross Module Incremental Builds Tasks

  • [x] Teach the Driver to propagate the flag
  • [ ] Integrate swiftdeps from swift modules
  • [ ] Propagate bitstream writer infrastructure into Driver
  • [ ] Write out the module dependency graph
  • [ ] Integrate module dependency graph instead of swiftdeps for priors
+157 -30

0 comment

6 changed files

pr created time in 38 minutes

startedComputerScienceHouse/CSHPublicSite

started time in 6 hours

pull request commentapple/swift-driver

[NFC, Incremental] Use let's instead of var's for the ChangedInput struct.

@swift-ci please test

davidungar

comment created time in 8 hours

PR opened apple/swift-driver

Reviewers
[NFC, Incremental] Use let's instead of var's for the ChangedInput struct.

@CodaFi Introduced a nice new type, but doesn't need to be mutable, so use lets.

+3 -3

0 comment

1 changed file

pr created time in 8 hours

startedtwitter/TwitterTextEditor

started time in 11 hours

created tagapple/swift-driver

tagswift-5.4-DEVELOPMENT-SNAPSHOT-2021-01-23-a

Swift compiler driver reimplementation in Swift

created time in 12 hours

pull request commentapple/swift-driver

Rely on `libSwiftScan` for dependency scanning actions.

@swift-ci please test

artemcm

comment created time in 12 hours

startedKubeJS-Mods/KubeJS

started time in 17 hours

push eventapple/swift-driver

Robert Widmann

commit sha dc6a5c4e543c9b0ed79bc568b1c23003a7b62c57

[NFC] Convert a Tuple into a Formal Type of Changed Inputs

view details

Robert Widmann

commit sha 088f510925a9cefbba81fb2d11d03eb54f74c183

[Gardening] Document InputInfo

view details

Robert Widmann

commit sha 657b202917a3a5c6e5310f3f74ccebf073abd326

Add an Analog to Dictionary.subscript[_:default:] to Multidictionary

view details

Robert Widmann

commit sha 7c3af5d221ff9ccd41b4ec565def390ced9547ed

Untangle Use Lookup APIs as Explicit Sequences Performing side effects under Sequence.forEach-style APIs is generally bad practice as it makes mutating code harder to reason about due to the presence of captures. Use an explicit sequence instead.

view details

Robert Widmann

commit sha e83d5ed11f7fb4fccb1f329ecdf3b58f7dc0b113

Break Down Result of NodeFinder Sequences Enforce the invariant that nodes have valid swiftdeps entries upon construction of the sequence and simply yield the node back to the caller.

view details

Robert Widmann

commit sha f6a109bd81ab04c50ab01716afbe0e8f0dd415f1

[NFC] Break down a Karnaugh Map Behavior only differs here if we're asked to always compute changed inputs. Short-circuit there and simplify the `switch` to just the relevant data.

view details

Robert Widmann

commit sha 0393abb74d1091a4438c14aea1e0a3ef82514c20

Merge pull request #443 from CodaFi/youve-changed-man

view details

push time in a day

PR merged apple/swift-driver

[NFC] Simplify Parts of the Change Computation's Interface
  • Add a new type representing changed inputs
  • Break down the forEach-style APIs into explicit sequences and clean up their call sites.
  • Break down the karnaugh map in computeSpeculativeInputs
+159 -97

2 comments

7 changed files

CodaFi

pr closed time in a day

Pull request review commentapple/swift-driver

[NFC] Simplify Parts of the Change Computation's Interface

 extension ModuleDependencyGraph {     return Set(affectedNodes.compactMap {$0.swiftDeps})   } -  /*@_spi(Testing)*/ public func forEachUntracedSwiftDepsDirectlyDependent(-    on externalSwiftDeps: ExternalDependency,-    _ fn: (SwiftDeps) -> Void-  ) {+  /*@_spi(Testing)*/ public func untracedDependents(+    of externalSwiftDeps: ExternalDependency+  ) -> [ModuleDependencyGraph.Node] {     // These nodes will depend on the *interface* of the external Decl.     let key = DependencyKey(interfaceFor: externalSwiftDeps)     let node = Node(key: key, fingerprint: nil, swiftDeps: nil)-    nodeFinder.forEachUseInOrder(of: node) { use, useSwiftDeps in-      if isUntraced(use) {-        fn(useSwiftDeps)-      }-    }+    return nodeFinder+      .orderedUses(of: node)+      .filter({ use in isUntraced(use) })

Being traced is also an unlikely predicate for a given node among that set. I would expect we wouldn’t see much benefit from pruning the search space up front with that in mind, but performance is always something one wants numbers and not opinions for.

CodaFi

comment created time in a day

startedgalenguyer/rit-covid-dashboard

started time in a day

Pull request review commentapple/swift-driver

[NFC] Simplify Parts of the Change Computation's Interface

 extension ModuleDependencyGraph {     return Set(affectedNodes.compactMap {$0.swiftDeps})   } -  /*@_spi(Testing)*/ public func forEachUntracedSwiftDepsDirectlyDependent(-    on externalSwiftDeps: ExternalDependency,-    _ fn: (SwiftDeps) -> Void-  ) {+  /*@_spi(Testing)*/ public func untracedDependents(+    of externalSwiftDeps: ExternalDependency+  ) -> [ModuleDependencyGraph.Node] {     // These nodes will depend on the *interface* of the external Decl.     let key = DependencyKey(interfaceFor: externalSwiftDeps)     let node = Node(key: key, fingerprint: nil, swiftDeps: nil)-    nodeFinder.forEachUseInOrder(of: node) { use, useSwiftDeps in-      if isUntraced(use) {-        fn(useSwiftDeps)-      }-    }+    return nodeFinder+      .orderedUses(of: node)+      .filter({ use in isUntraced(use) })

Good question. In my experience, tracing sets for medium-sized projects are on the order of 10-20 nodes.

CodaFi

comment created time in a day

Pull request review commentapple/swift-driver

[NFC] Simplify Parts of the Change Computation's Interface

 extension ModuleDependencyGraph {     return Set(affectedNodes.compactMap {$0.swiftDeps})   } -  /*@_spi(Testing)*/ public func forEachUntracedSwiftDepsDirectlyDependent(-    on externalSwiftDeps: ExternalDependency,-    _ fn: (SwiftDeps) -> Void-  ) {+  /*@_spi(Testing)*/ public func untracedDependents(+    of externalSwiftDeps: ExternalDependency+  ) -> [ModuleDependencyGraph.Node] {     // These nodes will depend on the *interface* of the external Decl.     let key = DependencyKey(interfaceFor: externalSwiftDeps)     let node = Node(key: key, fingerprint: nil, swiftDeps: nil)-    nodeFinder.forEachUseInOrder(of: node) { use, useSwiftDeps in-      if isUntraced(use) {-        fn(useSwiftDeps)-      }-    }+    return nodeFinder+      .orderedUses(of: node)+      .filter({ use in isUntraced(use) })

Any significant benefit to reworking this to filter before the sort? Or does this not scale too large to really matter?

CodaFi

comment created time in a day

created repositoryLontronix/Personal-Website-V2

created time in a day

pull request commentapple/swift-driver

[NFC] Simplify Parts of the Change Computation's Interface

@swift-ci test

CodaFi

comment created time in a day

pull request commentapple/swift-driver

[NFC] Simplify Parts of the Change Computation's Interface

@swift-ci test

CodaFi

comment created time in a day

PR opened apple/swift-driver

[NFC] Simplify Parts of the Change Computation's Interface
  • Add a new type representing changed inputs
  • Break down the forEach-style APIs into explicit sequences and clean up their call sites.
+114 -69

0 comment

7 changed files

pr created time in a day

fork Merkie/Tutorial-Mod

Tutorial mods for Minecraft

fork in a day

fork faokryn/vrc8ball

Udon 8 ball pool game / physics engine

fork in 2 days

created tagapple/swift-driver

tagswift-DEVELOPMENT-SNAPSHOT-2021-01-23-a

Swift compiler driver reimplementation in Swift

created time in 2 days

startednikitavoloboev/my-mac-os

started time in 2 days

push eventapple/swift-driver

David Ungar

commit sha bfb9460d3d0743c68e927bce30ad32cf07c54b64

Move subtraction to outer function to cope with multiple input jobs.

view details

David Ungar

commit sha 595530fca6bb7cbf7c09f591e0610d9605aa2aec

Merge pull request #439 from davidungar/assert-fix [Incremental] Move subtraction to outer function to cope with multiple input jobs.

view details

push time in 2 days

PR merged apple/swift-driver

Reviewers
[Incremental] Move subtraction to outer function to cope with multiple input jobs.

Fix assertion failure by moving subtraction of already-compiled inputs to the calling function so that if job compiling x.swift requires y.swift be compiled, and job compiling y.swift requires x.swift be compiled, x.swift and y.swift are subtracted out from jobs needing to be compiled. The bug shows up when testing with -j1.

+2 -1

3 comments

2 changed files

davidungar

pr closed time in 2 days

pull request commentapple/swift-driver

[Incremental] Move subtraction to outer function to cope with multiple input jobs.

I'm going to go ahead and merge. There's an assertion there, although a test would be even better.

davidungar

comment created time in 2 days

push eventapple/swift-driver

Robert Widmann

commit sha 013815db0e202b3c530e5db9631b0576f1e59055

[NFC] Swap a Semaphore for Synchronous DispatchQueue Scrap the ad-hoc implementation of confinement queue concurrency for an explicit serial dispatch queue.

view details

Robert Widmann

commit sha 19f84a59c275199e407888c6b86c218f616ea4fe

Merge pull request #440 from CodaFi/the-confines-of-this-box [NFC] Swap a Semaphore for Synchronous DispatchQueue

view details

push time in 2 days

PR merged apple/swift-driver

[NFC] Swap a Semaphore for Synchronous DispatchQueue

Scrap the ad-hoc implementation of confinement queue concurrency for an explicit serial dispatch queue.

+6 -9

2 comments

1 changed file

CodaFi

pr closed time in 2 days

pull request commentapple/swift-driver

[NFC] Swap a Semaphore for Synchronous DispatchQueue

CodaFi

comment created time in 2 days

push eventapple/swift-driver

Robert Widmann

commit sha 653970ed38f9b82a3642b68bd265f72cecc166d9

[NFC] Sequester Incremental Build Reporting Into a Type Untangle the nest of callbacks into a single type.

view details

Robert Widmann

commit sha 721e8196d7da5f3047d7adacc3914b1b05115be9

Merge pull request #442 from CodaFi/report-rapport [NFC] Sequester Incremental Build Reporting Into a Type

view details

push time in 2 days

more