diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a662656..9837c29d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ # cmake_minimum_required(VERSION 3.8) # c++ 17 -project(coroutine LANGUAGES CXX VERSION 1.4.2) +project(coroutine LANGUAGES CXX VERSION 1.4.3) # import cmake code snippets. see `cmake/` list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) diff --git a/ReadMe.md b/ReadMe.md index 356780bf..66775bc2 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -16,14 +16,12 @@ C++ Coroutine in Action. In that perspective, the library will be maintained as small as possible. Have fun with them. **And try your own coroutines !** -### Signpost +## Developer Note * Start with the [wiki](https://github.com/luncliff/coroutine/wiki). You will visit the [test/](./test/) and [interface/](./interface/coroutine) folder while reading the docs. * This repository has some custom implementation for the C++ Coroutine spec in the [``](./interface/coroutine/frame.h) -## Developer Note - ### Architecture **This library is for x64**. @@ -50,7 +48,7 @@ If there is a collision(build issue), please make an issue in this repo so I can #include ``` -Generator and async generator +Generator and async generator. Notice that the async generator is experimental. If you are curious with the concept, reference [the kirkshoop's repo](https://github.com/kirkshoop/await). ```c++ #include // enumerable & sequence @@ -59,20 +57,23 @@ Generator and async generator Utility types are in the following headers ```c++ -#include // return type examples for convenience -#include // concurrency utilities over system API +#include // return type for resumable functions +#include // concurrency utilities ``` -Go language style channel to deliver data between coroutines. Supports awaitable read/write and select operation are possible. But it is slightly differnt from that of Go language. +Go language style channel to deliver data between coroutines. It Supports awaitable read/write and select operation are possible. + +But it is slightly differnt from that of the Go language because we don't have a built-in scheduler in C++. Furthermore Goroutine is quite different from the C++ coroutine. +It may not a necessary feature since there are so much of the channel implementation, but I'm sure **breakpointing** this one will **train** you. ```c++ -#include // channel +#include // channel with Lockable ``` -Network Asnyc I/O and some helper functions are placed in one header. +Awaitable socket operations using system API are also available. I used `epoll`, `kqueue` and Overlapped I/O of the Windows. ```c++ -#include // async i/o for sockets +#include // Awaitable I/O operations and some helpers ``` ## How To @@ -87,7 +88,7 @@ Create an issue if you think another configuration is required. * Visual Studio 2017 (CMake) * Ubuntu 16.04 + Clang 6.0 * Mac OS + AppleClang - * Windows + Clang-cl + * Windows + Clang-cl (LLVM 8) * [`.travis.yml`](./.travis.yml) * Mac OS + AppleClang * Ubuntu 16.04 + Clang 7 diff --git a/appveyor.yml b/appveyor.yml index 5ce6f2b2..302cae30 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -65,7 +65,8 @@ for: compiler: clang install: - ps: Write-Host $env:APPVEYOR_BUILD_FOLDER $env:PLATFORM $env:CONFIGURATION - - ps: choco install --no-progress ninja # Download Ninja with chocolaty package manager + - ps: choco install --yes --no-progress ninja # Download Ninja with chocolaty package manager + - ps: choco install --force --yes --no-progress cmake - ps: choco info llvm # LLVM is already installed. So just show the version info before_build: - ps: clang-cl --version # <-- cl.exe for clang diff --git a/build.gradle b/build.gradle index 881e92e5..71433833 100644 --- a/build.gradle +++ b/build.gradle @@ -44,8 +44,8 @@ android { targetSdkVersion 27 // Follow native code's verson - versionCode 142 - versionName "1.4.2" + versionCode 143 + versionName "1.4.3" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" // External Native build: CMake