All Versions
14
Latest Version
Avg Release Cycle
160 days
Latest Release
1257 days ago

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, 2020

    1.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 and RequestCapperCache.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, 2016

    Breaking changes

    • 👍 Swift 3.0 support (for Swift 2.3 use specific commit 5d354c829d766568f164c386c59de21357b5ccff instead)
    • 🆕 batchGetAll has been removed and replaced with a reified allBatch (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 on CacheLevel now returns a Future enabling error-handling and progress-tracking of set 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 use allBatch to create a concrete BatchAllCache. You can use get 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 of batchGetAll), or you can compose or transform an allBatch cache just like any another CacheLevel. Consult the README.md for an example.
  • 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 reified allBatch (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 on CacheLevel now returns a Future enabling error-handling and progress-tracking of set 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 use allBatch to create a concrete BatchAllCache. You can use get 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 of batchGetAll), or you can compose or transform an allBatch cache just like any another CacheLevel. Consult the README.md for an example.
  • v0.8 Changes

    May 16, 2016

    Breaking changes

    • The codebase has been migrated to Swift 2.2
    • 🚚 Promise now has only an empty init. If you used one of the convenience init (with value:, with error: or with value:error:), they now moved to Future.

    🆕 New features

    • ➕ Adds value and error properties to Result
    • ➕ Added a way to initialize Futures through closures
    • It's now possible to map Futures through:
      • a simple transformation closure
      • a closure that throws
    • It's now possible to flatMap Futures through:
      • a closure that returns an Optional
      • a closure that returns another Future
      • a closure that returns a Result
    • It's now possible to filter Futures through:
      • a simple condition closure
      • a closure that returns a Future<Bool>
    • It's now possible to reduce a SequenceType of Futures into a new Future through a combine closure
    • It's now possible to zip a Future with either another Future or with a Result
    • ➕ Added merge to a SequenceType of Futures to collapse a list of Futures into a single one
    • ➕ Added traverse to SequenceType to generate a list of Futures through a given closure and merge them together
    • ➕ Added recover to Future so that it's possible to provide a default value the Future can use instead of failing
    • It's now possible to map Results through:
      • a simple transformation closure
      • a closure that throws
    • It's now possible to flatMap Results through:
      • a closure that returns an Optional
      • a closure that returns a Future
      • a closure that returns another Result
    • It's now possible to filter Results through a simple condition closure
    • ➕ Added mimic to Result
  • v0.7 Changes

    March 27, 2016

    💥 Breaking changes

    • onCompletion argument now is a closure accepting a Result<T> as a parameter instead of a tuple (value: T?, error: ErrorType?). Result<T> is the usual enum (aka Either) that can be .Success(T), .Error(ErrorType) or Cancelled in case of canceled computations.
    • Please add a import PiedPiper line everywhere you make use of Carlos' Futures or Promises, since with 0.7 we now ship a separate Pied Piper framework.
    • 🚚 AsyncComputation has been removed from the public API. Please use OneWayTransformer (or CacheLevel) instead now.

    🗄 Deprecated

    • 🚀 APIs using closures instead of Fetcher, CacheLevel or OneWayTransformer 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, or batchGetSome 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 a DiskCacheLevel
  • 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 function conditionedPostProcess or consult the README.md for 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 function conditionedValueTransformation or consult the README.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 and sharedJSONCache)
  • v0.5 Changes

    November 06, 2015

    New features

    • Promise can now be canceled. Call cancel() to cancel a Promise. Be notified of a canceled operation with the onCancel function. Use onCancel 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 call conditioned on the instance of OneWayTransformer to decorate and pass the condition on the input. This means you can effectively implement conditioned key transformations on CacheLevels. Moreover, you can implement conditioned post processing transformations as well. For this, though, keep in mind that the input of the OneWayTransformer will be the output of the cache, not the key.
    • It's now possible to apply a condition to a TwoWayTransformer. You can call conditioned on the instance of TwoWayTransformer 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 on CacheLevels.
    • 0️⃣ A new NSUserDefaultsCacheLevel is now included in Carlos. You can use this CacheLevel to persist values on NSUserDefaults, 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 the dispatch protocol extension or the ~>> operator and pass the specific dispatch_queue_t. Global functions are not provided since we're moving towards a global-functions-free API for Carlos 1.0

    Major changes

    • API Breaking : CacheRequest is now renamed to Future. All the public API return Future instances now, and you can use Promise for your custom cache levels and fetchers
    • API Breaking : OneWayTransformer and TwoWayTransformer are now asynchronous, i.e. they return a Future<T> instead of a T directly
    • API Breaking : all the conditioned variants now take an asynchronous condition closure, i.e. the closure has to return a Future<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 an Optional<T> and an ErrorType, correctly behaving depending on the optional value
    • Promise now has a mimic function that takes a Future<T> and succeeds or fails when the given Future does so
    • ImageTransformer now applies its tranformations on a background queue
    • JSONTransformer now passes the right error when the transformations fail
    • CacheProvider.dataCache now pools requests on the network and disk levels, so pooled requests don't result in multiple set calls on the disk level
    • It's now possible to cancel operations coming from a NetworkFetcher
    • Int, Float, Double and Character conform to ExpensiveObject 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 of Carlos (only for breaking changes)