All Versions
14
Latest Version
Avg Release Cycle
160 days
Latest Release
2034 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v1.1.0 Changes
November 09, 2020๐ Changes
- Made Carlos less opinionated on which queue it shall run its operations.
- Wrap Carlos Future's in
Deferredto make sure that Carlos doesn't execute its operation unless there are subscribers.
-
v1.0.0 Changes
October 19, 20201.0.0
๐ฅ Breaking Changes
- ๐ Swift 5.3 and Xcode 12 support
- The codebase has been migrated from PiedPiper to Combine
- ๐ The minimum supported OS version set to Combine's minimum supported version: iOS 13, macOS 10.15, watchOS 6, tvOS 13.
- โ Removed
Dispatched.swiftandRequestCapperCache.swiftbecause the functionality they provided could be easily re-implemented using Combine operators.
๐ New Features
Carlosis now powered by Combine which means you can use awesome Combine provided operators on the Carlos cached values!
-
v0.10.1 Changes
September 22, 2020๐ Fixed
- ๐ Fixed an issue when app archive fails for the app which use Carlos due to PiedPiper being embedded #187
-
v0.10.0 Changes
July 09, 2020๐ฅ Breaking Changes
- Xcode 11.5+ required
๐ New Features
- ๐ฆ Swift Package Manager Support
-
v0.9.1 Changes
December 14, 2016Breaking changes
- ๐ Swift 3.0 support (for Swift 2.3 use specific commit
5d354c829d766568f164c386c59de21357b5ccffinstead) - ๐
batchGetAllhas been removed and replaced with a reifiedallBatch(see New features ) - ๐ All deprecated functions have been removed
- ๐ All custom operators have been removed in favor of their function counterparts
- ๐ macOS and tvOS support has been temporarily dropped and will be probably re-added in the future
setmethod onCacheLevelnow returns aFutureenabling error-handling and progress-tracking ofsetcalls.
๐ New Features
- It's now possible to lift a
CacheLevelinto one that operates on a sequence of keys and returns a sequence of values. You can useallBatchto create a concreteBatchAllCache. You can usegeton this cache if you want to pass a list of keys and get the success callback when all of them succeed and the failure callback as soon as one of them fails (old behavior ofbatchGetAll), or you can compose or transform anallBatchcache just like any anotherCacheLevel. Consult theREADME.mdfor an example.
- ๐ Swift 3.0 support (for Swift 2.3 use specific commit
-
v0.9 Changes
December 14, 2016๐ฅ Breaking changes
- ๐ Swift 3.0 support (for Swift 2.3 use specific commit
5d354c829d766568f164c386c59de21357b5ccffinstead) - ๐
batchGetAllhas been removed and replaced with a reifiedallBatch(see New features) - ๐ All deprecated functions have been removed
- ๐ All custom operators have been removed in favor of their function counterparts
- ๐ macOS and tvOS support has been temporarily dropped and will be probably re-added in the future
setmethod onCacheLevelnow returns aFutureenabling error-handling and progress-tracking ofsetcalls.
๐ New Features
- It's now possible to lift a
CacheLevelinto one that operates on a sequence of keys and returns a sequence of values. You can useallBatchto create a concreteBatchAllCache. You can usegeton this cache if you want to pass a list of keys and get the success callback when all of them succeed and the failure callback as soon as one of them fails (old behavior ofbatchGetAll), or you can compose or transform anallBatchcache just like any anotherCacheLevel. Consult theREADME.mdfor an example.
- ๐ Swift 3.0 support (for Swift 2.3 use specific commit
-
v0.8 Changes
May 16, 2016Breaking changes
- The codebase has been migrated to Swift 2.2
- ๐
Promisenow has only an emptyinit. If you used one of the convenienceinit(withvalue:, witherror:or withvalue:error:), they now moved toFuture.
๐ New features
- โ Adds
valueanderrorproperties toResult - โ Added a way to initialize
Futures through closures - It's now possible to
mapFutures through:- a simple transformation closure
- a closure that
throws
- It's now possible to
flatMapFutures through:- a closure that returns an
Optional - a closure that returns another
Future - a closure that returns a
Result
- a closure that returns an
- It's now possible to
filterFutures through:- a simple condition closure
- a closure that returns a
Future<Bool>
- It's now possible to
reduceaSequenceTypeofFutures into a newFuturethrough acombineclosure - It's now possible to
zipaFuturewith either anotherFutureor with aResult - โ Added
mergeto aSequenceTypeofFutures to collapse a list ofFutures into a single one - โ Added
traversetoSequenceTypeto generate a list ofFutures through a given closure andmergethem together - โ Added
recovertoFutureso that it's possible to provide a default value theFuturecan use instead of failing - It's now possible to
mapResults through:- a simple transformation closure
- a closure that
throws
- It's now possible to
flatMapResults through:- a closure that returns an
Optional - a closure that returns a
Future - a closure that returns another
Result
- a closure that returns an
- It's now possible to
filterResults through a simple condition closure - โ Added
mimictoResult
-
v0.7 Changes
March 27, 2016๐ฅ Breaking changes
onCompletionargument now is a closure accepting aResult<T>as a parameter instead of a tuple(value: T?, error: ErrorType?).Result<T>is the usualenum(akaEither) that can be.Success(T),.Error(ErrorType)orCancelledin case of canceled computations.- Please add a
import PiedPiperline everywhere you make use of Carlos'Futures orPromises, since with 0.7 we now ship a separatePied Piperframework. - ๐
AsyncComputationhas been removed from the public API. Please useOneWayTransformer(orCacheLevel) instead now.
๐ Deprecated
- ๐ APIs using closures instead of
Fetcher,CacheLevelorOneWayTransformerparameters are now deprecated in favor of their counterparts. They will be removed from Carlos with the 1.0 release.
๐ New features
- It's now possible to batch a set of fetch requests. You can use
batchGetAllif you want to pass a list of keys and get the success callback when all of them succeed and the failure callback as soon as one of them fails, orbatchGetSomeif you want to pass a list of keys and get the success callback when all of them completed (successfully or not) but only get the list of successful responses back.
๐ Fixes
- โก๏ธ Correctly updates access date on the disk cache when calling
seton aDiskCacheLevel
-
v0.6 Changes
January 22, 2016๐ New features
- It's now possible to conditionally post-process values fetched from
CacheLevels (or fetch closures) on the key used to fetch the value. Use the functionconditionedPostProcessor consult theREADME.mdfor more information - It's now possible to conditionally transform values fetched from (or set on)
CacheLevels on the key used to fetch (or set) the value. Use the functionconditionedValueTransformationor consult theREADME.mdfor more information
๐ Fixes
Carthageintegration works again
Minor improvements
CacheProvidernow has accessors to retrieve shared instances of the built-in caches (sharedImageCache,sharedDataCacheandsharedJSONCache)
- It's now possible to conditionally post-process values fetched from
-
v0.5 Changes
November 06, 2015New features
Promisecan now be canceled. Callcancel()to cancel aPromise. Be notified of a canceled operation with theonCancelfunction. UseonCancelto setup the cancel behavior of your custom operation. Remember that an operation can only be canceled once, and can only be executing, canceled, failed or succeeded at any given time.- It's now possible to apply a condition to a
OneWayTransformer. You can callconditionedon the instance ofOneWayTransformerto decorate and pass the condition on the input. This means you can effectively implement conditioned key transformations onCacheLevels. Moreover, you can implement conditioned post processing transformations as well. For this, though, keep in mind that the input of theOneWayTransformerwill be the output of the cache, not the key. - It's now possible to apply a condition to a
TwoWayTransformer. You can callconditionedon the instance ofTwoWayTransformerto decorate and pass two conditions: the one to apply for the forward transformation and the one to apply for the inverse transformation, that will take of course different input types. This means you can effectively implement conditioned value transformations onCacheLevels. - 0๏ธโฃ A new
NSUserDefaultsCacheLevelis now included inCarlos. You can use thisCacheLevelto persist values onNSUserDefaults, and you can even use multiple instances of this level to persist sandboxed sets of values - It's now possible to dispatch a
CacheLevelor a fetch closure on a given GCD queue. Use thedispatchprotocol extension or the~>>operator and pass the specificdispatch_queue_t. Global functions are not provided since we're moving towards a global-functions-free API forCarlos 1.0
Major changes
- API Breaking :
CacheRequestis now renamed toFuture. All the public API returnFutureinstances now, and you can usePromisefor your custom cache levels and fetchers - API Breaking :
OneWayTransformerandTwoWayTransformerare now asynchronous, i.e. they return aFuture<T>instead of aTdirectly - API Breaking : all the
conditionedvariants now take an asynchronous condition closure, i.e. the closure has to return aFuture<Bool>instead of a(Bool, ErrorType)tuple - ๐ All the global functions are now deprecated. They will be removed from the public API with the release of
Carlos 1.0
Minor improvements
Promisecan now be initialized with anOptional<T>and anErrorType, correctly behaving depending on the optional valuePromisenow has amimicfunction that takes aFuture<T>and succeeds or fails when the givenFuturedoes soImageTransformernow applies its tranformations on a background queueJSONTransformernow passes the right error when the transformations failCacheProvider.dataCachenow pools requests on the network and disk levels, so pooled requests don't result in multiplesetcalls on the disk level- It's now possible to
canceloperations coming from aNetworkFetcher Int,Float,DoubleandCharacterconform toExpensiveObjectnow with a unit (1) cost- โ Added a
MIGRATING.mdto the repo and to the Wiki that explains how to migrate to new versions ofCarlos(only for breaking changes)