Sönke Ludwig
f56fd7580c
Avoid reallocating the data in readFileUTF8 if the UTF encoding is valid.
...
Uses the immutable overload of sanitizeUTF8 to reuse the original buffer if possible.
2019-10-22 11:41:35 +02:00
Sönke Ludwig
81ba969fd6
Reduce log noise for worker tasks.
2019-10-22 11:30:31 +02:00
Sönke Ludwig
2bf660a529
Bump version to 1.8.0-alpha.1.
2019-09-27 17:37:43 +02:00
Sönke Ludwig
aae2c28ef6
Make sure that an uninitialized YieldLock does not decrement the lock counter.
...
Uninitialized YieldLock values can happen in various ways, dispite the default constructor being disabled. If any such value got destroyed, it would lead to a negative lock count. Since this is handled properly now, the default constructor is also enabled in this commit.
2019-09-27 15:09:06 +02:00
Leonid Kramer
24a83434e4
Merge pull request #179 from vibe-d/path_optimization
...
Add a nogc path segment API
2019-09-26 11:54:36 +02:00
Sönke Ludwig
645896bcfd
Use bySegment2 instead of bySegment for high-level functionality.
2019-09-19 15:33:00 +02:00
Sönke Ludwig
6ef53121ad
Add GenericPath.bySegment2 and .head2 as fully nogc alternatives.
2019-09-19 15:32:59 +02:00
Sönke Ludwig
32858b7aee
Rework the path segment encoding/decoding API.
...
- Deprecates Format.decodeSegment (returning a range of GemericPath.Segment) and added decodeSingleSegment instead, which returns a string instead.
- Adds Format.encodeSegment to encode a single path segment
2019-09-19 15:32:59 +02:00
Sönke Ludwig
5640516ba8
Remove SpinLock and use core.sync.mutex.Mutex instead.
...
The places that used it showed too much contention in load tests, so that the spin lock was more expensive that the regular OS mutex/futex.
2019-09-19 11:25:14 +02:00
Sönke Ludwig
04be22b00e
Bump version number.
2019-09-17 19:37:13 +02:00
Sönke Ludwig
db994eaa80
Fix compile error on old compiler versions
2019-09-17 15:22:41 +02:00
Geod24
e7294bb9bd
Clean up std.json deprecation
2019-09-03 01:35:58 +09:00
JinShil
eb4344653e
Replace hash_t
with size_t
2019-08-31 12:29:15 +09:00
Sönke Ludwig
3dff74fc0f
Bump version number.
2019-08-25 17:12:49 +02:00
Sönke Ludwig
d9e545bf60
Fix getFileInfo's exception handling and reduce overhead of the background work.
...
Instead of asyncWork, now uses a worker task directly and signals the finalization of the result using message passing. This avoids the roundtrip required to return the task handle, as well as the heap allocated result buffer of Future!T.
2019-08-25 12:02:08 +02:00
Sönke Ludwig
d7dfb6cd23
Bump version number.
2019-08-24 16:36:48 +02:00
Sönke Ludwig
ce1adf8c3b
Merge pull request #172 from vibe-d/async_file_operations
...
Avoid all blocking file operations outside of worker threads
2019-08-21 20:59:45 +02:00
Sönke Ludwig
a2f970b7b2
Merge pull request #165 from vibe-d/pure_parent_path
...
Make GenericPath.parentPath pure.
2019-08-21 19:26:00 +02:00
Sönke Ludwig
84907ddbe3
Merge pull request #168 from v1ne/fix-appending-to-file
...
FileStream: Adjust file offset when appending to a file
2019-08-21 19:25:17 +02:00
Sönke Ludwig
f6b97b04c3
Make GenericPath.parentPath pure.
2019-08-21 13:57:54 +02:00
Sönke Ludwig
e3a38b374e
Let all non-aio file system functions run in worker threads.
...
This avoids stalling the event loop in case of lengthy I/O (network shares, spinning up hard drives etc).
2019-08-21 13:34:00 +02:00
Sönke Ludwig
881e3da5f9
Make async marked safe if possible and add asyncWork.
...
asyncWork is the same as async, except that it guarantees that the computation happens in a worker thread.
2019-08-21 13:34:00 +02:00
Sönke Ludwig
4f5636dadf
Mark async/Future and runWorkerTaskH as safe.
2019-08-21 13:34:00 +02:00
Tomáš Chaloupka
4e8302d10d
unlock ConnectionPool on failure
2019-07-31 14:41:26 +02:00
v1ne
513bebcb95
FileStream: Approximate the file offset better when appending
...
Instead of starting at zero, start at the current file size. This offset
is stored in FileStream. It is only an approximation because concurrent
writes could advance the file without FileStream's knowledge.
Add a test that shows that the offset is approximated as expected and that
appending to an existing file works, too.
This is also a regression test which shows that appending to an existing
file works as expected. See vibe-d/eventcore#115 .
2019-07-26 00:38:15 +02:00
v1ne
ce9faec1c1
FileStream: Forbid seek(.) or truncate(.) when appending to a file
...
Those functions do not work for files opened for appending. Make this clear.
2019-07-26 00:29:59 +02:00
v1ne
3ebb065509
Clean up: Use "enforce"
2019-07-26 00:29:59 +02:00
Sönke Ludwig
e5f45718f6
Bump version number.
2019-06-21 21:44:27 +02:00
Sönke Ludwig
04d01b0f31
Handle terminated eventcore drivers gracefully when releasing handles.
...
Instead of crashing, this now prints a warning message. See #135 .
2019-06-20 11:56:22 +02:00
Leonid Kramer
c39fdb2208
Merge pull request #163 from vibe-d/issue157-empty-consumeOne-on-closed-channel
...
Fix empty-consumeOne channel usage pattern for a single consumer
2019-06-20 09:31:13 +02:00
Sönke Ludwig
37ad77c701
Let empty block to make sure the following consumeOne succeeds.
...
This change ensures that a return value of false guarantees the next call to consumeOne to succeed, meaning that the combination of empty/consumeOne is sound in a single-consumer scenario. This also updates the documentation to stress that tryConsumeOne is still the preferred API.
2019-06-16 23:00:05 +02:00
Sönke Ludwig
8c63f79ea7
Avoid yielding in the task finalization phase. Fixes #161 .
...
Makes sure that the task finalization finishes (including notifying possibly multiple joiners) before the fiber yields, because it won't be resumed by the scheduler before the next task gets assigned to the fiber.
2019-06-16 22:44:11 +02:00
Sönke Ludwig
79bb21c6a3
Bump version number.
2019-06-16 15:10:50 +02:00
Sönke Ludwig
989577ff23
Fix copyFile setting file times of write protected files.
2019-06-16 15:10:50 +02:00
Sönke Ludwig
0d78dfe4a9
Let TCPConnection.leastSize time out according to the readTimeout property.
...
Fixes #153 .
2019-06-16 09:55:00 +02:00
Sönke Ludwig
5393109669
Add TCPConnection.waitForDataEx.
...
Allows to distinguish between timeout and no more data cases.
2019-06-04 15:20:54 +02:00
Sönke Ludwig
33014fde5f
Merge pull request #154 from BenjaminSchaaf/process
...
Implement vibe.core.process for subprocess handling similar to std.process
2019-06-04 11:18:34 +02:00
Benjamin Schaaf
68dd4baa44
s/registerProcess/adoptProcessID/g
2019-06-04 10:13:00 +10:00
Benjamin Schaaf
0d4840b81d
Address review comments
2019-06-02 14:42:41 +10:00
Geod24
40f82b22e5
Remove useless imports to std.variant
2019-05-28 14:24:42 +09:00
Sönke Ludwig
08db20629b
Implement logException.
...
Logs an exception along with an error message and the full stack trace. Performs proper exception handling for the latter to stay nothrow.
2019-05-25 22:12:43 +02:00
Sönke Ludwig
c3832cbb8b
Bump version number.
2019-05-19 11:51:16 +02:00
Benjamin Schaaf
83e2d391e6
2nd candidate windows compilation fix
2019-05-05 17:52:44 +10:00
Benjamin Schaaf
7f11fcf7a6
Candidate windows compilation fix
2019-05-05 15:37:35 +10:00
Benjamin Schaaf
c3f5ebb9fd
Implement vibe.core.process for subprocess handling similar to std.process
2019-05-05 15:27:57 +10:00
Sönke Ludwig
b86610011f
Merge pull request #150 from rracariu/patch-1
...
Add way to disable port and address reuse
2019-04-26 09:56:04 +02:00
Denis Feklushkin
fc9bef86af
Logger: avoid formatting for strings without additional args
2019-04-23 23:01:44 +07:00
Radu Racariu
5e8e75e3e8
Add way to disable port and address reuse
2019-04-17 16:40:04 +03:00
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