[#30995] [Bug #3523] win32 exception c0000029 on exit using fibers — B Kelly <redmine@...>

Bug #3523: win32 exception c0000029 on exit using fibers

19 messages 2010/07/02

[#31100] [rubysoc] Queue C-extension patch to come — Ricardo Panaggio <panaggio.ricardo@...>

Hello,

26 messages 2010/07/07
[#31148] Re: [rubysoc] Queue C-extension patch to come — Roger Pack <rogerdpack2@...> 2010/07/09

> As this it my first patch to Ruby, I don't know where to begin with.

[#31320] Re: [rubysoc] Queue C-extension patch to come — Ricardo Panaggio <panaggio.ricardo@...> 2010/07/16

Sorry for leaving this thread for so long. I've tried to finish the

[#31322] Re: [rubysoc] Queue C-extension patch to come — Aaron Patterson <aaron@...> 2010/07/16

On Sat, Jul 17, 2010 at 06:55:35AM +0900, Ricardo Panaggio wrote:

[#31324] Re: [rubysoc] Queue C-extension patch to come — Caleb Clausen <vikkous@...> 2010/07/17

NB: I am Ricardo's mentor for this project.

[#31331] Re: [rubysoc] Queue C-extension patch to come — Benoit Daloze <eregontp@...> 2010/07/17

On 17 July 2010 06:00, Caleb Clausen <vikkous@gmail.com> wrote:

[#31332] Re: [rubysoc] Queue C-extension patch to come — Caleb Clausen <vikkous@...> 2010/07/17

On 7/17/10, Benoit Daloze <eregontp@gmail.com> wrote:

[#31138] Why is there no standard way of creating a String from a char *? — Nikolai Weibull <now@...>

Hi!

14 messages 2010/07/08
[#31146] Re: Why is there no standard way of creating a String from a char *? — Urabe Shyouhei <shyouhei@...> 2010/07/09

(2010/07/09 7:04), Nikolai Weibull wrote:

[#31149] Re: Why is there no standard way of creating a String from a char *? — Nikolai Weibull <now@...> 2010/07/09

On Fri, Jul 9, 2010 at 06:20, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:

[#31150] Re: Why is there no standard way of creating a String from a char *? — Urabe Shyouhei <shyouhei@...> 2010/07/09

(2010/07/09 18:28), Nikolai Weibull wrote:

[#31217] [Bug #3562] regression in respond_to? — Aaron Patterson <redmine@...>

Bug #3562: regression in respond_to?

14 messages 2010/07/12

[#31269] [Bug #3566] memory leak when spawning+joining Threads in a loop — Eric Wong <redmine@...>

Bug #3566: memory leak when spawning+joining Threads in a loop

14 messages 2010/07/13

[#31399] [Backport #3595] Theres no encoding to differentiate a stream of Binary data from an 8-Bit ASCII string — Dreamcat Four <redmine@...>

Backport #3595: Theres no encoding to differentiate a stream of Binary data from an 8-Bit ASCII string

17 messages 2010/07/21

[#31459] [Bug #3607] [trunk/r28731] Gem.path has disappeared? — Ollivier Robert <redmine@...>

Bug #3607: [trunk/r28731] Gem.path has disappeared?

22 messages 2010/07/23

[#31519] [Bug #3622] Net::HTTP does not wait to send request body with Expect: 100-continue — Eric Hodel <redmine@...>

Bug #3622: Net::HTTP does not wait to send request body with Expect: 100-continue

9 messages 2010/07/28

[ruby-core:31155] Re: Why is there no standard way of creating a String from a char *?

From: Urabe Shyouhei <shyouhei@...>
Date: 2010-07-09 13:12:30 UTC
List: ruby-core #31155
(2010/07/09 19:22), Nikolai Weibull wrote:
> On Fri, Jul 9, 2010 at 11:58, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
>> (2010/07/09 18:28), Nikolai Weibull wrote:
>>> I own result, so after creating rbresult I currently have to
>>> immediately free it.
> 
>> The problem is the ruby's GC engine cannot know if you own result.  When GC
>> reclaims its memory space, any shared memory regions shall not be freed, and
>> given it cannot say if your variable is for your own or not, the only safe way
>> for the collector is to copy the memory for its own.
> 
> (What variable are we talking about here, Ruby or C?)
> 
> But how is the call to ALLOC_N() in str_new in string.c any different?
>  I mean, ALLOC_N calls vm_xmalloc, which calls malloc.  I see no fancy
> handling of the memory here, more than updating malloc_increase
> (unless CALC_EXACT_MALLOC_SIZE is on).

Ruby Genesis 1:1 In the beginning Matz created the Ruby String, so that at
most one Ruby String object can point a specific address of memory at one
time.  So the answer to your question is: a C string reachable from a Ruby
String is, by definition, owned by that Ruby String.  Strictly speaking this
is no longer true because Ruby Strings can now be CoW, but at least Ruby
Strings are still "closed" in a sense of memory spaces.

> I’m sorry for being so slow to understand, but I still don’t see why
> Ruby can’t use the char * that I’ve malloced myself.  I want to be
> able to tell Ruby that ”here, take this char *, I own it, no one else
> knows about it, guaranteed, and I’m now giving it to you for you to
> own, I don’t want it anymore”.

No, sorry Ruby can't trust you.  Not even myself.  When a machine can trust a
human, there is absolutely zero reason for a GC to exist.  Ruby GC's base line
is that C Strings are owned by Ruby Strings, and that line should not be
broken just because you are sure by a heuristic approach.

In This Thread