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
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
942089a91c
Add unit tests for joinding tasks from outside of another task.
2016-11-29 19:17:14 +01:00
Sönke Ludwig
ccbd6a063f
Fix FreeListRef related issues.
2016-11-10 12:01:35 +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
4b4e1575dc
Extend the Path interface somewhat.
2016-11-08 14:48:18 +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
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
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
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
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
c08f101549
Update for eventcore 0.5.0 and the latest DMD beta.
2016-10-24 08:22:49 +02:00
Sönke Ludwig
5bbf07beb8
Fix FileStream.close and let the file test clean up after itself.
2016-10-06 22:15:25 +02:00
Sönke Ludwig
cf75d968d5
Base FileStream on eventcore.
2016-10-06 22:06:51 +02:00
Sönke Ludwig
1337715b2d
Remove unused code.
2016-10-06 22:05:07 +02:00
Sönke Ludwig
e294d24a4b
Update for latest eventcore version.
2016-10-05 14:40:29 +02:00
Sönke Ludwig
914e9ad894
Change debug version "VibeMutexPrint" -> "VibeMutexLog".
2016-10-04 17:53:40 +02:00
Sönke Ludwig
6a1f2ddee3
Make std.concurrency parallelism primitive configurable.
...
Backport from mainline vibe.d.
2016-10-04 17:53:20 +02:00
Sönke Ludwig
930ba5c3de
Fix safety annotation issues.
2016-10-04 17:51:49 +02:00
Sönke Ludwig
19f796af9f
Add vibe.core.runApplication. See rejectedsoftware/vibe.d#1417 .
2016-08-30 12:30:49 +02:00
Sönke Ludwig
4c6f26bd00
Add a minimalistic duck typing based stream representation.
2016-06-18 10:00:02 +02:00
Sönke Ludwig
6bf63c7331
Add optional terminal color support and make the task/thread prefix more concise.
2016-06-17 22:34:50 +02:00
Sönke Ludwig
1005f5c674
Fix all ManualEvent related tests.
2016-06-17 22:33:04 +02:00
Sönke Ludwig
f9579a5dd2
Various task scheduling fixes.
...
- the initial task yield() now is done in an uninterruptible way
- switchToTask now handles switching to an already scheduled task gracefully
- TaskScheduler.hibernate() now properly blocks when called form outside of a task
- added yieldUninterruptible()
2016-06-16 10:58:12 +02:00
Sönke Ludwig
ed36531bd2
Add runEventLoopOnce() and fix hibernate() to block outside of a task.
2016-06-16 10:44:55 +02:00
Sönke Ludwig
e8ba981263
Draft proper shared semantics for ManualEvent.
2016-06-15 18:21:33 +02:00
Sönke Ludwig
8264070f19
Fix for latest eventcore changes.
2016-06-14 09:25:28 +02:00
Sönke Ludwig
3b0e4e0452
Big refactoring step.
...
- Moves a lot of stuff from vibe.core.core to vibe.core.task
- Introduces TaskScheduler to unify the scheduling process
- Refines how tasks are scheduled and processed (can push to the front of the task queue and uses a marker task to keep track of the spot up to which to process)
- Start to add proper support for task interrupts and timeouts by properly cancelling in-flight async operations
- Work on ManualEvent - still not functional for the shared case
- Implement proper IP address parsing in NetworkAddress
2016-06-14 08:01:03 +02:00
Sönke Ludwig
c3857d1bc9
Fix compile errors.
2016-04-10 17:17:30 +02:00
Sönke Ludwig
ba48a6f43a
Use BatchBuffer instead of FixedRingBuffer for TCP read.
2016-04-10 17:17:15 +02:00
Sönke Ludwig
77dc93baa7
Add a function to disable vibe.d's default signal handlers. Fixes #1333 .
...
(cherry picked from commit 29fab2e10bb864a8aee694d4a9de8f26fab2363e)
2016-04-10 14:40:40 +02:00
Sönke Ludwig
508669b781
Fix compile error when calling async() an unshared delegate.
...
(cherry picked from commit a8faddf64170e5d1347b67e1d48b7796bbe08fd9)
2016-04-10 14:40:40 +02:00
Sönke Ludwig
21619e8a30
Add allocation-less overloads of NetworkAddress.to(Address)String.
...
(cherry picked from commit 997d78ad36bfee853daefe663e3a54314a652b19)
2016-04-10 14:40:39 +02:00
Sönke Ludwig
76626f2fd4
Add support for FreeBSD and NetBSD
...
(cherry picked from commit 546fe60d327886265d3d14b447123010621013f6)
2016-04-10 14:40:39 +02:00
Sönke Ludwig
8f4222916f
Weaken the task double-resumption assertion condition.
...
This assertion got triggered in a number of harmless situations and it's not always easy to avoid. Trying to avoid it, it has already caused a rather bad task starvation bug (#1441 ), so at this point it seems to be better to get rid of it.
See also #1407
(cherry picked from commit 621e34b388848c762a7525149ea449ad082996a1)
2016-04-10 14:40:39 +02:00
Sönke Ludwig
3a6583b375
Explictly avoid double-resumption of tasks during Libevent2TCPConnection.close().
...
The previous fix for #1376 resulted in a possible task starvation when the peer reset the connection before the outbound buffer was drained. The new approach now always resumes the waiting task exactly once, no matter how many events happen and no matter in which order.
(cherry picked from commit 350130a2b05cfbf12764ffaa6a86403eacf172d9)
2016-04-10 14:40:38 +02:00