profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/gwynne/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Gwynne Raskind gwynne @skelpo Reality hacker, infuriating know-it-all. Official Goddess of Swift on Server. Also Vapor core team. Beware lingering tendrils of dark magic drifting about.

gwynne/EFIFaker 14

Userland fake EFI environment. Very unstable and very incomplete.

compnerd/swift-winmd 9

Windows Metadata Parser in Swift

gwynne/DRAtomicQueue 6

An thread-safe FIFO queue for Objective-C.

gwynne/INISerialization 6

Swift package for INI file reading and writing

gwynne/GrowingTextView 3

An UITextView which grows/shrinks with the text and starts scrolling when the content reaches a certain number of lines. Similar to the one Apple uses in the SMS-app. See blog-post for a small screencast.

gwynne/citrus 2

A fork of SQLIte's Lemon parser generator

gwynne/CDEvents 1

An Objective-C wrapper for Mac OS X’s FSEvents C API.

gwynne/discretional-precision 1

An implementation of an arbitrary-precision integer type and a number of mathematical operations on it

pull request commentvapor/fluent-kit

Set method for group fields + tests

@Joannis I need to look at this implementation more closely in any event, but am interested in your input, specifically re: the test failures for Mongo integration where we're apparently hitting the "didn't fetch or set before accessing" codepath?

JeronimoPaganini

comment created time in 4 hours

push eventvapor/fluent-postgres-driver

Gwynne Raskind

commit sha bb7ebe5cc66e9db360db05ca559524d62cea1e6a

Just some more CI updates. Could do this in my sleep. In fact, I think I am right now.

view details

push time in 5 days

PullRequestReviewEvent

push eventvapor/async-kit

Gwynne Raskind

commit sha 2a198346c4403d6c120a5fe43b70101800c878ff

Add overload of EventLoopFuture.flatMapEach(on:_:) for Void-returning futures, effectively a convenience for EventLoopFuture.andAllSucceed(_:on:). (#81)

view details

push time in 7 days

delete branch vapor/async-kit

delete branch : flatmapeach-returning-void

delete time in 7 days

PR merged vapor/async-kit

Reviewers
Add overload of flatMapEach(on:_:) for Void futures semver-minor

This is effectively a convenience for using EventLoopFuture.andAllSucceed(_:on:).

+35 -3

0 comment

2 changed files

gwynne

pr closed time in 7 days

PR opened vapor/async-kit

Reviewers
Add overload of flatMapEach(on:_:) for Void futures semver-minor

This is effectively a convenience for using EventLoopFuture.andAllSucceed(_:on:).

+35 -3

0 comment

2 changed files

pr created time in 7 days

create barnchvapor/async-kit

branch : flatmapeach-returning-void

created branch time in 7 days

delete branch vapor/fluent-mysql-driver

delete branch : fix-deprecation-warnings

delete time in 7 days

push eventvapor/fluent-mysql-driver

Gwynne Raskind

commit sha 2d1cbddc0a9389b289df2767b4ef11b406740d84

Fix deprecation warnings for TLSConfiguration (#202) * Fix deprecation warnings from NIOSSL; rely on the MySQLNIO dependency to require an appropriate version thereof. * Yet some more CI updates

view details

push time in 7 days

PR merged vapor/fluent-mysql-driver

Reviewers
Fix deprecation warnings for TLSConfiguration enhancement semver-patch

A bit of simple cleanup for the deprecations in NIOSSL.

+54 -11

0 comment

3 changed files

gwynne

pr closed time in 7 days

PR opened vapor/fluent-mysql-driver

Reviewers
Fix deprecation warnings for TLSConfiguration semver-patch

A bit of simple cleanup for the deprecations in NIOSSL.

+54 -11

0 comment

3 changed files

pr created time in 7 days

create barnchvapor/fluent-mysql-driver

branch : fix-deprecation-warnings

created branch time in 7 days

delete branch vapor/async-kit

delete branch : elf-plus-oxford-comma

delete time in 8 days

push eventvapor/async-kit

Gwynne Raskind

commit sha 2e96c906a3e8e36945617a24dafd66c7d1c90b50

Add `strictMap()` (heterogenous many-inputs version of Optional.map()) and `EventLoopFuture.whenTheySucceed()` (heterogenous version of whenAllSucceed()). Overloads taking up to 20 inputs are provided. (#80)

view details

push time in 8 days

PR merged vapor/async-kit

Reviewers
Add `strictMap()` and `EventLoopFuture.whenTheySucceed()` enhancement semver-minor
  • strictMap() is a global function providing the services of Optional.map() for multiple optionals at once: strictMap(a, b, { foo($0, $1) }) is equivalent to (but slightly more efficient than) a.flatMap { a in b.map { b in foo(a, b) } }.

  • EventLoopFuture.whenTheySucceed() provides the "wait for all to succeed or any to fail" semantics of .whenAllSucceed() for a heterogenous set of futures. Or in other words, it's a more-than-two-futures version of .and(): EventLoopFuture.whenTheySucceed(f1, f2, f3) is equivalent to (but much more efficient than) f1.and(f2).and(f3).map { ($0.0, $0.1, $1) }.

+754 -0

1 comment

3 changed files

gwynne

pr closed time in 8 days

PR opened vapor/async-kit

Reviewers
Add `strictMap()` and `EventLoopFuture.whenTheySucceed()` enhancement semver-minor
  • strictMap() is a global function providing the services of Optional.map() for multiple optionals at once: strictMap(a, b, { foo($0, $1) }) is equivalent to (but slightly more efficient than) a.flatMap { a in b.map { b in foo(a, b) } }.

  • EventLoopFuture.whenTheySucceed() provides the "wait for all to succeed or any to fail" semantics of .whenAllSucceed() for a heterogenous set of futures. Or in other words, it's a more-than-two-futures version of .and(): EventLoopFuture.whenTheySucceed(f1, f2, f3) is equivalent to (but much more efficient than) f1.and(f2).and(f3).map { ($0.0, $0.1, $1) }.

+754 -0

0 comment

3 changed files

pr created time in 8 days

push eventvapor/async-kit

Gwynne Raskind

commit sha 50dcfa87af9ccac36839ba35f1dd2fd00f7e57c0

Add `strictMap()` (heterogenous many-inputs version of Optional.map()) and `EventLoopFuture.whenTheySucceed()` (heterogenous version of whenAllSucceed()). Overloads taking up to 20 inputs are provided.

view details

push time in 8 days

create barnchvapor/async-kit

branch : elf-plus-oxford-comma

created branch time in 8 days

pull request commentvapor/mysql-nio

Fix hard crash when describing "zero" datetime

Note - CI failures are a MySQL bug, not a driver issue

gwynne

comment created time in 8 days

push eventvapor/mysql-nio

Gwynne Raskind

commit sha e453cf5537ea897da113df90cca1cf82b50f43ce

Fix hard crash when describing "zero" datetime (#64) * Fix #63: Hard crash in MySQLData.description when a zero-value datetime is received from older MySQL configurations which still do this. Returns a description of the epoch instead. * Use the thread-safe gmtime_r() instead of gmtime() in MySQLTime.init(date:). * Pass a more sensible capacity value to ByteBufferAllocator for SHA digests. * Fix deprecation warnings for TLSConfiguration and declare the explicit dependency on the update NIOSSL version. * Another round of long-overdue CI updates * Don't crash if server capabilities are not available during connection close.

view details

push time in 8 days

delete branch vapor/mysql-nio

delete branch : fix-63-hard-crash-with-zero-time-data

delete time in 8 days

PR merged vapor/mysql-nio

Fix hard crash when describing "zero" datetime semver-patch

Fixes #63.

Also fixes a minor thread-safety issue and clears up deprecation warnings from NIOSSL.

+96 -45

0 comment

9 changed files

gwynne

pr closed time in 8 days

issue closedvapor/mysql-nio

Remove hard crash from `MySQLData` with malformed data

Describe the bug

This section: https://github.com/vapor/mysql-nio/blob/main/Sources/MySQLNIO/MySQLData.swift#L448-L469 causes a hard crash (i.e. bang operator) when there is data that is malformed at the MySQL level. For example, a datetime that is non-nullable defaults to 0000-00-00 00:00:00.000000 which is 1. obviously invalid as a date and 2. causes the description property to crash.

To Reproduce

Do a SELECT from a table with a column with a date value set to 0000-00-00 00:00:00.000000

Expected behavior

It should not crash and ideally log out some kind of an error

Environment

MySQLNIO v 1.3.2

closed time in 8 days

jdmcd

push eventvapor/mysql-nio

Gwynne Raskind

commit sha 44412829a00d456ed43bfd0c52c74b3c2e864fcb

Max out logging level in CI tests, hopefully this won't mask the weird intermittent failures

view details

push time in 8 days

push eventvapor/mysql-nio

Gwynne Raskind

commit sha 98b8230132a91504696a23e763b24122ed71fa58

Comment Windows test workflow out; neat to have, but SPM on Windows appears to be broken again and the workflow never completes.

view details

Gwynne Raskind

commit sha cb75234bc6de1d542090c41bf3dbd06eb4116e25

Don't crash if server capabilities are not available during connection close.

view details

push time in 8 days

push eventvapor/mysql-nio

Gwynne Raskind

commit sha 8c96e444e059ef644c9901e1f6db41da784ac2ac

Add Windows to CI, but allow it to fail since we don't expect this to actually work yet.

view details

push time in 8 days

push eventvapor/mysql-nio

Gwynne Raskind

commit sha 5b97bbe510e6a1e0e5d563c1f47a3d0f1a5816d9

Vars named identically to structs cause trouble before Swift 5.4.

view details

push time in 8 days

push eventvapor/mysql-nio

Gwynne Raskind

commit sha 55710105697d251c96ca86bd34f5d3df7afd24a8

Vars named identically to structs cause trouble before Swift 5.4.

view details

push time in 8 days

push eventvapor/mysql-nio

Gwynne Raskind

commit sha 7ff7d10474ed7b0403f05770d45a9dad0ad58747

Another round of long-overdue CI updates

view details

push time in 8 days