[#25272] [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Yui NARUSE <redmine@...>

Feature #2032: Change the license to "GPLv2+ or Ruby's original".

51 messages 2009/09/02
[#25368] [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Kazuhiko Shiozaki <redmine@...> 2009/09/04

Issue #2032 has been updated by Kazuhiko Shiozaki.

[#25461] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Gregory Brown <gregory.t.brown@...> 2009/09/07

On Fri, Sep 4, 2009 at 1:10 PM, Kazuhiko Shiozaki<redmine@ruby-lang.org> wrote:

[#25463] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Yukihiro Matsumoto <matz@...> 2009/09/08

Hi,

[#30610] [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Shyouhei Urabe <redmine@...> 2010/06/06

Issue #2032 has been updated by Shyouhei Urabe.

[#30611] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Yusuke ENDOH <mame@...> 2010/06/06

Hi,

[#30614] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Urabe Shyouhei <shyouhei@...> 2010/06/06

> To avoid enbugging a new bug, we must choose the another solutions.

[#30616] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Yusuke ENDOH <mame@...> 2010/06/06

2010/6/6 Urabe Shyouhei <shyouhei@ruby-lang.org>:

[#30652] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Urabe Shyouhei <shyouhei@...> 2010/06/08

(2010/06/06 20:27), Yusuke ENDOH wrote:

[#25285] [Feature #2033] Move Core Development to Git — Run Paint Run Run <redmine@...>

Feature #2033: Move Core Development to Git

75 messages 2009/09/02
[#25290] [Feature #2033] Move Core Development to Git — Yui NARUSE <redmine@...> 2009/09/02

Issue #2033 has been updated by Yui NARUSE.

[#25297] Re: [Feature #2033] Move Core Development to Git — Jon <jon.forums@...> 2009/09/02

> Some commiter of Ruby live on Windows.

[#25342] Re: [Feature #2033] Move Core Development to Git — Urabe Shyouhei <shyouhei@...> 2009/09/03

Jon wrote:

[#25343] Re: [Feature #2033] Move Core Development to Git — Michal Suchanek <hramrach@...> 2009/09/03

2009/9/4 Urabe Shyouhei <shyouhei@ruby-lang.org>:

[#25345] Re: [Feature #2033] Move Core Development to Git — Urabe Shyouhei <shyouhei@...> 2009/09/03

Michal Suchanek wrote:

[#25299] Re: [Feature #2033] Move Core Development to Git — Eric Hodel <drbrain@...7.net> 2009/09/02

On Sep 2, 2009, at 11:19, Run Paint Run Run wrote:

[#25306] [Feature #2034] Consider the ICU Library for Improving and Expanding Unicode Support — Run Paint Run Run <redmine@...>

Feature #2034: Consider the ICU Library for Improving and Expanding Unicode Support

16 messages 2009/09/03

[#25394] Unmaintained code (Was: Move Core Development to Git) — Eric Hodel <drbrain@...7.net>

On Sep 4, 2009, at 02:16, Urabe Shyouhei wrote:

10 messages 2009/09/05

[#25420] [Bug #2054] Onigurma Isn't Documented — Run Paint Run Run <redmine@...>

Bug #2054: Onigurma Isn't Documented

17 messages 2009/09/05

[#25442] turning off indentation warnings — Aaron Patterson <aaron@...>

Is there a way in 1.9 to turn off only indentation warnings? I like

19 messages 2009/09/06
[#25510] Re: turning off indentation warnings — Nobuyoshi Nakada <nobu@...> 2009/09/10

Hi,

[#25511] [Bug #2079] win32ole's OLEGEN does not create all classes needed when a TLB has more than one class defined — Bruno Antunes <redmine@...>

Bug #2079: win32ole's OLEGEN does not create all classes needed when a TLB has more than one class defined

18 messages 2009/09/10

[#25644] [Bug #2121] mathn/rational destroys Fixnum#/, Fixnum#quo and Bignum#/, Bignum#quo — Charles Nutter <redmine@...>

Bug #2121: mathn/rational destroys Fixnum#/, Fixnum#quo and Bignum#/, Bignum#quo

12 messages 2009/09/19

[#25709] [Bug #2131] f(not x) => syntax error — "James M. Lawrence" <redmine@...>

Bug #2131: f(not x) => syntax error

16 messages 2009/09/22

[#25769] A challenge: Enumerator#next in JRuby — Charles Oliver Nutter <headius@...>

I have a challenge for anyone who wants to discuss, propose

25 messages 2009/09/25
[#25782] Re: A challenge: Enumerator#next in JRuby — Tanaka Akira <akr@...> 2009/09/26

In article <f04d2210909251312q46bd51c0teacc4b0a8c417f0c@mail.gmail.com>,

[#25820] [Feature #2152] Split functionality of Float#inspect and Float#to_s — Roger Pack <redmine@...>

Feature #2152: Split functionality of Float#inspect and Float#to_s

32 messages 2009/09/28

[#25853] [Bug #2160] JSON can't parse input where top-level object is a string — caleb clausen <redmine@...>

Bug #2160: JSON can't parse input where top-level object is a string

11 messages 2009/09/29

[ruby-core:25689] [Bug #2127] Fiber#resume - segfault inside C extension

From: Suraj Kurapati <redmine@...>
Date: 2009-09-21 04:34:31 UTC
List: ruby-core #25689
Issue #2127 has been updated by Suraj Kurapati.


I found an answer to my question:

The trick is to always work with the Fiber inside the environment 
(a running thread?) provided by rb_protect().  If you try to do 
anything to the Fiber (other than #inspect) outside of rb_protect(),
a segfault occurs (see the NOTE comment in the example below).

Below is an updated example that shows the answer to my question.

Cheers.

###############################################################
# cat main.c
###############################################################

#include <stdio.h>
#include <ruby.h>

VALUE
my_fiber_body(VALUE arg)
{
    printf("Fiber: Entering fiber body\n");

    int i;
    for (i = 0; i < 5; i++)
    {
        printf("Fiber: going to yield=%d\n", i);

        VALUE count = INT2FIX(i);
        rb_fiber_yield(1, &count);
    }

    printf("Fiber: Exiting fiber body\n");

    return Qtrue;
}

VALUE
create_my_fiber(VALUE arg)
{
    VALUE fib = rb_fiber_new(my_fiber_body, arg), dump;

    printf("create_my_fiber: Created my fiber=");
    fflush(stdout);
    dump = rb_inspect(fib);
    rb_io_puts(1, &dump, rb_stdout);

    return fib;
}

VALUE
resume_my_fiber(VALUE fib)
{
    VALUE dump;

    printf("resume_my_fiber: Going to resume fiber=");
    fflush(stdout);
    dump = rb_inspect(fib);
    rb_io_puts(1, &dump, rb_stdout);

    if (RTEST(rb_fiber_alive_p(fib)))
    {
        VALUE result = rb_fiber_resume(fib, 0, 0);

        printf("resume_my_fiber: Fiber yielded value=");
        fflush(stdout);
        dump = rb_inspect(result);
        rb_io_puts(1, &dump, rb_stdout);

        return result;
    }
    else
    {
        printf("resume_my_fiber: Fiber is dead! cannot resume\n");
        return Qfalse;
    }
}

RUBY_GLOBAL_SETUP

int
main(int argc, char** argv)
{
    ruby_sysinit(&argc, &argv);
    {
        RUBY_INIT_STACK;
        ruby_init();

        VALUE fib = rb_protect(create_my_fiber, Qnil, 0);

        printf("Main: Outside rb_protect()\n");
        /*
            NOTE: I resume the fiber here (outside of rb_protect())
                  then a segfault occurs.  Is this because the
                  rb_protect() function provides a running thread?
        */

        printf("Main: Going to resume fiber many times...\n");

        VALUE count;
        do
        {
            count = rb_protect(resume_my_fiber, fib, 0);
        }
        while (RTEST(count));

        printf("Main: Goodbye!\n");
    }

    return ruby_cleanup(0);
}

###############################################################
# ./main.so
###############################################################

create_my_fiber: Created my fiber=#<Fiber:0x92d7414>
Main: Outside rb_protect()
Main: Going to resume fiber many times...
resume_my_fiber: Going to resume fiber=#<Fiber:0x92d7414>
Fiber: Entering fiber body
Fiber: going to yield=0
resume_my_fiber: Fiber yielded value=0
resume_my_fiber: Going to resume fiber=#<Fiber:0x92d7414>
Fiber: going to yield=1
resume_my_fiber: Fiber yielded value=1
resume_my_fiber: Going to resume fiber=#<Fiber:0x92d7414>
Fiber: going to yield=2
resume_my_fiber: Fiber yielded value=2
resume_my_fiber: Going to resume fiber=#<Fiber:0x92d7414>
Fiber: going to yield=3
resume_my_fiber: Fiber yielded value=3
resume_my_fiber: Going to resume fiber=#<Fiber:0x92d7414>
Fiber: going to yield=4
resume_my_fiber: Fiber yielded value=4
resume_my_fiber: Going to resume fiber=#<Fiber:0x92d7414>
Fiber: Exiting fiber body
resume_my_fiber: Fiber yielded value=true
resume_my_fiber: Going to resume fiber=#<Fiber:0x92d7414>
resume_my_fiber: Fiber is dead! cannot resume
Main: Goodbye!

----------------------------------------
http://redmine.ruby-lang.org/issues/show/2127

----------------------------------------
http://redmine.ruby-lang.org

In This Thread