summaryrefslogtreecommitdiffhomepage
path: root/include
AgeCommit message (Collapse)Author
2020-06-04Update release date.2.1.1Hiroshi Mimaki
2020-05-07Rename (and expose) UTF-8 related functions; ref #4712Yukihiro "Matz" Matsumoto
- mrb_utf8len() - returns the size of a UTF-8 char (in bytes) - mrb_utf8_strlen() - returns the length of a UTF-8 string (in char)
2020-04-10Update version to `2.1.1`. (mruby 2.1.1 RC)2.1.1-rcHiroshi Mimaki
2020-03-04Enable MRB_METHOD_T_STRUCT by default on 32bit WindowsSutou Kouhei
Because we can't use the highest 2 bits of function pointers.
2020-02-01Fix builds for old mingw in mruby-socket; ref #4914dearblue
2020-01-30Move fallback definitions of `FLT_EPSILON` etc. after `#include <mruby/value.h>`Yukihiro "Matz" Matsumoto
that includes `float.h`. It allows definitions from native headers.
2020-01-15Remove broken `MRB_INT16` configuration option.Yukihiro "Matz" Matsumoto
2020-01-06Avoid creating temporary objects in `read_irep_record_1`; close #4920Yukihiro "Matz" Matsumoto
The basic idea of this change is from @dearblue. Note: the arguments of `mrb_str_pool()` have changed, but the function is provided for internal use (No `MRB_API`). So basically you don't have to worry about the change.
2020-01-01Rename `mrb_num_args_error` to `mrb_argnum_error`; ref #4863Yukihiro "Matz" Matsumoto
2020-01-01Merge pull request #4863 from ↵Yukihiro "Matz" Matsumoto
shuujii/add-mrb_num_args_error-for-wrong-number-of-arguments-error Add `mrb_num_args_error()` for "wrong number of arguments" error
2019-12-25Fix potentially use of wrong method cacheKOBAYASHI Shuji
#### Example (with `MRB_METHOD_CACHE`) ```ruby GC.start c = Class.new p c #=> #<Class:0x7fd6a180e790> c.new #=> cache `c.new` c = nil GC.start #=> `c` is GCed r = Range.dup p r #=> #<Class:0x7fd6a180e790> # [same pointer as `c`] r.new(2, 3) #=> ArgumentError: 'initialize': # wrong number of arguments (2 for 0) # [`c.new` is called instead of `r.new`] ``` #### Cause An entry of method cache is identified by class pointer and method id. However, reusing memory after GC may create a class with the same pointer as the cached class. #### Treatment Cleared method caches of the class when the class is GCed.
2019-12-14Remove location info from `Exception#inspect`KOBAYASHI Shuji
Because location info (file name and line number) is kept in the backtrace, it should not be kept in the result of `inspect` (and the exception object itself), I think. ### Example ```ruby # example.rb begin raise "err" rescue => e p e end ``` #### Before this patch: ``` $ bin/mruby example.rb example.rb:2: err (RuntimeError) ``` #### After this patch: ``` $ bin/mruby example.rb err (RuntimeError) ```
2019-12-12Add `mrb_num_args_error()` for "wrong number of arguments" errorKOBAYASHI Shuji
To unify the style of messages.
2019-12-09Implement numbered parametersUkrainskiy Sergey
2019-12-01Fix `MRB_FIXNUM_SHIFT` with `MRB_WORD_BOXING`, `MRB_INT32` and `MRB_64BIT`KOBAYASHI Shuji
### Example ```ruby # example.rb max32 = 2**30 - 1 + 2**30 min32 = -max32-1 [max32, max32+1, min32, min32-1].each{|n| p [n, n.class]} ``` #### Before this patch: ``` $ bin/mruby example.rb [2147483647, Float] [2147483648, Float] [-2147483648, Float] [-2147483649, Float] ``` #### After this patch: ``` $ bin/mruby example.rb [2147483647, Fixnum] [2147483648, Float] [-2147483648, Fixnum] [-2147483649, Float] ```
2019-11-23Rename `BITSIZE` to `BIT` and `BIT` to `BIT_POS` for consistencyKOBAYASHI Shuji
The bit width terminology is unified to `BIT` according to `MRB_INT_BIT` and `CHAR_BIT`. Also the bit position terminology is unified to `BIT_POS`.
2019-11-22Merge pull request #4835 from ↵Yukihiro "Matz" Matsumoto
shuujii/introduce-mrb_ssize-type-for-buffer-size-on-memory Introduce `mrb_ssize` type for buffer size on memory; ref #4483
2019-11-21Introduce `mrb_ssize` type for buffer size on memory; ref #4483KOBAYASHI Shuji
Previously, `mrb_int` was used as the type that represents the buffer size on memory, but the sizes of `RString` and `RArray` exceed 6 words when `MRB_INT64` is enabled on 32-bit CPU. I don't think it is necessary to be able to represent the buffer size on memory that exceeds the virtual address space. Therefore, for this purpose, introduce `mrb_ssize` which doesn't exceed the sizes of `mrb_int` and pointer. I think all `mrb_int` used for this purpose should be changed to `mrb_ssize`, but currently only the members of the structures (`RString`, `mrb_shared_string`, `RArray` and `mrb_shared_array`) are changed.
2019-11-19Merge pull request #4831 from ↵Yukihiro "Matz" Matsumoto
shuujii/always-enable-the-rational-and-complex-literals Always enable the rational and complex literals
2019-11-19Always enable the rational and complex literalsKOBAYASHI Shuji
I think they can always be enabled because the regular expression literal is always enabled.
2019-11-19Release `mruby 2.1.0`.2.1.0Hiroshi Mimaki
2019-10-23Merge branch 'master' into stableHiroshi Mimaki
2019-10-23Add type cast to avoid an error from `int` and `enum` mixture; fix #4786Yukihiro "Matz" Matsumoto
2019-10-18Update version to `2.1.0`. (mruby 2.1.0 RC)2.1.0-rcHiroshi Mimaki
2019-10-06Get keyword arguments with `mrb_get_args()`dearblue
Keyword arguments can now be retrieved with the `:` specifier and `mrb_kwargs` data. For the interface, I referred to CRuby's `rb_get_kwargs()`. For implementation, I referred to `OP_KARG` or etc.
2019-10-04Freeze strings from `nil.to_s`, `true.to_s`, `false.to_s`.Yukihiro "Matz" Matsumoto
This is an experimental changes in Ruby 2.7.
2019-10-03Fix opcode semantics comment miss. (op_jmpnil)Hirohito Higashi
2019-10-03Fix opcode semantics comment miss.Hirohito Higashi
2019-09-30Remove a trailing space in `MRUBY_DESCRIPTION`KOBAYASHI Shuji
2019-09-29Remove unnecessary type `mrb_hash_value`dearblue
The type `mrb_hash_value` is no longer used by the segmented list implementation (ref e8dcfe1 and e65d426).
2019-09-29Add an annotation of the return value from `mrb_delete_key`; #4737Yukihiro "Matz" Matsumoto
The return value from `mrb_delete_key` needs to be protected from GC in some cases.
2019-09-27Merge pull request #4733 from ↵Yukihiro "Matz" Matsumoto
shuujii/use-type-predicate-macros-instead-of-mrb_type-if-possible Use type predicate macros instead of `mrb_type` if possible
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-26Merge pull request #4732 from dearblue/inttypesYukihiro "Matz" Matsumoto
Use inttypes for `snprintf()`
2019-09-25Merge pull request #4728 from shuujii/remove-MRB_TT_HAS_BASIC-macroYukihiro "Matz" Matsumoto
Remove `MRB_TT_HAS_BASIC` macro
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-25Use inttypes for `snprintf()`dearblue
2019-09-25Remove `MRB_TT_HAS_BASIC` macroKOBAYASHI Shuji
The value of `MRB_TT_HAS_BASIC` is meaningless because `MRB_TT_HAS_BASIC` is no longer used with `MRB_WORD_BOXING` at b2c3d88f.
2019-09-22Implement all type predicate macros for `MRB_WORD_BOXING`KOBAYASHI Shuji
The default implementations of type predicate macros use `mrb_type`. But `mrb_type` with `MRB_WORD_BOXING` isn't very efficient, so the new implementations avoid `mrb_type`.
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-16Remove `MRB_METHOD_TABLE_INLINE`.Yukihiro "Matz" Matsumoto
`MRB_METHOD_TABLE_INLINE` was fragile. It requires `-falign-functions=n`. On platform that uses higher bits of function pointers, you can use new `MRB_METHOD_T_STRUCT` configuration macro.
2019-09-16Raise `ArgumentError` by `aspec` check; ref #4688Yukihiro "Matz" Matsumoto
This is partial `aspec` check that only checks `MRB_ARGS_NONE()`.
2019-09-16Share common definition of `MRB_METHOD_FUNC_FL`.Yukihiro "Matz" Matsumoto
2019-09-16Use bit shifting to pack function pointers to `mrb_method_t`.Yukihiro "Matz" Matsumoto
So you don't need `-falign-functions=2` anymore. Instead your platform must not use higher bits of the pointer (true for most platforms). If not, you have to use `struct mrb_method_t` version.
2019-09-16Refactor `mrb_method_t`.Yukihiro "Matz" Matsumoto
2019-09-15Refactor `mrb_type` in `include/mruby/boxing_word.h`KOBAYASHI Shuji
2019-09-14Add argument names to C function prototypes.Yukihiro "Matz" Matsumoto
2019-09-14Add a macro `mrb_frozen_p` that points to `MRB_FROZEN_P`.Yukihiro "Matz" Matsumoto
2019-09-14Remove `mrb_funcall` from `<=>` operations.Yukihiro "Matz" Matsumoto