ランキングに戻る

vibe-d/vibe.d

D

Official vibe.d development

asyncconcurrencynetworkingwebdlangd
スター成長
スター
1.2k
フォーク
281
週間成長
Issue
419
5001k
2012年9月2017年4月2021年12月2026年7月
README

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 https://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.9.0"
+/
import vibe.vibe;

void main()
{
    listenHTTP("127.0.0.1:8080", (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.

Project structure

The vibe.d project is structured into multiple repositories:

  • vibe-d (this repository): The high level web and REST framework, HTTP, STMP and Redis/MongoDB functionality
  • vibe-http: HTTP client/server implementation including WebSockets, proxy, sessions etc.
  • vibe-stream: Advanced stream types and TLS stream support
  • vibe-inet: Internet standard functionality (URL, form encoding, HTML encoding, ...)
  • vibe-core: Fiber based I/O and concurrency implementation
  • vibe-serialization: Serialization and structured data format support
  • vibe-container: Container implementations used throughout the project
  • vibe-sdl: SDLang serialization support based on sdlite
  • vibe-compat: Legacy functionality
  • observable: Observable, signal/slot and reactive value implementations
  • diet: pug.js inspired compile-time HTML template system with vibe.web integration
  • eventcore: Low-level abstraction over the operating system's asynchronous I/O facilities

You can find an API overview of the whole project in the API documentation.

Support

Vibe.d supports the 10 latest minor releases of DMD. For example, if the current version is v2.090.1, then v2.089.x, v2.088.x, ... v2.080.x are supported. Note that support for patch release is desireable, but only support for the last patch in a minor is guaranteed.

Additionally, Vibe.d supports all LDC versions that implement the version of a supported frontend (e.g. by the previous rule LDC v1.20.0 implements v2.090.1 and would be supported).

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 OpenSSL installed - and of course a D compiler. See below for instructions.

Additional setup on Windows

Additional setup on Mac using brew

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

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 https://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 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.098.0/dmd_2.098.0-0_i386.deb"
sudo dpkg -i dmd_2.098.0-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.098.0/dmd_2.098.0-0_amd64.deb"
sudo dpkg -i dmd_2.098.0-0_amd64.deb

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

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.

Additional setup on FreeBSD

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

sudo portupgrade -PN devel/pkgconf

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

Switching between OpenSSL versions

See the documentation.

関連リポジトリ
getify/You-Dont-Know-JS

A book series (2 published editions) on the JS language.

Otherbook-seriesjavascript
amazon.com/dp/B085XXCJ7X
184.6k33.5k
fastapi/fastapi

FastAPI framework, high performance, easy to learn, fast to code, ready for production

PythonPyPIMIT Licensepythonjson
fastapi.tiangolo.com
100.7k9.6k
TanStack/query

🤖 Powerful asynchronous state management, server-state utilities and data fetching for the web. TS/JS, React Query, Solid Query, Svelte Query and Vue Query.

TypeScriptnpmMIT Licensereacthooks
tanstack.com/query
50k4k
caolan/async

Async utilities for node and the browser

JavaScriptnpmMIT Licensejavascriptasync
caolan.github.io/async/
28.2k2.4k
actix/actix-web

Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.

Rustcrates.ioApache License 2.0rustweb
actix.rs
24.7k1.9k
gitui-org/gitui

Blazing 💥 fast terminal-ui for git written in rust 🦀

Rustcrates.ioMIT Licenserusttui
22.3k751
avajs/ava

Node.js test runner that lets you develop with confidence 🚀

JavaScriptnpmMIT Licensetest-runnerava
20.8k1.5k
Evil0ctal/Douyin_TikTok_Download_API

🚀「Douyin_TikTok_Download_API」是一个开箱即用的高性能异步抖音、快手、TikTok、Bilibili数据爬取工具,支持API调用,在线批量解析及下载。

PythonPyPIApache License 2.0pythonpywebio
douyin.wtf
18.9k2.7k
extrawurst/gitui

Blazing 💥 fast terminal-ui for git written in rust 🦀

Rustcrates.iorusttui
18.9k582
transact-rs/sqlx

🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, and SQLite.

Rustcrates.ioApache License 2.0sqlrust
17.3k1.6k
jamiebuilds/react-loadable

:hourglass_flowing_sand: A higher order component for loading components with promises.

JavaScriptnpmMIT Licensereactloading
16.5k759
aio-libs/aiohttp

Asynchronous HTTP client/server framework for asyncio and Python

PythonPyPIApache License 2.0aiohttpasyncio
docs.aiohttp.org
16.5k2.4k