./devel/ruby-io-event, Provides low level cross-platform primitives

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 1.10.0, Package name: ruby32-io-event-1.10.0, Maintainer: pkgsrc-users

IO::Event

Provides low level cross-platform primitives for constructing event loops,
with support for select, kqueue, epoll and io_uring.

Motivation

The initial proof-of-concept Async was built on NIO4r. It was perfectly
acceptable and well tested in production, however being built on libev was a
little bit limiting. I wanted to directly built my fiber scheduler into the
fabric of the event loop, which is what this gem exposes - it is
specifically implemented to support building event loops beneath the fiber
scheduler interface, providing an efficient C implementation of all the core
operations.


Master sites:

Filesize: 42 KB

Version history: (Expand)


CVS history: (Expand)


   2025-03-16 14:44:02 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
devel/ruby-io-event: update to 1.10.0

1.10.0 (2025-03-12)

* IO::Event::Profiler is moved to dedicated gem: fiber-profiler.
* Perform runtime checks for native selectors to ensure they are supported
  in the current environment.  While compile-time checks determine
  availability, restrictions like seccomp and SELinux may still prevent them
  from working.
   2025-02-23 14:58:26 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
devel/ruby-io-event: update to 1.9.0

1.9.0 (2025-02-10)

* Improved IO::Event::Profiler for detecting stalls.
   2025-02-09 10:03:20 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
devel/ruby-io-event: update to 1.8.4

1.8.0 (2025-02-05)

Detecting fibers that are stalling the event loop.

A new (experimental) feature for detecting fiber stalls has been added.
This feature is disabled by default and can be enabled by setting the
IO_EVENT_SELECTOR_STALL_LOG_THRESHOLD to true or a floating point number
representing the threshold in seconds.

When enabled, the event loop will measure and profile user code when
resuming a fiber.  If the fiber takes too long to return back to the event
loop, the event loop will log a warning message with a profile of the
fiber's execution.

> cat test.rb
#!/usr/bin/env ruby

require_relative "lib/async"

Async do
	Fiber.blocking do
		sleep 1
	end
end

> IO_EVENT_SELECTOR_STALL_LOG_THRESHOLD=true bundle exec ./test.rb
Fiber stalled for 1.003 seconds
	/home/samuel/Developer/socketry/async/test.rb:6 in \ 
'#<Class:Fiber>#blocking' (1s)
		/home/samuel/Developer/socketry/async/test.rb:7 in 'Kernel#sleep' (1s)

There is a performance overhead to this feature, so it is recommended to
only enable it when debugging performance issues.

1.8.1 (2025-02-05)

* Fix macOS build issues.
* Initial rework of call tracking.

1.8.2 (2025-02-05)

* Rename event -> call.
* Fix profiling.

1.8.3 (2025-02-05)

* Output profile log as JSON if !istty.

1.8.4 (2025-02-05)

* Correctly calculate total duration in output formatting.
   2024-12-15 14:26:05 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
devel/ruby-io-event: update to 1.7.5

1.7.5 (2024-12-15)

* Fix process_wait race condition on EPoll that could cause a hang.
   2024-12-08 17:13:51 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
devel/ruby-io-event: update to 1.7.4

1.7.4 (2024-11-24)

* Check the process status before waiting, it appears to be edge
  triggered. (#125)
   2024-10-27 14:35:19 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
devel/ruby-io-event: update to 1.7.3

1.7.3 (2024-10-11)

* Prefer static const over enum.
* Add write barriers to IO_Event_Selector_resume/_raise. (#124)
   2024-10-21 15:34:39 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
devel/ruby-io-event: update to 1.7.2

1.7.2 (2024-10-16)

* Add fifo test. (#91)
* Initial support for pread/pwrite in uring backend.
* Add debug workflow with sanitizers enabled. (#115)
* Add waiting fiber write barrier for all selector implementations. (#122)
   2024-10-13 18:25:56 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
devel/ruby-io-event: update to 1.7.1

1.7.1 (2024-10-04)

What's Changed

* Include free list size in URing memsize by @casperisfine in #120

* Prefer RB_OBJ_WRITE over RB_OBJ_WRITTEN by @casperisfine in #119

* Trigger write barriers when setting IO_Event_Selector_EPoll_Descriptor.io
  by @casperisfine in #118