-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Who is PassiveLogic?
PassiveLogic is a company creating autonomous building control solutions to pave the way for a new generation of high-efficiency building technology.
We ❤ Swift!
What is PassiveLogic doing?
We're actively working to use our existing Swift codebase in our web apps, using Swift SDK for WebAssembly.
To enable using Swift for WebAssembly with large-scale web apps, we're contributing support for Swift WebAssembly compilation to a wide range of open source repositories. These contributions work together to enable common web app functionality, such as connecting to servers using websockets, making HTTP requests, creating SQLite databases, and much more.
Active Contributions
Following are active contributions to enable using swift for large-scale web apps. This is a working list, and will be updated over time.
DispatchAsync
A new lite drop-in replacement of GCD, implemented using SwiftConcurrency. GCD is not currently included in the Swift SDK for WebAssembly. DispatchAsync enables compiling Swift code that uses GCD, but using a Swift Concurrency backing instead of the unsupported GCD library.
- Create working proof of concept private using our own codebase to dog-food the concept.
- Create initial open source repository (in progress). This repository will be a temporary stepping stone towards hopeful integration in libDispatch or some other place in the Swift toolchain that enables
import Dispatch
in Swift WebAssembly builds.
See feat: Initial implementation of many GCD API's using Swift Concurrency dispatch-async#1 - Add initial wave a unit tests, some of which are ported from libDispatch. See feat: Add additional tests for DispatchAsync dispatch-async#2
- Migrate DispatchAsync into the Swift SDK for WebAssembly
DataLoader
- Private in-house wasm proof of concept
- Create PR to enable compiling to wasm: Feat: Add Swift WebAssembly support to DataLoader GraphQLSwift/DataLoader#23
- Create PR to add wasm compilation into CI: feat: Add swift wasm CI targets to DataLoader GraphQLSwift/DataLoader#26 and ci: Remove swift 5.8 and 5.9 builds from test matrix. Add Swift 6.1. GraphQLSwift/ci#3
sql-kit
- Private in-house wasm proof of concept
- Create PR to enable compiling to wasm: Resolve issues breaking Swift Wasm builds for sql-kit vapor/sql-kit#190
- Create PR to add wasm compilation into CI. See feat: Adds opt-in only wasm target to vapor CI workflows vapor/ci#54 and ci: Enables opt-in wasm CI build for sql-kit vapor/sql-kit#191
swift-distributed-tracing
- Private in-house wasm proof of concept
- Create PR to enable compiling to wasm: feat: Add Swift WebAssembly compilation support to swift-distributed-tracing apple/swift-distributed-tracing#174
- Create PR to add wasm compilation into CI: ci: Add swift wasm builds to CI to prevent future breakages to wasm builds apple/swift-distributed-tracing#175
async-kit
- Private in-house wasm proof of concept
- Create PR to enable compiling to wasm
- Create PR to add wasm compilation into CI
swift-metrics
- Private in-house wasm proof of concept
- Create PR to enable compiling to wasm
- Create PR to add wasm compilation into CI
swift-nio
- Private in-house wasm proof of concept
- Fix NIOCore build for wasip1: fix: Fix NIOCore build for wasm targets apple/swift-nio#3156
- Fix NIOCore build for wasip1 (again): fix: Fix compiler error found on latest main that breaks wasip1 (wasm) compilation apple/swift-nio#3271
- Create PR to add NIOAsyncIO (upcoming new module that is under the wraps right now pending preparation efforts)
- Create PR to add wasm compilation into CI
sqlite-kit
- Private in-house wasm proof of concept
- Create PR to enable compiling to wasm
- Create PR to add wasm compilation into CI
sqlite-nio
- Private in-house wasm proof of concept
- Create PR to enable compiling to wasm
- Create PR to add wasm compilation into CI
RxSwift
NOTE: RxSwift is a very difficult dependency to compile to wasm, due to extensive GCD usage. We have a proof of concept working, but may opt to elide this dependency instead.
- Private in-house wasm proof of concept
- Create PR to enable compiling to wasm
- Create PR to add wasm compilation into CI