summaryrefslogtreecommitdiff
path: root/include/ruby
AgeCommit message (Collapse)Author
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-08RUBY3_HAS_BUILTIN: icc has broken __has_builtin卜部昌平
It turned out that compilation errors in icc were due to their having broken __has_builtin. Let's just skip such situations.
2020-04-08Suppress C4244 "possible loss of data" warningsNobuyoshi Nakada
2020-04-08RUBY3_HAS_BUILTIN: fix for nonexistent builtin卜部昌平
Trying to fix icc breakage: https://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-master/log/20200408T050004Z.fail.html.gz It seems the macro had problems when a builtin does not exist for the target compiler. Force evaluete to 0 then, by adding 0 to the expression.
2020-04-08Merge pull request #2991 from shyouhei/ruby.h卜部昌平
Split ruby.h Notes: Merged-By: shyouhei <shyouhei@ruby-lang.org>
2020-04-06fix typo in documentationDerek Argueta
Notes: Merged: https://github.com/ruby/ruby/pull/3005
2020-03-21Removed non-RUBY_INTEGER_UNIFICATION codeNobuyoshi Nakada
2020-03-11Fix typos (#2958)K.Takata
* Fix a typo * Fix typos in st.[ch] Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2020-03-07rb_check_safe_obj no longer exists卜部昌平
Commit e91c39f1c0f7d5e670266d9593d533fd444957f6 deleted definition of it. Though I'm not sure if we can delete public API like this, it no longer works nontheless. Having declaration without definiton is worse than having nothing at all. Just delete the declartion too.
2020-02-26kill USE_RGENGC=0卜部昌平
This compile-time option has been broken for years (at least since commit 49369ef17316cd5d5819b038f286e1d951972b52, according to git bisect). Let's delete codes that no longer works. Notes: Merged: https://github.com/ruby/ruby/pull/2925
2020-02-20comma at the end of enum is a C++11ism卜部昌平
Comma at the end of enum is allowed in C since C99. We can use them internally. However when it comes to extension libraries, they could be written in different C++ versions. We cannot assume sometihng. Public headers shall keep compatibilities.
2020-02-14Consitified `rb_scan_args_set`Nobuyoshi Nakada
2020-02-11Remove rb_eval_cmdJeremy Evans
This was related to $SAFE, and was deprecated in 2.7. I missed it earlier when removing the other $SAFE-related code. Notes: Merged: https://github.com/ruby/ruby/pull/2899
2020-02-03Parenthesized macro argumentsNobuyoshi Nakada
2020-02-03Make `rb_scan_args_kw` inline tooNobuyoshi Nakada
2020-02-02Removed no longer used variable `last_hash`Nobuyoshi Nakada
1. By substituting `n_var` with its initializer, `0 < n_var` is equivalent to `argc > argi + n_trail`. 2. As `argi` is non-negative, so `argi + n_trail >= n_trail`, and the above expression is equivalent to `argc > n_trail`. 3. Therefore, `f_last` is always false, and `last_hash` is no longer used. Notes: Merged: https://github.com/ruby/ruby/pull/2873 Merged-By: nobu <nobu@ruby-lang.org>
2020-01-31a bit terse Doxygen comments [ci skip]卜部昌平
Creative use of `@copydoc` Doxygen command and abusing its half-broken C parser let us delete some lines of documentations, while preserving document coverages.
2020-01-31support C++ std::nullptr_t卜部昌平
C++ keyword `nullptr` represents a null pointer (note also that NULL is an integer in C++ due to its design flaw). Its type is `std::nullptr_t`, defined in <cstddef> standard header. Why not support it when the backend implementation can take a null pointer as an argument.
2020-01-29Fix a typo [ci skip]Kazuhiro NISHIYAMA
2020-01-28fix rb_define_global_function to take const VALUE*卜部昌平
It was unable for rb_define_global_function to take VALUE(*)(int argc, const VLAUE *argv, VALUE self) -style function. Test added.
2020-01-28improved support for rb_f_notimplement卜部昌平
rb_f_notimplement should be accepted for all possible arities. Test provided for that.
2020-01-28delete duplicated function overload卜部昌平
The `using engine<...snip...>::define;` line already defines this function. We don't have to repeat.
2020-01-28fix typo卜部昌平
Add missing `*`.
2020-01-28delete RB_METHOD_DEFINITION_DECL_1卜部昌平
This macro is no longer useful. Just expand it. Notes: Merged: https://github.com/ruby/ruby/pull/2864
2020-01-28delete unreachable branch卜部昌平
Case of __cplusplus is handled in cxxanyargs.hpp now. These deleted codes no longer reachable. Notes: Merged: https://github.com/ruby/ruby/pull/2864
2020-01-28template metaprogramming instead of macros卜部昌平
C++ (and myself) hates macros. If we could do the same thing in both preprocessor and template, we shall choose template. This particular part of the ruby header is one of such situations. Notes: Merged: https://github.com/ruby/ruby/pull/2864
2020-01-28move macros around卜部昌平
Would like to edit them in forthcoming commit. Notes: Merged: https://github.com/ruby/ruby/pull/2864
2020-01-22Remove special handling of $SAFE and related C-APIsJeremy Evans
These were all deprecated in Ruby 2.7. Notes: Merged: https://github.com/ruby/ruby/pull/2845
2020-01-09Moved the definition of `rb_define_method_if_constexpr`Nobuyoshi Nakada
Inside the block where `RB_METHOD_DEFINITION_DECL` family are defined.
2020-01-05include/ruby/ruby.h: remove a variable tmp_buffer as it does not changeYusuke Endoh
It is no longer used due to beae6cbf0fd8b6619e5212552de98022d4c4d4d4. Coverity Scan found this.
2020-01-05include/ruby/ruby.h: remove last_idx that is no longer variableYusuke Endoh
Due to beae6cbf0fd8b6619e5212552de98022d4c4d4d4, the variable last_idx is no longer changed and always -1. This change simplifies the code by removing the variable. Coverity Scan pointed out this.
2020-01-02Fully separate positional arguments and keyword argumentsJeremy Evans
This removes the warnings added in 2.7, and changes the behavior so that a final positional hash is not treated as keywords or vice-versa. To handle the arg_setup_block splat case correctly with keyword arguments, we need to check if we are taking a keyword hash. That case didn't have a test, but it affects real-world code, so add a test for it. This removes rb_empty_keyword_given_p() and related code, as that is not needed in Ruby 3. The empty keyword case is the same as the no keyword case in Ruby 3. This changes rb_scan_args to implement keyword argument separation for C functions when the : character is used. For backwards compatibility, it returns a duped hash. This is a bad idea for performance, but not duping the hash breaks at least Enumerator::ArithmeticSequence#inspect. Instead of having RB_PASS_CALLED_KEYWORDS be a number, simplify the code by just making it be rb_keyword_given_p(). Notes: Merged: https://github.com/ruby/ruby/pull/2794
2019-12-26re-add io.h and encoding.h into internal.h卜部昌平
This is tentative. For the sake of simplicity we partially revert commits e9cb552ec96, ee85a6e72b and 51edb300425. Will decouple them once again when we are ready. Notes: Merged: https://github.com/ruby/ruby/pull/2711
2019-12-262.8.0 (tentative; to be 3.0.0) development has started.Yukihiro "Matz" Matsumoto
2019-12-23Reword keyword arguments warning messages to convey these are deprecation ↵Marc-Andre Lafortune
warnings
2019-12-20vm_args.c: rephrase the warning message of keyword argument separationYusuke Endoh
(old) test.rb:4: warning: The last argument is used as the keyword parameter test.rb:1: warning: for `foo' defined here; maybe ** should be added to the call? (new) test.rb:4: warning: The last argument is used as keyword parameters; maybe ** should be added to the call test.rb:1: warning: The called method `foo' is defined here
2019-12-20Fixed misspellingsNobuyoshi Nakada
Fixed misspellings reported at [Bug #16437], only in ruby and rubyspec.
2019-12-10forward declare struct timespec卜部昌平
... like we do so for struct timeval at several hundreds of lines above. Depending on OS/Compiler, this can be the first place for the struct to appear. To make sure the struct is global, we need a forward declaration at this point.
2019-11-18Deprecate rb_eval_cmd, add rb_eval_cmd_kwJeremy Evans
rb_eval_cmd takes a safe level, and now that $SAFE is deprecated, it should be deprecated as well. Replace with rb_eval_cmd_kw, which takes a keyword flag. Switch the two callers to this function. Notes: Merged: https://github.com/ruby/ruby/pull/2476
2019-11-18Deprecate taint/trust and related methods, and make the methods no-opsJeremy Evans
This removes the related tests, and puts the related specs behind version guards. This affects all code in lib, including some libraries that may want to support older versions of Ruby. Notes: Merged: https://github.com/ruby/ruby/pull/2476
2019-11-18Warn on access/modify of $SAFE, and remove effects of modifying $SAFEJeremy Evans
This removes the security features added by $SAFE = 1, and warns for access or modification of $SAFE from Ruby-level, as well as warning when calling all public C functions related to $SAFE. This modifies some internal functions that took a safe level argument to no longer take the argument. rb_require_safe now warns, rb_require_string has been added as a version that takes a VALUE and does not warn. One public C function that still takes a safe level argument and that this doesn't warn for is rb_eval_cmd. We may want to consider adding an alternative method that does not take a safe level argument, and warn for rb_eval_cmd. Notes: Merged: https://github.com/ruby/ruby/pull/2476
2019-11-06Remove duplicate codeAaron Patterson
These functions are the same, so remove one. Co-authored-by: John Hawthorn <john@hawthorn.email>
2019-11-01mark functions that do not return NULL as such.卜部昌平
Apply __attribute__((__returns_nonnull__)) when available.
2019-11-01RUBY_ATTR_ALOC_SIZE for clang卜部昌平
clang also supports __attribute__((__alloc_size__)) so why not use it when the compiler says it does.
2019-10-29Check for nonnull attribute in configureNobuyoshi Nakada
2019-10-24include/ruby/backward/cxxanyargs.hpp: call `va_end` before returnYusuke Endoh
Coverity Scan complains it.