Timelane - the first two weeks!
It’s been two weeks since I released Timelane and I’m really humbled by the community’s super positive response.
Since much has happened since the launch, I’m writing this to give everyone a detailed update.
The current versions are as follows:
- TimelaneCombine 1.0.4
- RxTimelane 1.0.3
- TimelaneCore 1.0.3
I’ve merged 18 PRs (in the 14 days since launch!) on all Timelane repos and I pushed some changes myself too.
Here’s a summary of what’s new.
More platforms: tvOS, watchOS
You can now use Timelane to profile tvOS and watchOS projects:
- #4 Adding watchOS and tvOS Versions to match feature set
- #9 Carthage: Add macOS, tvOS and watchOS to shared Frameworks
Use Timelane in projects that support older platforms
This was an important point brought by the community and I wasn’t initially aware of it. (Full discussion)
You can now import Timelane in projects that support older platforms and cannot use signpost data to talk to instruments - the Timelane
class will be unavailable.
Of course you can still profile your project on a newer platform by either 1) upping your deployment target, or 2) using the lane()
operator inside an if #available(...)
.
In case your project already supports the minimum platform targets that provide signposting, there is no change for you.
CocoaPods and Carthage support alongside SPM
Yes!
CocoaPods
pod 'TimelaneCombine', '~> 1.0.4'
pod 'RxTimelane', '~> 1.0.3'
pod 'TimelaneCore', '~> 1.0.3'
Carthage
github "icanzilb/TimelaneCombine" "1.0.4"
github "icanzilb/RxTimelane" "1.0.3"
github "icanzilb/TimelaneCore" "1.0.3"
- #6 Add Carthage support
- #3 Add PodSpec file to enable Cocoapods Support
- #1 Add Carthage support for RxTimelane
- #2 adds cocoapods spec
- and more
New features!
Format the reported values
Available in TimelaneCombine and RxTimelane - the lane()
operator now accepts a closure to format the reported values.
You can, for example, format numbers:
myNumberPublisher
.lane("Numbers") { number in
return String(format: "%.2f", number)
}
Or for emitted arrays, log the count on the lane in Instruments:
myPhotosPublisher
.lane("Photos") { photos in
return "\(photos.count) photos"
}
Use a @PropertyWrapper to log in Timelane
Meet the easiest way to use TimelaneCombine. If you have a published property on your type like so:
@Published var timestamp: TimeInterval
Replace it with @PublishedOnLane()
to log its values in Timelane:
@PublishedOnLane("Timer") var timestamp: TimeInterval
Where to go from here?
Big thank you to everyone involved in these early developments! As always for more details go to http://timelane.tools.
Thank you and if you have any questions, feedback, or press inquiries do get in contact at https://twitter.com/icanzilb.
To learn about all Combine check Combine: Asynchronous programming with Swift - this is where you can see all updates, discuss in the website forums, and more.