Skip to content

Commit 60e6ed8

Browse files
committed
#39: Basic initial restructuring
This resolves #28 as well
1 parent 360a35c commit 60e6ed8

20 files changed

+823
-997
lines changed

CHANGELOG.md

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# 6.0.0
2+
3+
This release follows 4.1.0. It's named 6.x for the following reasons:
4+
5+
- This major change brings full Swift 6 support to this library, so numbering it 6.x makes that more apparent
6+
- Skipping version 5 opens the door for future compatibility releases in case someone requires a version that's more like 4.x, but incompatible-enough with 4.x that it earns different major version
7+
8+
9+
10+
## 2024-12-26
11+
12+
Initial movement from 4.x.
13+
14+
- Replaced confusing branching license with The Fair Licence
15+
- 4.x shipped with a branching license, where [the default license was BH-1-PS](https://github.com/RougeWare/Swift-Lazy-Containers/blob/4.1.0/LICENSE-GENERAL.txt), but some entities gained the [special privilege of using it under MIT](https://github.com/RougeWare/Swift-Lazy-Containers/blob/4.1.0/LICENSE-SPECIAL.txt). Those companies were [listed in the LICENSE.txt file](https://github.com/RougeWare/Swift-Lazy-Containers/blob/4.1.0/LICENSE.txt), meaning that only they could use the more-permissive license, and every else must use the more-restrictive license.
16+
- 5.x replaces all 3 of these license files with 1 extremely-permissive license: The Fair License.
17+
18+
- Removed dynamic products
19+
- These were added for a spcific developer's transitionary needs. That developer no longer has those needs, so these products are removed in favor of only producing static libraries.
20+
21+
- Renaming shipped module from `LazyContainers` to simply `Lazy`
22+
- This change reflects the goals of this library chaning. Instead of positioning itself as a series of container-types with lazy effects, it's the library you go to when you need lazy loading behavior.
23+
- This should also help with SEO and intuition. `import Lazy` makes more sense when you want to import lazy behavior, compared to `import LazyContainers`
24+
- 6.x will still ship a product named `LazyContainers` for transitionary purposes, but it's deprecated and discoruaged. The `LazyContainers` product will be exactly the same as `Lazy` until it is removed in a future version.
25+
26+
- Full migration to Swift Package Manager
27+
- It's now clear that SPM is the best way to distribute & use Swift packages, so this update removes CocoaPods support and no longer considers any other way of importing this package.
28+
29+
- Split each `Lazy` structure to its own file
30+
- This should have been done long ago. It's a relic of the origin of this package as a single-file Gist for a StackOverflow answer. Original versions of this would encourage developers to include this repository entirely and reference the file directly. Now that this package is SPM-only, all reliance on older forms of distribution are discarded
31+
32+
- Some aliases which were previously marked as `deprecated` for this package's past transitions, are now marked as `unavailable`.
33+
- Their signatures remain the same, for those who are still using the old signature to get an error where these need to be replaced with the new ones.
34+
- Their content/behavior remain the same, in case any workflows consume a precompiled binary and then link to it.
35+
- Future versions will remove these old migration-only compatibilities entirely.
36+
37+
- Removed `@available(introduced:)` annotations
38+
- This package requires Swift 6, and so any API with a minimum-version requirement older than Swift 6, have had such requirements removed since they're redundant with the whole package's minimum-version requirement
39+
40+
- `LazyContainerValueReference` was marked as `final`
41+
- This doesn't technically change anything, since exported `class`es which aren't marked `open` are implicitly closed to subclassing by external modules. This change makes the intent explicit & clear: `LazyContainerValueReference` was never intended to be subclassed, so marking it as `final` simply aligns its signature with the intent of the package creators, ensuring that developers don't misunderstand the package's intent.
42+
43+
- Transitioned to Swift Testing
44+
- Removed `LinuxMain.swift` & `XCTestManifests.swift` from tests since they're no longer needed

LICENSE-GENERAL.txt

-165
This file was deleted.

LICENSE-SPECIAL.txt

-20
This file was deleted.

LICENSE.txt

+3-7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
This repository uses multiple licenses. To determine which license is
2-
appropriate, use the following guidance:
1+
Copyright waived in 2024 by the author, Ky
32

4-
1. The following entities may use the license provided in the
5-
LICENSE-SPECIAL.txt file in this repository:
6-
a. PKWARE, Inc.
3+
Usage of the works is permitted provided that this instrument is retained with the works, so that any entity that uses the works is notified of this instrument.
74

8-
2. All other entities must use the license provided in the LICENSE-GENERAL.txt
9-
file in this repository.
5+
DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.

LazyContainers.podspec

-16
This file was deleted.

Package.swift

+8-18
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:5.1
1+
// swift-tools-version:6.0
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33

44
import PackageDescription
@@ -7,32 +7,22 @@ let package = Package(
77
name: "LazyContainers",
88

99
products: [
10-
// Products define the executables and libraries produced by a package, and make them visible to other packages.
1110
.library(
1211
name: "LazyContainers",
13-
targets: ["LazyContainers"]),
14-
12+
targets: ["Lazy"]),
1513
.library(
16-
name: "LazyContainers_dynamic",
17-
type: .dynamic,
18-
targets: ["LazyContainers"]),
19-
],
20-
21-
dependencies: [
22-
// Dependencies declare other packages that this package depends on.
23-
// .package(url: /* package url */, from: "1.0.0"),
14+
name: "Lazy",
15+
targets: ["Lazy"]),
2416
],
2517

2618
targets: [
27-
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
28-
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
2919
.target(
30-
name: "LazyContainers",
20+
name: "Lazy",
3121
dependencies: []),
3222
.testTarget(
33-
name: "LazyContainersTests",
34-
dependencies: ["LazyContainers"]),
23+
name: "LazyTests",
24+
dependencies: ["Lazy"]),
3525
],
3626

37-
swiftLanguageVersions: [.v5]
27+
swiftLanguageModes: [.v6]
3828
)

0 commit comments

Comments
 (0)