swift-foundation
hummingbird
swift-foundation | hummingbird | |
---|---|---|
8 | 9 | |
2,200 | 777 | |
3.0% | 10.0% | |
9.5 | 9.3 | |
3 days ago | 1 day ago | |
Swift | Swift | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
swift-foundation
-
Swift for C++ Practitioners, Part 1: Intro and Value Types
How recent were your experiences?
The server-side Swift ecosystem has matured over the past few years, with specific attention from teams at Apple.
For example, regarding JSON, there has been a rewrite of the JSON encoder/decoder that results in a 200% - 500% speed up in deserialization! You can read about the (still ongoing) improvements to Foundation at https://github.com/apple/swift-foundation
Regarding logging, Apple has been pushing the development of community around the swift-log package at https://github.com/apple/swift-log. Maybe you’ve seen this, but just wanted to share!
One last thing: the Swift VSCode extension is actually really good! Not sure when you used it last, but I’ve been using it on a regular basis and it’s been great — and is only getting better. Here’s the link to the extension if you’re curious: https://marketplace.visualstudio.com/items?itemName=sswg.swi...
It’s true that Swift has had its various issues, but there’s a very real push by the core team and community to bring the language to new heights and places. Cross-platform support is getting better and better (check out what The Browser Company is doing with Swift on Windows) and a big source of performance bottlenecks are being addressed with the development of non-copyable and non-escaping (Rust-like move-only types)!
Sorry that’s a lot, but I just wanted to point out that there’s a lot of hope in Swift and really interesting things are happening for the project!
-
An aborted experiment with server Swift
> The linux version of swift replicates a large number of native mac frameworks using whatever mix of C and C++ gets the job done.
Note that this is changing, on Darwin and Linux alike. Foundation.framework is transitioning from being a Swift interface over a C / Objective-C implementation to an Objective-C interface over a Swift implementation.
https://github.com/apple/swift-foundation
-
Apple's use of Swift and SwiftUI in iOS 17
Something not noted in the article is that any binary which links Foundation, even if otherwise written entirely in Obj-C, now uses Swift. This is due to the Foundation Swift rewrite effort (https://github.com/apple/swift-foundation) that is rewriting Foundation is Swift while maintaining Obj-C ABI compatibility.
-
I would like to know the progress of full Swift rewrite of the Foundation Framework
The github page is here. https://github.com/apple/swift-foundation
- Apple is rewriting Foundation in Swift
hummingbird
-
An aborted experiment with server Swift
Such a shame. Swift has many beautiful language features.
I give swift a try every once in a while.
Problems of my last attempt:
- The Swift REPL (lldb to be precise) depends on libpython-dev (v3.8). WSL (ubuntu 22.04) comes with 2.7 and 3.10, so the lldb dependency depends on an old python version. The fix was to copy the 3.10 binary to the directory where lldb expects it, and rename it to libpython3.8.so. It seems that it's backwards compatible so it worked on my machine.
- I tried to compile and statically link a hummingbird (web framework, more light weight than vapot, https://github.com/hummingbird-project/hummingbird) hello-world example. I had a liking error. Luckilly someone in the swift forums helped me. The problem was that my package.swift file had the "-static-stdlib" flag only as a swiftSettings. It needed to be also a linkerSetting.
In the end I was able to build my example. But at this point I already spent multiple days debugging problems that are unrelated to my applicationn or the Swift language.
It's a shame because I see its potential. Fixing the (linux/windows) tooling problems would probably only take "some" developers. Apple has near infinite money and could sponsor them if they wanted to., but they gain little by it. Besides them, not many are invested in it.
- What to choose next? My company wants me to learn new stack. iOS Dev with 8 years of exp.
-
Swift outside the Apple ecosystem
Also look at: Hummingbird https://github.com/hummingbird-project/hummingbird Smoke https://github.com/amzn/smoke-framework Swift NIO https://github.com/apple/swift-nio
- Hummingbird, the Swift server framework, hits v1.0
-
What is the backend of apps?
Hummingbird is probably the fastest/lightest backend. You can switch to it after mastering Vapor's Fluent ORM.
-
Suggestions for a back-end service
I'm using Hummingbird hooked up to MongoDB with Vapor Fluent. I declared input/output structs that I share to the client code via a library. All my core business logic sits on the server. I can cache the structs client side on sqlite.
-
vapor and react integration
If you don't need all the features of vapor, you can just use Fluent's ORM and Hummingbird. The documentation and code examples are more up to date.
-
Alchemy - Elegant, batteries included web framework for Swift!
Another Devil's Advocate: Why would I choose it over Hummingbird? https://github.com/hummingbird-project/hummingbird
What are some alternatives?
NoMansCanvas - Jyväskylä University project - A clone of /r/place
Vapor - 💧 A server-side Swift HTTP web framework.
swift - The Swift Programming Language
async-http-client - HTTP client library built on SwiftNIO
jwt-kit - 🔑 JSON Web Token (JWT) signing and verification (HMAC, ECDSA, EdDSA, RSA, PSS) with support for JWS and JWK
alchemy - Modern, batteries included web framework for Swift.
nmc2 - Lightweight, high-performance WebSocket server for No Man's Canvas, the pixel drawing game.
swift-collections - Commonly used data structures for Swift
smoke-framework - A light-weight server-side service framework written in the Swift programming language.
APNSwift - 📱HTTP/2 Apple Push Notification Service built with swift - send push notifications to iOS, iPadOS, tvOS, macOS, watchOS, visionOS, and Safari!
Alchemy