Commit graph

362 commits

Author SHA1 Message Date
Sönke Ludwig 340357d455
Let pipe() return the number of bytes written. 2017-10-30 22:55:54 +01:00
Sönke Ludwig 710c996666
Add assertion message. 2017-10-30 22:55:22 +01:00
Sönke Ludwig 874e174d38 Add const overload for Task.tid. 2017-10-24 09:44:54 +02:00
Sönke Ludwig db449e3cb3 Fix implementation of TCPListener.bindAddress. 2017-09-28 23:52:39 +02:00
Sönke Ludwig 72540d7eaf Work around DigitalMars/optlink#18. 2017-09-27 17:43:08 +02:00
Sönke Ludwig 9fe9783443 Convert Waitable from struct to pure template to avoid heap closures.
Also fixes a case where ThreadLocalWaiter.emitSingle overlaps a call to .emit.
2017-09-27 16:41:11 +02:00
Sönke Ludwig e32d818873 Add CircularDList.insertAfter. 2017-09-27 16:41:11 +02:00
Sönke Ludwig a93b6e1cb1 Move log message to print before shutdown to avoid potential mixup with other log messages during shutdown. 2017-09-21 14:35:53 +02:00
Sönke Ludwig 9e0b5a7821 Fix access violation in the log module when called from a non-D thread. 2017-09-21 14:09:19 +02:00
Sönke Ludwig a5628230c1 Fix setupWorkerThreads to actually use the provided thread count. See #35. 2017-09-21 13:40:00 +02:00
Sönke Ludwig dd05676c4e Fix workerThreadCount to return the actual number of threads in the default worker pool. Fixes #35. 2017-09-21 13:39:05 +02:00
Sönke Ludwig 0dbebac482 Add TaskPool.threadCount property. 2017-09-21 13:38:24 +02:00
Sönke Ludwig 8895f62a49
Fix parameter name. 2017-09-15 15:58:35 +02:00
Sönke Ludwig 333643d48e Add interface_address parameter to UDPConnection.addMembership. 2017-09-15 15:54:59 +02:00
Sönke Ludwig 6cf2579206 Fix path construction from segment range with no internal separators. 2017-09-10 00:16:53 +02:00
Sönke Ludwig cf914d8827 Update version. 2017-09-05 16:05:06 +02:00
Sönke Ludwig 2d0576a5fe
Implement the UDP multicast support methods. 2017-09-03 18:15:52 +02:00
Sönke Ludwig 7e1d6a7323 Add listenUDP overload taking a NetworkAddress. 2017-09-03 15:54:17 +02:00
Sönke Ludwig 1ef8d5206f
Fix handling of the "periodic" argument to the setTimer compatibility overload. 2017-09-03 15:46:50 +02:00
Sönke Ludwig 43260cf982
Log the fiber/task ID in the HTML logger. 2017-09-03 14:17:57 +02:00
Boris-Barboris a590de154a fix deadlocks, caused by second m_locks increment 2017-08-28 21:58:08 +00:00
Sönke Ludwig 544157c065
Fix return value for FileDescriptorEvent.wait. 2017-08-14 14:27:09 +02:00
Sönke Ludwig 62ee67091d
Enable support for timeouts in FileDescriptorEvent.wait. 2017-08-13 23:35:11 +02:00
Sönke Ludwig 5e979364cb
Fix whitespace. 2017-08-10 11:08:26 +02:00
Sönke Ludwig 24f4e5f70f Resurrect GenericPath.startsWith.
Since the semantics are different w.r.t. path separators, the alternative suggested in the deprecation message is not valid. At least until the comparison/toString semantics of PathSegment have a profound definition, it will be kept around to avoid unneeded interruptions when upgrading to 0.8.x.
2017-08-10 10:09:01 +02:00
Sönke Ludwig 2777b0a6ff
Fix FileDescriptorEvent constructor to adhere to the given event mask. 2017-07-29 13:32:27 +02:00
Sönke Ludwig a60828d6da Mark more classes as final. 2017-07-23 15:04:11 +02:00
Sönke Ludwig 59ac459cdf Mark all synchronization classes final.
Those classes are not meant as being derived from.
2017-07-23 14:57:48 +02:00
Sönke Ludwig 2ba6c2eca1
Bump version number. 2017-07-20 18:50:40 +02:00
Sönke Ludwig f81c9175df
Mention that TCPListenOptions.distribute is deprecated. 2017-07-20 18:48:08 +02:00
Sönke Ludwig be0de0a733 Add assertions for uninitialized LocalManualEvents. 2017-07-20 16:52:35 +02:00
Sönke Ludwig a6eeae97f3 Fix DirectoryWatcher's creation of its LocalManualEvent. 2017-07-20 16:52:34 +02:00
Sönke Ludwig f6736d13ab Add test that reproduces the LocalManualEvent copy bug. 2017-07-20 16:14:47 +02:00
Sönke Ludwig 100dfc30ee Add test that triggers the former bug in ThreadLocalWaiter.emit() and ensures FIFO emit order. 2017-07-20 16:10:18 +02:00
Sönke Ludwig a4b36f08d3 Fix multiple issues in (Local)ManualEvent.
- Copying LocalManualEvent now works correctly, using reference counting
- ManualEvent correctly pins the reference to the thread-local waiter until it has finished emitting it
- ThreadLocalWaiter uses a doubly-linked list to manage task waiters (more efficient deletion, FIFO trigger order)
- Fixed a bug in ThreadLocalWaiter.emit() where the head element of the iterated list might already have stopped waiting, resulting in an invocation of a dangling TaskWaiter pointer
2017-07-20 15:57:44 +02:00
Sönke Ludwig 19db7732e6 Add nothrow annotations. 2017-07-20 13:36:27 +02:00
Sönke Ludwig 536fa09780 Add helper module with intrusive singly and doubly linked lists. 2017-07-20 13:34:39 +02:00
Sönke Ludwig cfb4f83113 Add makeGCSafe/disposeGCSafe as GC safe variants of make/dispose.
If necessary, these will call GC.addRange/GC.removeRange to avoid dangling GC references.
2017-07-20 13:34:12 +02:00
Sönke Ludwig 4bccf6fcb5
Use StackSList for ThreadLocalWaiter and add simple loop detection.
This will have to be adjusted to use a circular list with the possibility to insert a pivot element, so that consumption of waiters is safe in all cases (see the comment at 1265).
2017-07-19 14:54:33 +02:00
Sönke Ludwig d39bbf19c0
Avoid extra exception and allow toString of unspecified NetworkAddress values. 2017-07-19 14:50:20 +02:00
The Dlang Bot c62f07d257 Merge pull request #24 from vibe-d/error_handling
Use abort() in case of uncaught Error exceptions.
merged-on-behalf-of: Sönke Ludwig <s-ludwig@users.noreply.github.com>
2017-07-19 10:50:25 +02:00
Sönke Ludwig 7f050af455 Merge pull request #21 from wilzbach/trailing-whitespace
Remove all trailing whitespace + add check
2017-07-19 09:20:19 +02:00
Sönke Ludwig fb1518a7d6 remove more white space 2017-07-19 00:40:24 +02:00
Sönke Ludwig bfc6b89ca4
Use abort() in case of uncaught Error exceptions.
Fixes "dwarfeh(224) fatal error" that are suspected to be related to occasional infinite loops.
2017-07-19 00:11:12 +02:00
Sönke Ludwig 3d1175e821
Fix InterfaceProxy when used with class instances. 2017-07-19 00:10:39 +02:00
Sönke Ludwig fcf98c2016 Merge branch 'master' into trailing-whitespace 2017-07-19 00:08:33 +02:00
Sönke Ludwig d7b2173cb3 Implement TCPListener.stopListening and fix the vibe.core.net.1726 test.
The test fix follows the fix in the vibe.d repository: rejectedsoftware/vibe.d#f960427e5974c176c58b516647895a2af4ea181b
2017-07-18 11:55:39 +02:00
Sönke Ludwig e3492bab06 Update change log and bump version number. 2017-07-16 22:29:45 +02:00
Sönke Ludwig 4f69b1eaf3 Add setTaskCreationCallback() for better remote debugger integration. 2017-07-16 22:07:59 +02:00
Sönke Ludwig 719c62d6c9
Fix TLS initialization condition. 2017-07-16 00:08:07 +02:00
Sönke Ludwig 7efb496208
Fix double-free of ThreadLocalWaiter in ManualEvent.
Also adds assertions and a randomized multi-thread test to rule out similar issues with a higher confidence.
2017-07-15 18:16:13 +02:00
Sönke Ludwig 254d91dcdf
Improve error message. 2017-07-15 10:12:52 +02:00
Sönke Ludwig 87296bb1e4 Fix compilation error for VibeIdleCollect. 2017-07-10 19:46:16 +02:00
Sönke Ludwig ca2f9dbe91 Add UDP multicast declarations matching rejectedsoftware/vibe.d#1806.
The actual functionality still needs to be implemented in eventcore.
2017-07-08 10:44:42 +02:00
Sönke Ludwig 429d5dcb77 Fix GenericPath.parentPath. 2017-07-07 22:29:12 +02:00
Sebastian Wilzbach 8f89733a86 Remove all trailing whitespace
sed 's/[ \t]*$//' -i **/*.d
2017-07-03 12:19:27 +02:00
Sebastian Wilzbach 04b3575c14 Remove deprecated stdc import 2017-07-03 00:39:41 +02:00
Sönke Ludwig 58ee4a8839
Use a thread local allocator instead of processAllocator in HashMap.
This is required since processAllocator returns an ISharedAlloactor since 2.075.0. Because HashMap is operating only thread-local, this should generally be safe.
2017-06-28 17:22:13 +02:00
Sönke Ludwig 01ed0a43de Adjust for eventcore 0.8.12. 2017-06-27 01:11:50 +02:00
Sönke Ludwig f123e55fa9 Fix assertion condition. 2017-06-22 16:22:11 +02:00
Sönke Ludwig ed9efd9f44 Merge pull request #10 from wilzbach/allow-removal-of-the-default-logger
Allow removal of the default logger
2017-06-22 10:25:20 +02:00
Sönke Ludwig fd93ab82f5
Remove deprecation attribute for the system overload of setTimer.
The approach for now is to keep overloads that receive system delegates and are also marked system in turn. This breaks safety promises in some places within the library, but is an acceptable first step that keeps other possible directions open.
2017-06-22 09:38:56 +02:00
Sönke Ludwig f40da06385
Update version number. 2017-06-22 09:36:49 +02:00
Sönke Ludwig 07e077a009
Redesign the Path type to statically encode the path format.
The previous design, while intended as an improvement over the one-size-fits all Path struct of vibe-d:core, turned out to produce lots of bugs during the transition, because of missing Path.type checks.

The new design uses a cleaner approach, where the static type of a path value encodes the path format. An explicit cast is necessary to convert between different path types. The internet path type also performs proper validation and percent encoding, so that InetPath.toString() always produces a valid URI path.
2017-06-21 14:04:24 +02:00
Sönke Ludwig 7d7e4709c1
Fix nothrow overloads of lock(). 2017-06-15 13:45:14 +02:00
Sönke Ludwig 0d164708ec Fix Windows->inet/Posix path conversion issue. 2017-06-15 10:04:55 +02:00
Sönke Ludwig 5c156d1e90 Clarify async() semantics. 2017-06-12 17:34:09 +02:00
Sönke Ludwig 62e3add3ab Fix a number of issues related to mixing different path types. 2017-06-12 17:33:25 +02:00
Sönke Ludwig 6f7c897f91 Fix getFileInfo name return value for paths that end with a slash. 2017-06-12 17:31:52 +02:00
Sönke Ludwig bc689489a8
Add yieldLock(), which enables enforcing no task switches within a scope.
runTask() was altered to delay the task switch in case it gets called within an active yieldLock(), so that running tasks is still possible.
2017-06-11 11:40:25 +02:00
Sönke Ludwig 698824e811
Partially implement FileDescriptorStream.
Currently only works for waiting on read-readiness (eventcore is not exposing an analog function for write-readiness).
2017-05-30 11:02:22 +02:00
Sönke Ludwig 99a5b882d8
Limit the number of recycled fibers.
This allows the process to free up memory after heavy load spikes, while not impacting performance negatively.
2017-05-30 11:00:37 +02:00
Sönke Ludwig 0aed5664ef
Let openFile throw on failure instead of returning an invalid stream. 2017-05-30 10:57:31 +02:00
Dentcho Bankov aef2936abd Fix for #11. Cross port of fix for #1742 from vibe.d 2017-04-15 00:04:08 +03:00
Sönke Ludwig e3c680b0ce
Add assertion to ManualEvent to check for failure of creating event handles. 2017-03-27 16:32:24 +02:00
Sönke Ludwig 0895cd1960
Avoid bogus assertion failure.
Since the task queue entries never got cleaned up, the assertion got triggered once already used queue slots were starting to get reused.
2017-03-27 16:31:52 +02:00
Sönke Ludwig e81589fa3e
(Re)implement JSON configuration support for readOption.
Since the core->data dependency was removed, this had to be commented out. It is now implemented in terms of std.json.
2017-03-25 14:16:22 +01:00
Sönke Ludwig e769a9b1ca Avoid lazy evaluation of log arguments while the loggers are locked. Fixes rejectedsoftware/vibe.d#1717.
The deadlock happened because a function that waits for a worker task to finish was passed to the log functions. Evaluated lazily, it got called while the logger's mutex was locked, meaning that any log call from within that thread would cause a deadlock.

This change also has another, possibly important, implication - arguments are evaluated only once instead of possibly multiple times if multiple loggers are registered. This could very well make a lot of existing (wrong) code more robust (e.g. logInfo("%s", i++)).
2017-03-23 17:55:51 +01:00
Sebastian Wilzbach c80a15321e Allow removal of the default logger 2017-03-22 13:45:32 +01:00
Sönke Ludwig e3f9d07e58
Don't store local/remote address for UDP connections.
Errored out due to the space requirements of UNIX addresses.
2017-03-10 23:00:43 +01:00
Sönke Ludwig 5fd9fc4007
Always compute TCPConnection.xxxAddress on demand.
Storing the network addresses becomes too expensive with UNIX socket support.
2017-03-10 21:06:18 +01:00
Sönke Ludwig ed8b33786b
Compile fixes. 2017-03-10 20:07:04 +01:00
Sönke Ludwig 1edfc88e63 Add UNIX address type support to NetworkAddress. 2017-03-10 19:53:40 +01:00
Sönke Ludwig 77eddebe45 Improve Path compatibility with the original implementation. 2017-03-10 19:53:07 +01:00
Sönke Ludwig 1d9e88f27a Fix createTempFile on Windows. 2017-03-09 16:09:46 +01:00
Sönke Ludwig de718c4b1c
Add runTask overloads to make lambda argument inference work. 2017-02-23 16:39:42 +01:00
Sönke Ludwig 897c43051f
Fix nothrow inference for runTask. 2017-02-23 15:49:59 +01:00
Sönke Ludwig b995bdaa72
Use thread wait primitives for worker thread shutdown.
Avoids possible issues due to tasks interleaving the shutdown on the same thread.
2017-02-23 14:43:22 +01:00
Sönke Ludwig 3dbdc90927
Fix shutdown when no worker tasks have been used. 2017-02-22 23:26:16 +01:00
Sönke Ludwig 76882b3bd7 Remove temporary debug log messages. 2017-02-22 19:58:11 +01:00
Sönke Ludwig 9ac908c599 Use a ring buffer for worker tasks and make TaskFuncInfo creation slightly more efficient. 2017-02-22 19:52:22 +01:00
Sönke Ludwig 6f78310f26 Use scope parameters for FixedRingBuffer as appropriate. 2017-02-22 19:51:15 +01:00
Sönke Ludwig 40713db075 Move worker task logic into a new TaskPool class. 2017-02-22 18:35:51 +01:00
Sönke Ludwig f9372446b1 Improve the sync module.
- Change the API of Monitor to work without a callback
- Add ManualEvent.emitSingle
2017-02-22 17:42:20 +01:00
Sönke Ludwig 6f26766c70 Fix the "threadTime" log format to be consistent with "thread". 2017-02-22 17:36:43 +01:00
Sönke Ludwig 531398e28d Merge branch 'master' of github.com:vibe-d/vibe-core 2017-02-19 13:52:54 +01:00
Sönke Ludwig 3f83bef219 Fix Path.parentPath and Path.toString for PathType.windows. 2017-02-18 16:00:27 +01:00
Sönke Ludwig 68430a1ea4
Fix file pointer management in FileStream. Fixes rejectedsoftware/vibe.d#1684. 2017-02-16 23:37:41 +01:00
Sönke Ludwig db29e4730f Let uncaught errors in fibers terminate the process. 2017-02-16 11:56:04 +01:00
Sönke Ludwig 93b342bf77 Fix compilation error on Windows. 2017-02-16 10:20:21 +01:00
Sönke Ludwig b8663f9fbc
Conditionally compile TaskFiber.state.
See https://issues.dlang.org/show_bug.cgi?id=17131
2017-02-01 11:05:53 +01:00
Sönke Ludwig 2ed82ca975
Add compatibility overload for ConnectionPool.this.
See rejectedsoftware/vibe.d#1664.
2017-02-01 10:27:08 +01:00
Sönke Ludwig df4022d83e
Add stream proxy types to allow user code to store generic streams. 2017-01-31 16:48:04 +01:00
Sönke Ludwig 72913575f4
Fix error message. 2017-01-30 22:52:36 +01:00
Sönke Ludwig d9c373419a
Fixup for the previous timer fix. 2017-01-30 20:12:37 +01:00
Sönke Ludwig f5c2177c5d
Fix createTimer() when called with a callback. 2017-01-30 19:55:34 +01:00
Sönke Ludwig c490a354b7
Handle Timer.stop() gracefully for null timers. 2017-01-30 17:34:25 +01:00
Sönke Ludwig b7e996cd8c
Let TCPConnection.peek() handle closed connections gracefully. 2017-01-30 17:27:43 +01:00
Sönke Ludwig 02e00944f6
Fix possible range violation in BatchBuffer.popFront(N). 2017-01-30 17:27:17 +01:00
Sönke Ludwig 2dccd43277
Let TCPConnection.waitForData amd leastSize act gracefully on closed connections. 2017-01-30 12:04:21 +01:00
Sönke Ludwig ac811ba501
Remove buggy NetworkAddress.toUnknownAddress.
UnknownAddress is not large enough to hold either IPv6 or UDS addresses.
2017-01-30 11:40:11 +01:00
Sönke Ludwig d2629ef053
Don't throw on read error in TCPConnection.waitForData. 2017-01-30 11:29:01 +01:00
Sönke Ludwig 4c9b6c0fb8
Properly check return value of createDatagramSocket. 2017-01-30 11:19:51 +01:00
Sönke Ludwig 8f6c4dd536
Fix LocalTaskSemaphore.
Fixes a potential hang, potential over-use of lock slots and only needs a single LocalManualEvent now instead of one created for each wait.
2017-01-30 10:07:06 +01:00
Sönke Ludwig 76df9212ef
Fix accessibility issue for std.concurrency.send. 2017-01-30 09:43:43 +01:00
Sönke Ludwig 84a21f7e9d
Add compatibility overloads for listenTCP. 2017-01-30 09:19:08 +01:00
Sönke Ludwig e88d2d1b4b
Fix segfault in DirectoryWatcher. 2017-01-29 22:11:17 +01:00
Sönke Ludwig d0a55ef374
Add an uninterruptible variant of Task.join. 2017-01-29 20:20:08 +01:00
Sönke Ludwig 96b798200c
Make more network methods nothrow.
TCPConection properties and NetworkAddress.to(Address)String have been marked nothrow.
2017-01-29 20:19:38 +01:00
Sönke Ludwig 2ff37202c0
Add compatibility overload for setTimer(). 2017-01-29 16:46:21 +01:00
Sönke Ludwig 798f0ef446
Implement support for TCPListenOptions.reusePort. 2017-01-27 22:51:17 +01:00
Sönke Ludwig b391ebabbe
Add more specific assertion for SpinLock initialization. 2017-01-27 22:50:57 +01:00
Sönke Ludwig fc96ee9050
Fixes for setTimer and SpinLock.
- setTimer now starts a task to call the callback. This keeps the timer referenced and avoids issues if I/O functions are called from within the callback.
- SpinLock is now also initialized in "shared static this", so that applications using "shared static this" for initialization work properly.
2017-01-27 22:50:29 +01:00
Sönke Ludwig 3a3eb73006
Fix InterfaceProxy when used with class instances. 2017-01-27 00:51:22 +01:00
Sönke Ludwig 71c83440d3
Remove the deprecated OutputStream.write methods.
They will stay deprecated in vibe-d 0.8.0, but vibe-core will be released without them.
2017-01-27 00:10:09 +01:00
Sönke Ludwig 822dcccf34
Add interfaceProxy function to allow for better vibe:core compatibility. 2017-01-26 23:53:18 +01:00
Sönke Ludwig 5249c1c4c6
Fix infinite recursion in TCPConnection.(local/remote)Address properties. 2017-01-26 13:58:14 +01:00
Sönke Ludwig 373f82c16b
Deprecate stream based OutputStream.write overloads.
Replaced by a global pipe() function that supports non-class streams, too.
2017-01-25 22:42:35 +01:00
Sönke Ludwig 8985923e4d
Let InterfaceProxy handle parameter storage classes properly. 2017-01-25 22:40:07 +01:00
Sönke Ludwig 5f980acefd
Upgrade to latest eventcore. 2017-01-25 21:04:13 +01:00
Sönke Ludwig 2acc60934f
Add IOMode parameters to stream read/write methods. 2017-01-19 00:36:32 +01:00
Sönke Ludwig e80d7244bc
Add PathEntry.validateFilename. 2017-01-19 00:33:52 +01:00
Sönke Ludwig fb706ea0b6
Properly implement struct Path.
The new implementation is @nogc where possible.
2017-01-17 23:50:33 +01:00
Sönke Ludwig 9d4e8086ff Make the callback type the first argument to Waitable!(). 2017-01-16 00:23:37 +01:00
Sönke Ludwig 964d72f3b5 Fix handling of scoped callback parameters in eventcore callbacks. 2017-01-16 00:20:35 +01:00
Sönke Ludwig 32d360baac Add callback based result retrieval for asyncAwaitAny.
This can be used to safely retrieve scoped data.
2017-01-15 23:55:37 +01:00
Sönke Ludwig f3c84d497e Fix bind address handling for connectTCP. 2017-01-15 23:17:14 +01:00
Sönke Ludwig 24b940039d Implement UDPConnection.canBroadcast/localAddress. 2017-01-15 22:19:41 +01:00
Sönke Ludwig f015662a94 TCPConnection and async improvements.
- asyncAwaitAny now takes the callback type, so that parameter storage classes are handled correctly
- Implement TCPConnection.remoteAddress/localAddress
- Implement TCPConnection.tcpNoDelay, keepAlive and readTimeout
- Implement timeout handling for TCPConnection.waitForData
2017-01-15 20:59:36 +01:00
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 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 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 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 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 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 1c2850f99f Make all low-level asnyc log messages opt-in. 2016-10-04 17:51:24 +02:00
Sönke Ludwig ff8882976d Fix BatchBuffer.read. 2016-10-04 17:50:13 +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 a74a89cab7 Fix scope issues in asyncAwait. 2016-06-15 18:21:04 +02:00
Sönke Ludwig 48131ce7b8 Implement generic asyncAwaitAny.
This enables waiting for multiple events at the same time. Generic timeout functionality is now also implemented.
2016-06-14 09:26:12 +02:00
Sönke Ludwig 8264070f19 Fix for latest eventcore changes. 2016-06-14 09:25:28 +02:00