Code Monkey home page Code Monkey logo

combinex's Introduction

CombineX(中文)

CombineX is an open source implementation for Apple's Combine specs. It allows you to use Combine's API right now, without the need for macOS 10.15 or iOS 13, without the need for the Apple platform.

Goal

CombineX will try to provide:

  1. ~100% consistent behavior with the Apple Combine.
  2. More extensions Combine don't have but are very useful. You can find them [here] (https://github.com/CombineXCommunity).

Status

Compatible with Combine beta 5.

A new beta version will be released every Monday.

Notice

This library is still in beta testing, Please do not use it in production!

🐱

Try it out

Swift Package Manager

In your Package.swift:

pkg.dependencies.append(
    .package(url: "https://github.com/luoxiu/CombineX", ._branchItem("master"))
)

Related

  • CombineX.Foundation: provides all Foundation extension implementations, built on top of CombineX, such as URLSession, NotificationCenter, Timer, etc.
  • CombineX.Compatible: provides CombineX API Shims, help you resolve migration concerns that may arise.

Contribute

Welcome! CombineX is always looking for collaborators!

Now, what CombineX need most are testing. You can:

  1. Add more functional tests.
  2. Make sure Combine can pass it.
  3. If CombineX can not pass it, open an issue, or fix it directly!

Flow

Since some people may not have macOS 10.15 beta installed, the recommended contributing way is:

  1. Fork the project.
  2. Open Specs/Specs.xcworkspace, make your changes under CombineX/CombineX folder.
  3. All tests go CombineXTests/CombineXTests folder. Make sure both scheme Specs and scheme CombineX pass the tests you wrote.

Bugs in Combine

Since Combine is still in beta, it is inevitable that it has bugs. If you find something strange, open an issue to discuss with us, or leave a // FIXME: annotation. In fact, there are already some FIXME annotations in CombineX.

Other

Why write this?

  1. Combine has a strict system version limit(macOS 10.15+, iOS 13+). This means that even if your app only needs to support two forward versions, you have to wait for almost three years.
  2. Combine is closed source. It is the same as UIKit, MapKit, updating with the update of xcode. When you encounter a bug, you must have encountered a system library bug before, the debugging is very annoying. And the more annoying is the slow official response, usually you can only wait for the next regular update of xcode.
  3. Combine is Apple platform only and doesn't support Linux.

combinex's People

Contributors

luoxiu avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.