# Event\_hook 1.0.0 Released

**URL:** <https://www.ruby-forum.com/t/event-hook-1-0-0-released/168384>\
**Category:** Ruby\
**Created:** [May 20, 2009, 9:02am UTC](https://www.ruby-forum.com/t/event-hook-1-0-0-released/168384 "2009-05-20T09:02:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [May 20, 2009, 9:02am UTC](https://www.ruby-forum.com/t/event-hook-1-0-0-released/168384/1 "2009-05-20T09:02:35Z")

</div>

event\_hook version 1.0.0 has been released!

- [http://rubyforge.org/projects/seattlerb](http://rubyforge.org/projects/seattlerb)

Wraps rb\_add\_event\_hook so you can write fast ruby event hook  
processors w/o the speed penalty that comes with set\_trace\_func (sooo  
sloooow!). Calls back into ruby so you don’t have to write C.

```
 % ruby demo.rb
 # of iterations = 1000000
                           user system total real
 null_time 0.120000 0.000000 0.120000 ( 0.125279)
 ruby time 0.560000 0.000000 0.560000 ( 0.562834)
 event hook 3.160000 0.010000 3.170000 ( 3.175361)
 set_trace_func 34.530000 0.100000 34.630000 ( 34.942785)

```

Changes:

### 1.0.0 / 2009-05-19

- 1 major enhancement

- [http://rubyforge.org/projects/seattlerb](http://rubyforge.org/projects/seattlerb)

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [May 20, 2009, 2:37pm UTC](https://www.ruby-forum.com/t/event-hook-1-0-0-released/168384/2 "2009-05-20T14:37:47Z")

</div>

> Wraps rb\_add\_event\_hook so you can write fast ruby event hook  
> processors w/o the speed penalty that comes with set\_trace\_func (sooo  
> sloooow!). Calls back into ruby so you don’t have to write C.

Wow thanks for doing this–anybody know why rb\_add\_event\_hook is so much  
faster then?

A drop in replacement for set\_trace\_func might be sweet, too 🙂

-=r

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [May 20, 2009, 3:23pm UTC](https://www.ruby-forum.com/t/event-hook-1-0-0-released/168384/3 "2009-05-20T15:23:56Z")

</div>

On Wed, May 20, 2009 at 8:37 AM, Roger P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> > Wraps rb\_add\_event\_hook so you can write fast ruby event hook  
> > processors w/o the speed penalty that comes with set\_trace\_func (sooo  
> > sloooow!). Calls back into ruby so you don’t have to write C.
> 
> Wow thanks for doing this–anybody know why rb\_add\_event\_hook is so much  
> faster then?
> 
> A drop in replacement for set\_trace\_func might be sweet, too 🙂

set\_trace\_func requires creating a new Binding object for each event  
triggered. In Ruby 1.8.x this is very very slow operation. Ruby 1.9.x  
reuses these Binding objects as much as possible, which makes this  
operation much faster and lead to a way more acceptable speed of  
debug.rb.

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [May 21, 2009, 3:04am UTC](https://www.ruby-forum.com/t/event-hook-1-0-0-released/168384/4 "2009-05-21T03:04:10Z")

</div>

On May 20, 2009, at 05:37 , Roger P. wrote:

> > Wraps rb\_add\_event\_hook so you can write fast ruby event hook  
> > processors w/o the speed penalty that comes with set\_trace\_func (sooo  
> > sloooow!). Calls back into ruby so you don’t have to write C.
> 
> Wow thanks for doing this–anybody know why rb\_add\_event\_hook is so  
> much  
> faster then?
> 
> A drop in replacement for set\_trace\_func might be sweet, too 🙂

most of the cost is block activation.
