[#14696] Inconsistency in rescuability of "return" — Charles Oliver Nutter <charles.nutter@...>

Why can you not rescue return, break, etc when they are within

21 messages 2008/01/02
[#14699] Re: Inconsistency in rescuability of "return" — Gary Wright <gwtmp01@...> 2008/01/02

[#14738] Enumerable#zip Needs Love — James Gray <james@...>

The community has been building a Ruby 1.9 compatibility tip list on

15 messages 2008/01/03
[#14755] Re: Enumerable#zip Needs Love — Martin Duerst <duerst@...> 2008/01/04

Hello James,

[#14772] Manual Memory Management — Pramukta Kumar <prak@...>

I was thinking it would be nice to be able to free large objects at

36 messages 2008/01/04
[#14788] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/05

I would only like to add that RMgick for example provides free method to

[#14824] Re: Manual Memory Management — MenTaLguY <mental@...> 2008/01/07

On Sat, 5 Jan 2008 15:49:30 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:

[#14825] Re: Manual Memory Management — "Evan Weaver" <evan@...> 2008/01/07

Python supports 'del reference', which decrements the reference

[#14838] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/08

Evan Weaver wrote:

[#14911] Draft of some pages about encoding in Ruby 1.9 — Dave Thomas <dave@...>

Folks:

24 messages 2008/01/10

[#14976] nil encoding as synonym for binary encoding — David Flanagan <david@...>

The following just appeared in the ChangeLog

37 messages 2008/01/11
[#14977] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14978] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14979] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Dave Thomas wrote:

[#14993] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14980] Re: nil encoding as synonym for binary encoding — Gary Wright <gwtmp01@...> 2008/01/11

[#14981] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14995] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Yukihiro Matsumoto writes:

[#15050] how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...>

Core Rubies:

17 messages 2008/01/13
[#15060] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 08:54 AM, Phlip wrote:

[#15062] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...> 2008/01/14

Eric Hodel wrote:

[#15073] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 20:35 PM, Phlip wrote:

[#15185] Friendlier methods to compare two Time objects — "Jim Cropcho" <jim.cropcho@...>

Hello,

10 messages 2008/01/22

[#15194] Can large scale projects be successful implemented around a dynamic programming language? — Jordi <mumismo@...>

A good article I have found (may have been linked by slashdot, don't know)

8 messages 2008/01/24

[#15248] Symbol#empty? ? — "David A. Black" <dblack@...>

Hi --

24 messages 2008/01/28
[#15250] Re: Symbol#empty? ? — Yukihiro Matsumoto <matz@...> 2008/01/28

Hi,

Re: Embedding 1.9

From: Paul Brannan <pbrannan@...>
Date: 2008-01-08 21:35:59 UTC
List: ruby-core #14864
On Wed, Jan 09, 2008 at 02:04:03AM +0900, Dave Thomas wrote:
> int main(int argc, char **argv) {
>   VALUE result;
> 
>   ruby_sysinit(&argc, &argv);
>   RUBY_INIT_STACK;
>   ruby_init();
>   ruby_init_loadpath();
> 
>   rb_require("sum.rb");
>   rb_eval_string("$summer = Summer.new");
>   rb_eval_string("$result = $summer.sum(10)");
>   result = rb_gv_get("result");
>   printf("Result = %d\n", NUM2INT(result));
>   ruby_finalize();
>   exit(0);
> }

Before I added sum.rb:

  class Summer
    def sum(*args)
      args.inject { |sum, x| sum + x }
    end
  end

I was getting a segfault running your example:

  [pbrannan@zaphod embed]$ ./embed
  <dummy toplevel>:17: [BUG] Segmentation fault
  ruby 1.9.0 (2008-01-04 revision 0) [i686-linux]
  
Your example should catch exceptions:
  
  VALUE embeded(VALUE ignore)
  {
    VALUE result;
    rb_require("sum.rb");
    rb_eval_string("$summer = Summer.new");
    rb_eval_string("$result = $summer.sum(10)");
    result = rb_gv_get("result");
    printf("Result = %d\n", NUM2INT(result));
    return Qnil;
  }
  
  int main(int argc, char **argv) {
    int state;
  
    ruby_sysinit(&argc, &argv);
    RUBY_INIT_STACK;
    ruby_init();
    ruby_options(argc, argv);
  
    rb_protect(embeded, Qnil, &state);
    return ruby_cleanup(state);
  }

to prevent the segfault:

  [pbrannan@zaphod embed]$ mv sum.rb sum_bk.rb
  [pbrannan@zaphod embed]$ ./embed 
  ruby 1.9.0 (2008-01-08 revision 0) [i686-linux]
  <dummy toplevel>:17: no such file to load -- sum.rb (LoadError)

I also removed the call to exit(0) and replaced ruby_init_loadpath()
with ruby_options().

I think there's still some work left to do, because:
  - the filename is wrong ("dummy toplevel").
  - TOPLEVEL_BINDING is undefined
  - NameError exceptions aren't getting caught (the program just exits)
  - I can't require shared objects (rb_require("socket") gives an error
    about rb_eRuntimeError being undefined)

I don't know which of these are bugs in my code and which are bugs in
the interpreter.

BTW, how are you determining which options to pass to the compiler/linker?  I
feel there should be a better way than what I'm doing:

  ruby_config() { ruby1.9 -rrbconfig -e "puts Config::CONFIG['$1']" | grep -v "ruby 1.9.0"; }
  gcc embed.c -o embed \
  -I `ruby_config rubyhdrdir` \
  -I `ruby_config rubyhdrdir`/`ruby_config arch` \
  -L `ruby_config libdir` \
  `ruby_config LDFLAGS` \
  `ruby_config LIBS` \
  `ruby_config LIBRUBYARG`

I'm unsure whether I should be using LDFLAGS above, since it contains
the string "-L.", which seems wrong.

Paul


In This Thread