Skip to content
Official vibe.d development
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
core bump version to v0.8.6-alpha.2 May 19, 2019
crypto Bionic C runtime has secure arc4random Mar 10, 2018
data Merge pull request #2274 from tchaloupka/fix_1941 Mar 8, 2019
examples Add selective imports to rest-js example in support of upcoming DMD PR Apr 25, 2019
http Add way to disable port and address reuse May 7, 2019
inet Implement proper conversion between native paths and file URLs. Mar 28, 2019
lib Upgrade Windows OpenSSL binaries to 1.1.0a. Feb 8, 2019
mail Try to add meson dependency for stdx-allocator Dec 4, 2017
mongodb Merge pull request #2302 from Vild/MeasonFix Apr 14, 2019
redis Add RedisZSet.rangeByLex(). Apr 6, 2018
scripts Adjust version scripts for new meson version approach and re-enable C… Aug 21, 2017
source/vibe Remove vibe-d:diet. Jul 12, 2017
stream Add MemoryStream.truncate. Jan 12, 2019
tests Add private imports explicitly Apr 19, 2019
textfilter Fix bogus mailto links generated by the Markdown parser. May 17, 2018
tls Check and clear errors at OpenSSL connection shutdown. Mar 29, 2019
utils Merge pull request #2291 from n8sh/hashmapScalarKeys Apr 19, 2019
web Fix bug with sanity check on key length. Also update docs to say that Feb 22, 2019
.codecov.yml Avoid CI failures from CodeCov by making them always green May 5, 2018
.editorconfig add *.json to .editorconfig Jul 28, 2014
.gitignore Fix #2053 - Auto-detect OpenSSL 1.1 Feb 3, 2019
.travis.yml Update compiler support to DMD 2.085.0/LDC 1.14.0. Mar 18, 2019
CHANGELOG.md Update change log. Apr 13, 2019
CONTRIBUTING.md Add CONTRIBUTING.md. Aug 22, 2014
LICENSE.txt Update copyright dates. Feb 26, 2018
LICENSE_DE.txt Update copyright dates. Feb 26, 2018
README.md Update compiler support to DMD 2.085.0/LDC 1.14.0. Mar 18, 2019
appveyor.yml Update compiler support to DMD 2.085.0/LDC 1.14.0. Mar 18, 2019
dub.sdl Fixup dub.sdl Jun 2, 2018
meson.build bump version to v0.8.6-alpha.2 May 19, 2019
setup-freebsd.sh Remove references to the removed "vibe" script. Jun 26, 2013
setup-linux.sh Remove left over traces of the "vibe" script. Fixes dlang/dub#292. Apr 21, 2014
setup-mac.sh Fix: #2279 - MacOS std.json.JSONException@std/json.d(155): JSONValue … Apr 27, 2019
todo.txt Update the (mostly irrelevant) todo.txt document. Nov 7, 2016
travis-ci.sh Disable test in travis-ci.sh Feb 23, 2018

README.md

vibe.d

vibe.d is a high-performance asynchronous I/O, concurrency and web application toolkit written in D. It already contains many supplemental features such as database support to be able to offer a complete development environment. For more specialized needs, there are also many compatible DUB packages available.

Visit the website at http://vibed.org/ for more information and documentation.

DUB Package Posix Build Status Windows Build Status

Hello Vibe.d

#!/usr/bin/env dub
/+ dub.sdl:
name "hello_vibed"
dependency "vibe-d" version="~>0.8.0"
+/
import vibe.d;

void main()
{
    auto settings = new HTTPServerSettings;
    settings.port = 8080;

    listenHTTP(settings, (req, res) { res.writeBody("Hello Vibe.d: " ~ req.path); });
    runApplication();
}

Download this file as hello.d and run it with DUB:

> dub hello.d

(or chmod +x and execute it: ./hello.d)

Alternatively, you can quickstart with examples directly on Open on run.dlang.io.

Support

Vibe.d aims to support at least the 5 latest minor releases of D. At the moment, the following compilers are supported and tested:

  • DMD 2.085.0
  • DMD 2.084.0
  • DMD 2.083.1
  • DMD 2.082.1
  • DMD 2.081.2
  • DMD 2.080.1
  • DMD 2.079.1
  • DMD 2.078.3
  • DMD 2.077.1
  • DMD 2.076.1
  • LDC 1.14.0 (FE: 2.084.1)
  • LDC 1.13.0 (FE: 2.083.1)
  • LDC 1.12.0 (FE: 2.082.1)
  • LDC 1.11.0 (FE: 2.081.2)
  • LDC 1.10.0 (FE: 2.080.1)
  • LDC 1.9.0 (FE: 2.079.1)
  • LDC 1.8.0 (FE: 2.078.3)
  • LDC 1.7.0 (FE: 2.077.1)
  • LDC 1.6.0 (FE: 2.076.1)

Up to 0.8.4:

  • DMD 2.075.1
  • DMD 2.074.1
  • LDC 1.5.0 (FE: 2.075.1)
  • LDC 1.4.0 (FE: 2.074.1)

Up to 0.8.3:

  • DMD 2.073.2
  • LDC 1.3.0 (FE: 2.073.2)

Up to 0.8.2:

  • DMD 2.072.2
  • LDC 1.2.0 (FE: 2.072.2)

Up to 0.8.1:

  • DMD 2.071.2
  • LDC 1.1.1 (FE: 2.071.2)

Up to 0.8.0:

  • DMD 2.070.2
  • LDC 1.0.0 (FE: 2.070.2)

Up to 0.7.31+:

  • DMD 2.069.2

Up to 0.7.30:

  • DMD 2.068.2
  • LDC 0.17.0-beta.2 (FE: 2.068.2)

Up to 0.7.29:

  • DMD 2.067.1
  • LDC 0.16.1

Up to 0.7.27:

  • DMD 2.066
  • GDC 5.2.0
  • GDC 4.9.2
  • LDC 0.15.1

Installation

Instead of explicitly installing vibe.d, it is recommended to use DUB for building vibe.d based applications. Once DUB is installed, you can create and run a new project using the following shell commands:

dub init <name> -t vibe.d
cd <name>
dub

Similarly, you can run an example by invoking dub from any of the example project directories.

Note that on non-Windows operating systems, you also need to have libevent and OpenSSL installed - and of course a D compiler. See below for instructions.

Additional setup on Windows

Note for building on Win64

There are currently no 64-bit Windows binaries of libevent included, so you'll either need to build those yourself, or you can switch to the "win32" event driver by inserting "subConfigurations": {"vibe-d": "win32"} into the dub.json file of your project.

Additional setup on Mac using brew

If you don't have brew installed, install it according to their install instructions and install libevent.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install libevent

You can then also install DUB using brew:

brew install dub

(Note: Install brew only if you do not have macports, as they will conflict)

Install DMD using the installer on http://dlang.org/download.html.

Optionally, run ./setup-mac.sh to create a user/group pair for privilege lowering.

Additional setup on Linux (Debian/Ubuntu/Mint)

Install vibe.d's dependencies (*)

sudo apt-get install libevent-dev libssl-dev

On 32-bit linux: Install DMD-i386

sudo apt-get install g++ gcc-multilib xdg-utils
wget "http://downloads.dlang.org/releases/2.x/2.068.2/dmd_2.068.2-0_i386.deb"
sudo dpkg -i dmd_2.068.2-0_i386.deb

On 64-bit linux: Install DMD-amd64

sudo apt-get install g++ gcc-multilib xdg-utils
wget "http://downloads.dlang.org/releases/2.x/2.068.2/dmd_2.068.2-0_amd64.deb"
sudo dpkg -i dmd_2.068.2-0_amd64.deb

Optionally, run ./setup-linux.sh to create a user/group pair for privilege lowering.

(*) Note that Debian 6 (Squeeze) and older requires manual installation (see below).

Additional setup on Linux (generic)

You need to have the following dependencies installed:

Optionally, run ./setup-linux.sh to create a user/group pair for privilege lowering.

(*) Note that some Linux distributions such as Debian Squeeze or CentOS 6 may only ship libevent 1.4, in this case you will have to manually compile the latest 2.0.x version:

wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar -xf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure
make
make install
ldconfig

Additional setup on FreeBSD

Install the DMD compiler and vibe.d's dependencies using portupgrade or a similar mechanism:

sudo portupgrade -PN devel/libevent2 devel/pkgconf

Optionally, run ./setup-freebsd.sh to create a user/group pair for privilege lowering.

Switching between OpenSSL versions

By default, vibe.d is built against OpenSSL 1.0.x. On systems that use the newer 1.1.x branch, this can be overridden on the DUB command line using --override-config vibe-d:tls/openssl-1.1. Alternatively, the same can be done using a sub configuration directive in the package recipe:

SDL syntax:

dependency "vibe-d:tls" version="~>0.8.2"
subConfiguration "vibe-d:tls" "openssl-1.1"

JSON syntax:

{
    ...
    "dependencies": {
        ...
        "vibe-d:tls": "*"
    },
    "subConfigurations": {
        ...
        "vibe-d:tls": "openssl-1.1"
    }
}

For older systems there is also an "openssl-0.9" configuration that can be used in analogy to the above to build against the OpenSSL 0.9.8 branch.

Finally, there is a "botan" configuration for using the D port of the Botan library.

You can’t perform that action at this time.