Noze 0.5.0 - Swift 3 only

Good news everyone! We can finally make a release which leaves Swift 2 behind and works with a Swift 3 on both, macOS and tuxOS. We call that release: 0.5.0.

This removes all the #if swift(>=3) in the source making it much cleaner and straight forward. Another big advantage is that the Linux Swift packages now come with libdispatch included.

There is still a glitch which requires us to use Swift 3.0.0 on macOS and Swift 3.0.1 Preview 2 on tuxOS. We hope that detail gets resolved when Swift 3.0.1 is released.

The issue with Swift 3 on Linux

As mentioned before the libdispatch embedded in the Linux Swift 3.0.0 release contains a crasher bug (SR-2656) and hence can’t be used to run Noze.io on Linux. Good news: SR-2656 has been fixed in Swift 3.0.1 Preview 2! And a cursery check says that everything is working as expected.

Now of course it wouldn’t be Swift 3 if it wouldn’t come with an incompatible change to the language 😬 Please welcome SR-2907. It is a preview release only though, we’ll see whether SR-2907 is fixed for the final 3.0.1.

Summary: Noze.io now works with the Swift 3.0.1 Preview 2 on Linux. For macOS we stick to Xcode 8 (you can’t use Xcode 8.1b2 on macOS!).

Changes in 0.5.0 (from 0.3.1)

  • all modules
    • drop support for Swift 2.x
    • drop support for old libdispatch, use Objective-GCD
    • updates for Swift 3.0.0 final
      • Process is now CommandLine
      • @noreturn is now -> Never
      • .dynamicType is now type(of:)
      • casts are different, withMemoryRebound(to:) and companions
      • @escaping works differently
      • Any vs Any? vs AnyObject
      • first keyword argument
      • XYZLiteralConvertible is now ExpressibleByXYZ
      • OutputStream is now TextOutputStream
      • etc.
  • streams module
    • bugfix(TBD): read() and push can interleave
  • fs module
    • FSWatcher not available anymore on Linux
  • process module
    • drop Linux hack, Linux now has Foundation.ProcessInfo
  • console module
    • use Any? instead of Any for argument values
  • net module
    • ConnectOptions are now CustomStringConvertible
  • connect and express modules
    • use Swift 3.0.1 Preview 2 syntax on Linux
    • use Swift 3.0.0 syntax on macOS
  • express module
    • fixed nil handling in ServerResponse.set(_,_)
  • new modules:
    • crypto module
      • only features the md5 hash and hex digest, see README.md
  • new 3rd party modules:
    • CryptoSwift - just the parts required for MD5

Getting the stuff

Well, as usual, head over to GitHub and checkout the master branch or fetch the 0.5.0 tag. Happy Nozing!

hh

Written on October 11, 2016