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

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


Branch: CURRENT, Version: 1.9.0, Package name: ruby32-io-event-1.9.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: 45.5 KB

Version history: (Expand)


CVS history: (Expand)


   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
   2024-06-30 18:03:22 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
devel/ruby-io-event: update to 1.6.5

1.6.5 (2024-06-23)

What's Changed

* Fix idle load computation. by @ioquatix in #110