Am 06.03.2018 um 12:19 schrieb Stephan Dilly:
On Tue, 06 Mar 2018 11:09:58 GMT, Stephan Dilly wrote:
On Mon, 05 Mar 2018 18:59:00 GMT, Sönke Ludwig wrote:
The new release switches to vibe-core by default* and compiles on the freshly released DMD 2.079.0. It needs to be used together with the latest vibe-core pre-release, because instead of
std.experimental.allocator
, which is still undergoing frequent API changes, the forked semi-stable variantstdx.allocator
is being used, and both libraries need to match up in that regard. This version contains a fix inURLRouter
that can heavily reduce the memory usage of processes that define many routes.Full change log: https://github.com/vibe-d/vibe.d/blob/master/CHANGELOG.md
DUB package: http://code.dlang.org/packages/vibe-d/0.8.3-rc.1* It's still possible to use the old core implementation by choosing a different configuration for vibe-d:core:
dub.sdl:
dependency "vibe-d:core" version="~>0.8.3-rc.1" subConfiguration "vibe-d:core" "libevent"
dub.json:
"dependencies": { ... "vibe-d:core": "~>0.8.1-rc.1" }, "subConfigurations": { "vibe-d:core": "libevent" }
Works smooth so far. I gave a couple of vibe.d projects a quick spin and most fo them seem to be working. Is there a documentation what changes csn be expected from this new core driver? Are there benchmarks with a comparison to the existing implementation?
Cheers,
Stephan
The new core module is a lot faster in principle, but unfortunately the
HTTP module currently eats up all of the improvements by making it
necessary to wrap the new struct based stream types into a manual
dynamic dispatch mechanism. So in an HTTP benchmark the benefits
currently simply don't show, unfortunately.
However, I hope to be able to eliminate enough places where dynamic
dispatch is required to change that into a net positive for the current
HTTP server implementation. The upcoming redesign will be written from
the ground up with this in mind, so it should get a lot better.
In synthetic tests, I got speedups of up to around 5x single-threaded
(~60kreq/s -> ~320kreq/s). So even if that may be difficult to reach
with a full implementation, there are going to be heavy improvements.
Although with dmd 2.079 it spits out a ton of deprecations:
../../../.dub/packages/eventcore-0.8.29/eventcore/source/eventcore/drivers/posix/watchers.d(431,19): Deprecation: The delete keyword has been deprecated. Use object.destroy() instead. ../../../.dub/packages/vibe-core-1.4.0-rc.1/vibe-core/source/vibe/internal/array.d(307,73): Deprecation: The delete keyword has been deprecated. Use object.destroy() instead. ../../../.dub/packages/vibe-core-1.4.0-rc.1/vibe-core/source/vibe/internal/array.d(326,19): Deprecation: The delete keyword has been deprecated. Use object.destroy() instead. ../../../.dub/packages/vibe-core-1.4.0-rc.1/vibe-core/source/vibe/internal/array.d(339,21): Deprecation: The delete keyword has been deprecated. Use object.destroy() instead. ../../../.dub/packages/vibe-core-1.4.0-rc.1/vibe-core/source/vibe/internal/array.d(346,21): Deprecation: The delete keyword has been deprecated. Use object.destroy() instead. ../../../.dub/packages/vibe-d-0.8.3-rc.1/vibe-d/stream/vibe/stream/operations.d(466,45): Deprecation: The delete keyword has been deprecated. Use object.destroy() instead. ../../../.dub/packages/vibe-d-0.8.3-rc.1/vibe-d/utils/vibe/utils/array.d(326,19): Deprecation: The delete keyword has been deprecated. Use object.destroy() instead. ../../../.dub/packages/diet-ng-1.4.4/diet-ng/source/diet/input.d(7,8): Deprecation: module `diet.traits` member DietTraitsAttribute is not visible from module input
can this be made fixed with keeping backwards compat?
Didn't notice that, I'll fix it before release. Should hopefully be no
big deal, since that should all just be internal memory management.