Changelog

All notable changes to this project will be documented in this file. SQift adheres to Semantic Versioning.

5.x Releases

4.x Releases

3.x Releases

2.x Releases

1.x Releases

0.x Releases


5.0.1

Release on 2019-10-25. All issues associated with this milestone can be found using this filter.

Fixed

5.0.0

Release on 2019-04-30. All issues associated with this milestone can be found using this filter.

Updated


4.1.0

Release on 2019-04-30. All issues associated with this milestone can be found using this filter.

Updated


4.0.0

Release on 2018-11-30. All issues associated with this milestone can be found using this filter.

Added

Updated

Removed


3.3.0

Released on 2018-11-30. All issues associated with this milestone can be found using this filter.

Deprecated


3.2.1

Released on 2018-09-17. All issues associated with this milestone can be found using this filter.

Added

Updated

3.2.0

Released on 2018-05-02. All issues associated with this milestone can be found using this filter.

Added

Updated


3.1.0

Released on 2018-04-10. All issues associated with this milestone can be found using this filter.

Updated

Fixed


3.0.1

Released on 2018-01-02. All issues associated with this milestone can be found using this filter.

Updated

3.0.0

Released on 2017-10-25. All issues associated with this milestone can be found using this filter.

Breaking Changes

The SQift 3.0.0 release is a MAJOR version bump that comes with many new APIs and a few breaking changes worth calling out.

Swift 4

The SQift 3 release has been converted to only support Swift 4. If you need to use Swift 3.2 or earlier, please stick with the latest SQift 2.x release until you can move to Swift 4.

Sequence Conformance on Statement

The biggest source code change in SQift 3 was the removal of Sequence conformance on Statement. This change was made because it's not safe to assume errors will not be encountered while stepping through a result set.

New Query APIs

New query APIs have been added to safely iterate through a result set and throw if an error is encountered. These are meant to replace the Sequence conformance on Statement and are safer and more robust as well.

The fetch APIs have also been removed and replaced with new query variants. SQift 3 unifies all SQL "queries" underneath the query APIs. The ExpressibleByRow protocol was also added to make it easier to convert result sets to model objects.

Non-Optional Query APIs

The other breaking change worth noting is the removal of non-optional query APIs. In SQift 2.x, you could query for non-optional Extractable values directly. SQift would internally force unwrap the optional value for you. In SQift 3, these APIs have been removed entirely for safety reasons.

Generic Subscripts on Row

Swift 4 added the ability to make use of generics in subscripts. This means that you no longer need to write custom extensions on Row to support your own custom bindings. We were able to delete all the custom subscript functions in SQift itself for each of the primitive type bindings.

Release Notes

Added

Updated

Removed


2.1.1

Release Notes

Added

Updated

2.1.0

Release Notes

Added


2.0.0

Breaking Changes

Extractable API

This major release contains only a single API change. The Extractable protocol has been updated to allow optional return values instead of non-optional.

public protocol Extractable {
    associatedtype BindingType
    associatedtype DataType = Self

    static func fromBindingValue(_ value: Any) -> DataType?
}

To update to SQift 2.x, you only need to make the DataType return value of the fromBindingValue API optional in all your custom Binding implementations. You'll also want to investigate your fromBindingValue implementations to see if you can add some additional safety now that the return type is optional.

Extractable Implementation for Numeric Types

The Extractable implementation of the numeric types has been updated to no longer clamp values outside the bounds of the type to the bounds of the type. The implementations now return nil if the underlying value lies outside the bounds of the type. The best way to demonstrate this is through an example.

If you store a value in the database with a value of 1_000, and try to extract it as a UInt8, you will no longer receive 255, but instead nil since the value does not fit within the 0...255 range.

Release Notes

Updated


1.1.2

Release Notes

Fixed

1.1.1

Release Notes

Updated


1.1.0

Release Notes

Updated


1.0.0

Release Notes

Updated


0.9.0

Release Notes

Added

Updated

Fixed


0.8.0

Release Notes

This release is all about updating to Xcode 8 and Swift 2.3. There are no other changes in this release.

Updated


0.7.1

Release Notes

Due to CI not being able to always have Xcode live in the /Applications folder, we needed to move away from module maps. The alternative solution is to directly import the sqlite3.h header into the project and into the umbrella header. Since the header is the same on all platforms, there's no reason to import different ones for each platform.

Added

Removed

0.7.0

Release Notes

Unfortunately the SQLCipher team is having a difficult time keeping up their support for the various Apple platforms. Because of this, we've had to move away from the dependency altogether. This required the database encryption logic to be removed from SQift.

Added

Updated

Removed

0.6.1

Release Notes

Updated

0.6.0

Release Notes

Added

0.5.0

Release Notes

Updated

0.4.0

Release Notes

Added

0.3.0

Release Notes

Added

Updated

Using a sharedCache is intended for use with embedded servers to help keep memory usage low for embedded devices.

Removed

Fixed

0.2.0

Release Notes

Added

Updated

0.1.0

Release Notes

This is the initial release of SQift. Things will continue to evolve through the November '15 - January '16 timeframe as more SQift features are added. The goal is to be ready to release the 1.0.0 version around late January '16. The road to 1.0.0 will attempt to follow semver as closely as possible, but is not guaranteed. Until the 1.0.0 release, please pay close attention to the upgrade and release notes for each version.