Commit graph

446 commits

Author SHA1 Message Date
Sönke Ludwig fdfbb55aa8 Re-implement ManualEvent.
This simplifies the logic by separating thread local notifications from cross-thread notifications, as well as replacing lockless operations by a spin lock. The thread local variant of ManualEvent is now also separated into a LocalManualEvent type.
2017-01-13 22:24:18 +01:00
Sönke Ludwig e28c6950d7 Fix shutdown behavior.
- Detection of the main thread contained a race condition
- The exit flag monitor task that is started for each event loop wasn't shut down, so that many could be running if runEventLoop was called multiple times.
2017-01-13 22:11:59 +01:00
Sönke Ludwig 7803fdaa81 Make Task.interrupt nothrow + add diagnostic assertion. 2017-01-13 22:08:12 +01:00
Sönke Ludwig ece639ee01 Improve assertion/test coverage of ManualEvent. 2017-01-11 17:46:36 +01:00
Sönke Ludwig 35a94412d0 Make FileStream small enough to fit into an InterfaceProxy. 2016-12-26 21:28:36 +01:00
Sönke Ludwig 003331cc90 Test with all Linux eventcore configurations. 2016-12-19 22:37:18 +01:00
Sönke Ludwig a046a59b16 Test with latest LDC/DMD. 2016-12-19 22:01:57 +01:00
Sönke Ludwig 9ab0f07b2d Fix compile error in file test. 2016-12-19 21:57:52 +01:00
Sönke Ludwig da2dfa23df Only emit color escape sequences on a Posix terminal. 2016-12-19 21:22:22 +01:00
Sönke Ludwig 8c0660781d Thread safety improvements in the task system.
Removes some invalid safety annotations and adds a workaround for a starvation issue in Task.join() across threads boundaries. This is still not thread-safe, but now has a safety-net and is documented, so that it doesn't get lost.
2016-12-19 20:24:08 +01:00
Sönke Ludwig 1b2c0f33d1 Fix timeout handling in ManualEvent.
The timeout could was re-applied in every loop iteration of the wait routine, possibly causing an infinite loop.
2016-12-19 20:19:58 +01:00
Sönke Ludwig 79656a80df Fix safety error on Windows. 2016-12-19 16:16:50 +01:00
Sönke Ludwig a7bfbc1c45 Implement createTempFile on Posix. 2016-12-10 16:01:40 +01:00
Sönke Ludwig 09d9ea47bf Fix InterfaceProxy to not explicitly destroy contained class instances.
This lead to double-destruction in case an InterfaceProxy was copied.
2016-12-10 14:21:57 +01:00
Sönke Ludwig bf2edc7fb2 Fix TaskScheduler.waitAndProcess to not block if any tasks were resumed.
In situations where no events were involved in an multi-task scenario, the old behavior could lead to the process to starve or hang until an event arrived.
2016-12-10 14:13:44 +01:00
Sönke Ludwig df69c86bd4 Fix debug versions in package recipe. 2016-11-29 19:17:40 +01:00
Sönke Ludwig 942089a91c Add unit tests for joinding tasks from outside of another task. 2016-11-29 19:17:14 +01:00
Sönke Ludwig 81b7010724 Fix some safety annotation issues. 2016-11-10 12:19:39 +01:00
Sönke Ludwig ccbd6a063f Fix FreeListRef related issues. 2016-11-10 12:01:35 +01:00
Sönke Ludwig 7dafccc3a7 Test with DMD 2.072.0. 2016-11-08 15:42:08 +01:00
Sönke Ludwig 18a5afddc4 Fix test compilation on DMD 2.071.x. 2016-11-08 15:41:59 +01:00
Sönke Ludwig f74c30a9f3 Use std.experimental.allocator and remove the custom allocator module. 2016-11-08 15:32:25 +01:00
Sönke Ludwig 55a06c30f3 Add missing interface proxy module. 2016-11-08 14:48:38 +01:00
Sönke Ludwig 4b4e1575dc Extend the Path interface somewhat. 2016-11-08 14:48:18 +01:00
Sönke Ludwig eb0697d6e4 Let types that implicitly convert to interface pass interface check.
"null" in particular is now considered to pass the interface conformance check.
2016-11-05 01:42:20 +01:00
Sönke Ludwig 9cfb702f0b Fix deprecation warnings. 2016-11-05 01:41:15 +01:00
Sönke Ludwig a8cd1be065 More safe-ty. 2016-11-05 01:06:11 +01:00
Sönke Ludwig 9df6874a55 Annotate FreeListRef safe as far as possible. 2016-11-05 00:58:51 +01:00
Sönke Ludwig 3a5975f046 Add appmain for backwards compatibility. 2016-11-04 21:34:01 +01:00
Sönke Ludwig 0c3c31b969 Annotate more of Task/TaskLocal as safe. 2016-11-04 21:33:01 +01:00
Sönke Ludwig d5e19e1db6 Disable failing unit tests until Path is properly implemented. 2016-11-02 21:02:36 +01:00
Sönke Ludwig 70dbab6c64 Update stream progress in README. 2016-11-02 21:02:08 +01:00
Sönke Ludwig 5e89ac4e91 Safe-ify sync module. 2016-11-02 21:01:09 +01:00
Sönke Ludwig c7e1468c87 Extend the Path interface (not yet fully implemented). 2016-11-02 21:00:13 +01:00
Sönke Ludwig 1fad8f5c9d Improve stream module documentation and avoid default arguments. 2016-11-02 20:59:55 +01:00
Sönke Ludwig b96c20ef54 Fix interface conformance checks.
- Now includes final interface methods
- Properly checks attributes
2016-11-02 20:59:19 +01:00
Sönke Ludwig 2d37e550bd Safe-ify net module, and extend functionality.
- Custom bind address for outgoing stream connections
- reusePort flag
- Full OutputStream interface for TCPConnection.
2016-11-02 20:58:00 +01:00
Sönke Ludwig 831ef743f2 Safe-ify the file module. 2016-11-02 20:54:43 +01:00
Sönke Ludwig 616130cef1 Safe-ify internal code. 2016-11-02 20:53:30 +01:00
Sönke Ludwig 6094971947 Fix unit test. 2016-11-02 20:52:59 +01:00
Sönke Ludwig 2071f30a1c Remove public HTML escaping declarations from log module. 2016-11-02 20:24:41 +01:00
Sönke Ludwig d06ad74ee3 Fix and safe-ify ConnectionPool. 2016-11-02 20:23:57 +01:00
Sönke Ludwig 0ee42c4243 Add vibe.d 0.7.x compatible stream definitions.
In contrast to 0.7.x, streams can now be either of class, struct or interface type.
2016-10-26 13:11:28 +02:00
Sönke Ludwig 77d70de805 Update development progress. 2016-10-25 08:57:25 +02:00
Sönke Ludwig 568ccb7127 Implement DirectoryWatcher. 2016-10-25 08:57:16 +02:00
Sönke Ludwig 12daa5c575 Add Path concatenation operators. 2016-10-25 08:56:05 +02:00
Sönke Ludwig 1eb06c4b1a Mark ManualEvent's interface as safe. 2016-10-25 08:55:48 +02:00
Sönke Ludwig 4db9b3f100 Implement DNS lookups and partially implement UDP. 2016-10-25 00:27:51 +02:00
Sönke Ludwig 35761dfc9a Fix test script. 2016-10-24 09:21:11 +02:00
Sönke Ludwig 4f706e0ff9 Fix cleanup of test packages. 2016-10-24 08:42:43 +02:00