summaryrefslogtreecommitdiffhomepage
path: root/src
AgeCommit message (Collapse)Author
2019-09-26Fixed `codedump` for human readable symbol format; ref #4684Yukihiro "Matz" Matsumoto
2019-09-26Use type predicate macros instead of `mrb_type` if possibleKOBAYASHI Shuji
For efficiency with `MRB_WORD_BOXING` (implement type predicate macros for all `enum mrb_vtype`).
2019-09-25Rename symbol-to-string functions; close #4684Yukihiro "Matz" Matsumoto
* mrb_sym2name -> mrb_sym_name * mrb_sym2name_len -> mrb_sym_name_len * mrb_sym2str -> mrb_sym_str
2019-09-24`Exception#initialize` should not allow two or more argumentsKOBAYASHI Shuji
2019-09-21Rename MRB_USE_ETEXT_EDATA to MRB_USE_LINK_TIME_RO_DATA_P and support lld ↵Fangrui Song
linked programs In lld linked programs, .rodata comes before .text, thus mrb_ro_data_p will return false for strings in .rodata. Change the lower bound from _etext to __ehdr_start to catch these cases. This works for ld.bfd, gold and lld, and it does not have false positives even if .init_array does not exist. Remove the branch that uses _edata: strings in .data can be modified so this is semantically incorrect. Delete the __APPLE__ branch (its manpages say get_etext() and get_edata() are strongly discouraged). .init_array has been adopted by most ELF platforms to supersede .ctors. Neither _etext nor _edata is used, so rename MRB_USE_ETEXT_EDATA to MRB_USE_EHDR_START.
2019-09-20Fix compatibility issue of class variables.Yukihiro "Matz" Matsumoto
Singleton class definition do not introduce its own class variable scope in CRuby/JRuby. So should mruby. ``` module Mod1 class << Object.new C = 1 @@cv = 1 p Module.nesting, # => [#<Class:#<Object:0x55cb16e60a50>>, Mod1] constants, # => [:C] class_variables, # => [] Mod1.class_variables # => [:@@cv] end end ```
2019-09-20Add optional argument to `Module#class_variables`.Yukihiro "Matz" Matsumoto
2019-09-19Simplify arguments check in `String#index`KOBAYASHI Shuji
Also fix document about type of the first argument.
2019-09-18Remove `mrb_get_args(mrb, "")`; ref 30f37872KOBAYASHI Shuji
2019-09-18Fix `super` from aliased methods to work correctly; fix #4718Yukihiro "Matz" Matsumoto
We needed to preserve the original method name somewhere. We kept it in the `env` structure pointed from aliased methods. #1457 and #1531 tried to address this issue. But this patch is more memory efficient. Limitation: this fix does not support `super` from methods defined by `define_method`. This limitation may be addressed in the future, but it's low priority.
2019-09-17Merge pull request #4717 from shuujii/fix-Fixnum-to_s-inspect-argument-specsYukihiro "Matz" Matsumoto
Fix `Fixnum#(to_s|inspect)` argument specs
2019-09-17Fix `Fixnum#(to_s|inspect)` argument specsKOBAYASHI Shuji
Before this patch: $ bin/mruby -e 'p 3.to_s(2)' trace (most recent call last): [0] -e:1 -e:1: 'to_s': wrong number of arguments (1 for 0) (ArgumentError) After this patch: $ bin/mruby -e 'p 3.to_s(2)' "11"
2019-09-17Merge pull request #4714 from dearblue/shrink-mrb_get_argsYukihiro "Matz" Matsumoto
Shrink `mrb_get_args()`
2019-09-17Merge pull request #4715 from dearblue/need-blockYukihiro "Matz" Matsumoto
Entrust "no block given" error to `mrb_get_args()`
2019-09-17Merge pull request #4713 from shuujii/fix-argument-specs-to-EnumerableYukihiro "Matz" Matsumoto
Fix argument specs to `Enumerable`
2019-09-16Entrust "no block given" error to `mrb_get_args()`dearblue
Some error messages will be changed.
2019-09-16Shrink `mrb_get_args()`dearblue
As a side effect, all specifiers now accept the `!` modifier.
2019-09-16Cache argv first in each specifiers for `mrb_get_args()`; ref #3090dearblue
In terms of specifiers, argv is never referenced after a method call as shown in #3090. Reduction of object code can be expected. If you need to refer to argv after a method call in the same loop, update argv after the method call.
2019-09-16Fix argument specs to `Enumerable`KOBAYASHI Shuji
2019-09-16Raise `ArgumentError` by `aspec` check; ref #4688Yukihiro "Matz" Matsumoto
This is partial `aspec` check that only checks `MRB_ARGS_NONE()`.
2019-09-14Add a macro `mrb_frozen_p` that points to `MRB_FROZEN_P`.Yukihiro "Matz" Matsumoto
2019-09-14Use `%C` to `mrb_name_error` in `mrb_method_search`; ref 5890c7d5KOBAYASHI Shuji
2019-09-14Remove `mrb_funcall` from `<=>` operations.Yukihiro "Matz" Matsumoto
2019-09-14Raise an error from `String#<=>` with a non string operand.Yukihiro "Matz" Matsumoto
2019-09-14Use `mrb_equal` instead of `mrb_funcall`.Yukihiro "Matz" Matsumoto
In the typical case, `mrb_funcall` invocation would be skipped.
2019-09-14Remove `mrb_funcall` from `mrb_method_search`.Yukihiro "Matz" Matsumoto
2019-09-12Remove `$/` from mruby implementation.Yukihiro "Matz" Matsumoto
1. `$/` and other Perl-ish global variables are not defined in ISO. 2. The current Ruby policy do not encourage those variables. 3. Those variables has global effect and can cause troubles.
2019-09-12Use `mrb_str_inspect` instead of `mrb_str_dup`; fix #4678Yukihiro "Matz" Matsumoto
2019-09-11Move `String#{getbyte,setbyte,byteslice}` to the core; #4696Yukihiro "Matz" Matsumoto
Unlike CRuby, there's no way to process strings byte-wise by core methods because there's no per string encoding in mruby, so that we moved 3 byte-wise operation methods from `mruby-string-ext` gem.
2019-09-09Fix `mod.constants` not to have duplicate constant names; #4698Yukihiro "Matz" Matsumoto
The fix was based on PR from @dearblue
2019-09-09Remove duplication of `BasicObject` constant; fix #4698Yukihiro "Matz" Matsumoto
2019-09-09Fix `Class.new` argument specsKOBAYASHI Shuji
2019-09-08Merge pull request #4695 from dearblue/promote-to-intYukihiro "Matz" Matsumoto
Fix `mrb_vformat()` crashes with `MRB_INT16`
2019-09-08Fix `mrb_vformat()` crashes with `MRB_INT16`dearblue
If `MRB_INT16` is specified, the variable length argument `mrb_int` is converted to `int`.
2019-09-07Revert part of #4225Yukihiro "Matz" Matsumoto
Since in mruby, Integer and Float interchange frequently (mostly on overflow), so adding explicit `.0` can cause problems sometimes. For example: https://github.com/mattn/mruby-json/pull/40 https://github.com/pepabo/mruby-msd/pull/13 https://github.com/mattn/mruby-json/pull/42
2019-09-04Fix argument specs to `BasicObject`KOBAYASHI Shuji
2019-08-26fix lots of warnings and make logo not so bigDavid Siaw
2019-08-24Suppress warning by gcc with `-Wmaybe-uninitialized`dearblue
2019-08-23Fix `RBreak` exceeding 6 words on 32-bit mode w/o boxing and `MRB_USE_FLOAT`KOBAYASHI Shuji
ref: https://github.com/mruby/mruby/pull/4483#issuecomment-498001736 In this configuration, `tt` of `RBreak::val` is set into `RBreak::flags`.
2019-08-21Prioritize embedded string over nofree (or normal) stringKOBAYASHI Shuji
Prioritize embedded string in the following functions: - `str_new_static` - `str_new` - `mrb_str_new_capa` - `mrb_str_pool` The reasons are as follows: - Consistency with `mrb_str_byte_subseq` and `str_replace`. - Memory locality increases and may be slightly faster. - No conversion cost to embedded string when modifying the string.
2019-08-20Use `RBasic` padding for embedded string on 64-bit CPUKOBAYASHI Shuji
On 64-bit CPU, there is padding in `RBasic`, so reorder the fields and use it as buffer of embedded string. This change allows 4 more bytes to be embedded on 64-bit CPU. However, an incompatibility will occur if `RString::as::ary` is accessed directly because `RString` structure has changed.
2019-08-19Move `mrb_str_pool` to `src/string.c` to use `str_init` familyKOBAYASHI Shuji
2019-08-19Merge pull request #4638 from dearblue/simplify-get-argsYukihiro "Matz" Matsumoto
Simplify get arguments
2019-08-19Merge pull request #4641 from ↵Yukihiro "Matz" Matsumoto
shuujii/rename-mrb_shared_string-len-to-mrb_shared_string-capa Rename `mrb_shared_string::len` to `mrb_shared_string::capa`
2019-08-19Merge pull request #4640 from ↵Yukihiro "Matz" Matsumoto
shuujii/also-use-str_init_shared-for-orig-in-str_make_shared Also use `str_init_shared` for `orig` in `str_make_shared()`
2019-08-18Rename `mrb_shared_string::len` to `mrb_shared_string::capa`KOBAYASHI Shuji
Because this field is used as capacity of string buffer.
2019-08-18Also use `str_init_shared` for `orig` in `str_make_shared()`KOBAYASHI Shuji
2019-08-18Simplify get argumentsdearblue
- `mrb_str_index_m()` and `mrb_str_rindex()` Make `mrb_get_args()` called only once from called twice. - `mrb_str_byteslice()` Replace `goto` with `if ~ else`.
2019-08-18Prohibit changes to iseq in principledearblue
2019-08-17Merge pull request #4634 from shuujii/refactor-set-unset-string-type-flagsYukihiro "Matz" Matsumoto
Refactor set/unset string type flags