Commit Graph

979 Commits

Author SHA1 Message Date
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
36586c6555 Make tribool nature of monad very explicit with an actual tribool. 2015-06-23 14:23:44 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
1bdef95a0f Add tribool 2015-06-23 14:08:55 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
fd786656bf Fixed bugs mentioned in boost-dev review. Added task list. 2015-06-22 01:08:08 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
4987f60e29 Fixed missing EOL for complexity guarantees 2015-06-19 17:48:35 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6108ee3d06 Fixed missing bind example in docs. 2015-06-19 17:45:32 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
7a65330a1c Now ready for Boost review. 2015-06-19 17:35:25 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6f45787900 Added monad example for boost-dev review, unfortunately it fails to compile :) 2015-06-19 14:59:09 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6f632d061e Added opcodes for then() and bind() 2015-06-19 02:35:45 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b3b4f95ee4 Added max and min constexpr tests for then and bind 2015-06-19 02:11:32 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
06fd8b0b8c upd 2015-06-17 14:04:38 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
9e6020714d Disable tests for VS2015 where the compiler is clearly suffering memory corruption internally. 2015-06-16 17:57:47 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
35a6ab7732 Try throwing ~monad fix on CI. 2015-06-16 17:40:53 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0d1a435eef map() and bind() fully working and passing all tests. Finally. 2015-06-16 17:33:14 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0d241ff17f bind() is nearly working. Currently it fails to detect an auto lambda which returns a monad, a problem I shall have to ponder how to solve as it isn't entirely straightforward. 2015-06-16 04:23:55 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
921dcb101d wip 2015-06-15 19:00:30 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
fed48c3573 Forgot to update function_argument_form. 2015-06-15 11:31:08 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
45dbfb9a07 updated to match stackoverflow reduced example. 2015-06-15 11:25:01 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
8f58896bac minor tidy 2015-06-15 04:43:15 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
01d0b3150d Figured out the problem. Now working very well indeed. Next step tomorrow is to add the detection of callables taking not value_type, and in theory we are then feature complete. 2015-06-15 04:36:59 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0b2e91fe6e Added in rvalue detection traits. Working now, except that I am stuck on how to best detect when an implicit conversion is being done when calling the callable. 2015-06-15 04:23:48 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
ee7e43d1ba Merge branch 'master' of github.com:ned14/boost.spinlock 2015-06-15 03:25:57 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
97e517a68f Added acknowledgement of clever map and bind source. 2015-06-15 03:25:47 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e184a75e83 Fixed clang breakage 2015-06-13 17:56:43 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
cfa36eec9a Wrote docs for monadic operators. Now just need to finish implementing them! 2015-06-13 02:03:54 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
3dffba1beb then(), bind() and map() all now working perfectly except that automatic move semantics isn't. Asked stackoverflow on that one. 2015-06-12 12:59:05 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
f6ec99c0a1 Added then() and bind() monadic operations. 2015-06-12 04:08:39 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0c8d3347ab Workaround GCC failure 2015-06-12 02:16:54 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
5b35f714a2 More minor warnings. 2015-06-12 01:59:33 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
1c9c063b83 Remove clang warnings. 2015-06-12 01:53:17 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0d867577ba Add unwrap(). 2015-06-12 01:34:12 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
cbdd0b0af5 docs 2015-06-12 00:25:35 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
64d3b72dd9 docs. 2015-06-11 23:23:20 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
089ee51b51 try again 2015-06-11 14:43:40 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
dbd850034a Added complexity guarantees. 2015-06-11 14:39:48 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a5114cc144 Work around a noexcept weirdness in libstdc++ 2015-06-11 13:34:57 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6789930fee Fix POSIX build breakage 2015-06-11 13:26:57 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
62bdae1f34 Relocate <future> include. 2015-06-11 10:16:45 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
9e6f70253c Fixed snippets 2015-06-11 04:05:50 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6a2b65715c Use doxygen snippets 2015-06-11 04:01:12 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e0743bf719 More minor docs fixes. 2015-06-11 03:27:27 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
f538c990a3 Missing header fix 2015-06-11 03:20:58 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
43ff504d66 Added test of monad as an optional. 2015-06-11 03:11:53 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
86060e14d8 Added test that swap() works. 2015-06-11 02:45:00 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
00c341d218 Added test for whether monad can hold a STL container and itself be inside a STL container. 2015-06-11 02:33:30 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
297c7013d1 Added noexcept and weird udt unit tests. 2015-06-11 02:19:23 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a75a10531d More docs updates 2015-06-11 00:59:25 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
330c9cc5ba More doc fixes 2015-06-11 00:46:48 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e2c4b22baf docs update 2015-06-11 00:18:55 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
627ab95a15 typo 2015-06-10 15:05:10 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
8d1d58e6bb Increase opcount counter loop timeout to 1000 2015-06-10 14:57:48 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
d7dcab1dd0 monad, promise and future all now take their error and exception types as template parameters.
monad now throws monad_error with monad_category by default.
2015-06-07 03:13:26 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e1ff73f72c Split future.hpp into monad.hpp 2015-06-07 00:32:29 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
1241e2c500 Disabled another failing test on gcc/clang. 2015-06-05 03:26:20 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
2f1039d851 typo 2015-06-05 03:16:51 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e5a5a15f92 Added unit test for monad. 2015-06-05 03:14:24 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
d60d240bf1 Restore default monad move constructor 2015-06-05 01:37:46 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
01e6a82f61 More constexpr monad tests 2015-06-05 00:45:24 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
2243b0ceaa Fixed excessive constexpr 2015-06-04 23:34:14 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a6e4203bea Fleshed out the monad class 2015-06-04 19:04:14 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
7a17c598a3 Wrote python script to parse assembler dump of lightweight future promise and construct an opcount.
Persuaded MSVC to constexpr fold almost all of the time.
2015-06-04 03:53:45 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
62c1f18278 Stamped out a few more APIs (commented out) 2015-05-27 10:48:16 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
00a70e09ae Fixed constexpr folding failure caused by get() 2015-05-26 00:28:28 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
226e081f66 Broke monad out from future 2015-05-25 18:54:42 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
1e70caf8d8 Fixed bug in lack of constexpr reduction of future. 2015-05-25 04:38:13 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
4c8566ae18 Try putting back the unrestricted union 2015-05-25 04:27:01 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
c19899c200 more small changes 2015-05-25 04:10:15 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6c70b8389b Revert "Experimental replacement of promise future move constructors with intrusive variants."
This reverts commit 61313e3b30.
2015-05-25 03:54:33 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
61313e3b30 Experimental replacement of promise future move constructors with intrusive variants. 2015-05-25 03:51:00 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
3da8d3bb2a Small fixes. 2015-05-25 03:08:41 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
2fdd81e75e Added constexpr folding for future, and future from promise. 2015-05-25 02:51:44 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b8468a730d Yay got it constexpr reducing on gcc yay! 2015-05-24 03:09:57 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
bd0b230ac7 Got lightweight future-promise working on VS2015. Still no joy on the constexpr reduction :( 2015-05-24 02:56:49 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
72045c4fe3 Added beginnings of assembler dump unit testing 2015-05-23 22:09:15 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
12a534d886 Added first edition of lightweight future-promise. 2015-05-23 21:27:08 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
ab682dff70 Fixed a failure to unlock buckets on failure to allocate new buckets in rehash. Thanks to Mikhail for reporting this. 2015-04-02 01:57:27 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
8e09d8ae51 upd 2015-03-26 18:30:00 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
c4a2903a88 upd 2015-03-26 18:22:55 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
3b992806e8 Add atomic fences after every modification of std::vector holding bucket items. Almost certainly unnecessary, but no harm to have these. 2015-03-09 19:09:53 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0a27daf4e1 Try to see if I can see the cause of the suppressed _rehash() race reported by tsan. 2015-03-07 21:06:35 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
47f2064952 upd 2015-03-06 01:37:59 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
7305f31c86 upd 2015-02-26 03:03:27 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
9a4646421a Removed the dependency on Expected, and the expected_future as no longer needed. 2015-01-28 17:50:21 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
c99466bc83 upd 2015-01-17 03:10:44 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
98be366538 upd 2015-01-12 20:11:36 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b840973f7a upd 2015-01-11 00:43:19 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b367ace54f upd 2015-01-10 21:31:53 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
10e68631e6 ups 2015-01-05 16:23:37 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6a88582f28 Workaround too good iterator checking under MSVC. 2015-01-03 18:10:58 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b00b283ea3 Added unit testing for tristate and pointer spinlocks. 2014-12-12 20:58:13 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b0e726af60 Don't pad buckets. 2014-12-12 00:56:09 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
cf64f92943 upd 2014-12-11 23:58:13 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b2ecbdfcca Replaced CATCH with BindLib unit testing. 2014-12-11 22:21:58 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
051875b795 Fixed build failures. Added a FNV-1a hash implementation. 2014-12-11 21:28:17 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e5cc742ea5 Added a spinlock template parameter to concurrent_unordered_map.
Disabled noexcept destructor as it was ICEing GCC.
2014-12-10 20:34:24 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
67df71f099 concurrent_unordered_map::iterator operators != and == were broken.
Added concurrent_unordered_map::visit().
2014-12-09 19:41:10 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
99d17f1ee8 Fixes for mingw32 2014-12-07 01:51:50 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6cebcb7314 Disable constexpr on clang < 3.3 2014-12-06 19:00:41 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6b8e0c7cde Apparently Boost doesn't define is_nothrow_destructible. Oh well. 2014-12-06 18:15:42 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a78136cbaa Added missing include. 2014-12-06 18:12:25 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b71585e30e Try again GCC 4.7 fix. 2014-12-06 18:06:06 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
7cb221fc44 More workaround for GCC 4.7 2014-12-06 18:02:51 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6c73529c92 Fix for libstdc++ 4.7 2014-12-06 17:50:05 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
10673d10c3 upd 2014-12-06 17:31:01 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0c5b52957d upd 2014-12-06 16:37:41 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
2dfceea3cd Revert "Try skipping precheck on ARM"
This reverts commit 98d8a8715f.
2014-12-04 14:18:19 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
98d8a8715f Try skipping precheck on ARM 2014-12-04 14:04:29 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
00fcaf54c3 Only use XCHG instead of CMPXCHG on Intel only. 2014-12-04 13:40:59 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
dff8efe464 Replaced consume precheck with relaxed precheck. 2014-12-04 13:10:58 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
79e9d0ac47 Added a BOOST_SPINLOCK_USE_VOLATILE_READ_FOR_AVOIDING_CMPXCHG macro. 2014-12-03 23:24:56 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
aa4999fc6e Replace atomic acquire with volatile read on MSVC only. 2014-12-03 23:14:45 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a0e25e9729 Got it compiling under VS2013 again. 2014-12-03 23:04:26 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
9700ccdf5c Now working with improved BindLib. 2014-11-20 18:40:53 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
dca8edd5c8 refresh bindlib 2014-11-10 19:39:02 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
84c6a0adf9 Fixed missing inline. 2014-11-07 23:28:19 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0f00886f4c Made standalone selectable. 2014-11-04 11:07:33 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
991c79c627 Missed one in former commit 2014-10-30 18:25:47 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
83e7f521bb Stopped spinlock's valgrind use conflicting with anyone else's.
Fixed broken tsan suppression.
2014-10-30 18:21:36 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e1287e567c Relocated bindlib and expected into includes 2014-10-29 20:05:58 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6f57b937c2 Reorged to match Boost library directory conventions.
concurrent_unordered_map now has its own header.
2014-10-29 19:51:30 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
bfdb5f79b3 Added a shared_future implementation. I still need to invert the Continuations... relationship between future and promise, and promise needs to not care about whether the future consumes or not. 2014-10-16 19:33:21 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
d0f4a5f828 First working expected-based future promise implementation. 2014-10-15 20:37:03 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a564d0a2cd Wip 2014-10-14 19:50:11 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
f5f1d9148a Wip expected future promise 2014-10-13 20:06:47 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b1450545a2 Ended up suppressing the tsan warnings about unsynchronised use of bucket.count as it's only a speculative early out of doing a lock acquire, so it has relaxed ordering. This optimisation adds about 7% to benchmarks, so is probably worth it. 2014-10-11 21:39:29 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
fb1d61a38f Relaxed memory ordering on speculative count read/write 2014-10-11 20:49:21 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
56a6e49ca9 Finished marking up concurrent_unordered_map with noexcept 2014-10-11 17:48:14 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
75dc814006 Fixed bad Doxyfile
Made a start on noexcept markup
2014-10-11 17:37:17 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
710974c9d3 Fixed up renaming to work. 2014-10-11 17:11:50 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
d44d6d8b5c Moved everything into Boost library directory org 2014-10-11 16:56:49 +01:00