Releases: bustoutsolutions/siesta
In this world turned upside down, at least four little things just got better
Fixes
Resource.withParam(…)
no longer strips existing parameters whose value is blank. Thanks to @ligal for catching this one. (#222→#223)RemoteImageView.placeholderImage
was incorrectly marked as an@IBOutlet
, which served no useful purpose. It is now correctly marked as@IBInspectable
, which makes it possible to choose a placeholder image from the storyboard editor. Thanks to @aoge123 for pointing this out. (#220→#224)- Configuration patterns now correctly match
:
as part of a URL path segment, per the HTTP spec. Thanks to @akaralar for discovering this one. (#212→#221) - Assorted small typos fixed in the docs. Thanks, @brucer42. (#218)
Breaking Changes
None.
Special Exciting Bonus Reminder
A preview of Swift 4 support is available on the swift-4
branch. Please kick the tires and report any issues!
By popular demand
Enhancements
- Added support for watchOS and tvOS. Thanks, @victorcotap! (#187)
- Configurable request mutations allow headers that are computed from the request body, or otherwise change with every request. Thanks, @SilverTab, for the use case. (#209, #206)
- You can now manually trigger Siesta’s unused resource cleanup. Thanks, @jordanpwood, for the use case. (#179, #193)
- Siesta now supports HEAD and OPTIONS requests. (#200, #208)
Fixes
- SiestaUI and Alamofire submodules no longer generate spurious compiler warnings when built with CocoaPods. (#195)
- The README’s table of contents suffered from a Banner-Blindness-like invisibility. It now says “Table of Contents.” I mention this in the release notes only so I can publicly thank @zadr for pointing it out.
Breaking Changes
None.
Special Exciting Bonus
A preview of Swift 4 support is available on the swift-4
branch. Kick the tires! Check out the example project on that branch for an example of using Swift 4’s JSON coding with Siesta.
The word is “deprecated,” not “depreciated”
Fixes
- Swift 3.1 deprecations and warnings now fixed (#188)
No, these post-1.0 version numbers are not actually all in binary; it just looks that way
Enhancements
RemoteImageView
now has a customizable per-view transform. Thanks @Alex293! (#131, #158)ResourceStatusOverlay
is now accessible from the outside to allow translation & customization. Thanks again, @Alex293. (#155, #158)- Siesta is now labeled “app extension safe.” Thanks, @leoMehlig! (#162)
Fixes
- Workaround for a bug in Alamofire that could cause duplicate
Alamofire.DidResume
notifications. Thanks to @piv199 for tracking down this deeply buried one. (#163, #167) - Fixed a bug that would cause
ResourceStatusOverlay
never to update when attached to a resource via Objective-C. (#173) - Siesta’s podspec now properly declares its dependency on Alamofire ≥ 4.1, not just 4.0.
Breaking Changes
None.
Microtweaklet
Sound the trumpets! It’s here!
This is the official 1.0 release of Siesta.
Please spread the word. You shares, stars, endorsements, and suggestions help us make Siesta better.
Please let us know what you’re building. Hearing how Siesta is helping software teams succeed makes all the hard work worth it.
Migrating to 1.0
This release removes everything that was deprecated before 1.0.
If you hit compile errors when you upgrade to this release, trying using the pre-1.0-deprecations
tag first. That release will give you warnings and suggested renames that will help you migrate to 1.0.0.
Enhancements
ResourceStatusOverlay
now follows Swift 3 API conventions. (#143, #145)- Modest enhancements and refinements to the example project (#144)
This release candidate wants your vote
Enhancements
- New
SiestaUI
helper lets resources automatically control the iOS network activity indicator in the status bar. Thanks to @Reedyuk for seeing this one through! (#132) - Miscellaneous internal tightening and cleanup. Yes, this release actually has less code than the previous one. (#125, #135, #139, #140)
Fixes
- Calling
repeated()
on a chained request now repeats the original request, not just the remainder of the chain. (#134) - Fixed numerous outdated examples and links in the docs. (#127, #136)
Breaking Changes
Chasing down those corner cases
Fixes
-
Workaround for Swift bug that sometimes caused self-owned observers to be prematurely deallocated. The workaround comes with a performance hit. Thanks to @kl for discovering this & vetting the fix. (#120, #121)
Please vote for the underlying Swift bug if you want that performance back!
-
Siesta would sometimes not call
ResourceObserver.stoppedObserving(resource:)
when it should have. It now consistently calls it except in situations where it would be impossible to do so. (#122)
Faster, clearer, happier
Enhancements
- Substantial performance improvements. (#117 ← includes timings)
- Log output is now vastly more readable: better formatted, less redundant, and more focused on information that helps debug the most common problems. (#116)
- Siesta now defers resource configuration & cache read until you actually use a resource’s data or attach an observer. This reduces overhead & log clutter when traversing resources using
child(…)
,withParam(…)
, etc. (#115) - Resources created with nil or malformed URLs no longer generate confusing errors from the network layer; instead, a new
InvalidURL
error cause makes them easy to spot & diagnose. Code such asRemoteImageView
that intentionally creates nil URL resources no longer generates mounds of confusing output.
Fixes
- The podspec incorrectly reported that Siesta requires iOS 9. This is now corrected: iOS 8 normally, iOS 9 only if you are using Alamofire. Thanks to @jordanpwood for spotting this. (#111)
- Fixed: Objective-C observers prematurely deallocated if they are not retained outside of Siesta. (#118)
- Fixed: Objective-C observers to sometimes do not receive
stoppedObservingResource:
(#118)
Breaking Changes
- The
isEquivalentTo(…)
method ofResourceObserver
is superseded byobserverIdentity
. This is a little-known feature, but search your code for it! It is no longer part of the protocol, and you will not receive a deprecation warning if you are attempting to implement it. Instead, you’ll just start getting duplicate observers. - As a part of the optimizations in #117, the timing of calls to
stoppedObserving(…)
has changed. While the order of events reported by a Resource is still consistent — observer add & remove notifications still come in the order the observers were actually added & removed — some of those notifications are now deferred.
Swift 3
Enhancements
This release moves Siesta to Swift 3. The future is here! The flying cars are no doubt imminent.
If your project needs to stick with Swift 2, use the swift-2.2
or swift-2.3
branch.
Breaking Changes
Siesta’s API has been renamed to adhere to the new Swift 3 naming guidelines (mostly, moderated by taste). You’re mostly likely to notice the lowercase enums and slight changes to parameter labels.
Siesta now also takes advantage of new language improvements. Gone is $0.config
, which was a hack to work around shortcomings in Swift 2’s inout
inference. You can now just use $0
in your configuration closures. Hooray!
For most of the renamings, you’ll see nice friendly deprecations with fixits — or at least helpful error messages. However, there are a few things the compiler will not help you with that you need to be careful of:
-
Three methods of
ResourceObserver
with default implementations have new names to fit the new naming guidelines. Because they have default implementations, the Swift compiler will not give you any warning if you try to implement them using the old names; they will simply never be called.You must search your code yourself for these old methods:
func resourceRequestProgress(resource: Resource, progress: Double) func stoppedObservingResource(resource: Resource) func isEquivalentToObserver(other: ResourceObserver) -> Bool
…and replace them with these new ones:
func resourceRequestProgress(for resource: Resource, progress: Double) func stoppedObserving(resource: Resource) func isEquivalentTo(observer other: ResourceObserver) -> Bool
-
To prevent a name clash, Siesta’s
Error
is now calledRequestError
. Most Siesta apps never reference this type directly. However, if yours does, it will now point at Swift’s internalError
instead of Siesta’s, which will cause confusing error messages. -
Entity
is now a generic type,Entity<T>
. You can safely changeEntity
toEntity<Any>
to capture the old behavior. That includes yourEntityCache
implementation.
Known Issues
- You will get compiler warnings about how “Expression of type 'Request?' is unused.” This is due to a bug in Swift which is apparently already fixed, but the fix is not yet in an official release. If the warnings bother you, you can eliminate them be prefixing the offending statements with
_ =
; otherwise just wait for the next Swift release.
Since this is the first release for Swift 3, it’s likely that there will be some bumps in the road. Please file issues and send pull requests for any breakages, broken doc links, or outdated sample code you find. And if things are working for you, please tweet to us at @siestaframework
and let us know the nifty things you’re building!