<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/include/ruby, branch ruby_2_4</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>merge revision(s) 61323: [Backport #15069]</title>
<updated>2018-10-17T07:56:26+00:00</updated>
<author>
<name>usa</name>
<email>usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2018-10-17T07:56:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f1de89ce060a49e0c7f0364dc377748c3fab03ad'/>
<id>f1de89ce060a49e0c7f0364dc377748c3fab03ad</id>
<content type='text'>
	suppress warning: 'const' attribute on function returning 'void'

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@65109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	suppress warning: 'const' attribute on function returning 'void'

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@65109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 63571,63572: [Backport #14816]</title>
<updated>2018-07-30T13:57:35+00:00</updated>
<author>
<name>usa</name>
<email>usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2018-07-30T13:57:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b6ab48d8b1e90a095388598de95d9116b7f7c3a2'/>
<id>b6ab48d8b1e90a095388598de95d9116b7f7c3a2</id>
<content type='text'>
	`int isnan(double)` is a POSIXism

	- `isnan` is something relatively new.  We need to provide one for
	  those systems without it.  However:
	- X/Open defines `int isnan(double)`. Note the `int`.
	- C99 defines `isnan(x)` to be a macro.
	- C++11 nukes them all, undefines all the "masking macro"s, and
	  defines its own `bool isnan(double)`.  Note the `bool`.
	- In C++, `int isnan(double)` and `bool isnan(double)` are
	  incompatible.
	- So the mess.

	[Bug #14816][ruby-core:87364]
	further reading: https://developers.redhat.com/blog/2016/02/29/why-cstdlib-is-more-complicated-than-you-might-think/


	include/ruby/missing.h: defined(__cplusplus) before using __cplusplus

	* include/ruby/missing.h (isinf, isnan): For non-C++ programs,
	  defined(__cplusplus) may be needed before using __cplusplus.
	  [Bug #14816]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@64126 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	`int isnan(double)` is a POSIXism

	- `isnan` is something relatively new.  We need to provide one for
	  those systems without it.  However:
	- X/Open defines `int isnan(double)`. Note the `int`.
	- C99 defines `isnan(x)` to be a macro.
	- C++11 nukes them all, undefines all the "masking macro"s, and
	  defines its own `bool isnan(double)`.  Note the `bool`.
	- In C++, `int isnan(double)` and `bool isnan(double)` are
	  incompatible.
	- So the mess.

	[Bug #14816][ruby-core:87364]
	further reading: https://developers.redhat.com/blog/2016/02/29/why-cstdlib-is-more-complicated-than-you-might-think/


	include/ruby/missing.h: defined(__cplusplus) before using __cplusplus

	* include/ruby/missing.h (isinf, isnan): For non-C++ programs,
	  defined(__cplusplus) may be needed before using __cplusplus.
	  [Bug #14816]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@64126 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 61413: [Backport #14218]</title>
<updated>2018-03-19T17:30:19+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2018-03-19T17:30:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=58b2297da2c8b4975894c12e35a52c27bcf214aa'/>
<id>58b2297da2c8b4975894c12e35a52c27bcf214aa</id>
<content type='text'>
	force hash values fixable

	* include/ruby/ruby.h (RB_ST2FIX): force fixable on LLP64 environment.

	* hash.c (any_hash): ditto.
	  [ruby-core:84395] [Bug #14218]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	force hash values fixable

	* include/ruby/ruby.h (RB_ST2FIX): force fixable on LLP64 environment.

	* hash.c (any_hash): ditto.
	  [ruby-core:84395] [Bug #14218]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 59765: [Backport #13877]</title>
<updated>2017-09-10T12:33:09+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2017-09-10T12:33:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cdf993100566b2a42ffb040f0f2b7a900fdc5ff7'/>
<id>cdf993100566b2a42ffb040f0f2b7a900fdc5ff7</id>
<content type='text'>
	ruby.h: unnormalized Fixnum value

	* include/ruby/ruby.h (ST2FIX): fix unnormalized Fixnum value bug
	  on mingw/mswin.  [ruby-core:82687] [Bug #13877]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	ruby.h: unnormalized Fixnum value

	* include/ruby/ruby.h (ST2FIX): fix unnormalized Fixnum value bug
	  on mingw/mswin.  [ruby-core:82687] [Bug #13877]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 59624,59626: [Backport #13830]</title>
<updated>2017-09-10T03:49:10+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2017-09-10T03:49:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a1afdedf94350c89007df2f65d79be6fc7b835e3'/>
<id>a1afdedf94350c89007df2f65d79be6fc7b835e3</id>
<content type='text'>
	ruby.h: fix rb_scan_args_trail_idx

	* include/ruby/ruby.h (rb_scan_args_trail_idx): fix the case both
	  of optional and rest arguments are defined.
	  [ruby-core:82427] [Bug #13830]

	* include/ruby/ruby.h (rb_scan_args_n_trail): ditto.
	non-keywords hash

	* class.c (rb_scan_args), include/ruby/ruby.h (rb_scan_args_set):
	  return non-keywords elements only in the last hash when keyword
	  arguments are extracted from it, as well as methods defined in
	  ruby level.  [ruby-core:82427] [Bug #13830]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	ruby.h: fix rb_scan_args_trail_idx

	* include/ruby/ruby.h (rb_scan_args_trail_idx): fix the case both
	  of optional and rest arguments are defined.
	  [ruby-core:82427] [Bug #13830]

	* include/ruby/ruby.h (rb_scan_args_n_trail): ditto.
	non-keywords hash

	* class.c (rb_scan_args), include/ruby/ruby.h (rb_scan_args_set):
	  return non-keywords elements only in the last hash when keyword
	  arguments are extracted from it, as well as methods defined in
	  ruby level.  [ruby-core:82427] [Bug #13830]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 59457: [Backport #13775]</title>
<updated>2017-08-05T07:00:33+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2017-08-05T07:00:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5013a509cdf8633e908648680f5104ec544ead4c'/>
<id>5013a509cdf8633e908648680f5104ec544ead4c</id>
<content type='text'>
	should not copy promoted flags.

	* include/ruby/ruby.h (rb_clone_setup): should not copy some flags
	  (FL_PROMOTED0|FL_PROMOTED1|FL_FINALIZE).
	  [Bug #13775]

	* test/ruby/test_object.rb: add a test (note that this test will fail
	  only when RGENGC_CHECK_MODE &gt;= 2).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	should not copy promoted flags.

	* include/ruby/ruby.h (rb_clone_setup): should not copy some flags
	  (FL_PROMOTED0|FL_PROMOTED1|FL_FINALIZE).
	  [Bug #13775]

	* test/ruby/test_object.rb: add a test (note that this test will fail
	  only when RGENGC_CHECK_MODE &gt;= 2).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 58902: [Backport #13595]</title>
<updated>2017-07-23T08:49:34+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2017-07-23T08:49:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e7358e6063f525b654c5e1ce80003dd02eb86b7a'/>
<id>e7358e6063f525b654c5e1ce80003dd02eb86b7a</id>
<content type='text'>
	attempt to fix rb_alloc_tmp_buffer2 for ALLOCV_N

	This is a confusing function to my arithmetic-challenged mind,
	but nobu seems alright with this.  Anyways this lets me use
	large values of elsize without segfaulting, and "make exam"
	passes.

	* include/ruby/ruby.h (rb_alloc_tmp_buffer2): attempt to fix
	  [ruby-core:81388] [ruby-core:81391] [Bug #13595]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59408 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	attempt to fix rb_alloc_tmp_buffer2 for ALLOCV_N

	This is a confusing function to my arithmetic-challenged mind,
	but nobu seems alright with this.  Anyways this lets me use
	large values of elsize without segfaulting, and "make exam"
	passes.

	* include/ruby/ruby.h (rb_alloc_tmp_buffer2): attempt to fix
	  [ruby-core:81388] [ruby-core:81391] [Bug #13595]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59408 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 58359: [Backport #13439]</title>
<updated>2017-05-09T15:30:19+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2017-05-09T15:30:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2d909ca11f2d61171a9afca3ccca7e07db1e4527'/>
<id>2d909ca11f2d61171a9afca3ccca7e07db1e4527</id>
<content type='text'>
	fix RSTRUCT_LEN macro in public C API

	rb_struct_size returns an Integer VALUE, so it must be converted
	to a `long` for compatibility with previous Ruby C API versions.

	* ext/-test-/struct/len.c: new
	* test/-ext-/struct/test_len.rb: new
	* include/ruby/ruby.h (RSTRUCT_LEN): use NUM2LONG
	  [ruby-core:80692] [Bug #13439]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@58636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	fix RSTRUCT_LEN macro in public C API

	rb_struct_size returns an Integer VALUE, so it must be converted
	to a `long` for compatibility with previous Ruby C API versions.

	* ext/-test-/struct/len.c: new
	* test/-ext-/struct/test_len.rb: new
	* include/ruby/ruby.h (RSTRUCT_LEN): use NUM2LONG
	  [ruby-core:80692] [Bug #13439]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@58636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 57603: [Backport #12997]</title>
<updated>2017-03-13T09:05:46+00:00</updated>
<author>
<name>naruse</name>
<email>naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2017-03-13T09:05:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5398ef4904fb49b1088a2578f9be4b3ab4164550'/>
<id>5398ef4904fb49b1088a2578f9be4b3ab4164550</id>
<content type='text'>
	Merge Onigmo 6.1.1

	* Support absent operator https://github.com/k-takata/Onigmo/issues/82
	* https://github.com/k-takata/Onigmo/blob/Onigmo-6.1.1/HISTORY

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@57957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	Merge Onigmo 6.1.1

	* Support absent operator https://github.com/k-takata/Onigmo/issues/82
	* https://github.com/k-takata/Onigmo/blob/Onigmo-6.1.1/HISTORY

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@57957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 57410,57619,57621,57631,57634: [Backport #13150]</title>
<updated>2017-03-13T07:30:30+00:00</updated>
<author>
<name>naruse</name>
<email>naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2017-03-13T07:30:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=8788489ca967599f83d96083f244f91c83286a88'/>
<id>8788489ca967599f83d96083f244f91c83286a88</id>
<content type='text'>
	Prevent GC by volatile [Bug #13150]

	test/ruby/test_marshal.rb test_context_switch (load) and test_gc (dump)
	are failed on FreeBSD 10.3 and gcc7 (FreeBSD Ports Collection) 7.0.0
	20170115 (experimental); RB_GC_GUARD looks not worked well.
	ruby.h: RB_GC_GUARD stronger than gcc7

	* include/ruby/ruby.h (RB_GC_GUARD): prevent guarded pointer from
	  optimization by using as an input to inline asm.
	ruby.h: remove comment

	* include/ruby/ruby.h (RB_GC_GUARD): remove comment unsupported by
	  Solaris AS.
	marshal.c: use hidden objects to allow recycling

	Hidden objects (klass == 0) are not visible to Ruby code invoked
	from other threads or signal handlers, so they can never be
	accessed from other contexts.  This makes it safe to call
	rb_gc_force_recycle on the object slot after releasing malloc
	memory.

	* marshal.c (rb_marshal_dump_limited): hide dump_arg and recycle when done
	  (rb_marshal_load_with_proc): hide load_arg and recycle when done
	  [ruby-core:79518]
	marshal.c: revert r57631 partially

	* marshal.c (rb_marshal_dump_limited): do not free dump_arg, which
	  may be dereferenced in check_dump_arg due to continuation, and
	  get rid of dangling pointers.

	* marshal.c (rb_marshal_load_with_proc): ditto for load_arg.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@57954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	Prevent GC by volatile [Bug #13150]

	test/ruby/test_marshal.rb test_context_switch (load) and test_gc (dump)
	are failed on FreeBSD 10.3 and gcc7 (FreeBSD Ports Collection) 7.0.0
	20170115 (experimental); RB_GC_GUARD looks not worked well.
	ruby.h: RB_GC_GUARD stronger than gcc7

	* include/ruby/ruby.h (RB_GC_GUARD): prevent guarded pointer from
	  optimization by using as an input to inline asm.
	ruby.h: remove comment

	* include/ruby/ruby.h (RB_GC_GUARD): remove comment unsupported by
	  Solaris AS.
	marshal.c: use hidden objects to allow recycling

	Hidden objects (klass == 0) are not visible to Ruby code invoked
	from other threads or signal handlers, so they can never be
	accessed from other contexts.  This makes it safe to call
	rb_gc_force_recycle on the object slot after releasing malloc
	memory.

	* marshal.c (rb_marshal_dump_limited): hide dump_arg and recycle when done
	  (rb_marshal_load_with_proc): hide load_arg and recycle when done
	  [ruby-core:79518]
	marshal.c: revert r57631 partially

	* marshal.c (rb_marshal_dump_limited): do not free dump_arg, which
	  may be dereferenced in check_dump_arg due to continuation, and
	  get rid of dangling pointers.

	* marshal.c (rb_marshal_load_with_proc): ditto for load_arg.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@57954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
</feed>
