John Bampton
781edbd446
misc: fix spelling
2025-05-14 02:01:02 +10:00
Yukihiro "Matz" Matsumoto
dbc9d12254
mempool.c (mempool_open): avoid using old API in mempool.c
2025-05-12 13:04:22 +09:00
Yukihiro "Matz" Matsumoto
6566099dbb
mempool.c: remove mrb_state dependency from mempool library
...
mempool.h provide compatibility layer so that existing programs does not
need to update (but update recommended anyway, since compatibility layer
takes mrb_state that is not used at all).
2025-05-12 08:26:18 +09:00
Yukihiro "Matz" Matsumoto
6766fcb905
class.c (mt_rehash): Fix mrb_calloc argument order
...
Since mrb_calloc() (along with mrb_calloc) takes two arguments: nmemb
which is number of array elements, and size which is size of the array.
Of course, revsersing does not change the behavior, but we'd like to
respect the original design intention of calloc(3).
2025-05-11 20:11:56 +09:00
Yukihiro "Matz" Matsumoto
7e4810658e
allocf.c: update and enhance documentation in the comment
2025-05-10 09:07:35 +09:00
Yukihiro "Matz" Matsumoto
5522c94bb3
mruby.h: remove mrb_allocf type
...
As a result, we removed (already obsoleted) `mrb_open_allocf()', and
made `mrb_open_core()` take no argument. [incompatible changes]
2025-05-10 08:59:18 +09:00
Yukihiro "Matz" Matsumoto
5c71681d82
allocf.c (mrb_basic_alloc_func): remove ud argument
2025-05-10 08:59:18 +09:00
Yukihiro "Matz" Matsumoto
c3cc559dfc
allocf.c: rename mrb_default_alloc to mrb_basic_alloc_func
...
Along with removing mrb_state first argument from the function. From
mruby 3.2, this function is *not* the default function, but the entry
point that can be redefined for the application. The function in
`src/allocf.c` is the default *implementation* (using malloc / realloc /
free) of the function.
2025-05-09 21:50:18 +09:00
Yukihiro "Matz" Matsumoto
0bdd529430
mruby.h: remove allocf and allocf_ud from mrb_state
...
This is preparation for memory allocation restructuring.
2025-05-09 18:13:28 +09:00
Yukihiro "Matz" Matsumoto
5b10fdf684
Merge pull request #6524 from hasumikin/fix/Kernel#p
2025-05-08 16:01:35 +09:00
Yukihiro "Matz" Matsumoto
3879b95a62
class.c (find_visibility_scope): when callinfo returns, *ep == NULL; #6512
2025-05-08 12:02:32 +09:00
Yukihiro "Matz" Matsumoto
2b0d866da1
class.c (find_visibility_scope): rename the function; ref #6512
...
Since the function returns either callinfo or env, thus the name does
not describe the current behavior. In addition, we did some refactoring
on the function.
2025-05-08 12:02:00 +09:00
Yukihiro "Matz" Matsumoto
50c8e180d8
class.c (find_visibility_ci): refactor to reduce complexity; ref #6512
2025-05-08 07:57:35 +09:00
Yukihiro "Matz" Matsumoto
dbc4768758
mruby/internal.h: rename visibility separation macros; ref #6512
2025-05-08 07:32:36 +09:00
Yukihiro "Matz" Matsumoto
41e91a2ca8
vm.c (mrb_exec_irep): remove recently added separate_module argument
...
The argument was added in #6512
2025-05-08 07:27:23 +09:00
Yukihiro "Matz" Matsumoto
aec8d0c58b
Merge branch 'visibility' of github.com:dearblue/mruby into dearblue-visibility
2025-05-07 15:37:08 +09:00
Yukihiro "Matz" Matsumoto
6eb969ff04
backtrace.c (print_backtrace): use mrb_exc_get_output()
...
To keep the old error print even after Exception#inspect format changed.
2025-05-07 12:22:11 +09:00
Yukihiro "Matz" Matsumoto
33d9ad6c44
error.c (mrb_exc_get_output): a new function for old inspect format
2025-05-07 12:19:05 +09:00
Yukihiro "Matz" Matsumoto
333c364d5f
error.c (mrb_exc_inspect): Update format to match CRuby
2025-05-07 12:19:04 +09:00
Yukihiro "Matz" Matsumoto
b5ad35d8ef
proc.h (MRB_SET_VISIBILITY_FLAGS): rename macro
2025-05-07 12:19:04 +09:00
HASUMI Hitoshi
fdfd67ff40
Fix Kernel#p when no argument
...
## Expected
```ruby
p
=> nil
```
## Actual
```ruby
p
=> []
```
2025-05-04 10:17:37 +09:00
Yukihiro "Matz" Matsumoto
30d1db4528
10error.rb: move 2 more classes to error.c
...
- FloatDomainError
- RegexpError
2025-05-02 08:50:20 +09:00
Yukihiro "Matz" Matsumoto
0fb280adbf
10error.rb: move some error class definitions to error.c
...
- Exception
- ArgumentError
- LocalJumpError
- RangeErrpr
- TypeError
- IndexError
- KeyError
- NotImplementError
- FrozenError
- ZeroDivisionError
2025-05-01 15:10:55 +09:00
Yukihiro "Matz" Matsumoto
1bc16676a1
class.c: implement BasicObject#!= in C file
...
The method is defined in inline bytecode. As a side-effect, `00class.rb`
was removed.
2025-05-01 10:23:03 +09:00
Yukihiro "Matz" Matsumoto
683ecc09b5
codedump.c: do not print extra ';' if operands are not local vars
2025-04-30 07:54:40 +09:00
Yukihiro "Matz" Matsumoto
789d350da9
codedump.c: put parenthesis around virtual operand
...
Some operands are virtual (e.g. `a` and `a+1`). It is easier to count
instructions if you can distinguish virtual and real operands.
2025-04-29 07:49:59 +09:00
Yukihiro "Matz" Matsumoto
08f74dd2be
class.c: move alias attr attr_reader from 00class.rb
2025-04-28 14:20:07 +09:00
Yukihiro "Matz" Matsumoto
6c72f8b378
class.c (extend_object): remove method; implement Kernel#extend in C
2025-04-28 10:30:00 +09:00
Yukihiro "Matz" Matsumoto
6c25b5896a
class.c (prepend_features): remove the method
...
Just like `#append_features`, we remove `#prepend_features` and
implemented `#prepend` directly in C.
2025-04-28 10:30:00 +09:00
Yukihiro "Matz" Matsumoto
9387cd382e
class.c (append_features): remove the method
...
The technique is called "double dispatch" (that was popular in
Smalltalk), but it does not work well with mruby. It's slower and
consumes more memory. Even thought `#append_features` defined in ISO
standard (15.2.2.4.11), we decided to remove it. Strictly speaking, it
is mruby limitation. And it should be documented clearly.
2025-04-28 10:30:00 +09:00
Yukihiro "Matz" Matsumoto
5fe406d59c
vm.c (send_method): should not use C++ keyword public
2025-04-28 10:30:00 +09:00
Yukihiro "Matz" Matsumoto
a6ef3a45d1
vm.c (mrb_f_public_send): define #public_send method
...
The method itself is available when mruby-metaprog is loaded.
2025-04-25 17:39:12 +09:00
Yukihiro "Matz" Matsumoto
dd96afd5a8
variable.c (mrb_const_set): call const_added hook
2025-04-25 16:25:36 +09:00
Yukihiro "Matz" Matsumoto
e5478c2b40
class.c (setup_class): simplified using mrb_const_set()
2025-04-25 16:23:02 +09:00
Yukihiro "Matz" Matsumoto
8f120971b5
variable.c: merge mrb_vm_const_set to mrb_const_set
...
Inline vm part to the VM itself.
2025-04-25 16:12:06 +09:00
Yukihiro "Matz" Matsumoto
03719490eb
class.c: define const_added method (with empty body)
2025-04-25 15:56:57 +09:00
Yukihiro "Matz" Matsumoto
8b213c4fbf
string.c (sub_replace): check if found argument is within proper range
...
Since it is an internal method, we didn't check the argument range, but
if it's called directly, out-of-range argument could cause SEGV.
2025-04-15 07:11:09 +09:00
Yukihiro "Matz" Matsumoto
1969100fb4
variable.c (mrb_vm_get_const): seek singleton class superclass; fix #6506
...
Also ensure we don't revive #2515 , #3003 , #3598
2025-04-14 22:09:35 +09:00
Yukihiro "Matz" Matsumoto
953ebdf334
variable.c (mrb_vm_const_get): refactoring for singleton classes
2025-04-14 22:09:35 +09:00
Yukihiro "Matz" Matsumoto
e08452585e
variable.c (mrb_mod_cv_get): c must not be NULL as an argument
2025-04-14 22:09:34 +09:00
Yukihiro "Matz" Matsumoto
90d77e71f5
variable.c (mrb_mod_cv_set): small refactoring
...
The argument c should not be NULL.
2025-04-14 22:09:34 +09:00
Yukihiro "Matz" Matsumoto
118e13d85c
variable.c: a new function mrb_mod_const_at()
...
And mrb_mod_constants() use the new function now.
2025-04-14 22:09:34 +09:00
Yukihiro "Matz" Matsumoto
0d5fecf833
variable.c (mrb_const_get): adjust local variable scope
2025-04-14 22:09:33 +09:00
dearblue
3fd5e1c250
Fixed visibility at method definition
...
There was a problem with visibility state from proc that straddles a fiber or is independent.
Therefore, it has been changed to give priority to env objects, if any.
Also, added "separate module" flag to block traversal to a higher level env object.
Note that the "separate module" flag is now set when calling blocks with the `mrb_yield_with_class()` function.
fixed https://github.com/mruby/mruby/issues/6494
2025-04-11 21:36:26 +09:00
dearblue
84e1b0045c
Fixed class method visibility via module_function
...
The following code should work
```ruby
module M
def me
p self
end
module_function :me
end
M.me
```
2025-04-07 21:40:56 +09:00
John Bampton
b56f984c25
misc: fix typos
2025-03-30 14:04:34 +10:00
Yukihiro "Matz" Matsumoto
7351f1127b
vm.c: ci_bidx() returns mrb_int, that may be different in size from int
2025-03-26 16:19:26 +09:00
Yukihiro "Matz" Matsumoto
a574034cb2
hash.c (hash_set_default_proc): mrb_proc_arity() returns mrb_int
2025-03-25 08:09:21 +09:00
Yukihiro "Matz" Matsumoto
226acdc540
hash.c (mrb_hash_set_default_proc): avoid repeated calls for mrb_nil_p()
2025-03-19 14:57:02 +09:00
Yukihiro "Matz" Matsumoto
a55e3685a9
string.c: rename local variable indx to idx
...
`indx` seems not to be a common abbreviation.
2025-03-18 10:40:30 +09:00