All Projects → vibe-d → Vibe Core

vibe-d / Vibe Core

Licence: other
Repository for the next generation of vibe.d's core package.

Programming Languages

d
599 projects
dlang
54 projects

Projects that are alternatives of or similar to Vibe Core

asynchronous
A D port of Python's asyncio library
Stars: ✭ 35 (-37.5%)
Mutual labels:  socket, asynchronous, fibers, asyncio
socketwrapper
Async/Sync networking library including UDP, TCP and TLS/TCP socket classes written in C++ 17.
Stars: ✭ 33 (-41.07%)
Mutual labels:  socket, asynchronous, asyncio
Chili
Chili: HTTP Served Hot
Stars: ✭ 7 (-87.5%)
Mutual labels:  asyncio, asynchronous
Clientserverproject
一个C-S模版,该模版由三部分的程序组成,一个服务端运行的程序,一个客户端运行的程序,还有一个公共的组件,实现了基础的账户管理功能,版本控制,软件升级,公告管理,消息群发,共享文件上传下载,批量文件传送功能。具体的操作方法见演示就行。本项目的一个目标是:提供一个基础的中小型系统的C-S框架,客户端有三种模式,无缝集成访问,winform版本,wpf版本,asp.net mvc版本,方便企业进行中小型系统的二次开发和个人学习。同时网络组件方便的支持读写三菱和西门子PLC的数据,详细见Readme
Stars: ✭ 873 (+1458.93%)
Mutual labels:  network, socket
Ea Async
EA Async implements async-await methods in the JVM.
Stars: ✭ 1,085 (+1837.5%)
Mutual labels:  asynchronous, concurrency
Asyncrat C Sharp
Open-Source Remote Administration Tool For Windows C# (RAT)
Stars: ✭ 819 (+1362.5%)
Mutual labels:  asynchronous, socket
Async Reduce
Reducer for similar simultaneously coroutines
Stars: ✭ 17 (-69.64%)
Mutual labels:  asyncio, asynchronous
Tinytcpserver
A small tcp server working under Mono or .NET (4.0) and provides hooks for handling data exchange with clients (works under mono and .net). Behaviour/protocol/reaction could be specified via custom C# script.
Stars: ✭ 14 (-75%)
Mutual labels:  network, socket
Tornado Celery
Non-blocking Celery client for Tornado
Stars: ✭ 561 (+901.79%)
Mutual labels:  asyncio, asynchronous
Asyncio
asyncio historical repository
Stars: ✭ 952 (+1600%)
Mutual labels:  asyncio, concurrency
Tk Listen
A library that allows to listen network sockets with proper resource limits and error handling
Stars: ✭ 27 (-51.79%)
Mutual labels:  asynchronous, network
Jdonframework
Domain-Driven-Design Pub/Sub Domain-Events framework
Stars: ✭ 978 (+1646.43%)
Mutual labels:  asynchronous, concurrency
Arq
Fast job queuing and RPC in python with asyncio and redis.
Stars: ✭ 695 (+1141.07%)
Mutual labels:  asyncio, concurrency
Aioquic
QUIC and HTTP/3 implementation in Python
Stars: ✭ 600 (+971.43%)
Mutual labels:  asyncio, network
Scala Async
An asynchronous programming facility for Scala
Stars: ✭ 1,077 (+1823.21%)
Mutual labels:  asynchronous, concurrency
Yappi
Yet Another Python Profiler, but this time thread&coroutine&greenlet aware.
Stars: ✭ 595 (+962.5%)
Mutual labels:  asyncio, asynchronous
Libzmq
ZeroMQ core engine in C++, implements ZMTP/3.1
Stars: ✭ 7,418 (+13146.43%)
Mutual labels:  concurrency, network
Halive
A fast http and https prober, to check which URLs are alive
Stars: ✭ 47 (-16.07%)
Mutual labels:  asyncio, asynchronous
Lwt
OCaml promises and concurrent I/O
Stars: ✭ 505 (+801.79%)
Mutual labels:  asynchronous, fibers
Nmap
Nmap - the Network Mapper. Github mirror of official SVN repository.
Stars: ✭ 5,792 (+10242.86%)
Mutual labels:  asynchronous, socket

vibe.d

vibe.d core package

The core package provides the low level I/O and concurrency primitives that are used to implement the higher level systems:

  • Event loop management
  • Fiber based lightweight tasks, including task local storage and std.concurrency integration
  • Files, sockets, timers
  • Stream type definitions (used for files, sockets and higher level stream types)
  • Synchronization primitives (mutexes, condition variables, semaphores, cross task/cross thread events)
  • Logging facilities
  • Command line argument parsing
  • Various smaller utilities

The fundamental building block is the fiber based task concept, together with the event based asynchronous I/O model. This enables developing highly scalable I/O concurrent applications without running into the complexities and design implications that asynchronous I/O programming models usually impose. See the features page for a more detailed explanation.

DUB Package Posix Build Status Windows Build status

Supported compilers

The following compilers are tested and supported:

  • DMD 2.088.0
  • DMD 2.087.1
  • DMD 2.086.1
  • DMD 2.085.1
  • DMD 2.079.0
  • LDC 1.17.0
  • LDC 1.16.0
  • LDC 1.15.0
  • LDC 1.14.0
  • LDC 1.9.0

Supported up to 1.6.2:

  • DMD 2.078.3
  • LDC 1.8.0

Supported up to 1.4.7:

  • DMD 2.077.1
  • DMD 2.076.1
  • LDC 1.7.0
  • LDC 1.6.0

Supported up to 1.4.3:

  • DMD 2.075.1
  • DMD 2.074.1
  • DMD 2.073.2
  • DMD 2.072.2
  • LDC 1.5.0
  • LDC 1.4.0
  • LDC 1.3.0
  • LDC 1.2.0

Supported up to 1.3.0:

  • DMD 2.071.2
  • LDC 1.1.0

Supported up to 1.1.1:

  • DMD 2.070.2
  • LDC 1.0.0

Separation of the former vibe-d:core package

This is the successor of the vibe-d:core sub package of vibe.d 0.7.x. The API is mostly compatible from a library user point of view, but the whole library has received some heavy lifting under the surface, close to a rewrite. Most classes have been replaced by reference counting structs and @safe nothrow attributes are now used throughout the library, whenever possible. Adding @nogc on the other hand could only be done in a very limited context due to its viral nature and the lack of an @trusted equivalent.

Another major design change is that instead of the previous driver model, there is now a separate, lower-level event loop abstraction (eventcore) which follows a callback based Proactor pattern. The logic to schedule fibers based on events has been pulled out of this abstraction and is now maintained as a single function, leading to a huge improvment in terms of robustness (most issues in the previous implementation have probably never surfaced in practice, but there turned out to be lots of them).

Finally, the stream design has received two big changes. Streams can now either be implemented as classes, as usual, or they can be implemented as structs in a duck typing/DbC fashion. This, coupled with templated wrapper stream types, allows to eliminate the overhead of virtual function calls, enables reference counting instead of GC allocations, and allows the compiler to inline across stream boundaries. The second change to streams is the added support for an IOMode parameter that enables I/O patterns as they are possible when using OS sockets directly. The leastSize and dataAvailableForRead properties will in turn be deprecated.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].