From 74467cb470a6bf8b9559a56ebdcb68ff915d871e Mon Sep 17 00:00:00 2001 From: luncliff Date: Fri, 7 Jun 2019 03:04:03 +0900 Subject: [PATCH] project version up: 1.4.3 * release candidate to release Misc update in readme. going to allow cmake 3.8 for this version. It seems features are enough. If there are some needs, it will be added in version 1.5.x --- CMakeLists.txt | 2 +- ReadMe.md | 23 ++++++++++++----------- appveyor.yml | 3 ++- build.gradle | 4 ++-- 4 files changed, 17 insertions(+), 15 deletions(-) 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