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.
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.
A light weight MultiThreadedEventLoopGroup and NIOThreadPool, without any NIOPosix dependency. Powered by Swift Concurrency.
Provides a drop-in replacement for MultiThreadedEventLoopGroup and NIOThreadPool usages in places where NIOPosix is currently the only solution.
NOTE: RxSwift is a very difficult dependency to compile to wasm, due to extensive GCD usage. With the new swift-dispatch-async repo, we're able to create a functional build. But it only works in single-threaded wasm environments (the normal environment for wasm).
Contributions to BridgeJS plugin that provides easy interoperability between Swift and JavaScript/TypeScript:
Functional:
Minor improvements:
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.
import Dispatchin Swift WebAssembly builds.See feat: Initial implementation of many GCD API's using Swift Concurrency swift-dispatch-async#1
nio-async-runtime
A light weight MultiThreadedEventLoopGroup and NIOThreadPool, without any NIOPosix dependency. Powered by Swift Concurrency.
Provides a drop-in replacement for
MultiThreadedEventLoopGroupandNIOThreadPoolusages in places where NIOPosix is currently the only solution.DataLoader
sql-kit
swift-log
swift-distributed-tracing
async-kit
swift-metrics
swift-async-algorithms
swift-nio
EventLoopFutureTestto Swift Testing: test: Port EventLoopFutureTest to Swift Testing. apple/swift-nio#3491NIOThreadPoolTestto Swift Testing: test: Port NIOThreadPoolTest to Swift Testing. apple/swift-nio#3490sqlite-kit
sqlite-nio
RxSwift
NOTE: RxSwift is a very difficult dependency to compile to wasm, due to extensive GCD usage. With the new swift-dispatch-async repo, we're able to create a functional build. But it only works in single-threaded wasm environments (the normal environment for wasm).
JavaScriptKit
Contributions to BridgeJS plugin that provides easy interoperability between Swift and JavaScript/TypeScript:
Functional:
protocolsupport #460 #456enums support #436 #418 #455static/classproperties & functions #448 -Optionalsupport #444 -namespace#405closuresupportMinor improvements: