Swift on Raspberry Pi

After the horrible experience just acquiring, installing, & configuring a basic Raspberry Pi, I was anticipating much effort – likely ending in failure – to get Swift working. I was pleasantly surprised. There are multiple ways to do it, apparently. One would think that there’d be the correct & working packages already available through apt, … Read more

‘Fake error’ about immutable values when using popFirst() on Array

It’s been a while since I wrote any meaningful Swift.  How I didn’t miss the Swift compiler’s bullshit error messages. var someArray = [“Foo”, “Bar”] if let foo = someArray.popFirst() {     print(“Who cares, we never get here anyway.”) } That yields, on the popFirst() method:  “Cannot use mutating member on immutable value: ‘someArray’ is … Read more

Undocumented Swift conditional compilation macros

swift/lib/Basic/LangOptions.cpp has most of the conditional compilation macros (called “Language Options” in the compiler internally).  Notably the swift() version macro is absent, and doesn’t seem to be defined anywhere… At time of writing the two undocumented additions, to the os(), arch(), and swift() set, are _endian() and _runtime(). I have no idea if they’re useful … Read more

#if DEBUG in Swift

Sigh. The Swift team give an impeccable impression of a group of people who’ve never actually tried to use Swift. An incredibly basic compiler task is to provide code a way to distinguish between debug & release builds, in order that it can behave accordingly (e.g. change the default logging verbosity, change asserts from fatal to … Read more

Stupid Swift error message #a bajillion and one

Input code: let componentsOfPotentialInterest = [Calendar.Component: ((Int) -> String)]( .day: { String($0 + 1) }, ) Push button.  Expect results (or at least bacon).  Get: Foo.swift:76:21: error: expected ‘,’ separator .day: { String($0 + 1) }, ^ , Foo.swift:76:21: error: expected expression in list of expressions .day: { String($0 + 1) }, ^ Foo.swift:76:21: error: … Read more