All Versions
14
Latest Version
Avg Release Cycle
160 days
Latest Release
1400 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
Deferred
to 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.swift
andRequestCapperCache.swift
because the functionality they provided could be easily re-implemented using Combine operators.
๐ New Features
Carlos
is 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
5d354c829d766568f164c386c59de21357b5ccff
instead) - ๐
batchGetAll
has 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
set
method onCacheLevel
now returns aFuture
enabling error-handling and progress-tracking ofset
calls.
๐ New Features
- It's now possible to lift a
CacheLevel
into one that operates on a sequence of keys and returns a sequence of values. You can useallBatch
to create a concreteBatchAllCache
. You can useget
on 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 anallBatch
cache just like any anotherCacheLevel
. Consult theREADME.md
for 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
5d354c829d766568f164c386c59de21357b5ccff
instead) - ๐
batchGetAll
has 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
set
method onCacheLevel
now returns aFuture
enabling error-handling and progress-tracking ofset
calls.
๐ New Features
- It's now possible to lift a
CacheLevel
into one that operates on a sequence of keys and returns a sequence of values. You can useallBatch
to create a concreteBatchAllCache
. You can useget
on 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 anallBatch
cache just like any anotherCacheLevel
. Consult theREADME.md
for 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
- ๐
Promise
now has only an emptyinit
. If you used one of the convenienceinit
(withvalue:
, witherror:
or withvalue:error:
), they now moved toFuture
.
๐ New features
- โ Adds
value
anderror
properties toResult
- โ Added a way to initialize
Future
s through closures - It's now possible to
map
Future
s through:- a simple transformation closure
- a closure that
throws
- It's now possible to
flatMap
Future
s 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
filter
Future
s through:- a simple condition closure
- a closure that returns a
Future<Bool>
- It's now possible to
reduce
aSequenceType
ofFuture
s into a newFuture
through acombine
closure - It's now possible to
zip
aFuture
with either anotherFuture
or with aResult
- โ Added
merge
to aSequenceType
ofFuture
s to collapse a list ofFuture
s into a single one - โ Added
traverse
toSequenceType
to generate a list ofFuture
s through a given closure andmerge
them together - โ Added
recover
toFuture
so that it's possible to provide a default value theFuture
can use instead of failing - It's now possible to
map
Result
s through:- a simple transformation closure
- a closure that
throws
- It's now possible to
flatMap
Result
s 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
filter
Result
s through a simple condition closure - โ Added
mimic
toResult
-
v0.7 Changes
March 27, 2016๐ฅ Breaking changes
onCompletion
argument 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)
orCancelled
in case of canceled computations.- Please add a
import PiedPiper
line everywhere you make use of Carlos'Future
s orPromise
s, since with 0.7 we now ship a separatePied Piper
framework. - ๐
AsyncComputation
has been removed from the public API. Please useOneWayTransformer
(orCacheLevel
) instead now.
๐ Deprecated
- ๐ APIs using closures instead of
Fetcher
,CacheLevel
orOneWayTransformer
parameters 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
batchGetAll
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, orbatchGetSome
if 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
set
on aDiskCacheLevel
-
v0.6 Changes
January 22, 2016๐ New features
- It's now possible to conditionally post-process values fetched from
CacheLevel
s (or fetch closures) on the key used to fetch the value. Use the functionconditionedPostProcess
or consult theREADME.md
for more information - It's now possible to conditionally transform values fetched from (or set on)
CacheLevel
s on the key used to fetch (or set) the value. Use the functionconditionedValueTransformation
or consult theREADME.md
for more information
๐ Fixes
Carthage
integration works again
Minor improvements
CacheProvider
now has accessors to retrieve shared instances of the built-in caches (sharedImageCache
,sharedDataCache
andsharedJSONCache
)
- It's now possible to conditionally post-process values fetched from
-
v0.5 Changes
November 06, 2015New features
Promise
can now be canceled. Callcancel()
to cancel aPromise
. Be notified of a canceled operation with theonCancel
function. UseonCancel
to 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 callconditioned
on the instance ofOneWayTransformer
to decorate and pass the condition on the input. This means you can effectively implement conditioned key transformations onCacheLevel
s. Moreover, you can implement conditioned post processing transformations as well. For this, though, keep in mind that the input of theOneWayTransformer
will be the output of the cache, not the key. - It's now possible to apply a condition to a
TwoWayTransformer
. You can callconditioned
on the instance ofTwoWayTransformer
to 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 onCacheLevel
s. - 0๏ธโฃ A new
NSUserDefaultsCacheLevel
is now included inCarlos
. You can use thisCacheLevel
to 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
CacheLevel
or a fetch closure on a given GCD queue. Use thedispatch
protocol 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 :
CacheRequest
is now renamed toFuture
. All the public API returnFuture
instances now, and you can usePromise
for your custom cache levels and fetchers - API Breaking :
OneWayTransformer
andTwoWayTransformer
are now asynchronous, i.e. they return aFuture<T>
instead of aT
directly - API Breaking : all the
conditioned
variants 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
Promise
can now be initialized with anOptional<T>
and anErrorType
, correctly behaving depending on the optional valuePromise
now has amimic
function that takes aFuture<T>
and succeeds or fails when the givenFuture
does soImageTransformer
now applies its tranformations on a background queueJSONTransformer
now passes the right error when the transformations failCacheProvider.dataCache
now pools requests on the network and disk levels, so pooled requests don't result in multipleset
calls on the disk level- It's now possible to
cancel
operations coming from aNetworkFetcher
Int
,Float
,Double
andCharacter
conform toExpensiveObject
now with a unit (1
) cost- โ Added a
MIGRATING.md
to the repo and to the Wiki that explains how to migrate to new versions ofCarlos
(only for breaking changes)