
Security News
New Website “Is It Really FOSS?” Tracks Transparency in Open Source Distribution Models
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
The Event Library that designed for Ruby 3.0 Fiber Scheduler.
This gem is still under development, APIs and features are not stable. Advices and PRs are highly welcome.
Linux | Windows | macOS | FreeBSD | |
---|---|---|---|---|
io_uring | ⚠️ (See 1) | ❌ | ❌ | ❌ |
epoll | ✅ (See 2) | ❌ | ❌ | ❌ |
kqueue | ❌ | ❌ | ✅ (⚠️ See 5) | ✅ |
IOCP | ❌ | ❌ (⚠️See 3) | ❌ | ❌ |
Ruby (IO.select ) | ✅ (See 6) | ✅ (⚠️See 4) | ✅ (See 6) | ✅ (See 6) |
FILE_FLAG_OVERLAPPED
is included in I/O initialization process.kqueue
performance in Darwin is very poor. MAY BE DISABLED IN THE FUTURE.The benchmark is running under v0.3.6
version. See example.rb
in midori for test code, the test is running under a single-thread server.
The test command is wrk -t4 -c8192 -d30s http://localhost:8080
.
All of the systems have set their file descriptor limit to maximum.
On systems raising "Fiber unable to allocate memory", sudo sysctl -w vm.max_map_count=1000000
is set.
OS | CPU | Memory | Backend | req/s |
---|---|---|---|---|
Linux | Ryzen 2700x | 64GB | epoll | 2035742.59 |
Linux | Ryzen 2700x | 64GB | io_uring | require fixes |
Linux | Ryzen 2700x | 64GB | IO.select (using poll) | 1837640.54 |
macOS | i7-6820HQ | 16GB | kqueue | 257821.78 |
macOS | i7-6820HQ | 16GB | IO.select (using poll) | 338392.12 |
We also test the server with Redis request, with a monkey-patched redis library. The example code is following:
require 'evt'
require 'midori'
require 'midori-contrib/redic'
Fiber.set_scheduler Evt::Scheduler.new
REDIS = Redic.new
class HelloWorldAPI < Midori::API
get '/' do
REDIS.call 'GET', 'foo'
end
end
Fiber.schedule do
Midori::Runner.new(HelloWorldAPI).start
end
The benckmark result is as following:
OS | CPU | Memory | Backend | req/s |
---|---|---|---|---|
Linux | Ryzen 2700x | 64GB | epoll | 378060.30 |
macOS | i7-6820HQ | 16GB | kqueue | 204460.32 |
gem install evt
require 'evt'
rd, wr = IO.pipe
scheduler = Evt::Scheduler.new
Fiber.set_scheduler scheduler
Fiber.schedule do
message = rd.read(20)
puts message
rd.close
end
Fiber.schedule do
wr.write("Hello World")
wr.close
end
# "Hello World"
Windows WaitFor... | Windows select | Windows IOCP | io_uring | epoll | kqueue | poll | *NIX select | |
---|---|---|---|---|---|---|---|---|
Anonymous Pipe | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Named Pipe | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Socket | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
File | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
FAQs
Unknown package
We found that evt demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Security News
The Latio podcast explores how static and runtime reachability help teams prioritize exploitable vulnerabilities and streamline AppSec workflows.