awesome-system-swift icon indicating copy to clipboard operation
awesome-system-swift copied to clipboard

Good finds

Open felix91gr opened this issue 6 years ago • 3 comments

Here I'm gonna put the libraries that seem to be:

  • Well supported
  • Well tested
  • Cross-platform
  • Production-ready: developed enough to be used by third parties. For example, CompilerKit fits all of the above but it's not yet finished, and thus can't be put on the same list as everything else.

felix91gr avatar Apr 22 '18 04:04 felix91gr

Command Line UI tools

Workflow-enabler frameworks

  • Quick: a behavior driven development framework.
  • Nimble: matcher and testing counterpart for Quick.
  • Spectre: a BDD framework and test runner for Swift.
  • ReactiveSwift: Streams of values over time. I don't know what that is exactly, but it seems to be very useful. It has like 200 contributors as well.
  • PromiseKit: async++
  • Deferred: a "futures library"
  • AsyncNinja: primitives for enabling concurrency and reactive programming.
  • Result: microframework for modeling and handling errors in code.

System libraries

  • Compression: Compression algorithms
  • Perfect-Zip: utility for Zipping files
  • RandomKit: this one's going to be obsolete after the "Random Unification" proposal gets rolled out. But until then, it's probably very useful.

Signal and image processing

Data Structures

String Processing

  • Guitar: string and regex library written in Swift.

felix91gr avatar Apr 22 '18 04:04 felix91gr

If we add ReactiveSwift (spoiler: we should) we should add RxSwift, too. Both are just different flavors of the same concept.

You can see both as sequences that may be async. You can map, filter and flatMap on them. Plus they have some elements of the observer pattern and allow you to have side effects.

Additionally: Both PathKit and Files provide a better API to handle paths and their contents.

vknabel avatar Apr 22 '18 07:04 vknabel

Both PathKit and Files provide a better API to handle paths and their contents.

Indeed! I'd forgotten about them. They look pretty great! Files passes every test on my side, and I've been working with kylef to update which tests that are failing can be passed on PathKit

It looks like what PathKit needs is just a little more love from the Foundation team to get 100% passing :)

If we add ReactiveSwift (spoiler: we should) we should add RxSwift, too.

I tend to agree. I downloaded RxSwift as well, but couldn't make it pass its tests. I think it depends on Darwin directly. I'll post an issue to them to see if they intend to support Linux and if what they're importing from Darwin can be replaced with something from Foundation :)

You can see both as sequences that may be async. You can map, filter and flatMap on them. Plus they have some elements of the observer pattern and allow you to have side effects.

I learned part of what I think was Reactive Programming with C#. You had events (e.g. a UI button press or a socket recieving new info) to which you could subscribe functions. Then when those events were triggered, all of the functions subscribed to them would activate and recieve the events' predefined parameters as input. This is like that, but more general? Or am I way off?

felix91gr avatar Apr 25 '18 19:04 felix91gr