patch 9.1.0003: Cannot build against Ruby 33 dynamically

Commit: 
https://github.com/vim/vim/commit/443657b32becb2318ae40e30a849bbe5cc1a153c
Author: Isao Sato <[email protected]>
Date:   Wed Jan 3 19:31:05 2024 +0100

    patch 9.1.0003: Cannot build against Ruby 33 dynamically
    
    Problem:  Cannot build against Ruby 33 dynamically
    Solution: Ruby 33 removed transient heap, so do not use
              rb_ary_transient anymore, NoMethodError format changed,
              so update test for expected error message
              (Isao Sato)
    
    - ruby-3.3 removed transient heap for ruby/dyn
    
    when +ruby/dyn with ruby-3.3 do command :ruby, E448 occur.
    ruby-3.3 has no transient heap anymore, so disable rb_ary_transient etc.
    
    $ LC_ALL=C VIMRUNTIME=runtime ./src/vim -u NONE -c 'ruby puts RUBY_VERSION'
    "=> Error detected while processing command line:
    "=> E448: Could not load library function rb_ary_detransient
    "=> E266: Sorry, this command is disabled, the Ruby library could not be
        loaded.
    
    - ruby-3.3 changed NoMethodError format:
    
    $ rvm 3.2.2, 3.3.0-rc1 do ruby -e 'begin; nil.name; rescue => e; puts "%s : 
%s"%[RUBY_VERSION, e.message]; end '
    => 3.2.2 : undefined method `name' for nil:NilClass
    => 3.3.0 : undefined method `name' for nil
    
    so loose pattern in Test_ruby_Vim_buffer_get()
    
    closes: #13741
    
    Signed-off-by: Isao Sato <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/src/if_ruby.c b/src/if_ruby.c
index a92120525..7fab211a8 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -83,7 +83,7 @@
 #  define rb_gc_writebarrier_unprotect rb_gc_writebarrier_unprotect_stub
 # endif
 
-# if RUBY_VERSION >= 26
+# if RUBY_VERSION >= 26 && RUBY_VERSION <= 32
 #  define rb_ary_detransient   rb_ary_detransient_stub
 # endif
 
@@ -456,7 +456,7 @@ static VALUE (*dll_rb_float_new) (double);
 static VALUE (*dll_rb_ary_new) (void);
 static VALUE (*dll_rb_ary_new4) (long n, const VALUE *elts);
 static VALUE (*dll_rb_ary_push) (VALUE, VALUE);
-# if RUBY_VERSION >= 26
+# if RUBY_VERSION >= 26 && RUBY_VERSION <= 32
 static void (*dll_rb_ary_detransient) (VALUE);
 # endif
 # ifdef __ia64
@@ -491,7 +491,7 @@ NORETURN(static void 
(*dll_ruby_malloc_size_overflow)(size_t, size_t));
 #  endif
 # endif
 
-# if RUBY_VERSION >= 26
+# if RUBY_VERSION >= 26 && RUBY_VERSION <= 32
 void rb_ary_detransient_stub(VALUE x);
 # endif
 
@@ -561,7 +561,7 @@ rb_gc_writebarrier_unprotect_stub(VALUE obj)
 }
 #   endif
 #  endif
-#  if RUBY_VERSION >= 26
+#  if RUBY_VERSION >= 26 && RUBY_VERSION <= 32
     void
 rb_ary_detransient_stub(VALUE x)
 {
@@ -718,7 +718,7 @@ static struct
     {"rb_ary_new4", (RUBY_PROC*)&dll_rb_ary_new4},
 # endif
     {"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push},
-# if RUBY_VERSION >= 26
+# if RUBY_VERSION >= 26 && RUBY_VERSION <= 32
     {"rb_ary_detransient", (RUBY_PROC*)&dll_rb_ary_detransient},
 # endif
     {"rb_int2big", (RUBY_PROC*)&dll_rb_int2big},
diff --git a/src/testdir/test_ruby.vim b/src/testdir/test_ruby.vim
index 224dffb99..2e0835cbe 100644
--- a/src/testdir/test_ruby.vim
+++ b/src/testdir/test_ruby.vim
@@ -275,7 +275,7 @@ func Test_ruby_Vim_buffer_get()
   call assert_match('Xfoo1$', rubyeval('Vim::Buffer[1].name'))
   call assert_match('Xfoo2$', rubyeval('Vim::Buffer[2].name'))
   call assert_fails('ruby print Vim::Buffer[3].name',
-        \           "NoMethodError: undefined method `name' for nil:NilClass")
+        \           "NoMethodError: undefined method `name' for nil")
   %bwipe
 endfunc
 
diff --git a/src/version.c b/src/version.c
index 8c71b6864..749d6af13 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3,
 /**/
     2,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1rL6TE-00BBLC-3h%40256bit.org.

Raspunde prin e-mail lui