The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
Almost Strictly Concurrent
2 weeks ago
This enables strict Swift concurrency checks on Swift 5.10 and later.
Most things in Lighter (raw or not) are `Sendable` conceptually since it is all value types and properties are restricted to base types.
The one thing that had to be done is marking `KeyPath`'s on `Sendable` types also `Sendable`. This is key to the non-raw Lighter API. And apparently that will be fixed in Swift 6.
Bugfix: Was encoding `Data` columns as `Date`'s 📅.
E.g.
```sql
CREATE TABLE app (
app_id UUID NOT NULL PRIMARY KEY,
icon Data
)
```
Would turn into
```swift
struct App {
var id : UUID
var icon : Date? // <== instead of `Data` when Foundation is enabled in the generator
}
```
As a follow-up to the excellent [Optimizing SQLite for servers](https://kerkour.com/sqlite-for-servers) article, this release has a more impactful change in that it opens non-readonly transactions in the `IMMEDIATE` mode.
The problem w/ `DEFERRED` transactions is that they don't honour the busy handler, i.e. will fail w/ `SQLITE_BUSY` immediately on upgrades.
As a result, it is more important to explicitly use `readTransaction { tx in }` when only doing reads. Previously w/ `DEFERRED`, one could still use `transaction` w/ read-only behaviour.
The old mode can still be used by specifying the mode manually, e.g. `transaction(mode: .deferrred) { tx in ... }`.
Xcode 15.3 / Swift 5.10 manifest, explicit support for more platforms in that Package.swift.
Finding Nemo
28 weeks ago
Better resource lookup contributed by @micampe. Thanks!
Carriage Returned
31 weeks ago
Fix for Issue #23, thanks go to @finestructure for reporting it. If the SQL to create a database contained carriage returns (CR, `\r`, ASCII 13), Enlighter wouldn't properly generate multiline string literals. This then break Swift compilation.
Fixed. Also converting CRLF to CRs, i.e. no more CRs in produced code.
Binaries Floating
31 weeks ago
This version treats all `Int` types (`Int8`, `UInt32` etc) as SQLite base values, i.e. they can be used in a schema. Also adds support for `Float`.
The `Bool` type can now process TEXT columns in a limited way (but always writes as Int64). It'll match textual bools using the first character (Yes, No, True, False, 0, 1 etc).
Finally, when using a RawRepresentable w/ an unmapped stored value, a proper Error is thrown (vs crashing in a forced unwrap).
Just the regular Package.swift fix as new Swift versions are released.
Fix an Xcode 14.3/Swift 5.8 warning.
This should fix Issue #21, caused by the incorrect Package.swift to be picked up. I.e. make everything working right w/ Xcode 14.3 (aka Swift 5.8).