Commit Graph

4844 Commits

Author SHA1 Message Date
Yukihiro "Matz" Matsumoto 8a4bcc58c9 numeric.c: introduce mrb_int_to_cstr() to dump mrb_int.
* refactor `mrb_integer_to_str()`
* refactor `mrb_str_format()`
2021-05-30 08:15:51 +09:00
Yukihiro "Matz" Matsumoto 2a717cf2aa backtrace.c: do not skip frames for C function calls. 2021-05-28 07:36:20 +09:00
Yukihiro "Matz" Matsumoto cefbc21e67 vm.c: skip actual method_missing call unless it's overridden.
So that `mruby -e 'a'` does not print backtrace history, i.e.

```
% mruby -e 'a'
-e:1: undefined method 'a' (NoMethodError)
```

Instead of

```
% mruby -e 'a'
trace (most recent call last):
        [1] -e:1
-e:1: undefined method 'a' (NoMethodError)
```
2021-05-28 07:30:43 +09:00
Yukihiro "Matz" Matsumoto d9c8626bb1 kernel.c: clear mid for raise and method_missing
Method names need not to be printed in backtrace history.
2021-05-27 21:48:26 +09:00
Yukihiro "Matz" Matsumoto cb92f9ce0b backtrace.c: do not print trace line if there's no backtrace history 2021-05-27 21:44:55 +09:00
Yukihiro "Matz" Matsumoto 48b08fecba array.c: unify mrb_ary_ref and mrb_ary_entry
Use only `mrb_ary_entry` hereafter.
2021-05-27 21:43:43 +09:00
Yukihiro "Matz" Matsumoto 9a72869043 array.c: check for negative shift size. 2021-05-27 08:13:49 +09:00
Yukihiro "Matz" Matsumoto c019d8d34d fmt_fp.c: move mruby specific mrb_float_to_str to numeric.c 2021-05-26 17:29:18 +09:00
Yukihiro "Matz" Matsumoto 063b49ab8e fmt_fp.c: truncate precision to prevent buffer overflow. 2021-05-25 13:32:29 +09:00
Yukihiro "Matz" Matsumoto afbc199ed3 fmt_fp.c: use constant that depends on mrb_float size. 2021-05-25 13:31:41 +09:00
Yukihiro "Matz" Matsumoto 5ed3a3475e fmt_fp.c: use a const int instead of a macro constant. 2021-05-25 13:30:17 +09:00
Yukihiro "Matz" Matsumoto bf523b71d1 strtod.c: new public domain implementation of strtod; ref #5448
Instead of using copyrighted `strtod`, now use the public domain
implementation of `strtod` by Yasuhiro Matsumoto (@mattn). The function
has been renamed to `mrb_float_read()`; ref #5460 as well.
2021-05-24 12:10:14 +09:00
Yukihiro "Matz" Matsumoto a44ca2e9be fmt_fp.c: exponential may be bigger than 100. 2021-05-24 11:50:30 +09:00
Yukihiro "Matz" Matsumoto d121075e49 class.c: no need to create aliases if both symbols are same. 2021-05-24 11:50:30 +09:00
Yukihiro "Matz" Matsumoto e323cd0c6e class.c: add write barrier for aliases. 2021-05-24 11:50:29 +09:00
KOBAYASHI Shuji 6cfe184d39 Fix typo in src/fmt_fp.c [ci skip] 2021-05-22 17:00:14 +09:00
Yukihiro "Matz" Matsumoto 5c7fe225a6 fp_fmt.c: remove mrb_float_to_cstr().
The function was intended to be a utility function for `mruby-sprintf`.
The functionality was integrated into `sprintf.c`.
2021-05-22 14:16:55 +09:00
Yukihiro "Matz" Matsumoto 328563995f fmt_fp.c: replace with public domain float format routine; ref #5448
The original code can be found in `https://github.com/dhylands/format-float`.

Changes:
- support `double`
- support `#` (alt_form) modifier
- small refactoring
2021-05-22 09:35:27 +09:00
Yukihiro "Matz" Matsumoto fa29bb3bb4 fmt_fp.c: remove fmt argument from mrb_float_to_str().
With major refactoring to prepare removing `snprintf(3) calls.
2021-05-21 08:13:38 +09:00
Yukihiro "Matz" Matsumoto beaf365dd4 numeric.h: remove 2 functions from MRB_API
- `mrb_float_to_str()`
- `mrb_float_to_cstr()`

Both functions will be replaced to support new coming `format-float.c`.
2021-05-21 08:13:38 +09:00
KOBAYASHI Shuji e9e720eab9 Support load 64-bit integer from mrb format with MRB_32BIT and MRB_INT64 2021-05-20 19:39:08 +09:00
Yukihiro "Matz" Matsumoto 5eebbd7df2 Global renaming regarding integer and float.
Consistent number conversion function names:
* `mrb_value` to immediate (C) value
  * `mrb_int()` -> `mrb_as_int()`
  * `mrb_to_flo()` -> `mrb_as_float()`
* `mrb_value` to `mrb_value` (converted)
  * `mrb_to_int()'
  * `mrb_Integer()` - removed
  * `mrb_Float()` -> `mrb_to_float`

Consistent function name (avoid `_flo` suffix):
* `mrb_div_flo()` -> `mrb_div_float`
2021-05-17 15:07:05 +09:00
Yukihiro "Matz" Matsumoto ea7f1953c3 Rename mrb_fixnum_to_str to mrb_integer_to_str. 2021-05-17 13:59:01 +09:00
Yukihiro "Matz" Matsumoto 080fdbf9e8 Rename mrb_flo_to_fixnum to mrb_float_to_integer. 2021-05-17 13:58:54 +09:00
Yukihiro "Matz" Matsumoto 364f275997 range.c: implement (part of) Range#to_a in C.
Mostly for performance reason.
2021-05-14 08:39:14 +09:00
Yukihiro "Matz" Matsumoto 99f0adc3f4 range.c: refactor conditional compilation code.
So that auto indentation works.
2021-05-14 08:28:27 +09:00
Yukihiro "Matz" Matsumoto dfac706ac2 range.c: rename RANGE_INITIALIZED_MASK to RANGE_INITIALIZED_FLAG. 2021-05-14 08:27:21 +09:00
Yukihiro "Matz" Matsumoto 5f9f26f6e6 backtrace.c: stop skipping frame with file/line information.
Instead, copy them from the outer frame as CRuby does.
2021-05-13 08:00:05 +09:00
Yukihiro "Matz" Matsumoto 2a280a8f70 Remove the obsolete term Fixnum.
Except for compatibility code.
2021-05-11 07:36:34 +09:00
Yukihiro "Matz" Matsumoto 4458000404 symbol.c: add Symbol#name method
`Symbol#name` is similar to `#to_s` but returns a frozen string.
2021-05-06 16:45:54 +09:00
Yukihiro "Matz" Matsumoto a93d9d8585 symbol.c: rename sym_name to sym_cstr. 2021-05-06 16:45:27 +09:00
John Bampton 356e1740f2 Fix whitespace in src/symbol.c 2021-05-03 21:15:29 +10:00
Yukihiro "Matz" Matsumoto 0c8cd60097 symbol.c: remove id2name reference from documents. 2021-05-03 15:33:39 +09:00
Yukihiro "Matz" Matsumoto ce054bd078 symbol.c: remove Symbol#id2sym.
In the ancient Ruby, symbols are represented by integers. In that era,
to get string representation from integers, we used `Integer#id2sym`
method. Later, `Symbol` was introduced, and `id2sym` was used for
compatibility. Today, no one uses `id2sym` any longer. It is described
in ISO 30170:2012 standard but I consider it as a mistake.
2021-05-03 15:30:59 +09:00
Yukihiro "Matz" Matsumoto 4626348e47 array.c: mrb_ary_shift_m should be static. 2021-05-02 20:30:41 +09:00
Yukihiro "Matz" Matsumoto 14c13bb4d2 symbol.c: remove mrb_sym_static_p() function that no one use. 2021-05-02 17:57:34 +09:00
Yukihiro "Matz" Matsumoto e5e5acefaf string.{c,rb}: fix type of return values from some methods as Ruby3.0
When the receiver is the instance of subclass of `String`.

- `String#each_char`
- `String#each_line`
- `String#partition`
2021-04-28 21:41:01 +09:00
Yukihiro "Matz" Matsumoto 9f77232b71 array.c: update Array#shift to take optional argument; close #5428 2021-04-27 16:37:24 +09:00
Yukihiro "Matz" Matsumoto 2e165b9e20 Merge pull request #5425 from dearblue/exc_to_s
Fix symbol leak in `exc_to_s()`
2021-04-26 23:13:22 +09:00
Yukihiro "Matz" Matsumoto 14bd07f831 backtrace.c: skip innermost frame only when the method is in C; #5394 2021-04-26 16:46:44 +09:00
Yukihiro "Matz" Matsumoto b937463706 Merge pull request #5424 from dearblue/new_iseq
Fix annotations for inline iseq of `Class.new` [ci skip]
2021-04-26 14:29:46 +09:00
Yukihiro "Matz" Matsumoto 2ead8a0520 Merge pull request #5423 from dearblue/gc-red
Introduce `MRB_GC_RED`
2021-04-26 07:29:08 +09:00
dearblue c0cd004b21 Fix symbol leak in exc_to_s() 2021-04-25 10:49:33 +09:00
dearblue 8f66dd278b Fix annotations for inline iseq of Class.new [ci skip] 2021-04-24 21:31:50 +09:00
Yukihiro "Matz" Matsumoto f46b4056f8 numeric.c: remove duplicated definitions; #5421
Following functions are defined in `mrblib/numeric.c`:

- `Integer#ceil`
- `Integer#floor`
- `Integer#round`
- `Integer#truncate`
2021-04-24 11:56:50 +09:00
dearblue 94c5c8f44c Introduce MRB_GC_RED
Replaces the magic number `7` except in `src/gc.c`.
2021-04-24 10:31:21 +09:00
Yukihiro "Matz" Matsumoto 90a59efbec numeric.c: fix errors from MRB_NO_FLOAT; close #5421 2021-04-24 10:23:40 +09:00
Yukihiro "Matz" Matsumoto 39dc7b7901 vm.c: fix errors with MRB_NO_FLOAT; fix #5421 2021-04-23 11:28:17 +09:00
Yukihiro "Matz" Matsumoto 1a82bab1b0 error.h: rename mrb_protect_raw to mrb_protect_error; #5415
- `_raw` does not describe the nature of the function
- the function protect errors during C function execution
2021-04-22 17:01:33 +09:00
Yukihiro "Matz" Matsumoto 91c4ac8d66 numeric.c: update error messages in int_pow; ref #5420 2021-04-21 22:08:07 +09:00