summaryrefslogtreecommitdiff
path: root/include/ruby/3/core
AgeCommit message (Collapse)Author
2020-05-11mv include/ruby/{3,impl}卜部昌平
Devs do not love "3". Notes: Merged: https://github.com/ruby/ruby/pull/3079
2020-04-25More enums are mandatory for rp in lldb_cruby.pyNobuyoshi Nakada
2020-04-13include what you use.卜部昌平
This reverts commit 443389effc37308ce1a3c3a840082a344fc6af56. This reverts commit d94960f22ec2de3a3855305cb51343806d2b46c7. Inclusion of header files must be explicit. Every file shall directly include what is necessary. https://github.com/include-what-you-use/include-what-you-use says: > When every file includes what it uses, then it is possible to edit any > file and remove unused headers, without fear of accidentally breaking > the upwards dependencies of that file. It also becomes easy to > automatically track and update dependencies in the source code. Though we don't use iwyu itself, the principle quoted above is a good thing that we can agree. Now that include guards were added to every and all of the headers inside of our project this changeset does not increase compile time, at least on my machine. Notes: Merged: https://github.com/ruby/ruby/pull/3023
2020-04-13add #include guard hack卜部昌平
According to MSVC manual (*1), cl.exe can skip including a header file when that: - contains #pragma once, or - starts with #ifndef, or - starts with #if ! defined. GCC has a similar trick (*2), but it acts more stricter (e. g. there must be _no tokens_ outside of #ifndef...#endif). Sun C lacked #pragma once for a looong time. Oracle Developer Studio 12.5 finally implemented it, but we cannot assume such recent version. This changeset modifies header files so that each of them include strictly one #ifndef...#endif. I believe this is the most portable way to trigger compiler optimizations. [Bug #16770] *1: https://docs.microsoft.com/en-us/cpp/preprocessor/once *2: https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html Notes: Merged: https://github.com/ruby/ruby/pull/3023
2020-04-10include/ruby/3: do not skip RUBY3_UNREACHABLE_RETURN卜部昌平
Revert "Revert "include/ruby/3/core/rtypeddata.h: Use 0 instead of NULL for C++ compiler"" Revert "include/ruby/3/core/rtypeddata.h: Use 0 instead of NULL for C++ compiler" Revert "include/ruby/3: Skip RUBY3_UNREACHABLE_RETURN for icc" Revert "include/ruby/3: Stop RUBY3_UNREACHABLE_RETURN to suppress a SunC warning" This reverts commit b965e7e05e4307e3c4b396673e63dbc493ef2f20. This reverts commit d2bb2e066b5a914283dd3ea473fc1762183af013. This reverts commit 8ab4c55e7a70f5a5bd041d93f425eeef4a47c01e. This reverts commit 78eec3cdc5ff0664b421e041f4f70a814542b914. After https://github.com/ruby/ruby/pull/3011, we no longer need these ifdef guards.
2020-04-10ruby3_rstring_getmem: suppres warning卜部昌平
icc warns at this line. > include/ruby/3/core/rstring.h(126): warning #413: variable "retval" has an uninitialized const field > struct RString retval; > ^ This must not be a problem because uninitialized const field is not used at all. But the warnings are annoying. Let us suppress them. Notes: Merged: https://github.com/ruby/ruby/pull/3011
2020-04-10reduce duplicate include.Koichi Sasada
Without this patch, 20k files are opened (openat syscall) because of duplicate includes. This patch reduced it to 3k and build time was reduced compile time of range.o from 15sec -> 3sec on my machine. [Bug #16772] Notes: Merged: https://github.com/ruby/ruby/pull/3010
2020-04-09Revert "include/ruby/3/core/rtypeddata.h: Use 0 instead of NULL for C++ ↵Yusuke Endoh
compiler" This reverts commit d2bb2e066b5a914283dd3ea473fc1762183af013. It didn't work: https://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-master/log/20200409T050004Z.log.html.gz#end ``` In file included from ../../.././include/ruby/3/core.h(32), from ../../.././include/ruby/ruby.h(28), from ../../.././include/ruby.h(33), from init.c(1): ../../.././include/ruby/3/core/rtypeddata.h(164): warning #967: conversion from "int" to "const struct rb_data_type_struct *"; sizes do not match RUBY3_UNREACHABLE_RETURN(0); ```
2020-04-09include/ruby/3/core/rtypeddata.h: Use 0 instead of NULL for C++ compilerYusuke Endoh
NULL in C++ is esoteric
2020-04-09include/ruby/3: Skip RUBY3_UNREACHABLE_RETURN for iccYusuke Endoh
I'm unsure why, but it fails on icc. https://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-master/log/20200408T220004Z.log.html.gz ``` In file included from ../../.././include/ruby/3/core.h(32), from ../../.././include/ruby/ruby.h(28), from cxxanyargs.cpp(1): ../../.././include/ruby/3/core/rtypeddata.h(163): error: return value type does not match the function type RUBY3_UNREACHABLE_RETURN(NULL); ```
2020-04-09include/ruby/3: Stop RUBY3_UNREACHABLE_RETURN to suppress a SunC warningYusuke Endoh
I don't find how to suppress a false positive "unreachable" warning of the Sun compiler: ``` "./include/ruby/3/core/rtypeddata.h", line 163: warning: statement not reached "./include/ruby/3/memory.h", line 256: warning: statement not reached ``` This warnings make mkmf test fail: https://rubyci.org/logs/rubyci.s3.amazonaws.com/solaris10-sunc/ruby-master/log/20200408T170004Z.fail.html.gz ``` 1) Failure: TestMkmf::TestConvertible#test_typeof_builtin [/export/home/users/chkbuild/cb-sunc/tmp/build/20200408T170004Z/ruby/test/mkmf/test_convertible.rb:9]: convertible_int: checking for convertible type of short... -------------------- short -------------------- convertible_int: checking for convertible type of int... -------------------- int -------------------- convertible_int: checking for convertible type of long... -------------------- long -------------------- convertible_int: checking for convertible type of signed short... -------------------- failed ... "cc -I. -I/export/home/users/chkbuild/cb-sunc/tmp/build/20200408T170004Z/ruby/.ext/include/sparc-solaris2.10 -I/export/home/users/chkbuild/cb-sunc/tmp/build/20200408T170004Z/ruby/include -I./test -I/opt/csw/include -D_XOPEN_SOURCE=600 -DFFI_NO_RAW_API -g -c conftest.c" "/export/home/users/chkbuild/cb-sunc/tmp/build/20200408T170004Z/ruby/include/ruby/3/core/rtypeddata.h", line 163: warning: statement not reached "/export/home/users/chkbuild/cb-sunc/tmp/build/20200408T170004Z/ruby/include/ruby/3/memory.h", line 256: warning: statement not reached checked program was: /* begin */ 1: #include "ruby.h" 2: 3: typedef signed short rbcv_typedef_; 4: 5: extern rbcv_typedef_ foo(); 6: extern short foo(); /* end */ ```
2020-04-08RARRAY_EMBED_LEN/RSTRING_EMBED_LEN: add RUBY3_CAST卜部昌平
RUBY3_CAST is a macro to suppress g++/clang++ warnings about C-style casts. Though Ruby core don't have to bother C++ situations, extension libraries can benefit from this.
2020-04-08Suppress C4244 "possible loss of data" warningsNobuyoshi Nakada
2020-04-08Merge pull request #2991 from shyouhei/ruby.h卜部昌平
Split ruby.h Notes: Merged-By: shyouhei <[email protected]>