From e0de8e0a23b7b33e085ebc4793a9d1afa97d62f1 Mon Sep 17 00:00:00 2001 From: Aliaksandr Bialiauski <413986+S2Ler@users.noreply.github.com> Date: Mon, 19 Jun 2023 16:22:20 +0300 Subject: [PATCH 01/13] Add support for Sendable --- .circleci/config.yml | 62 +++++++++++++++++++ .travis.yml | 2 +- Package.swift | 13 +++- Sources/Turf/BoundingBox.swift | 2 +- Sources/Turf/Consumer/Consumer+WKT.swift | 10 +-- Sources/Turf/Consumer/Consumer.swift | 20 +++--- Sources/Turf/CoreLocation.swift | 2 +- Sources/Turf/FeatureIdentifier.swift | 2 +- Sources/Turf/GeoJSON.swift | 4 +- .../Turf/Geometries/GeometryCollection.swift | 2 +- Sources/Turf/Geometries/LineString.swift | 2 +- Sources/Turf/Geometries/Point.swift | 2 +- Sources/Turf/Geometry.swift | 4 +- Sources/Turf/JSON.swift | 2 +- Sources/Turf/RadianCoordinate2D.swift | 2 +- Sources/Turf/Ring.swift | 3 +- 16 files changed, 106 insertions(+), 28 deletions(-) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..8c8767d9 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,62 @@ +version: 2.1 + +jobs: + xcode_13_2: + macos: + xcode: 13.2 + steps: + - checkout + - run: + name: "Build" + command: "swift build" + xcode_13_3: + macos: + xcode: 13.3 + steps: + - checkout + - run: + name: "Build" + command: "swift build" + xcode_13_4: + macos: + xcode: 13.4 + steps: + - checkout + - run: + name: "Build" + command: "swift build" + - run: + name: "Test" + command: "swift test" + xcode_14_1: + macos: + xcode: 14.1 + steps: + - checkout + - run: + name: "Build" + command: "swift build" + - run: + name: "Test" + command: "swift test" + xcode_14_2: + macos: + xcode: 14.2 + steps: + - checkout + - run: + name: "Build" + command: "swift build" + - run: + name: "Test" + command: "swift test" + + +workflows: + build-and-test: + jobs: + - xcode_13_2 + - xcode_13_3 + - xcode_13_4 + - xcode_14_1 + - xcode_14_2 diff --git a/.travis.yml b/.travis.yml index ee1f75b9..5abf17ef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ language: generic sudo: required dist: xenial env: - - SWIFT_VERSION=5.4 SWIFTENV_ROOT="$HOME/.swiftenv" PATH="$SWIFTENV_ROOT/bin:$SWIFTENV_ROOT/shims:$PATH" + - SWIFT_VERSION=5.5 SWIFTENV_ROOT="$HOME/.swiftenv" PATH="$SWIFTENV_ROOT/bin:$SWIFTENV_ROOT/shims:$PATH" install: - ./scripts/install_swiftenv.sh script: diff --git a/Package.swift b/Package.swift index 30b14699..163424f1 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.4 +// swift-tools-version:5.5 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -36,3 +36,14 @@ let package = Package( ), ] ) + +//for target in package.targets { +// target.swiftSettings = target.swiftSettings ?? [] +// target.swiftSettings?.append( +// .unsafeFlags([ +// "-Xfrontend", "-warn-concurrency", +// "-Xfrontend", "-enable-actor-data-race-checks", +// "-Xfrontend", "-require-explicit-sendable", +// ]) +// ) +//} diff --git a/Sources/Turf/BoundingBox.swift b/Sources/Turf/BoundingBox.swift index 0dc30ff6..e653ee3b 100644 --- a/Sources/Turf/BoundingBox.swift +++ b/Sources/Turf/BoundingBox.swift @@ -6,7 +6,7 @@ import CoreLocation /** A [bounding box](https://datatracker.ietf.org/doc/html/rfc7946#section-5) indicates the extremes of a `GeoJSONObject` along the x- and y-axes (longitude and latitude, respectively). */ -public struct BoundingBox { +public struct BoundingBox: Sendable { /// The southwesternmost position contained in the bounding box. public var southWest: LocationCoordinate2D diff --git a/Sources/Turf/Consumer/Consumer+WKT.swift b/Sources/Turf/Consumer/Consumer+WKT.swift index 357946f4..3288aef5 100644 --- a/Sources/Turf/Consumer/Consumer+WKT.swift +++ b/Sources/Turf/Consumer/Consumer+WKT.swift @@ -7,7 +7,7 @@ import CoreLocation struct WKTParser { init() {} - mutating func parse(_ input: String) throws -> T { + mutating func parse(_ input: String) throws -> T { let match = try wktConsumer.match(input.uppercased()) guard let output = try match.transform(wktTransform) else { throw WKTError.emptyOutput @@ -21,16 +21,16 @@ struct WKTParser { return object } - static func parse(_ input: String) throws -> T { + static func parse(_ input: String) throws -> T { var parser = WKTParser() return try parser.parse(input) } enum WKTError: Error, CustomStringConvertible { case emptyOutput - case numberParsingFailed(Any) - case coordinatesParsingFailed(Any) - case geometriesParsingFailed(Any) + case numberParsingFailed(Sendable) + case coordinatesParsingFailed(Sendable) + case geometriesParsingFailed(Sendable) case castFailed(Any.Type) public var description: String { diff --git a/Sources/Turf/Consumer/Consumer.swift b/Sources/Turf/Consumer/Consumer.swift index b150978d..9f3ddde1 100644 --- a/Sources/Turf/Consumer/Consumer.swift +++ b/Sources/Turf/Consumer/Consumer.swift @@ -33,7 +33,7 @@ import Foundation // MARK: Consumer -public indirect enum Consumer: Equatable { +public indirect enum Consumer: Equatable, Sendable { /// Primitives case string(String) case charset(Charset) @@ -67,14 +67,14 @@ public extension Consumer { var isOptional: Bool { return _isOptional } /// Source location - struct Location: Equatable { + struct Location: Equatable, Sendable { fileprivate var source: String.UnicodeScalarView public let range: Range public var offset: (line: Int, column: Int) { return _offset } } /// Abstract syntax tree returned by consumer - indirect enum Match: Equatable { + indirect enum Match: Equatable, Sendable { case token(String, Location) case node(Label?, [Match]) @@ -82,23 +82,23 @@ public extension Consumer { public var location: Location? { return _location } /// Transform generic AST to application-specific form - public func transform(_ fn: Transform) rethrows -> Any? { + public func transform(_ fn: Transform) rethrows -> Sendable? { return try _transform(fn) } } /// Opaque type used for efficient character matching - struct Charset: Hashable { + struct Charset: Hashable, Sendable { fileprivate let characterSet: CharacterSet let inverted: Bool } /// Closure for transforming a Match to an application-specific data type - typealias Transform = (_ name: Label, _ values: [Any]) throws -> Any? + typealias Transform = (_ name: Label, _ values: [Sendable]) throws -> (Sendable)? /// A Parsing error struct Error: Swift.Error { - public indirect enum Kind { + public indirect enum Kind: Sendable { case expected(Consumer) case unexpectedToken case custom(Swift.Error) @@ -784,7 +784,7 @@ private extension Consumer.Match { } } - func _transform(_ fn: Consumer.Transform) rethrows -> Any? { + func _transform(_ fn: Consumer.Transform) rethrows -> Sendable? { // TODO: warn if no matches are labelled, as transform won't work do { switch self { @@ -885,3 +885,7 @@ private func escapeString(_ string: T) -> String { } return result + "'" } + +#if swift(<5.6) +extension CharacterSet: @unchecked Sendable {} +#endif diff --git a/Sources/Turf/CoreLocation.swift b/Sources/Turf/CoreLocation.swift index d8cd2d8c..2ca8a4a5 100644 --- a/Sources/Turf/CoreLocation.swift +++ b/Sources/Turf/CoreLocation.swift @@ -50,7 +50,7 @@ public typealias LocationDegrees = Double /** A geographic coordinate with its components measured in degrees. */ -public struct LocationCoordinate2D { +public struct LocationCoordinate2D: Sendable { /** The latitude in degrees. */ diff --git a/Sources/Turf/FeatureIdentifier.swift b/Sources/Turf/FeatureIdentifier.swift index abe6781d..5cd23408 100644 --- a/Sources/Turf/FeatureIdentifier.swift +++ b/Sources/Turf/FeatureIdentifier.swift @@ -3,7 +3,7 @@ import Foundation /** A [feature identifier](https://datatracker.ietf.org/doc/html/rfc7946#section-3.2) identifies a `Feature` object. */ -public enum FeatureIdentifier: Hashable { +public enum FeatureIdentifier: Hashable, Sendable { /// A string. case string(_ string: String) diff --git a/Sources/Turf/GeoJSON.swift b/Sources/Turf/GeoJSON.swift index 56914504..822410ac 100644 --- a/Sources/Turf/GeoJSON.swift +++ b/Sources/Turf/GeoJSON.swift @@ -8,7 +8,7 @@ import CoreLocation - Note: [Foreign members](https://datatracker.ietf.org/doc/html/rfc7946#section-6.1) which may be present inside are coded only if used `JSONEncoder` or `JSONDecoder` has `userInfo[.includesForeignMembers] = true`. */ -public enum GeoJSONObject: Equatable { +public enum GeoJSONObject: Equatable, Sendable { /** A [Geometry object](https://datatracker.ietf.org/doc/html/rfc7946#section-3.1) represents points, curves, and surfaces in coordinate space. @@ -94,7 +94,7 @@ extension FeatureCollection: GeoJSONObjectConvertible { /** A GeoJSON object that can contain [foreign members](https://datatracker.ietf.org/doc/html/rfc7946#section-6.1) in arbitrary keys. */ -public protocol ForeignMemberContainer { +public protocol ForeignMemberContainer: Sendable { /// [Foreign members](https://datatracker.ietf.org/doc/html/rfc7946#section-6.1) to round-trip to JSON. /// /// Members are coded only if used `JSONEncoder` or `JSONDecoder` has `userInfo[.includesForeignMembers] = true`. diff --git a/Sources/Turf/Geometries/GeometryCollection.swift b/Sources/Turf/Geometries/GeometryCollection.swift index f1470406..17bc26a8 100644 --- a/Sources/Turf/Geometries/GeometryCollection.swift +++ b/Sources/Turf/Geometries/GeometryCollection.swift @@ -6,7 +6,7 @@ import CoreLocation /** A [GeometryCollection geometry](https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.8) is a heterogeneous collection of `Geometry` objects that are related. */ -public struct GeometryCollection: Equatable, ForeignMemberContainer { +public struct GeometryCollection: Equatable, ForeignMemberContainer, Sendable { /// The geometries contained by the geometry collection. public var geometries: [Geometry] diff --git a/Sources/Turf/Geometries/LineString.swift b/Sources/Turf/Geometries/LineString.swift index e8da8ed6..5eb0f929 100644 --- a/Sources/Turf/Geometries/LineString.swift +++ b/Sources/Turf/Geometries/LineString.swift @@ -194,7 +194,7 @@ extension LineString { /** `IndexedCoordinate` is a coordinate with additional information such as the index from its position in the polyline and distance from the start of the polyline. */ - public struct IndexedCoordinate { + public struct IndexedCoordinate: Sendable { /// The coordinate public let coordinate: Array.Element /// The index of the coordinate diff --git a/Sources/Turf/Geometries/Point.swift b/Sources/Turf/Geometries/Point.swift index 48e9ddaf..066665d4 100644 --- a/Sources/Turf/Geometries/Point.swift +++ b/Sources/Turf/Geometries/Point.swift @@ -6,7 +6,7 @@ import CoreLocation /** A [Point geometry](https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.2) represents a single position. */ -public struct Point: Equatable, ForeignMemberContainer { +public struct Point: Equatable, ForeignMemberContainer, Sendable { /** The position at which the point is located. diff --git a/Sources/Turf/Geometry.swift b/Sources/Turf/Geometry.swift index f5e3c2aa..54c115d6 100644 --- a/Sources/Turf/Geometry.swift +++ b/Sources/Turf/Geometry.swift @@ -6,7 +6,7 @@ import CoreLocation /** A [Geometry object](https://datatracker.ietf.org/doc/html/rfc7946#section-3.1) represents points, curves, and surfaces in coordinate space. Use an instance of this enumeration whenever a value could be any kind of Geometry object. */ -public enum Geometry: Equatable { +public enum Geometry: Equatable, Sendable { /// A single position. case point(_ geometry: Point) @@ -94,7 +94,7 @@ extension Geometry: Codable { /** A type that can be represented as a `Geometry` instance. */ -public protocol GeometryConvertible { +public protocol GeometryConvertible: Sendable { /// The instance wrapped in a `Geometry` instance. var geometry: Geometry { get } } diff --git a/Sources/Turf/JSON.swift b/Sources/Turf/JSON.swift index 5c9d1005..4b92b534 100644 --- a/Sources/Turf/JSON.swift +++ b/Sources/Turf/JSON.swift @@ -5,7 +5,7 @@ import Foundation This type does not represent the `null` value in JSON. Use `Optional` wherever `null` is accepted. */ -public enum JSONValue: Hashable { +public enum JSONValue: Hashable, Sendable { // case null would be redundant to Optional.none /// A string. diff --git a/Sources/Turf/RadianCoordinate2D.swift b/Sources/Turf/RadianCoordinate2D.swift index 25a80e0e..19492918 100644 --- a/Sources/Turf/RadianCoordinate2D.swift +++ b/Sources/Turf/RadianCoordinate2D.swift @@ -12,7 +12,7 @@ public typealias RadianDistance = Double /** A coordinate pair measured in radians, as opposed to `LocationCoordinate2D`, which is measured in degrees of arc. */ -public struct RadianCoordinate2D { +public struct RadianCoordinate2D: Sendable { /// The latitude measured in radians. private(set) var latitude: LocationRadians diff --git a/Sources/Turf/Ring.swift b/Sources/Turf/Ring.swift index 899897f0..e53ea31b 100644 --- a/Sources/Turf/Ring.swift +++ b/Sources/Turf/Ring.swift @@ -6,7 +6,8 @@ import CoreLocation /** A [linear ring](https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6) is a closed figure bounded by three or more straight line segments. */ -public struct Ring { + +public struct Ring: Sendable { /// The positions at which the linear ring is located. public var coordinates: [LocationCoordinate2D] From ea76577c06e92af71db882cb5cce2a0237fd7c7c Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Tue, 2 Jan 2024 17:24:56 +0100 Subject: [PATCH 02/13] Update CircleCI config --- .circleci/config.yml | 58 +++++++++----------------------------------- 1 file changed, 11 insertions(+), 47 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8c8767d9..3741e06d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,62 +1,26 @@ version: 2.1 jobs: - xcode_13_2: + build_and_test: + parameters: + xcode_version: + type: string macos: - xcode: 13.2 + xcode: << parameters.xcode_version >> steps: - checkout - run: name: "Build" - command: "swift build" - xcode_13_3: - macos: - xcode: 13.3 - steps: - - checkout - - run: - name: "Build" - command: "swift build" - xcode_13_4: - macos: - xcode: 13.4 - steps: - - checkout - - run: - name: "Build" - command: "swift build" - - run: - name: "Test" - command: "swift test" - xcode_14_1: - macos: - xcode: 14.1 - steps: - - checkout - - run: - name: "Build" - command: "swift build" - - run: - name: "Test" - command: "swift test" - xcode_14_2: - macos: - xcode: 14.2 - steps: - - checkout - - run: - name: "Build" - command: "swift build" + command: swift build - run: name: "Test" - command: "swift test" + command: swift test workflows: build-and-test: jobs: - - xcode_13_2 - - xcode_13_3 - - xcode_13_4 - - xcode_14_1 - - xcode_14_2 + - build_and_test: + matrix: + parameters: + xcode_version: [13.4.1, 14.3.1, 15.1.0] From 2cd0792ec6472ef61d5332f35d92449dd15266ad Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Tue, 2 Jan 2024 17:50:46 +0100 Subject: [PATCH 03/13] Run linux job on CI --- .circleci/config.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3741e06d..c4d55e1d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,18 @@ version: 2.1 jobs: - build_and_test: + build_and_test_linux: + docker: + - image: swift:latest + steps: + - checkout + - run: + name: "Build" + command: swift build + - run: + name: "Test" + command: swift test + build_and_test_macos: parameters: xcode_version: type: string @@ -20,7 +31,8 @@ jobs: workflows: build-and-test: jobs: - - build_and_test: + - build_and_test_linux + - build_and_test_macos: matrix: parameters: xcode_version: [13.4.1, 14.3.1, 15.1.0] From 58ba79d7533b04fcb985b86a67f08017e6a1732a Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Tue, 2 Jan 2024 18:13:59 +0100 Subject: [PATCH 04/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f6d7a3f6..a45e1351 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ If your project is written in Objective-C, you’ll need to write a compatibilit ## Installation -Although a stable release of this library is not yet available, prereleases are available for installation using any of the popular Swift dependency managers. +Releases are available for installation using any of the popular Swift dependency managers. ### CocoaPods From b769323f607e3da22d948e79ff03252ae2a9f4d8 Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Tue, 2 Jan 2024 18:30:57 +0100 Subject: [PATCH 05/13] Update swift version in podspec --- Turf.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Turf.podspec b/Turf.podspec index 5d9b5bbf..d2cef5be 100644 --- a/Turf.podspec +++ b/Turf.podspec @@ -40,6 +40,6 @@ Pod::Spec.new do |s| s.frameworks = 'CoreLocation' - s.swift_version = "5.0" + s.swift_version = "5.5" end From 8e0fc215eeab20fba99e86a4173bc62ea56236e9 Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Tue, 2 Jan 2024 18:31:08 +0100 Subject: [PATCH 06/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a45e1351..1f2a5c5b 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ A [spatial analysis](http://en.wikipedia.org/wiki/Spatial_analysis) library writ ## Requirements -Turf requires Xcode 12.0 or above and supports the following minimum deployment targets: +Turf requires Xcode 13.0 or above and supports the following minimum deployment targets: * iOS 11.0 and above * macOS 10.13 (High Sierra) and above From dba3735c1c45babdb6153d7ca82775ead8ca6bef Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Tue, 2 Jan 2024 18:31:27 +0100 Subject: [PATCH 07/13] Remove TravisCI config in favor of CircleCI --- .travis.yml | 11 ----------- scripts/install_swiftenv.sh | 15 --------------- 2 files changed, 26 deletions(-) delete mode 100644 .travis.yml delete mode 100755 scripts/install_swiftenv.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5abf17ef..00000000 --- a/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -os: - - linux -language: generic -sudo: required -dist: xenial -env: - - SWIFT_VERSION=5.5 SWIFTENV_ROOT="$HOME/.swiftenv" PATH="$SWIFTENV_ROOT/bin:$SWIFTENV_ROOT/shims:$PATH" -install: - - ./scripts/install_swiftenv.sh -script: - - swift test diff --git a/scripts/install_swiftenv.sh b/scripts/install_swiftenv.sh deleted file mode 100755 index 36427b13..00000000 --- a/scripts/install_swiftenv.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -# Automatically installs swiftenv and run's swiftenv install. -# This script was designed for usage in CI systems. - -git clone --depth 1 https://github.com/kylef/swiftenv.git ~/.swiftenv -export SWIFTENV_ROOT="$HOME/.swiftenv" -export PATH="$SWIFTENV_ROOT/bin:$SWIFTENV_ROOT/shims:$PATH" - -if [ -f ".swift-version" ] || [ -n "$SWIFT_VERSION" ]; then - swiftenv install -s -else - swiftenv rehash -fi - From 02acc6947b9b86c4cd819596b8467485a6fdad74 Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Tue, 2 Jan 2024 18:31:57 +0100 Subject: [PATCH 08/13] Add a job that verifies Turf can be built with library evolution enabled --- .circleci/config.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c4d55e1d..f128c400 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -26,7 +26,18 @@ jobs: - run: name: "Test" command: swift test - + build_for_library_evolution: + macos: + xcode: latest + steps: + - checkout + - run: + name: "Build for library evolution" + command: | + swift build \ + -c release \ + -Xswiftc -emit-module-interface \ + -Xswiftc -enable-library-evolution workflows: build-and-test: From fae5cd21452098a25a25e9663d8087ef6ae4e8f3 Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Tue, 2 Jan 2024 18:32:16 +0100 Subject: [PATCH 09/13] Refactor Package.swift --- Package.swift | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Package.swift b/Package.swift index 163424f1..df2a4b81 100644 --- a/Package.swift +++ b/Package.swift @@ -9,22 +9,17 @@ let package = Package( .macOS(.v10_13), .iOS(.v11), .watchOS(.v4), .tvOS(.v11), ], products: [ - // Products define the executables and libraries produced by a package, and make them visible to other packages. .library( name: "Turf", - targets: ["Turf"]), - ], - dependencies: [ - // Dependencies declare other packages that this package depends on. - // .package(url: /* package url */, from: "1.0.0"), + targets: ["Turf"] + ), ], targets: [ - // Targets are the basic building blocks of a package. A target can define a module or a test suite. - // Targets can depend on other targets in this package, and on products in packages which this package depends on. .target( name: "Turf", dependencies: [], - exclude: ["Info.plist"]), + exclude: ["Info.plist"] + ), .testTarget( name: "TurfTests", dependencies: ["Turf"], @@ -37,10 +32,11 @@ let package = Package( ] ) -//for target in package.targets { +//for target in package.targets where target.type != .system { // target.swiftSettings = target.swiftSettings ?? [] // target.swiftSettings?.append( // .unsafeFlags([ +// "-emit-module-interface", "-enable-library-evolution", // "-Xfrontend", "-warn-concurrency", // "-Xfrontend", "-enable-actor-data-race-checks", // "-Xfrontend", "-require-explicit-sendable", From 2e4cccb2fcc7a546443999cd1b4fa863e2ec130a Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Tue, 2 Jan 2024 18:33:41 +0100 Subject: [PATCH 10/13] Bump year to 2024. --- LICENSE.md | 2 +- docs/jazzy.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index 01a360b6..ab98f6c4 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,4 @@ -Copyright © 2014–2023, Mapbox +Copyright © 2014–2024, Mapbox Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above diff --git a/docs/jazzy.yml b/docs/jazzy.yml index 6183df8d..2e58472d 100644 --- a/docs/jazzy.yml +++ b/docs/jazzy.yml @@ -3,4 +3,4 @@ author: Mapbox title: Turf for Swift author_url: https://github.com/mapbox/turf-swift/ github_url: https://github.com/mapbox/turf-swift -copyright: '© 2014–2023 [Mapbox](https://www.mapbox.com/). See [license](https://github.com/mapbox/turf-swift/blob/main/LICENSE.md) for more details.' +copyright: '© 2014–2024 [Mapbox](https://www.mapbox.com/). See [license](https://github.com/mapbox/turf-swift/blob/main/LICENSE.md) for more details.' From 91d75a96590a3bb85068359c5ffb2a06294034f0 Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Thu, 11 Jan 2024 20:55:07 +0100 Subject: [PATCH 11/13] Enable library evolution build on CI --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index f128c400..cdb4b0ed 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -42,6 +42,7 @@ jobs: workflows: build-and-test: jobs: + - build_for_library_evolution - build_and_test_linux - build_and_test_macos: matrix: From a19034118f4e6359e3cc86307df50b7b7baa4f8c Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Thu, 11 Jan 2024 20:55:19 +0100 Subject: [PATCH 12/13] Remove commented out code in SPM manifest --- Package.swift | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/Package.swift b/Package.swift index df2a4b81..3468ce05 100644 --- a/Package.swift +++ b/Package.swift @@ -30,16 +30,4 @@ let package = Package( swiftSettings: [.define("SPM_TESTING")] ), ] -) - -//for target in package.targets where target.type != .system { -// target.swiftSettings = target.swiftSettings ?? [] -// target.swiftSettings?.append( -// .unsafeFlags([ -// "-emit-module-interface", "-enable-library-evolution", -// "-Xfrontend", "-warn-concurrency", -// "-Xfrontend", "-enable-actor-data-race-checks", -// "-Xfrontend", "-require-explicit-sendable", -// ]) -// ) -//} +) \ No newline at end of file From 6d960148ce3c87f0f66d6036a0b05e9a928572e7 Mon Sep 17 00:00:00 2001 From: Alex Azarov Date: Thu, 11 Jan 2024 20:59:02 +0100 Subject: [PATCH 13/13] Fix the Xcode version in the CircleCI config --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cdb4b0ed..2af4d476 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,7 +28,7 @@ jobs: command: swift test build_for_library_evolution: macos: - xcode: latest + xcode: 15.1.0 steps: - checkout - run: