AgeCommit message (Collapse)Author
2020-11-18Update Fiddle's dependenciesSutou Kouhei
Notes: Merged:
2020-11-18[ruby/fiddle] Remove needless returnSutou Kouhei Notes: Merged:
2020-11-18[ruby/fiddle] Bump versionSutou Kouhei Notes: Merged:
2020-11-18[ruby/fiddle] test: suppress shadowing outer local variable warningSutou Kouhei Notes: Merged:
2020-11-18[ruby/fiddle] Remove needless workaroundSutou Kouhei
It's fixed in upstream. Notes: Merged:
2020-11-18[ruby/fiddle] Add workaround for ruby head for mingwSutou Kouhei Notes: Merged:
2020-11-18[ruby/fiddle] Use msys2_mingw_dependenciesSutou Kouhei Notes: Merged:
2020-11-18[ruby/fiddle] Use ruby_xcalloc() instead of ruby_xmalloc() and memset()Sutou Kouhei Notes: Merged:
2020-11-18[ruby/fiddle] Remove needless rescueSutou Kouhei
GitHub: fix GH-15 Reported by Eneroth3. Thanks!!! Notes: Merged:
2020-11-18[ruby/fiddle] Add workaround for RubyInstaller for WindowsSutou Kouhei
See comment for details. Notes: Merged:
2020-11-18[ruby/fiddle] Add a "pinning" reference (#44)Aaron Patterson
* Add a "pinning" reference A `Fiddle::Pinned` objects will prevent the objects they point to from moving. This is useful in the case where you need to pass a reference to a C extension that keeps the address in a global and needs the address to be stable. For example: ```ruby class Foo A = "hi" # this is an embedded string some_c_function A # A might move! end ``` If `A` moves, then the underlying string buffer may also move. `Fiddle::Pinned` will prevent the object from moving: ```ruby class Foo A = "hi" # this is an embedded string A_pinner = # :nodoc: some_c_function A # A can't move because of `Fiddle::Pinned` end ``` This is a similar strategy to what Graal uses: * rename global to match exception name * Introduce generic Fiddle::Error and rearrange error classes Fiddle::Error is the generic exception base class for Fiddle exceptions. This commit introduces the class and rearranges Fiddle exceptions to inherit from it. Notes: Merged:
2020-11-18[ruby/fiddle] Add support for specifying types by name as String or SymbolSutou Kouhei
For example, :voidp equals to Fiddle::TYPE_VOID_P. Notes: Merged:
2020-11-18[ruby/fiddle] Add TYPE_CONST_STRING and SIZEOF_CONST_STRING for "const char *"Sutou Kouhei
Add rb_fiddle_ prefix to conversion functions.h to keep backward compatibility but value_to_generic() isn't safe for TYPE_CONST_STRING and not String src. Use rb_fiddle_value_to_generic() instead. Notes: Merged:
2020-11-18test/net/smtp - use TCPSocket when UNIXSocket unavailableMSP-Greg
Notes: Merged:
2020-11-17NEWS: Add --backtrace-limit option [ci skip]Junichi Ito
Notes: Merged:
2020-11-17Remove NEWS entry about taint deprecation warnings [ci skip]Jeremy Evans
JunichiIto on GitHub correctly pointed out this is no longer accurate due to the change to not display deprecation warnings by default.
2020-11-18* 2020-11-18 [ci skip]git
2020-11-18fix public interfaceKoichi Sasada
To make some kind of Ractor related extensions, some functions should be exposed. * include/ruby/thread_native.h * rb_native_mutex_* * rb_native_cond_* * include/ruby/ractor.h * RB_OBJ_SHAREABLE_P(obj) * rb_ractor_shareable_p(obj) * rb_ractor_std*() * rb_cRactor and rm ractor_pub.h and rename srcdir/ractor.h to srcdir/ractor_core.h (to avoid conflict with include/ruby/ractor.h) Notes: Merged:
2020-11-17Skip tests related TLS with Windows platform.Hiroshi SHIBATA
Notes: Merged:
2020-11-17Import net-smtp-0.2.0 from SHIBATA fix for upcoming autoconf-2.70Sergei Trofimovich
The failure initially noticed on `autoconf-2.69d` (soon to become 2.70): ``` $ ./configure ./configure: line 8720: syntax error near unexpected token `fi' ./configure: line 8720: `fi' ``` Before the change generated `./configure ` snippet looked like: ``` if ! $CC -E -xc - <<SRC >/dev/null then : #if defined __APPLE_CC__ && defined __clang_major__ && __clang_major__ < 3 #error premature clang #endif SRC as_fn_error $? "clang version 3.0 or later is required" "$LINENO" 5 fi ``` Note the newline that breaks here-document syntax. After the change the snippet does not use here-document. Signed-off-by: Sergei Trofimovich <> Notes: Merged:
2020-11-17Expose the rb_interned_str_* family of functionsJean Boussier
Fixes [Feature #13381] Notes: Merged:
2020-11-16Set allocator on class creationAlan Wu
Allocating an instance of a class uses the allocator for the class. When the class has no allocator set, Ruby looks for it in the super class (see rb_get_alloc_func()). It's uncommon for classes created from Ruby code to ever have an allocator set, so it's common during the allocation process to search all the way to BasicObject from the class with which the allocation is being performed. This makes creating instances of classes that have long ancestry chains more expensive than creating instances of classes have that shorter ancestry chains. Setting the allocator at class creation time removes the need to perform a search for the alloctor during allocation. This is a breaking change for C-extensions that assume that classes created from Ruby code have no allocator set. Libraries that setup a class hierarchy in Ruby code and then set the allocator on some parent class, for example, can experience breakage. This seems like an unusual use case and hopefully it is rare or non-existent in practice. Rails has many classes that have upwards of 60 elements in the ancestry chain and benchmark shows a significant improvement for allocating with a class that includes 64 modules. ``` pre: ruby 3.0.0dev (2020-11-12T14:39:27Z master 6325866421) post: ruby 3.0.0dev (2020-11-12T20:15:30Z cut-allocator-lookup) Comparison: allocate_8_deep post: 10336985.6 i/s pre: 8691873.1 i/s - 1.19x slower allocate_32_deep post: 10423181.2 i/s pre: 6264879.1 i/s - 1.66x slower allocate_64_deep post: 10541851.2 i/s pre: 4936321.5 i/s - 2.14x slower allocate_128_deep post: 10451505.0 i/s pre: 3031313.5 i/s - 3.45x slower ``` Notes: Merged:
2020-11-16Fix singleton class cloningAlan Wu
Before this commit, `clone` gave different results depending on whether the original object had an attached singleton class or not. Consider the following setup: ``` class Foo; end Foo.singleton_class.define_method(:foo) {} obj = obj.singleton_class if $call_singleton clone = obj.clone ``` When `$call_singleton = false`, neither `obj.singleton_class.singleton_class` nor `clone.singleton_class.singleton_class` own any methods. However, when `$call_singleton = true`, `clone.singleton_class.singleton_class` would own a copy of `foo` from `Foo.singleton_class`, even though `obj.singleton_class.singleton_class` does not. The latter case is unexpected and results in a visibly different clone, depending on if the original object had an attached class or not. Co-authored-by: Ufuk Kayserilioglu <> Notes: Merged:
2020-11-17remain enabled and line specified trace pointsKoichi Sasada
If two or more tracepoints enabled with the same target and with different target lines, the only last line is activated. This patch fixes this issue by remaining existing trace instructions. [Bug #17302] Notes: Merged:
2020-11-17* 2020-11-17 [ci skip]git
2020-11-16Fix typo on Proc docsTomás Coêlho
Notes: Merged:
2020-11-16[DOC] Fixed a typo [ci skip]Nobuyoshi Nakada
2020-11-16Update TypeProf to 0.5.2Yusuke Endoh
2020-11-16Update TypeProf to 0.5.1Soutaro Matsumoto
Notes: Merged:
2020-11-16Update RBS to 0.17.0Soutaro Matsumoto
Notes: Merged:
2020-11-16Fix a link [ci skip]Kazuhiro NISHIYAMA
2020-11-16Fix links [ci skip]Kazuhiro NISHIYAMA
2020-11-15Use more specific warning for ambiguous slashJeremy Evans
Fixes [Bug #17124] Notes: Merged:
2020-11-16* 2020-11-16 [ci skip]git
2020-11-15NEWS: merge Range and Regexp being frozen [doc]Marc-Andre Lafortune
2020-11-15* 2020-11-15 [ci skip]git
2020-11-15Functions defined in headers should be static inlineNobuyoshi Nakada
2020-11-14Update TypeProf to 0.5.0Yusuke Endoh
2020-11-13Use rb_attr_get() for hidden ivarAlan Wu
rb_ivar_get() can issue an uninitialized ivar warning. We never want to issue warnings about hidden ivars as they are not actionable for users. Notes: Merged:
2020-11-14* 2020-11-14 [ci skip]git
2020-11-13Improve error message when subclassing non-ClassJeremy Evans
Fixes [Bug #14726] Notes: Merged:
2020-11-13Update to ruby/spec@b0b7f53Benoit Daloze
2020-11-13Update to ruby/mspec@f8b0618Benoit Daloze
2020-11-13Fixup 957efa95cc12c608705a5663256226f022ea6c7fHiroshi SHIBATA
2020-11-13Revert SHIBATA
Because the test for this change was still broken.
2020-11-13* 2020-11-13 [ci skip]git
2020-11-13[ruby/webrick] add mime type of extention .mjshisanori
2020-11-13[ruby/webrick] Allow empty POST and PUT requests without content lengthJeremy Evans
RFC 7230 section 3.3.3 allows for this. Fixes #30
2020-11-12spec/ruby/core/file/utime_spec.rb: XFS seems to have Year 2038 problemYusuke Endoh ``` 1) File.utime allows Time instances in the far future to set mtime and atime (but some filesystems limit it up to 2446-05-10) FAILED Expected [559444, 2446].include? 2038 to be truthy but was false /home/chkbuild/chkbuild/tmp/build/20201112T123004Z/ruby/spec/ruby/core/file/utime_spec.rb:80:in `block (4 levels) in <top (required)>' /home/chkbuild/chkbuild/tmp/build/20201112T123004Z/ruby/spec/ruby/core/file/utime_spec.rb:3:in `<top (required)>' ``` ``` $ touch foo $ ./miniruby -e 'time =<<44); File.utime(time, time, "foo")' $ ls -l foo -rw-r--r--. 1 mame wheel 0 Jan 19 2038 foo ```