Online Swift Playground

Overview

SwiftPlayground.run

Platform Twitter

Online Swift Playground. Implemented in Swift.

TBA. Checkout http://SwiftPlayground.run

SwiftPlayground.run

Installation & Run

$ git clone https://github.com/krzyzanowskim/OnlineSwiftPlayground.git
$ cd OnlineSwiftPlayground
$ ./run.sh

The run.sh script will generate Xcode project (on macOS) and bootstrap the environment. run.sh needs npm to be installed to work properly. Bootstraping involves

  1. Download Swift Toochains supported by the playground
  2. Pre-build support module using the toolchains
  3. Install dependencies
  4. Launches web server on localhost on port 8080

Now you could access playground pointing web browser to 127.0.0.1:8080.

Development

Xcode

Generate Xcode project

$ swift package generate-xcodeproj

React

Web user interface is build with React and webpack.

$ npm run build

Docker

krzyzanowskim/onlineswiftplayground

Download the latest image:

$ docker pull krzyzanowskim/onlineswiftplayground

or build docker image by yourself:

$ git clone https://github.com/krzyzanowskim/OnlineSwiftPlayground.git
$ cd OnlineSwiftPlayground
$ docker build . -t krzyzanowskim/onlineswiftplayground

then run container:

$ docker run -d -p 8080:8080 --name onlineswiftplayground -t krzyzanowskim/onlineswiftplayground

and wait until docker container is up (usually several seconds).

Playground is available at http://localhost:8080. If the docker setup uses VirtualBox, the you can get the IP address from docker-machine ip command.

$ open http://$(docker-machine ip):8080

Config

Third party frameworks should be copied to Frameworks directory (Frameworks are for macOS host only)

See config/ for GitHub auth. sample config.

Author

SwiftPlayground.run is owned and maintained by Marcin Krzyzanowski

You can follow me on Twitter at @krzyzanowskim for project updates and releases.

License

Creative Commons Attribution Non Commercial 4.0. See LICENSE file.

Comments
  • Vapor migration

    Vapor migration

    Hello, Marcin 🖖!

    Word has it the OnlinePlayground is still built on top of Kitura but is patiently waiting for someone to migrate it to Vapor. I've noticed a discussion on Twitter but didn't see any follow-up activity - so here I am, opening a midnight PR to make it happen.


    I did my best keeping the PR small -- most of the changes just migrate the code ~1:1 to Vapor's ecosystem.

    Notable changes

    • I migrated the project to Swift 5.7 and didn't see any benefit in keeping older versions around - so it's now the only supported version
    • All static html pages now use templating engine - only assets (images, scripts, ...) are served directly from FS
    • Everything related to building and running code snippets now lives in a dedicated package BuildToolchainEngine

    Missing parts

    ~~A fresh build on my M1 laptop works like a fine wine, but we are still few steps away from a production-ready build.~~

    • ~~I am having hard time building a linux docker image - any help here is more than welcome~~
    • ~~Tests are yet to be migrated~~
    • Shutting down the server (^d) always ends with an error
      • This seems to be an internal Vapor issue when using web sockets - shutting down the server will always result in internal server error
      • Considering it only affects server shutdown, I wouldn't consider it to be a blocker
    opened by josefdolezal 5
  • No browser caching?

    No browser caching?

    It seems on every refresh of the page, the same resources are downloaded over and over again. It would be more efficient to have caching on the client side, hence less CO2 emission.

    opened by OrkhanAlikhanov 4
  • Web http://online.swiftplayground.run/ is not working

    Web http://online.swiftplayground.run/ is not working

    Hi

    the first.... great tool, I use it every time when i need something to check in swift. But now for long time web http://online.swiftplayground.run/ is not working

    Can you please look at it

    Thanks :)

    opened by matopeto 3
  • Running OnlineSwiftPlayground locally - error: no such module 'OnlinePlayground'

    Running OnlineSwiftPlayground locally - error: no such module 'OnlinePlayground'

    I tried to build and run locally. The UI came up fine and the backend started fine as well. I'm running on macOS Catalina, Xcode 11.1. However, when the call eventually lands up at the backend, what I get back in the UI is error: no such module 'OnlinePlayground'. Please see screenshot. Could you please help to shed some light and help me debug this? Screen Shot 2019-10-18 at 4 19 04 PM

    opened by arunkpatra 3
  • Add Swift 5.0 Release support

    Add Swift 5.0 Release support

    Adds support for Swift 5 and defaults the selection to it.

    Building and running Docker commands created and modified 2 files that are not in this pull request. (https://github.com/alvarhansen/OnlineSwiftPlayground/commit/2d182088e230b51ed74cf07a94ed516fbab73481). Should these be included or is it fine for build process to generate them?

    opened by alvarhansen 2
  • Support embedding source in URL

    Support embedding source in URL

    The idea comes from typescript playground. If you open up the following https://www.typescriptlang.org/play/index.html#src=console.log(%22Hello%22)%3B , you'll see that the source is console.log("Hello"); which was embedded in hash as #src=conso..... So, you get point.

    This way it would be really easy to share some runnable snippets to online.swiftplayground.run. Including the swift version as well it would be something like this: http://online.swiftplayground.run/#v=4.2&src=print(%22Hello%22)

    A bit related to #5

    opened by OrkhanAlikhanov 2
  • Add URL parameter for fetching source code from remote URL

    Add URL parameter for fetching source code from remote URL

    Moves hello world example code to main. This helps make it bit more clear where the editor default value comes from.

    Example usage: http://online.swiftplayground.run/?sourceURL=https://gist.githubusercontent.com/krzyzanowskim/cbe46184e15c7074eac05e37d219b12e/raw/f64acf70d9f7a6fddc0c31a2cb2ead1b003b597f/Array.drop(first:last:).swift

    opened by alvarhansen 2
  • Bump minimist, minimist and mkdirp

    Bump minimist, minimist and mkdirp

    Bumps minimist, minimist and mkdirp. These dependencies needed to be updated together. Updates minimist from 1.2.5 to 1.2.6

    Commits

    Updates minimist from 1.2.0 to 1.2.6

    Commits

    Updates mkdirp from 0.5.1 to 0.5.5

    Commits
    Maintainer changes

    This version was pushed to npm by isaacs, a new releaser for mkdirp since your current version.


    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump postcss and css-loader

    Bump postcss and css-loader

    Bumps postcss to 8.4.16 and updates ancestor dependency css-loader. These dependencies need to be updated together.

    Updates postcss from 5.2.18 to 8.4.16

    Release notes

    Sourced from postcss's releases.

    8.4.16

    • Fixed Root AST migration.

    8.4.15

    • Fixed AST normalization after using custom parser with old PostCSS AST.

    8.4.14

    • Print “old plugin API” warning only if plugin was used (by @​zardoy).

    8.4.13

    8.4.12

    • Fixed package.funding to have same value between all PostCSS packages.

    8.4.11

    • Fixed Declaration#raws.value type.

    8.4.10

    • Fixed package.funding URL format.

    8.4.9

    8.4.8

    • Fixed end position in empty Custom Properties.

    8.4.7

    • Fixed Node#warn() type (by @​ybiquitous).
    • Fixed comment removal in values after ,.

    8.4.6

    • Prevented comment removing when it change meaning of CSS.
    • Fixed parsing space in last semicolon-less CSS Custom Properties.
    • Fixed comment cleaning in CSS Custom Properties with space.
    • Fixed throwing an error on .root access for plugin-less case.

    8.4.5

    • Fixed raws types to make object extendable (by @​43081j).
    • Moved from Yarn 1 to pnpm.

    8.4.4

    • Fixed absolute path in source map on zero plugins mode.

    8.4.3

    • Fixed this.css.replace is not a function error.

    8.4.2

    • Fixed previous source map support in zero plugins mode.

    ... (truncated)

    Changelog

    Sourced from postcss's changelog.

    8.4.16

    • Fixed Root AST migration.

    8.4.15

    • Fixed AST normalization after using custom parser with old PostCSS AST.

    8.4.14

    • Print “old plugin API” warning only if plugin was used (by @​zardoy).

    8.4.13

    • Fixed append() error after using .parent (by Jordan Pittman).

    8.4.12

    • Fixed package.funding to have same value between all PostCSS packages.

    8.4.11

    • Fixed Declaration#raws.value type.

    8.4.10

    • Fixed package.funding URL format.

    8.4.9

    • Fixed package.funding (by Álvaro Mondéjar).

    8.4.8

    • Fixed end position in empty Custom Properties.

    8.4.7

    • Fixed Node#warn() type (by Masafumi Koba).
    • Fixed comment removal in values after ,.

    8.4.6

    • Prevented comment removing when it change meaning of CSS.
    • Fixed parsing space in last semicolon-less CSS Custom Properties.
    • Fixed comment cleaning in CSS Custom Properties with space.
    • Fixed throwing an error on .root access for plugin-less case.

    8.4.5

    • Fixed raws types to make object extendable (by James Garbutt).
    • Moved from Yarn 1 to pnpm.

    8.4.4

    • Fixed absolute path in source map on zero plugins mode.

    8.4.3

    • Fixed this.css.replace is not a function error.

    8.4.2

    • Fixed previous source map support in zero plugins mode.

    ... (truncated)

    Commits

    Updates css-loader from 0.28.11 to 6.7.1

    Release notes

    Sourced from css-loader's releases.

    v6.7.1

    6.7.1 (2022-03-08)

    Bug Fixes

    v6.7.0

    6.7.0 (2022-03-04)

    Features

    v6.6.0

    6.6.0 (2022-02-02)

    Features

    • added the hashStrategy option (ca4abce)

    v6.5.1

    6.5.1 (2021-11-03)

    Bug Fixes

    • regression with unicode characters in locals (b7a8441)
    • runtime path generation (#1393) (feafea8)

    v6.5.0

    6.5.0 (2021-10-26)

    Features

    • support absolute URL in url() when experiments.buildHttp enabled (#1389) (8946be4)

    Bug Fixes

    • respect nosources in the devtool option (c60eff2)

    v6.4.0

    6.4.0 (2021-10-09)

    ... (truncated)

    Changelog

    Sourced from css-loader's changelog.

    6.7.1 (2022-03-08)

    Bug Fixes

    6.7.0 (2022-03-04)

    Features

    6.6.0 (2022-02-02)

    Features

    • added the hashStrategy option (ca4abce)

    6.5.1 (2021-11-03)

    Bug Fixes

    • regression with unicode characters in locals (b7a8441)
    • runtime path generation (#1393) (feafea8)

    6.5.0 (2021-10-26)

    Features

    • support absolute URL in url() when experiments.buildHttp enabled (#1389) (8946be4)

    Bug Fixes

    • respect nosources in the devtool option (c60eff2)

    6.4.0 (2021-10-09)

    Features

    • generate more collision resistant for locals (c7db752)

    ... (truncated)

    Commits
    Maintainer changes

    This version was pushed to npm by evilebottnawi, a new releaser for css-loader since your current version.


    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump terser from 4.8.0 to 4.8.1

    Bump terser from 4.8.0 to 4.8.1

    Bumps terser from 4.8.0 to 4.8.1.

    Changelog

    Sourced from terser's changelog.

    v4.8.1 (backport)

    • Security fix for RegExps that should not be evaluated (regexp DDOS)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump ajv from 6.10.0 to 6.12.6

    Bump ajv from 6.10.0 to 6.12.6

    Bumps ajv from 6.10.0 to 6.12.6.

    Release notes

    Sourced from ajv's releases.

    v6.12.6

    Fix performance issue of "url" format.

    v6.12.5

    Fix uri scheme validation (@​ChALkeR). Fix boolean schemas with strictKeywords option (#1270)

    v6.12.4

    Fix: coercion of one-item arrays to scalar that should fail validation (failing example).

    v6.12.3

    Pass schema object to processCode function Option for strictNumbers (@​issacgerges, #1128) Fixed vulnerability related to untrusted schemas (CVE-2020-15366)

    v6.12.2

    Removed post-install script

    v6.12.1

    Docs and dependency updates

    v6.12.0

    Improved hostname validation (@​sambauers, #1143) Option keywords to add custom keywords (@​franciscomorais, #1137) Types fixes (@​boenrobot, @​MattiAstedrone) Docs:

    v6.11.0

    Time formats support two digit and colon-less variants of timezone offset (#1061 , @​cjpillsbury) Docs: RegExp related security considerations Tests: Disabled failing typescript test

    v6.10.2

    Fix: the unknown keywords were ignored with the option strictKeywords: true (instead of failing compilation) in some sub-schemas (e.g. anyOf), when the sub-schema didn't have known keywords.

    v6.10.1

    Fix types Fix addSchema (#1001) Update dependencies

    Commits
    • fe59143 6.12.6
    • d580d3e Merge pull request #1298 from ajv-validator/fix-url
    • fd36389 fix: regular expression for "url" format
    • 490e34c docs: link to v7-beta branch
    • 9cd93a1 docs: note about v7 in readme
    • 877d286 Merge pull request #1262 from b4h0-c4t/refactor-opt-object-type
    • f1c8e45 6.12.5
    • 764035e Merge branch 'ChALkeR-chalker/fix-comma'
    • 3798160 Merge branch 'chalker/fix-comma' of git://github.com/ChALkeR/ajv into ChALkeR...
    • a3c7eba Merge branch 'refactor-opt-object-type' of github.com:b4h0-c4t/ajv into refac...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Server hangs on macOS after a while

    Server hangs on macOS after a while

    I've noticed the server stop responding after some time (usually ~2 days) and can't properly restart it. Not sure what the NIO is doing but I have to reboot (or logout) the user to unbind. It's weird. Does it ring any bell @josefdolezal?

    Launched as

    .build/swift-5.7-RELEASE/x86_64-apple-macosx/release/PlaygroundServer serve --hostname 0.0.0.0
    

    It may, or may not be related to https://github.com/vapor/vapor/issues/2502

    opened by krzyzanowskim 8
  • Draft: Swift version management, Docker multi-stage build

    Draft: Swift version management, Docker multi-stage build

    While implementing #38, I sometime struggled with steps necessary to make the app build. I'd like to pitch developer experience improvement using swiftenv for toolchain management.


    The problem

    The current toolchain management is hard to understand and error-prone when managing multiple versions. The configuration of supported swift versions is spread across multiple places (build scripts, Vapor app, frontend and Docker) making maintenance real challenge.

    The solution

    • Offload swift toolchain management to swiftenv
    • Use installed toolchains (swiftenv versions) as the source of truth for BE and FE (using new /api/versions endpoint)
    • Drop per-toolchain OnlinePlayground in favour of Swift 5 ABI (build once, link everywhere™️)
    • (Unrelated) Use slim container for app deployment
      • Uses Docker multi-stage build (stripping final image from system swift version, node, ..)

    Let me know if it sounds interesting to you and we can coordinate to finish this PR.

    opened by josefdolezal 0
  • Can't scroll in code window and output window

    Can't scroll in code window and output window

    Sometimes scrolling within the code window and output window does not work properly.

    This is a screenrecording of the issue in the output window, couldn't replicate again the code window issue.

    ezgif com-video-to-gif (5)

    Using Chrome Version 81.0.4044.129 (Official Build) (64-bit) on MacOS. Code wrote in the Code Window to reproduce the issue in the Output Window:

    import Foundation
    
    class Adapter: NSObject {
        static var lat: Int = {
            // some calculations
            print("lat")
            return 1
        }()
    }
    
    print(Adapter.lat)
    print(Adapter.lat)
    
    class Adapter2: NSObject {
        static var width: Int {
            // some calculations
            print("width")
            return 1
        }
    }
    
    print(Adapter2.width)
    print(Adapter2.width)
    
    opened by denismullaraj 2
  • Create session if sourceURL is present

    Create session if sourceURL is present

    1. Open http://online.swiftplayground.run/
    2. Click Sign out
    3. Try to use the link with ?sourceURL= (or just use an incognito session for the link)

    Expected: Playground with code.

    Actual: Page with Let's play button.

    opened by agentcooper 0
Releases(1.0.0)
Owner
Marcin Krzyzanowski
Passionate about the open source & developer productivity. You can follow me on Twitter @krzyzanowskim
Marcin Krzyzanowski
SwiftExtensionsPlayground - This playground includes some extensions that I like to use

This playground includes some extensions that I like to use. You can find exampl

Fırat Yenidünya 0 Jan 6, 2022
BCSwiftTor - Opinionated pure Swift controller for Tor, including full support for Swift 5.5 and Swift Concurrency

BCSwiftTor Opinionated pure Swift controller for Tor, including full support for

Blockchain Commons, LLC — A “not-for-profit” benefit corporation 4 Oct 6, 2022
Swift Markdown is a Swift package for parsing, building, editing, and analyzing Markdown documents.

Swift Markdown is a Swift package for parsing, building, editing, and analyzing Markdown documents.

Apple 2k Dec 28, 2022
Swift-DocC is a documentation compiler for Swift frameworks and packages aimed at making it easy to write and publish great developer documentation.

Swift-DocC is a documentation compiler for Swift frameworks and packages aimed at making it easy to write and publish great developer docum

Apple 833 Jan 3, 2023
Cross-Platform, Protocol-Oriented Programming base library to complement the Swift Standard Library. (Pure Swift, Supports Linux)

SwiftFoundation Cross-Platform, Protocol-Oriented Programming base library to complement the Swift Standard Library. Goals Provide a cross-platform in

null 620 Oct 11, 2022
Swift - ✏️Swift 공부 저장소✏️

Swift 스위프트의 기초 1. Swift의 기본 2. 변수와 상수 [3. 데이터 타입 기본] [4. 데이터 타입 고급] 5. 연산자 6. 흐름 제어 7. 함수 8. 옵셔널 객체지향 프로그래밍과 스위프트 9. 구조체와 클래스 10. 프로퍼티와 메서드 11. 인스턴스 생

Jiwon 0 Mar 9, 2022
Swift-ndi - Swift wrapper around NewTek's NDI SDK

swift-ndi Swift wrapper around NewTek's NDI SDK. Make sure you extracted latest

Alessio Nossa 12 Dec 29, 2022
__.swift is a port of Underscore.js to Swift.

__.swift Now, __.swift is version 0.2.0! With the chain of methods, __.swift became more flexible and extensible. Documentation: http://lotz84.github.

Tatsuya Hirose 86 Jun 29, 2022
SNTabBarDemo-Swift - Cool TabBar With Swift

SNTabBarDemo-Swift Cool TabBar How To Use // MARK: - setup private func setu

iAnchor 3 Sep 29, 2022
Swift-when - Expression switch support in Swift

Swift When - supporting switch expressions in Swift! What is it? Basically, it a

Gordan Glavaš 7 Nov 24, 2022
Swift-compute-runtime - Swift runtime for Fastly Compute@Edge

swift-compute-runtime Swift runtime for Fastly Compute@Edge Getting Started Crea

Andrew Barba 57 Dec 24, 2022
Swift-HorizontalPickerView - Customizable horizontal picker view component written in Swift for UIKit/iOS

Horizontal Picker View Customizable horizontal picker view component written in

Afraz Siddiqui 8 Aug 1, 2022
swift-highlight a pure-Swift data structure library designed for server applications that need to store a lot of styled text

swift-highlight is a pure-Swift data structure library designed for server applications that need to store a lot of styled text. The Highlight module is memory-efficient and uses slab allocations and small-string optimizations to pack large amounts of styled text into a small amount of memory, while still supporting efficient traversal through the Sequence protocol.

kelvin 4 Aug 14, 2022
Sovran-Swift: Small, efficient, easy. State Management for Swift

Sovran-Swift: Small, efficient, easy. State Management for Swift

Segment 5 Jan 3, 2023
Approximate is a Swift package that provides implementations of floating point comparisons for the Swift ecosystem

Approximate Approximate floating point equality comparisons for the Swift Programming Language. Introduction Approximate is a Swift package that provi

Christopher Blanchard 1 Jun 1, 2022
A Swift app, named 'iPose', for iPhone's pose measurement based on Swift.

iPhone's pose measurement based on Swift. This is a Swift app, named 'iPose', for iPhone's pose measurement based on Swift. This is a side project to

Ghasem Abdi 3 Jul 26, 2022
Swift Package Manager plugin which runs ActionBuilder to create a Github Actions workflow for a swift package.

ActionBuilderPlugin A Swift Package Manager command which builds a Github Actions workflow for the current package. By default the workflow file will

Elegant Chaos 4 Jul 20, 2022
Swift Server Implementation - RESTful APIs, AWS Lambda Serverless For Swift Runtime amazonlinux: AWS Lambda + API Gateway

Swift Server Implementation - RESTful APIs, AWS Lambda Serverless For Swift Runtime amazonlinux: AWS Lambda + API Gateway deployed on Graviton arm64 build swift:5.6.2-amazonlinux2-docker image

Furqan 2 Aug 16, 2022
A simple swift package that provides a Swift Concurrency equivalent to `@Published`.

AsyncValue This is a simple package that provides a convenience property wrapper around AsyncStream that behaves almost identically to @Published. Ins

Brent Mifsud 33 Oct 3, 2022