Commit graph

615 commits

Author SHA1 Message Date
Sönke Ludwig f734b4a142 Improve thread-correctness of Task/TaskFiber.
- Task.join and Task.interrupt are now thread-safe
- TaskFiber.task returns Task.init if no task is running (avoids bogus resumes of the TaskFiber by the scheduler)

To enable thread-safe join/interrupt, the task counter is now stored together with the necessary flags within a single shared ulong that is manipulated atomically.
2019-04-13 20:53:01 +02:00
Sönke Ludwig a202d33b3e Fix a (harmless) race-condition.
ThreadLocalWaiter.unused may only be accessed from the owner thread.
2019-04-13 17:01:50 +02:00
Leonid Kramer b7669868c0
Merge pull request #144 from vibe-d/fix_makefileinfo_range_violation
Fix makeFileInfo range violation
2019-04-06 16:13:42 +02:00
Sönke Ludwig 1ca950867a Fix typo. 2019-04-05 09:47:37 +02:00
Sönke Ludwig a86f25b3b4 Fix range violation in makeFileInfo and add some unit tests. 2019-04-05 09:47:32 +02:00
Sönke Ludwig 39df94587b
Merge pull request #143 from vibe-d/conectionpool_disconnect
Add ConnectionPool.removeUnused.
2019-03-29 09:10:29 +01:00
Sönke Ludwig bf30127534 Add ConnectionPool.removeUnused.
Allows to disconnect all connections that are not currently in use. In particular, it allows to close all connections at shutdown to avoid leaking socket descriptors.
2019-03-28 14:11:20 +01:00
Sönke Ludwig e03caac035 Bump version number. 2019-03-26 15:37:30 +01:00
Sönke Ludwig 5506b6f433 Update change log. 2019-03-26 15:32:58 +01:00
Leonid Kramer a48f8f00bd
Merge pull request #142 from vibe-d/file_info_exception_fix
Make the DirEntry->FileInfo conversion nothrow.
2019-03-25 19:04:58 +01:00
Sönke Ludwig 8e4adf000f Make the DirEntry->FileInfo conversion nothrow.
Avoids listDirectory/iterateDirectory getting interrupted when stumbling over inaccessible files. The `name` field of the returned file info value is always set, so that these files can still be identified.
2019-03-25 09:45:47 +01:00
The Dlang Bot 5b146ab002
Merge pull request #141 from FraMecca/master
support isFile
merged-on-behalf-of: Sönke Ludwig <s-ludwig@users.noreply.github.com>
2019-03-21 20:22:21 +01:00
Francesco Mecca 6292320bb2 support isFile 2019-03-21 17:39:44 +01:00
Sönke Ludwig caf291dd22 Bump version number. 2019-03-10 16:00:30 +01:00
Sönke Ludwig 02f5b4f91d Avoid superfluous notifyAll calls in Channel.
Slightly reduces the notification overhead in multiple-reader or multiple-writer scenarios.
2019-03-10 16:00:12 +01:00
Sönke Ludwig edec8df026 Update change log. 2019-03-10 15:59:02 +01:00
Leonid Kramer f558ce6c3f
Merge pull request #139 from vibe-d/busy_loop_interleave
Fix proper interleaving of busy yield loops inside and outside of tasks.
2019-03-09 21:41:47 +01:00
Sönke Ludwig cae9f28885 Fix proper interleaving of busy yield loops inside and outside of tasks. 2019-03-06 12:35:37 +01:00
The Dlang Bot 61fcfb9847
Merge pull request #136 from Yoplitein/tcpfunc
Fix #109 - TCPConnectionFunction is actually a delegate
merged-on-behalf-of: Sönke Ludwig <s-ludwig@users.noreply.github.com>
2019-02-24 12:36:29 +01:00
Steven Dwy 111478ef41 Fix #109 - TCPConnectionFunction is actually a delegate 2019-02-24 02:55:47 -08:00
Sönke Ludwig 2727780ef1
Merge pull request #134 from joseph-wakeling-frequenz/fix-run-app-args
Fix runApplication handling of unrecognized command-line args
2019-02-22 22:16:29 +01:00
Joseph Rushton Wakeling d8e4013c92
Fix runApplication handling of unrecognized command-line args
`runApplication` takes an `args_out` parameter which, if non-null, is
supposed to be set to match unrecognized command-line args.  However,
the parameter is never passed to `finalizeCommandLineOptions`, which
will therefore log an error and throw an exception if any command line
arguments are unrecognized.

This patch fixes the oversight, ensuring that `runApplication` will
correctly populate a non-null `args_out` parameter with unrecognized
command-line arguments, and not throw an exception in this case.
2019-02-22 16:33:01 +01:00
Sönke Ludwig bfcf08def0 Bump version number. 2019-01-26 19:28:43 +01:00
Sönke Ludwig 663b43fa34 Update change log. 2019-01-26 19:28:13 +01:00
Sönke Ludwig 1dedff027e
Merge pull request #130 from vibe-d/channel_improvements
Channel improvements
2019-01-26 19:20:40 +01:00
Sönke Ludwig 92bb067f4b Make Channel.tryConsumeOne/consumeAll/close/empty/bufferFill nothrow. 2019-01-26 18:29:28 +01:00
Sönke Ludwig 1a463cafc9 Make TaskCondition.wait/notify/notifyAll nothrow. 2019-01-26 18:04:50 +01:00
Sönke Ludwig c6a29e1c3b Make createChannel safe and add Channel.bufferFill. 2019-01-26 18:04:50 +01:00
Sönke Ludwig 5437b9ecb6
Merge pull request #129 from vibe-d/run_worker_task_h
Implement runWorkerTaskDistH.
2019-01-26 18:04:22 +01:00
Sönke Ludwig a54fa6b7de Implement runWorkerTaskDistH.
Variant of runWorkerTask that allows to get the handles of the created tasks.
2019-01-26 18:02:47 +01:00
Sönke Ludwig 177e761716
Merge pull request #128 from WebFreak001/fix-net-regression
remove refsLeft assert
2019-01-23 21:22:55 +01:00
The Dlang Bot 6e04179cdc
Merge pull request #126 from vibe-d/issue_125_blocking_timer_callbacks
Improve timer documentation and add a yieldLock the callback invocation
merged-on-behalf-of: Leonid Kramer <l-kramer@users.noreply.github.com>
2019-01-22 21:03:47 +01:00
WebFreak001 611505c038 remove refsLeft assert
It seems when running in a vibe-d app that the assert fails
Even though I would like there to be a check, closing the vibe.d
app afterwards shows no leaked handles so I think it's fine.
2019-01-22 20:16:38 +01:00
Sönke Ludwig 1284858d2c Avoid TLS overhead for TimerCallbackH and make it fully private. 2019-01-22 19:46:52 +01:00
Sönke Ludwig b5ccb784a1 Allow Task.interrupt to be called within a yieldLock. 2019-01-22 18:06:55 +01:00
Sönke Ludwig 03ffe70dc1 Revert to execute timer callbacks in tasks and add createLeanTimer instead.
Fixes #125.
2019-01-22 18:06:55 +01:00
Sönke Ludwig 1a87ee5b3f Make yieldLock() safe and nothrow. 2019-01-22 18:06:54 +01:00
The Dlang Bot bee1c626cc
Merge pull request #127 from vibe-d/channel_convenience
Channel convenience
merged-on-behalf-of: Sönke Ludwig <s-ludwig@users.noreply.github.com>
2019-01-22 13:21:42 +01:00
Sönke Ludwig 857be9459e Improve convenience of the Channel API.
- allows all methods to be called on a `shared(Channel!T)` instance.
- `Channel` pre-defines the `buffer_size` argument to 100, matching `createChannel`
2019-01-22 10:50:46 +01:00
Sönke Ludwig 9b00bd7b4b
Merge pull request #124 from vibe-d/test_latest_compilers
Update compiler support to DMD 2.084.0 and LDC 1.13.0.
2019-01-20 17:39:14 +01:00
Sönke Ludwig 991cf5b996 Update compiler support to DMD 2.084.0 and LDC 1.13.0. 2019-01-20 14:59:34 +01:00
Sönke Ludwig 27ec5fe2d2 Bump version number. 2019-01-20 14:50:56 +01:00
Sönke Ludwig 2797d6e821 Update change log. 2019-01-20 14:50:38 +01:00
Sönke Ludwig 3503001ec6 Add contract to Channel.consumeAll to force the input buffer to be empty. 2019-01-20 14:31:29 +01:00
The Dlang Bot c21e1aa06d
Merge pull request #25 from vibe-d/channels
Implement typed cross-task channels
merged-on-behalf-of: Leonid Kramer <l-kramer@users.noreply.github.com>
2019-01-20 13:51:36 +01:00
Sönke Ludwig 48908a7f15 Bump version number. 2019-01-20 13:26:44 +01:00
Sönke Ludwig 5833d19b9a Update change log. 2019-01-20 13:26:18 +01:00
The Dlang Bot 92fa6aea2b
Merge pull request #123 from vibe-d/test_issue_115
Make the test for #115 actually fail if a socket gets leaked.
merged-on-behalf-of: Sönke Ludwig <s-ludwig@users.noreply.github.com>
2019-01-20 12:35:27 +01:00
Sönke Ludwig 3be1de2fdb Refine the semantics of consumeAll. 2019-01-20 11:57:16 +01:00
Sönke Ludwig cb6a79a86f Make the test for #115 actually fail if a socket gets leaked. 2019-01-20 11:16:53 +01:00