{"sha":"77465f739b1f7d23013ec29b5e683f295cbcee84","node_id":"MDY6Q29tbWl0MzU2ODEzNzY6Nzc0NjVmNzM5YjFmN2QyMzAxM2VjMjliNWU2ODNmMjk1Y2JjZWU4NA==","commit":{"author":{"name":"Felix Petriconi","email":"FelixPetriconi@users.noreply.github.com","date":"2019-02-07T22:14:39Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2019-02-07T22:14:39Z"},"message":"Merge pull request #237 from stlab/develop\n\nRelease 1.4.1","tree":{"sha":"26c26ab50d7d3286901bce84c28cc711599ea274","url":"https://api.github.com/repos/stlab/stlab/git/trees/26c26ab50d7d3286901bce84c28cc711599ea274"},"url":"https://api.github.com/repos/stlab/stlab/git/commits/77465f739b1f7d23013ec29b5e683f295cbcee84","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJcXK3PCRBK7hj4Ov3rIwAAdHIIAKbc/Mlsz/NBLugDUvf1TsPv\nSqHcoBonCzvSKXSSb+UvTQruGE2otwCs3O5DofwuBN1nAsVsH7gf5PufgxqlaVce\nPbCqpxXt177hb/cwUG4LT0DMYPsHEJLCaPNVdbSvZJNCaofyUz9SgHlZG3ydV/Jy\n3L0ucTk8LDxanYj+h0Gz9AR3IzsR2xGmurAqfhxhlOjCqLeQJqcTPYpvl4rl+F46\na7UJLnn5utaSQDQszOxK7Xe5dUQP2Gy5CS0Z6qqAx2qKqMKkm8Wj5g2Dedu1DwaR\nJKgHQFh3sTtvuYvIrYDp+F/8kMepGreS8tT63Pve409nOcgw2IfOMZfAbDJ8Drc=\n=Kd3c\n-----END PGP SIGNATURE-----\n","payload":"tree 26c26ab50d7d3286901bce84c28cc711599ea274\nparent ec28c1afe6b8e16b35ff3e37baf3608c8b086f89\nparent fade47f3a4c9ae778e73c78d5ac62837b9a38650\nauthor Felix Petriconi <FelixPetriconi@users.noreply.github.com> 1549577679 +0100\ncommitter GitHub <noreply@github.com> 1549577679 +0100\n\nMerge pull request #237 from stlab/develop\n\nRelease 1.4.1","verified_at":"2024-01-16T19:59:59Z"}},"url":"https://api.github.com/repos/stlab/stlab/commits/77465f739b1f7d23013ec29b5e683f295cbcee84","html_url":"https://github.com/stlab/stlab/commit/77465f739b1f7d23013ec29b5e683f295cbcee84","comments_url":"https://api.github.com/repos/stlab/stlab/commits/77465f739b1f7d23013ec29b5e683f295cbcee84/comments","author":{"login":"FelixPetriconi","id":612377,"node_id":"MDQ6VXNlcjYxMjM3Nw==","avatar_url":"https://avatars.githubusercontent.com/u/612377?v=4","gravatar_id":"","url":"https://api.github.com/users/FelixPetriconi","html_url":"https://github.com/FelixPetriconi","followers_url":"https://api.github.com/users/FelixPetriconi/followers","following_url":"https://api.github.com/users/FelixPetriconi/following{/other_user}","gists_url":"https://api.github.com/users/FelixPetriconi/gists{/gist_id}","starred_url":"https://api.github.com/users/FelixPetriconi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FelixPetriconi/subscriptions","organizations_url":"https://api.github.com/users/FelixPetriconi/orgs","repos_url":"https://api.github.com/users/FelixPetriconi/repos","events_url":"https://api.github.com/users/FelixPetriconi/events{/privacy}","received_events_url":"https://api.github.com/users/FelixPetriconi/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"ec28c1afe6b8e16b35ff3e37baf3608c8b086f89","url":"https://api.github.com/repos/stlab/stlab/commits/ec28c1afe6b8e16b35ff3e37baf3608c8b086f89","html_url":"https://github.com/stlab/stlab/commit/ec28c1afe6b8e16b35ff3e37baf3608c8b086f89"},{"sha":"fade47f3a4c9ae778e73c78d5ac62837b9a38650","url":"https://api.github.com/repos/stlab/stlab/commits/fade47f3a4c9ae778e73c78d5ac62837b9a38650","html_url":"https://github.com/stlab/stlab/commit/fade47f3a4c9ae778e73c78d5ac62837b9a38650"}],"stats":{"total":70,"additions":47,"deletions":23},"files":[{"sha":"9af8a669c2834b35c42c0a7036f6828f1e71c48d","filename":"CHANGES.md","status":"modified","additions":6,"deletions":0,"changes":6,"blob_url":"https://github.com/stlab/stlab/blob/77465f739b1f7d23013ec29b5e683f295cbcee84/CHANGES.md","raw_url":"https://github.com/stlab/stlab/raw/77465f739b1f7d23013ec29b5e683f295cbcee84/CHANGES.md","contents_url":"https://api.github.com/repos/stlab/stlab/contents/CHANGES.md?ref=77465f739b1f7d23013ec29b5e683f295cbcee84","patch":"@@ -1,3 +1,9 @@\n+## v1.4.1 - 2019 - February - 08\n+- Fixed Issues\n+    - [#234](https://github.com/stlab/libraries/issues/234): version is incorrect in stlabConfig.cmake\n+    - [#229](https://github.com/stlab/libraries/issues/229): SIGBUS in future destructor\n+    - [#220](https://github.com/stlab/libraries/issues/220): make_ready_future for move-only types\n+\n ## v1.4.0 - 2018 - December - 12\n - Fixed Issues\n     - [#208](https://github.com/stlab/libraries/issues/208): g++8.2.0 compiling error"},{"sha":"d058bbef8a69ab5fbd7e7917cb0a928173117319","filename":"CMakeLists.txt","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/stlab/stlab/blob/77465f739b1f7d23013ec29b5e683f295cbcee84/CMakeLists.txt","raw_url":"https://github.com/stlab/stlab/raw/77465f739b1f7d23013ec29b5e683f295cbcee84/CMakeLists.txt","contents_url":"https://api.github.com/repos/stlab/stlab/contents/CMakeLists.txt?ref=77465f739b1f7d23013ec29b5e683f295cbcee84","patch":"@@ -14,7 +14,7 @@ else()\n   set( subproject OFF )\n endif()\n \n-project( stlab VERSION 1.0 LANGUAGES CXX )\n+project( stlab VERSION 1.4.1 LANGUAGES CXX )\n \n include( CTest )\n include( CMakeDependentOption )"},{"sha":"d6d613c6e3fed0d3a5d5bc47588b52609924e603","filename":"setup_msvc_debug.bat","status":"modified","additions":4,"deletions":2,"changes":6,"blob_url":"https://github.com/stlab/stlab/blob/77465f739b1f7d23013ec29b5e683f295cbcee84/setup_msvc_debug.bat","raw_url":"https://github.com/stlab/stlab/raw/77465f739b1f7d23013ec29b5e683f295cbcee84/setup_msvc_debug.bat","contents_url":"https://api.github.com/repos/stlab/stlab/contents/setup_msvc_debug.bat?ref=77465f739b1f7d23013ec29b5e683f295cbcee84","patch":"@@ -10,8 +10,10 @@ MKDIR build_debug\n PUSHD build_debug\n \n ::conan install .. -o Boost:shared=False --build=missing\n-conan install .. -s compiler=\"Visual Studio\" -s compiler.version=14 -s build_type=Debug -s compiler.runtime=MDd -o Boost:shared=False\n+:: Use this line, when the package is not available\n+::conan install .. -s compiler=\"Visual Studio\" -s compiler.version=15 -s build_type=Debug -s compiler.runtime=MDd -o Boost:shared=False --build boost\n+conan install .. -s compiler=\"Visual Studio\" -s compiler.version=15 -s build_type=Debug -s compiler.runtime=MDd -o Boost:shared=False\n \n-cmake -G \"Visual Studio 14 Win64\" -D CMAKE_BUILD_TYPE=debug -D stlab_testing=ON ..\n+cmake -G \"Visual Studio 15 Win64\" -D CMAKE_BUILD_TYPE=debug -D stlab_testing=ON ..\n \n POPD"},{"sha":"7049639f89147dbf559b0ae47f5a0417fbcf3238","filename":"stlab/concurrency/config.hpp","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/stlab/stlab/blob/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fconcurrency%2Fconfig.hpp","raw_url":"https://github.com/stlab/stlab/raw/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fconcurrency%2Fconfig.hpp","contents_url":"https://api.github.com/repos/stlab/stlab/contents/stlab%2Fconcurrency%2Fconfig.hpp?ref=77465f739b1f7d23013ec29b5e683f295cbcee84","patch":"@@ -62,7 +62,7 @@\n #endif\n \n #ifndef STLAB_CPP_VERSION\n-#define STLAB_CPP_VERSION 14\n+#define STLAB_CPP_VERSION 17\n #endif\n \n #ifndef STLAB_FUTURE_COROUTINES"},{"sha":"ef5b551534aa6f03bd46c4e535e3b88332f27e38","filename":"stlab/concurrency/default_executor.hpp","status":"modified","additions":6,"deletions":1,"changes":7,"blob_url":"https://github.com/stlab/stlab/blob/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fconcurrency%2Fdefault_executor.hpp","raw_url":"https://github.com/stlab/stlab/raw/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fconcurrency%2Fdefault_executor.hpp","contents_url":"https://api.github.com/repos/stlab/stlab/contents/stlab%2Fconcurrency%2Fdefault_executor.hpp?ref=77465f739b1f7d23013ec29b5e683f295cbcee84","patch":"@@ -63,7 +63,9 @@ struct default_executor_type {\n         dispatch_group_t _group = dispatch_group_create();\n         ~group() {\n             dispatch_group_wait(_group, DISPATCH_TIME_FOREVER);\n+#if !__has_feature(objc_arc)\n             dispatch_release(_group);\n+#endif\n         }\n     };\n \n@@ -140,7 +142,10 @@ class task_system {\n         if (_pool == nullptr) throw std::bad_alloc();\n \n         _cleanupgroup = CreateThreadpoolCleanupGroup();\n-        if (_pool == nullptr) throw std::bad_alloc();\n+        if (_cleanupgroup == nullptr) {\n+            CloseThreadpool(_pool);\n+            throw std::bad_alloc();\n+        }\n \n         SetThreadpoolCallbackPool(&_callBackEnvironment, _pool);\n         SetThreadpoolCallbackCleanupGroup(&_callBackEnvironment, _cleanupgroup, nullptr);"},{"sha":"3069c371488f2c80c7329ee3aa6254ba3a1bb723","filename":"stlab/concurrency/future.hpp","status":"modified","additions":17,"deletions":15,"changes":32,"blob_url":"https://github.com/stlab/stlab/blob/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fconcurrency%2Ffuture.hpp","raw_url":"https://github.com/stlab/stlab/raw/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fconcurrency%2Ffuture.hpp","contents_url":"https://api.github.com/repos/stlab/stlab/contents/stlab%2Fconcurrency%2Ffuture.hpp?ref=77465f739b1f7d23013ec29b5e683f295cbcee84","patch":"@@ -332,7 +332,7 @@ struct shared_base<T, enable_if_copyable<T>> : std::enable_shared_from_this<shar\n         {\n             std::unique_lock<std::mutex> lock(_mutex);\n             ready = _ready;\n-            if (!ready) _then.emplace_back(std::move(executor), std::move(p.first));\n+            if (!ready) _then.emplace_back(std::forward<E>(executor), std::move(p.first));\n         }\n         if (ready) executor(std::move(p.first));\n \n@@ -1683,16 +1683,18 @@ struct value_<T, enable_if_copyable<T>> {\n \n     template <typename F, typename... Args>\n     static void set(shared_base<future<void>>& sb, F& f, Args&&... args) {\n-        sb._result = f(std::forward<Args>(args)...)\n-                         .recover([_p = sb.shared_from_this()](future<void> f) {\n-                             if (f.error()) {\n-                                 _p->_error = std::move(*f.error());\n-                                 value_::proceed(*_p);\n-                                 throw future_error(future_error_codes::reduction_failed);\n-                             }\n-                             return;\n-                         })\n-                         .then([_p = sb.shared_from_this()]() { proceed(*_p); });\n+        sb._result = f(std::forward<Args>(args)...);\n+        sb._reduction_helper.value =\n+            (*sb._result)\n+                .recover([_p = sb.shared_from_this()](future<void> f) {\n+                     if (f.error()) {\n+                         _p->_error = std::move(*f.error());\n+                         value_::proceed(*_p);\n+                         throw future_error(future_error_codes::reduction_failed);\n+                     }\n+                     return;\n+                 })\n+                 .then([_p = sb.shared_from_this()]() { proceed(*_p); });\n     }\n };\n \n@@ -1803,20 +1805,20 @@ auto shared_base<T, enable_if_copyable<T>>::reduce(future<future<void>>&& r) ->\n template <typename T>\n template <typename R>\n auto shared_base<T, enable_if_copyable<T>>::reduce(future<future<R>>&& r) -> future<R> {\n-    return std::move(r).then([](auto f) { return *f.get_try(); });\n+    return std::move(r).then([](auto&& f) { return *std::forward<decltype(f)>(f).get_try(); });\n }\n \n /**************************************************************************************************/\n \n template <typename T>\n auto shared_base<T, enable_if_not_copyable<T>>::reduce(future<future<void>>&& r) -> future<void> {\n-    return std::move(r).then([](auto&&){});\n+    return std::move(r).then([](auto){});\n }\n \n template <typename T>\n template <typename R>\n auto shared_base<T, enable_if_not_copyable<T>>::reduce(future<future<R>>&& r) -> future<R> {\n-    return std::move(r).then([](auto&& f) { return *std::forward<future<R>>(f).get_try(); });\n+    return std::move(r).then([](auto&& f) { return *std::forward<decltype(f)>(f).get_try(); });\n }\n \n /**************************************************************************************************/\n@@ -1827,7 +1829,7 @@ inline auto shared_base<void>::reduce(future<future<void>>&& r) -> future<void>\n \n template <typename R>\n auto shared_base<void>::reduce(future<future<R>>&& r) -> future<R> {\n-    return std::move(r).then([](auto f) { return *f.get_try(); });\n+    return std::move(r).then([](auto&& f) { return *std::forward<decltype(f)>(f).get_try(); });\n }\n \n /**************************************************************************************************/"},{"sha":"18f39fca966bec31bec48977d4cb3ecd27d42f3b","filename":"stlab/concurrency/utility.hpp","status":"modified","additions":10,"deletions":1,"changes":11,"blob_url":"https://github.com/stlab/stlab/blob/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fconcurrency%2Futility.hpp","raw_url":"https://github.com/stlab/stlab/raw/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fconcurrency%2Futility.hpp","contents_url":"https://api.github.com/repos/stlab/stlab/contents/stlab%2Fconcurrency%2Futility.hpp?ref=77465f739b1f7d23013ec29b5e683f295cbcee84","patch":"@@ -61,7 +61,7 @@ future<std::decay_t<T>> make_ready_future(T&& x, E executor) {\n     auto p = package<std::decay_t<T>(std::decay_t<T>)>(\n         std::move(executor), [](auto&& x) { return std::forward<decltype(x)>(x); });\n     p.first(std::forward<T>(x));\n-    return p.second;\n+    return std::move(p.second);\n }\n \n template <typename E>\n@@ -78,6 +78,15 @@ future<T> make_exceptional_future(std::exception_ptr error, E executor) {\n         return std::forward<decltype(x)>(x);\n     });\n     p.first(T{});\n+    return std::move(p.second);\n+}\n+\n+template <typename E>\n+future<void> make_exceptional_future(std::exception_ptr error, E executor) {\n+    auto p = package<void()>(std::move(executor), [_error = error]() {\n+        std::rethrow_exception(_error);\n+    });\n+    p.first();\n     return p.second;\n }\n "},{"sha":"2b83c7e9987e4be1e0316cf7977d2c2315292b28","filename":"stlab/version.hpp","status":"modified","additions":2,"deletions":2,"changes":4,"blob_url":"https://github.com/stlab/stlab/blob/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fversion.hpp","raw_url":"https://github.com/stlab/stlab/raw/77465f739b1f7d23013ec29b5e683f295cbcee84/stlab%2Fversion.hpp","contents_url":"https://api.github.com/repos/stlab/stlab/contents/stlab%2Fversion.hpp?ref=77465f739b1f7d23013ec29b5e683f295cbcee84","patch":"@@ -19,13 +19,13 @@\n //  STLAB_VERSION / 100 % 1000 is the minor version\n //  STLAB_VERSION / 100000 is the major version\n \n-#define STLAB_VERSION 100400\n+#define STLAB_VERSION 100401\n \n //\n //  STLAB_LIB_VERSION must be defined to be the same as STLAB_VERSION\n //  but as a *string* in the form \"x_y[_z]\" where x is the major version\n //  number, y is the minor version number, and z is the patch level if not 0.\n \n-#define STLAB_LIB_VERSION \"1_4_0\"\n+#define STLAB_LIB_VERSION \"1_4_1\"\n \n #endif"}]}