Commit Graph

3028 Commits

Author SHA1 Message Date
dearblue cf38fc2f9e Fix memory leak in Kernel#eval
The `mrbc_context` remained unreleased when the `mrb_parse_nstring()` function returned `NULL`.
2021-06-26 10:59:39 +09:00
John Bampton 188e9b6fb0 Enable markdownlint rules MD003,MD005,MD007
Lint Markdown

https://github.com/DavidAnson/markdownlint#rules--aliases
2021-06-22 06:57:03 +10:00
dearblue cc95e346fd Added MRB_OBJ_ALLOC() macro that does not require a cast
The `MRB_OBJ_ALLOC()` macro function returns a pointer of the type corresponding to the constant literal defined in `enum mrb_vtype`.
2021-06-20 11:08:28 +09:00
Yukihiro "Matz" Matsumoto f678620a43 Merge branch 'dearblue-block_given' 2021-06-19 21:19:42 +09:00
Yukihiro "Matz" Matsumoto 1fca58f7ca codegen.c: stop uninitialized warning. 2021-06-19 21:18:27 +09:00
dearblue c40802865a Added MRB_API function to get block arguments info.
- ` mrb_block_given_p()` -- The name comes from CRuby's `rb_block_given_p ()`

At the same time, it applies to `f_instance_eval()` and `f_class_eval()` of `mruby-eval`.
2021-06-19 21:15:02 +09:00
Yukihiro "Matz" Matsumoto 2341e4f5e5 Merge pull request #5445 from jbampton/add-codespell-pre-commit-hook
Run pre-commit with GitHub Actions
2021-06-16 09:15:07 +09:00
Yukihiro "Matz" Matsumoto 651c234f9c eval.c: implement class_eval with string; close #5478 2021-06-16 09:12:03 +09:00
John Bampton dab5502e8a Run pre-commit with GitHub Actions
Running pre-commit with GitHub Actions now gives us more tests and coverage

Remove duplicate GitHub Actions for merge conflicts and trailing whitespace

Remove duplicate checks for markdownlint and yamllint from the GitHub Super-Linter

Add new custom pre-commit hook running with a shell script to sort alphabetically and uniquify codespell.txt

Add new pre-commit hook to check spelling with codespell

https://github.com/codespell-project/codespell

Fix spelling
2021-06-16 08:34:54 +10:00
Yukihiro "Matz" Matsumoto 50b6fafddf pack.c: support `w' directive (BER integer compression). 2021-06-14 11:20:52 +09:00
Yukihiro "Matz" Matsumoto 1ed01a8d47 pack.c: count should not be negative for directives xX@. 2021-06-13 20:13:50 +09:00
Yukihiro "Matz" Matsumoto bf2b06ced7 pack.c: raise error for unsupported w directive. 2021-06-13 14:21:51 +09:00
Yukihiro "Matz" Matsumoto 96ad60b9aa pack.c: support `@' directive (absolute position). 2021-06-12 16:18:45 +09:00
Yukihiro "Matz" Matsumoto 952e7efdd7 pack.c: refactor pack/unpack 'X'. 2021-06-12 16:18:45 +09:00
Yukihiro "Matz" Matsumoto 3ddc57ed6e pack.c: add X directive (back up byte). 2021-06-12 16:18:44 +09:00
Yukihiro "Matz" Matsumoto fb013595ed pack.c: count should be always positive. no check needed. 2021-06-12 16:18:44 +09:00
Yukihiro "Matz" Matsumoto 203495ccea pack.c: fix long/int mixtures. 2021-06-12 16:18:44 +09:00
Yukihiro "Matz" Matsumoto 72ea85c8da pack.c: remove unused arguments from static functions. 2021-06-12 16:18:44 +09:00
Yukihiro "Matz" Matsumoto f764467c19 pack.c: wrong position after count read. 2021-06-12 16:18:43 +09:00
Yukihiro "Matz" Matsumoto f7777f64e6 codegen.c: refactor readint()
* renamed from redundant `readint_mrb_int()`
* supports only base upto 16
* no base validation (already done in parser)
* no negative read (negate after read)
* overflow detection using `mrb_int_{mul,add}_overflow()`
2021-06-11 16:44:47 +09:00
Yukihiro "Matz" Matsumoto 49af1fca03 readint.c: add new function mrb_int_read.
Difference from `strtoul(3)`:

* reads `mrb_int` based on configuration
* specifies the end of the string
* no sign interpretation
* base 10 only
2021-06-11 15:14:17 +09:00
Yukihiro "Matz" Matsumoto 62f4cc8cd1 sprintf.c: check value range before type casting. 2021-06-10 18:42:51 +09:00
Yukihiro "Matz" Matsumoto 972cc8b5a8 sprintf.c: fix mrb_int and int mixture errors. 2021-06-07 23:26:06 +09:00
Yukihiro "Matz" Matsumoto b10a6fd472 pack.c: fix 'void* to char*` assignment. 2021-06-07 22:42:31 +09:00
Yukihiro "Matz" Matsumoto 32e96a1d4a pack.c: add default to switch statement to silence warnings. 2021-06-07 09:06:37 +09:00
Yukihiro "Matz" Matsumoto 0afa651363 pack.c: support M specifier (quoted-printable). 2021-06-07 09:03:25 +09:00
Yukihiro "Matz" Matsumoto bba044cfc8 test/pack.c: reorganize test suits. 2021-06-07 08:54:54 +09:00
Yukihiro "Matz" Matsumoto cd64ddf372 pack.c: raise exception for unsupported specifiers. 2021-06-07 07:18:17 +09:00
Yukihiro "Matz" Matsumoto e112c46281 pack.c: check overflow before calling pack_x. 2021-06-06 08:01:58 +09:00
Yukihiro "Matz" Matsumoto d518294f20 pack.c: check overflow before reading count. 2021-06-06 08:01:01 +09:00
Yukihiro "Matz" Matsumoto af3e0ddfc0 pack.c: failed to detect overflow when ch is zero in read_tmpl. 2021-06-06 08:00:24 +09:00
Yukihiro "Matz" Matsumoto f01c29b0ec pack.c: hold enum values in enum variables not int. 2021-06-05 20:04:59 +09:00
Yukihiro "Matz" Matsumoto 01a21085f6 add a few regressions test from #2313
The code was contributed from Carson McDonald (@carsonmcdonald)
2021-06-03 16:47:04 +09:00
Yukihiro "Matz" Matsumoto be647acd3e sprintf.c: avoid object allocation in integer formatting. 2021-05-30 19:57:56 +09:00
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 60aa2192a8 codegen.c: just raise the exception on broken node for assignments. 2021-05-29 15:46:30 +09:00
Yukihiro "Matz" Matsumoto 269470babc kernel.c: avoid recursive VM call in mrb_f_caller. 2021-05-28 07:39:34 +09:00
Yukihiro "Matz" Matsumoto 4e683c20a2 kernel.c: caller should not include the frame for itself. 2021-05-28 07:38:21 +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 b9bde0c918 mruby-sprintf: reduce float digits to avoid test failure.
Too many digits to fit in single precision float numbers, so that tests
fail when `MRB_USE_FLOAT32` defined.
2021-05-22 14:46:37 +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 f0e1d575f2 sprintf.c: remove specifiers %a and %A.
`fmt_fp.c` does not support those specifiers. In addition, I believe no
one uses hexadecimal representation of float values.
2021-05-21 08:13:37 +09:00
Yukihiro "Matz" Matsumoto 07c8470278 parse.y: allow "command" syntax in endless method definition.
This change allows `def hello = puts "Hello"` without parentheses.
This syntax has been introduced since Ruby3.1.
2021-05-18 16:26:36 +09:00
Yukihiro "Matz" Matsumoto d50c83cca7 parse.y: endless singleton method definition can omit parens. 2021-05-18 16:25:53 +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 fbbcee835f rational.c: update function prefixes.
To be consistent, functions with `rational_` prefix implements methods,
functions with `rat_` prefix are utility functions.
2021-05-17 13:39:51 +09:00
Yukihiro "Matz" Matsumoto ae4c952d2e mruby-array-ext/array.c: implement Array#rotate in C.
The Ruby version of `Array#rotate!` generated a rotated array and
replaced the receiver, but the C version rotates the receiver array
in-place. So the performance is improved a lot both in speed and memory
consumption. Look for the comments in `array.c` for the in-place rotating
algorithm, if you are interested.
2021-05-15 17:26:36 +09:00
Yukihiro "Matz" Matsumoto 9422fdbc87 mruby-array-ext/array.c: implement Array#compact in C. 2021-05-14 10:39:41 +09:00