google-labs-jules[bot]
71e8dbcd97
Refactor str_succ_bang for in-place modification
...
This commit refactors the str_succ_bang function in mrbgems/mruby-string-ext/src/string.c to perform string succession in-place.
The previous implementation used an intermediate temporary string, which incurred memory and performance overhead.
This change aims to reduce memory usage and improve performance by modifying the string buffer directly, using mrb_str_resize and memmove when prepending characters is necessary (e.g., '9' -> '10').
Formatting changes (newlines before 'else') have also been applied as per user request.
2025-06-23 09:23:54 +00:00
Yukihiro "Matz" Matsumoto
791b374155
khash.h: reduce KHASH_DEFAULT_SIZE from 32 to 8
2025-06-23 17:07:31 +09:00
Yukihiro "Matz" Matsumoto
c152f3a79a
mruby-set: add comprehensive tests for Set operations: +, -, &
2025-06-23 17:07:31 +09:00
Yukihiro "Matz" Matsumoto
18b45c7ab5
mruby-set: change string representation from #<Set: {1}> to Set[1]
2025-06-23 17:07:31 +09:00
Yukihiro "Matz" Matsumoto
561a3eac82
mruby-set: make eql? an alias of == method
2025-06-23 17:07:30 +09:00
Yukihiro "Matz" Matsumoto
20b32531ea
mruby-set: Fix memory leak in Set#flatten! and simplify implementation
...
- Remove circular reference check in favor of max depth check only
- Fix memory leak by properly handling errors in set_flatten_bang
- Simplify code by reducing variables and unifying error handling
2025-06-23 17:07:30 +09:00
Yukihiro "Matz" Matsumoto
9d739cdad8
mruby-set: use set_is_set extensively
2025-06-23 17:07:30 +09:00
Yukihiro "Matz" Matsumoto
f47609574a
mruby-set: remove some AI generated work-log comments
2025-06-23 17:07:30 +09:00
Yukihiro "Matz" Matsumoto
ea0ceff7fb
mruby-set: implement Set#flatten and flatten! in C
...
The code is generated by Cursor.
2025-06-23 17:07:30 +09:00
Yukihiro "Matz" Matsumoto
73c61e4a60
mruby-set: optimize inspect/to_s to avoid intermediate array
2025-06-23 17:07:29 +09:00
Yukihiro "Matz" Matsumoto
e2982bdb57
mruby-set: optimize join method to avoid intermediate array
2025-06-23 17:07:29 +09:00
Yukihiro "Matz" Matsumoto
0430f1e9b8
mruby-set: optimize eql? by checking fast path
2025-06-23 17:07:29 +09:00
Yukihiro "Matz" Matsumoto
d7a0d5687e
mruby-set: optimize equal by checking fast path
2025-06-23 17:07:29 +09:00
Yukihiro "Matz" Matsumoto
83fc43e71d
mruby-set: improve Set#hash by using FNV-1 hashing
2025-06-23 17:07:29 +09:00
Yukihiro "Matz" Matsumoto
3a5d0a1840
mruby-set: simplify the code with KHASH_FOREACH macro
2025-06-23 17:07:28 +09:00
Yukihiro "Matz" Matsumoto
eb1820d75e
symbol.c: remove unused <mruby/khash.h> header
2025-06-23 17:07:28 +09:00
Yukihiro "Matz" Matsumoto
e30ec3da42
mruby-metaprog: use KHASH_FOREACH macro
2025-06-23 17:07:28 +09:00
Yukihiro "Matz" Matsumoto
bce8cee8f9
khash.h (KHASH_FOREACH): a new macro to iterate over khash table
2025-06-23 17:07:28 +09:00
Yukihiro "Matz" Matsumoto
d41d477e22
mruby-set: add type checking helper functions
...
Add two helper functions to improve code clarity and maintainability:
- set_check_type: Checks if a value is a Set and raises an error if not
- set_is_set: Checks if a value is a Set and returns a boolean result
Update all relevant methods to use these helper functions, reducing
code duplication and centralizing type checking logic.
2025-06-23 17:07:27 +09:00
Yukihiro "Matz" Matsumoto
deb5c47fc6
mruby-set: implement comparison methods in C for better performance
...
Reimplemented the following methods in C for improved efficiency:
- superset? and proper_superset? (>= and >)
- subset? and proper_subset? (<= and <)
- intersect? and disjoint?
- <=> comparison operator
2025-06-23 17:07:27 +09:00
Yukihiro "Matz" Matsumoto
60f06e7a0f
mruby-set: Add comprehensive method documentation
2025-06-23 17:07:27 +09:00
Yukihiro "Matz" Matsumoto
091e48159a
mruby-set: Use numbered parameters for block arguments
2025-06-23 17:07:27 +09:00
Yukihiro "Matz" Matsumoto
04b38c2c47
mruby-set: rename internal methods
...
Renaming all internal C methods from __set_* to a cleaner __* convention
(e.g., __set_merge is now __merge), and updating their call sites in the
Ruby code accordingly.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
e096eeed1a
mruby-set: reimplement #initialize in Ruby again
...
And we have eliminated mrb_funcall* from set.c.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
5e2a7568e2
mruby-set: move #replace to Ruby again
...
Since it does only clear() and merge(), there is little use of the C
implemented fast path. This change also reduce memory consumption.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
100ba913f2
mruby-set: extensive refactor in set.c
...
We refactor out loop by set_khash_foreach() function, so that we don't
need to repeat for loop. it makes the code simpler. The code is written
by Atlassian Rovodev.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
f210772465
mruby-set: optimize Set operations to use mrb_get_arg1()
...
Replace mrb_get_args() with more efficient mrb_get_arg1() for
single-argument functions. The code is written by Atlassian Rovodev.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
c117674cfe
mruby-set: refactor Set#replace
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:25 +09:00
Yukihiro "Matz" Matsumoto
8538c79f3f
mruby-set: refactor Set#merge
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:25 +09:00
Yukihiro "Matz" Matsumoto
169654ad9b
mruby-set: refactor Set#subtract
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:25 +09:00
Yukihiro "Matz" Matsumoto
c188b9a1aa
mruby-set: refactor Set#difference
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:25 +09:00
Yukihiro "Matz" Matsumoto
10ea05d3aa
mruby-set: refactor Set#union (+, |)
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
d9f0c5a3a4
mruby-set: refactor Set#xor (^)
...
According to the similar strategy as Set#intersection.
The code is mostly written by Atlassian Rovodev.
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
56a41b844e
mruby-set: refactor Set#intersection
...
Define generic operation method in Ruby, then prepare fast-path function
in C as a general structure. Some methods will follow this pattern.
The code is generated by Atlassian Rovodev.
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
4ae3068b2a
mruby-set: replace mrb_funcall_id() by set_to_a()
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
73a1eb03e8
mruby-set: remove mrb_funcall_id() from set_join()
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
abae5a5ff5
mruby-set: remove __equal_fallback that no longer used
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
a2339a7fde
mruby-set: refactor set_equal() function
...
Made not to use mrb_funcall() as well.
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
72b51c4e92
mruby-set: I prefer newline before else keyword
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
655981c6ed
mruby-set: remove unused object allocation
...
AI added this allocation to avoid memory leaks, but actually this extra
allocation does nothing useful. We see more room for AI improvement.
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
e4ed04ba8b
mruby-set (set_init): adjust a local variable declaration
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
52285161e7
mruby-set: remove methods added by AI hallucination
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
1238fb2808
mruby-set (flatten_merge): remove unnecessary assignment
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
f44a7bc5db
mruby-set: remove statistic measurement code
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
7a1732d438
mruby-set: make #initialize_copy private
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
11106525c4
mruby-set (__get_hash): remove no longer used method
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
7ffe6a3a9a
mruby-set: re-implement Set class in C
...
The code is mostly developed by Atlassian Rovodev.
2025-06-23 17:07:21 +09:00
Yukihiro "Matz" Matsumoto
e87bd7fcc1
mruby-set: update README.md
...
The document is written by Google Jules.
2025-06-23 17:07:21 +09:00
Yukihiro "Matz" Matsumoto
695207be68
hash.c (mrb_obj_hash_code): expose hash function
2025-06-23 17:07:21 +09:00
Yukihiro "Matz" Matsumoto
d73e337442
mruby-bigint: update README.md
...
The document is written by Google Jules.
2025-06-23 17:07:20 +09:00
Yukihiro "Matz" Matsumoto
4cd7f523fb
Merge pull request #6555 from dearblue/mt_foreach
2025-06-21 06:33:35 +09:00
Yukihiro "Matz" Matsumoto
e2e2b5d35b
Merge pull request #6556 from dearblue/iv_foreach
2025-06-21 06:33:18 +09:00
dearblue
5931aeb825
mrb_mt_foreach() needs to update the pointer at each loop
...
When calling a user function, a pointer retrieved outside of a loop may be invalidated.
2025-06-19 22:35:09 +09:00
dearblue
afd5805224
iv_foreach() needs to update the pointer at each loop
...
When calling a user function, a pointer retrieved outside of a loop may be invalidated.
2025-06-19 22:25:13 +09:00
Yukihiro "Matz" Matsumoto
2edfd96cbe
mruby-rational: add README.md
...
The document is written by Google Jules.
2025-06-17 16:22:19 +09:00
Yukihiro "Matz" Matsumoto
ef1cdbc0c7
mruby-complex: add README.md
...
The document is written by Google Jules.
2025-06-17 16:19:44 +09:00
Yukihiro "Matz" Matsumoto
67dbaf856f
mruby-pack: add README.md
...
The document is written by Google Jules.
2025-06-16 12:45:18 +09:00
Yukihiro "Matz" Matsumoto
0fc6288ae2
mruby-binding: make Binding#initialize_copy private
2025-06-16 12:44:06 +09:00
Yukihiro "Matz" Matsumoto
085adaf408
mruby-date: make Data#initialize_copy private
2025-06-16 12:43:34 +09:00
Yukihiro "Matz" Matsumoto
783bc526e4
mruby-enumerator: make Enumerator#initialize_copy private
2025-06-16 12:42:56 +09:00
Yukihiro "Matz" Matsumoto
35fafe57fb
mruby-io: make IO#initialize_copy private
2025-06-16 12:42:22 +09:00
Yukihiro "Matz" Matsumoto
10c40c4e87
mruby-set: make Set#initialize_copy private
2025-06-16 12:41:54 +09:00
Yukihiro "Matz" Matsumoto
0a306b81ed
mruby-struct: make Struct#initialize_copy private
2025-06-16 12:41:19 +09:00
Yukihiro "Matz" Matsumoto
d015d91c12
mruby-time: make Time#initialize_copy private
2025-06-16 12:40:29 +09:00
Yukihiro "Matz" Matsumoto
262d3715f5
proc.c: make Proc#initialize_copy private
2025-06-15 14:14:24 +09:00
Yukihiro "Matz" Matsumoto
8cb427b75c
hash.c: make Hash#initialize_copy private
2025-06-15 14:13:56 +09:00
Yukihiro "Matz" Matsumoto
a25a896caf
range.c: make Range#initialize_copy private
2025-06-15 14:12:58 +09:00
Yukihiro "Matz" Matsumoto
65369ca1e6
array.c: make Array#initialize_copy private
2025-06-15 14:12:12 +09:00
Yukihiro "Matz" Matsumoto
ff2464e879
string.c: make String#initialize_copy private
2025-06-15 14:11:54 +09:00
Yukihiro "Matz" Matsumoto
f7813268d6
mruby-socket: inline #_new_with_prelude that is only called once.
2025-06-14 13:39:12 +09:00
Yukihiro "Matz" Matsumoto
ebd9f29b38
The method #initialize_copy should be private, no direct call
...
Fixed test/t/array.rb and test/t/string.rb in standard tests.
And mrbgems/mruby-struct/test/struct.rb as well.
2025-06-14 13:38:22 +09:00
Yukihiro "Matz" Matsumoto
bf0f37833d
mruby-socket: fixed raising RuntimeError from #accept; #6554
...
In mruby, bare `raise` in rescue clause does not re-raise the last
exception. You should explicitly specify the exception.
2025-06-14 01:56:43 +09:00
Yukihiro "Matz" Matsumoto
12c124e1d4
mruby-time: add README.md
...
The document is written by Google Jules.
2025-06-14 01:06:55 +09:00
Yukihiro "Matz" Matsumoto
ac8d5c6ae6
mruby-sprintf: add README.md
...
The document is written by Google Jules.
2025-06-14 01:04:23 +09:00
Yukihiro "Matz" Matsumoto
1b189bc1a2
mruby-random: add README.md
...
The document is written by Google Jules.
2025-06-14 01:02:52 +09:00
Yukihiro "Matz" Matsumoto
8ef1d1e104
mruby-enum-lazy: add README.md
...
The document is written by Google Jules.
2025-06-13 04:45:48 +09:00
Yukihiro "Matz" Matsumoto
74f46a05fd
mruby-enum-chain: add README.md
...
The document is written by Google Jules.
2025-06-13 04:42:17 +09:00
Yukihiro "Matz" Matsumoto
6b64447f0e
mruby-enumerator: add README.md
...
The document is written by Google Jules.
2025-06-13 04:40:29 +09:00
Yukihiro "Matz" Matsumoto
04b769b5ca
mruby-os-memsize: add README.md
...
The document is written by Google Jules.
2025-06-12 21:29:20 +09:00
Yukihiro "Matz" Matsumoto
91ec6ea9cc
mruby-objectspace: add REAME.md
...
The document is written by Google Jules.
2025-06-12 21:28:42 +09:00
Yukihiro "Matz" Matsumoto
0b52b33597
mruby-proc-binding: add README.md
...
The document is written by Google Jules.
2025-06-11 18:38:14 +09:00
Yukihiro "Matz" Matsumoto
18f65c6652
mruby-method: update README.md
...
Updated document is written by Google Jules.
2025-06-11 18:35:59 +09:00
Yukihiro "Matz" Matsumoto
84c308aedc
mruby-metaprog: add README.md
...
The document is written by Google Jules.
2025-06-11 18:33:35 +09:00
Yukihiro "Matz" Matsumoto
0a45941337
mruby-eval: add README.md
...
The document is written by Google Jules.
2025-06-11 18:31:52 +09:00
Yukihiro "Matz" Matsumoto
b5197c22f6
mruby-socket: should not directly call private #initialize; fix #6554
2025-06-10 14:28:26 +09:00
Yukihiro "Matz" Matsumoto
2f00046758
mruby-toplevel-ext: add README.md
...
The document is written by Google Jules.
2025-06-10 11:28:18 +09:00
Yukihiro "Matz" Matsumoto
3a27a868a1
mruby-symbol-ext: add README.md
...
The document is written by Google Jules.
2025-06-10 11:25:45 +09:00
Yukihiro "Matz" Matsumoto
4e711fe0ef
mruby-string-ext: add README.md
...
The document is written by Google Jules.
2025-06-10 11:23:50 +09:00
Yukihiro "Matz" Matsumoto
396a85de9a
mruby-range-ext: add README.md
...
The document is written by Google Jules.
2025-06-10 11:09:16 +09:00
Yukihiro "Matz" Matsumoto
59902a94ab
mruby-proc-ext: add README.md
...
The document is written by Google Jules.
2025-06-10 11:07:16 +09:00
Yukihiro "Matz" Matsumoto
3814cbc539
mruby-object-ext: add README.md
...
The document is written by Google Jules.
2025-06-10 11:03:19 +09:00
Yukihiro "Matz" Matsumoto
5e5b4445ff
mruby-numeric-ext: add README.md
...
The document is written by Google Jules.
2025-06-10 10:58:22 +09:00
Yukihiro "Matz" Matsumoto
97ad019707
mruby-kernel-ext: add README.md
...
The document is written by Google Jules.
2025-06-10 10:56:01 +09:00
Yukihiro "Matz" Matsumoto
8fbe5523cf
mruby-hash-ext: add README.md
...
The document is written by Google Jules.
2025-06-10 10:53:57 +09:00
Yukihiro "Matz" Matsumoto
470c1dc184
mruby-errno: add README.md
...
The document is written by Google Jules.
2025-06-09 17:14:02 +09:00
Yukihiro "Matz" Matsumoto
813dc8eae5
mruby-error: add README.md
...
The document is written by Google Jules.
2025-06-09 17:13:20 +09:00
Yukihiro "Matz" Matsumoto
5cdd394c6d
mruby-encoding: add README.md
...
The document is written by Google Jules.
2025-06-09 17:11:46 +09:00
Yukihiro "Matz" Matsumoto
6509f52642
mruby-struct: add README.md
...
The document is written by Google Jules.
2025-06-09 11:01:48 +09:00
Yukihiro "Matz" Matsumoto
acf3656e49
mruby-data: add README.md
...
The document is written by Google Jules.
2025-06-09 11:01:05 +09:00
Yukihiro "Matz" Matsumoto
1beecb9670
mruby-cmath: add README.md
...
The document is written by Google Jules.
2025-06-08 17:04:05 +09:00
Yukihiro "Matz" Matsumoto
d7f7ea0d82
mruby-math: add README.md
...
The document is written by Google Jules.
2025-06-08 17:02:55 +09:00
Yukihiro "Matz" Matsumoto
6bcee69c9c
mruby-catch: add README.md
...
The document is written by Google Jules.
2025-06-08 17:00:07 +09:00
Yukihiro "Matz" Matsumoto
5731fbf17c
mruby-binding: add README.md
...
The document is written by Google Jules.
2025-06-08 16:59:25 +09:00
Yukihiro "Matz" Matsumoto
f835b86d10
mruby-enum-ext: add README.md
...
The document is written by Google Jules.
2025-06-07 11:53:04 +09:00
Yukihiro "Matz" Matsumoto
50945bec68
mruby-compar-ext: add README.md
...
The document is written by Google Jules.
2025-06-07 11:50:53 +09:00
Yukihiro "Matz" Matsumoto
5cc5a8a9c3
mruby-class-ext: add README.md
...
The document is written by Google Jules.
2025-06-07 11:48:40 +09:00
Yukihiro "Matz" Matsumoto
c7ffb0cc55
mruby-array-ext: add README.md
...
The document is written by Google Jules.
2025-06-07 11:46:11 +09:00
Yukihiro "Matz" Matsumoto
35d073a986
vm.c: fix unintended argument renaming by Google Jules; #6533
2025-06-06 11:53:14 +09:00
Yukihiro "Matz" Matsumoto
2b75da7335
Merge pull request #6553 from mruby/add-vm-comments
2025-06-06 08:15:41 +09:00
google-labs-jules[bot]
da9365f98e
Add descriptive comments for MRB_API functions in src/vm.c
...
This commit adds Doxygen-style comments to several MRB_API functions
in src/vm.c to improve code readability and documentation.
The following functions were commented:
- mrb_stack_extend
- mrb_protect_error
- mrb_funcall
- mrb_funcall_id
- mrb_funcall_with_block
- mrb_funcall_argv
- mrb_yield_with_class
- mrb_yield_argv
- mrb_yield
- mrb_vm_run
- mrb_vm_exec
- mrb_top_run
Additionally, the parameter name 'self' in mrb_yield_with_class was
renamed to 'self_obj' for better clarity and consistency with the new comment.
2025-06-05 23:14:43 +00:00
Yukihiro "Matz" Matsumoto
e55b3f0c55
Merge pull request #6552 from mruby/fix-comments-variable-c
2025-06-06 08:14:17 +09:00
google-labs-jules[bot]
b4826fdbcf
Fix: Correct placement of comments in src/variable.c
...
This commit corrects the placement of C-style block comments
for MRB_API functions in src/variable.c. Comments are now
placed directly before each function definition as per standard
documentation practices.
2025-06-05 23:13:42 +00:00
Yukihiro "Matz" Matsumoto
2f19fe1e36
Merge pull request #6551 from mruby/add-comments-state
2025-06-06 08:13:11 +09:00
google-labs-jules[bot]
19ddbdcf4b
Add descriptive comments for MRB_API functions in src/state.c
...
This commit adds descriptive comments to the following MRB_API functions in src/state.c, clarifying their purpose and functionality:
- mrb_open_core
- mrb_open
- mrb_free_context
- mrb_close
- mrb_add_irep
- mrb_top_self
- mrb_state_atexit
2025-06-05 23:12:50 +00:00
Yukihiro "Matz" Matsumoto
bdd379bc8c
Merge pull request #6550 from mruby/add-comments-to-proc-c
2025-06-06 08:12:32 +09:00
google-labs-jules[bot]
ddbbf3bd82
Add descriptive comments for MRB_API functions in src/proc.c
...
This commit adds Doxygen-style comments to the following MRB_API functions in src/proc.c:
- mrb_proc_new_cfunc
- mrb_proc_new_cfunc_with_env
- mrb_closure_new_cfunc
- mrb_proc_cfunc_env_get
The comments describe the purpose, parameters, and return value of each function.
2025-06-05 23:12:02 +00:00
Yukihiro "Matz" Matsumoto
64d390b9e0
numeric.c : add descriptive comments for public functions
...
- mrb_int_overflow
- mrb_int_zerodiv
- mrb_int_pow
- mrb_div_int
- mrb_div_int_value
- mrb_float_to_str
- mrb_check_num_exact
- mrb_int_mul
- mrb_num_shift
- mrb_float_to_integer
- mrb_int_add
- mrb_int_sub
- mrb_int_to_cstr
- mrb_integer_to_str
- mrb_cmp
The comments were written by Google Jules.
2025-06-06 08:11:37 +09:00
Yukihiro "Matz" Matsumoto
d3f339062b
Merge pull request #6549 from mruby/add-kernel-comments
2025-06-05 10:36:52 +09:00
google-labs-jules[bot]
1e3295d93e
Add descriptive comments to kernel functions
...
This commit adds descriptive C-style comments to the following functions
in `src/kernel.c`:
- `mrb_func_basic_p`: Explains that the function checks if an object's method is implemented by a specific C function.
- `mrb_obj_freeze`: Explains that the function freezes an object, preventing further modifications.
- `mrb_obj_is_instance_of`: Explains that the function checks if an object is an instance of a given class.
2025-06-05 01:35:27 +00:00
Yukihiro "Matz" Matsumoto
24a84a5a37
Merge pull request #6548 from mruby/add-comments-etc
2025-06-05 10:34:17 +09:00
google-labs-jules[bot]
52d56fe443
Add descriptive comments to MRB_API functions in src/etc.c
...
This commit adds Doxygen-style comments to several MRB_API functions
in the `src/etc.c` file. These comments explain the purpose,
parameters, and return values of these functions, improving code
readability and maintainability.
The following functions were commented:
- mrb_data_object_alloc
- mrb_data_check_type
- mrb_data_check_get_ptr
- mrb_data_get_ptr
- mrb_obj_to_sym
- mrb_obj_id
- mrb_word_boxing_float_value
- mrb_word_boxing_value_float
- mrb_word_boxing_cptr_value
- mrb_boxing_int_value
2025-06-05 01:33:38 +00:00
Yukihiro "Matz" Matsumoto
576a104a77
Merge pull request #6546 from mruby/dependabot/github_actions/ls-lint/action-2.3.1
2025-06-05 10:18:26 +09:00
dependabot[bot]
ad015f14a8
build(deps): bump ls-lint/action from 2.3.0 to 2.3.1
...
Bumps [ls-lint/action](https://github.com/ls-lint/action ) from 2.3.0 to 2.3.1.
- [Commits](https://github.com/ls-lint/action/compare/v2.3.0...v2.3.1 )
---
updated-dependencies:
- dependency-name: ls-lint/action
dependency-version: 2.3.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-06-04 14:33:09 +00:00
Yukihiro "Matz" Matsumoto
1ff94c5e00
AUTHORS: update entries [ci skip]
2025-06-04 13:20:08 +09:00
Yukihiro "Matz" Matsumoto
a3e72804cd
range.c: add descriptive comments to MRB_API functions in src/range.c
...
This commit adds descriptive comments to the following functions:
- mrb_range_ptr
- mrb_range_new
- mrb_range_beg_len
The comments were written by Google Jules.
2025-06-04 11:03:35 +09:00
Yukihiro "Matz" Matsumoto
99d9568aeb
Merge pull request #6544 from zenspider/zenspider/frozen_strings
2025-06-04 11:03:26 +09:00
Yukihiro "Matz" Matsumoto
851f9f61a9
Merge pull request #6545 from mruby/add-comments-class-c
2025-06-04 11:00:55 +09:00
google-labs-jules[bot]
e68eafd511
Add descriptive comments for MRB_API functions in src/class.c
...
This commit adds C-style block comments to all MRB_API functions
defined in the src/class.c file. The comments explain the purpose
of each function, its parameters, and its return value, aiming to
improve code readability and maintainability.
2025-06-04 01:59:44 +00:00
Ryan Davis
59f08ff148
Fix build strings that must be mutable. Tested with RUBYOPT=--enable-frozen-string-literal make
2025-06-03 18:18:29 -07:00
Yukihiro "Matz" Matsumoto
8e0081923f
Merge pull request #6543 from mruby/add-comments-dump-c-partial
2025-06-03 09:01:56 +09:00
google-labs-jules[bot]
c837d386de
Add descriptive comments to several functions in src/dump.c
...
This commit adds Doxygen-style comments to the following functions
in src/dump.c, ensuring "@brief" is not used:
Non-static functions (comments reviewed/updated):
- mrb_dump_irep
- mrb_dump_irep_binary
- mrb_dump_irep_cfunc
Static functions (new comments added):
- write_irep_header
- write_iseq_block
- dump_float (if compiled)
- get_pool_block_size
- write_pool_block
- get_syms_block_size
- write_syms_block
- get_irep_record_size
This work is part of a larger effort to document all non-trivial
functions in this file as per your feedback. The remaining functions
will be documented in subsequent commits.
2025-06-03 00:01:24 +00:00
Yukihiro "Matz" Matsumoto
c3d2b903c6
error.c: add descriptive comments
...
The comments are written by Google Jules.
2025-06-03 08:53:06 +09:00
Yukihiro "Matz" Matsumoto
83b21e8fd6
Merge pull request #6542 from mruby/add-symbol-comments
2025-06-03 08:43:23 +09:00
google-labs-jules[bot]
e8458f9c22
Add descriptive comments to MRB_API functions in src/symbol.c
...
This commit adds descriptive comments to all functions marked with MRB_API
in the `src/symbol.c` file. The comments explain the purpose, parameters,
and return values of these functions, improving code readability and
maintainability.
The following functions were commented:
- mrb_intern
- mrb_intern_static
- mrb_intern_cstr
- mrb_intern_str
- mrb_intern_check
- mrb_check_intern
- mrb_intern_check_cstr
- mrb_check_intern_cstr
- mrb_intern_check_str
- mrb_check_intern_str
- mrb_sym_name_len
- mrb_sym_str
- mrb_sym_name
- mrb_sym_dump
2025-06-02 23:42:40 +00:00
Yukihiro "Matz" Matsumoto
d2728fb0ae
mruby-time (mrb_to_time_t): separate into smaller functions
...
The code was written by Google Jules.
2025-06-02 16:05:44 +09:00
Yukihiro "Matz" Matsumoto
70956e9683
mruby-time: add descriptive comments
...
The comments were written by Google Jules.
2025-06-02 16:04:54 +09:00
Yukihiro "Matz" Matsumoto
91c59ced99
mruby-time: replace magic numbers to C macros
...
The code is written by Google Jules.
2025-06-02 15:55:44 +09:00
Yukihiro "Matz" Matsumoto
46b8e80d9e
Merge pull request #6541 from mruby/add-api-comments-array
2025-06-02 08:48:57 +09:00
google-labs-jules[bot]
7f3329e393
Add descriptive comments for MRB_API functions in src/array.c
...
This change adds C-style multiline comments to all functions
marked with MRB_API in the src/array.c file.
The comments explain each function's purpose, its parameters,
and what it returns, where applicable. This improves the
readability and maintainability of the C API for mruby arrays.
The `@brief` markup was intentionally avoided as per your
requirements.
2025-06-01 23:48:11 +00:00
Yukihiro "Matz" Matsumoto
9c5d1cdaa9
Merge branch 'jules_wip_7626599795303680331'
2025-06-01 17:58:39 +09:00
google-labs-jules[bot]
493cc64902
hash.c: add descriptive comments to C-facing MRB_API hash functions
...
This commit adds C-style descriptive comments to MRB_API functions
in `src/hash.c` that are intended for use as part of mruby's C API.
The comments are targeted at C developers using these functions directly.
Comments were added or updated for the following functions:
- mrb_hash_new: Added comment.
- mrb_hash_new_capa: Updated existing comment to be more C API user-centric.
- mrb_hash_dup: Added comment.
- mrb_hash_get: Added comment.
- mrb_hash_fetch: Added comment.
- mrb_hash_set: Added comment.
- mrb_hash_delete_key: Added comment.
- mrb_hash_size: Added comment.
- mrb_hash_merge: Added comment.
- mrb_hash_foreach: Comment updated in a previous phase of work.
This work aligns with the guideline to comment C-facing MRB_API functions,
while avoiding adding new C-API comments to those MRB_API functions
that solely implement Ruby methods and already have extensive Ruby
method documentation (call-seq) in the source. The @brief markup
was avoided as per the original issue request.
2025-06-01 17:57:30 +09:00
Yukihiro "Matz" Matsumoto
273e7325c9
Merge pull request #6538 from mruby/dependabot/bundler/rake-13.3.0
2025-05-31 22:48:52 +09:00
Yukihiro "Matz" Matsumoto
ec68497a39
Merge pull request #6540 from mruby/add-comments-object-c
2025-05-31 22:48:02 +09:00
Yukihiro "Matz" Matsumoto
05c7aa2fe2
Merge pull request #6539 from mruby/add-string-comments
2025-05-31 22:47:45 +09:00
google-labs-jules[bot]
f4b56a5e56
Add descriptive comments to MRB_API functions in object.c
...
This commit adds and updates C-style block comments for all functions marked with MRB_API in src/object.c.
The comments explain the purpose, parameters, and return values of these functions, adhering to the project's documentation style and avoiding the use of '@brief' markup.
Existing comments were also reviewed and updated for clarity and consistency.
2025-05-31 13:45:31 +00:00
google-labs-jules[bot]
5924a23b8d
Here's the rewritten message:
...
Add descriptive comments for MRB_API functions in src/string.c
This commit adds descriptive comments to various MRB_API functions
within the src/string.c file. These comments aim to improve code
readability and maintainability by explaining the purpose,
parameters, and return values of these functions.
2025-05-31 13:44:19 +00:00
dependabot[bot]
bbb5d28530
build(deps): bump rake from 13.2.1 to 13.3.0
...
Bumps [rake](https://github.com/ruby/rake ) from 13.2.1 to 13.3.0.
- [Release notes](https://github.com/ruby/rake/releases )
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc )
- [Commits](https://github.com/ruby/rake/compare/v13.2.1...v13.3.0 )
---
updated-dependencies:
- dependency-name: rake
dependency-version: 13.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-30 14:40:20 +00:00
Yukihiro "Matz" Matsumoto
df62559ddb
Merge pull request #6537 from mruby/add-cdump-comments
2025-05-30 07:24:00 +09:00
Yukihiro "Matz" Matsumoto
b925d6fee4
Merge pull request #6536 from mruby/add-debug-comments
2025-05-30 07:23:45 +09:00
google-labs-jules[bot]
bee56a8634
The comments in cdump.c have been updated to remove the @brief tag from the Doxygen-style comment for the mrb_dump_irep_cstruct function. This change was made based on your feedback.
...
The rest of the comment, which details the function's purpose, parameters, return values, and conditional compilation, remains unchanged.
2025-05-29 22:22:07 +00:00
Yukihiro "Matz" Matsumoto
0011ee2267
Merge pull request #6535 from mruby/add-mempool-comments
2025-05-29 10:06:32 +09:00
Yukihiro "Matz" Matsumoto
70614ba82a
Merge pull request #6534 from mruby/add-readfloat-comment
2025-05-29 09:25:39 +09:00
google-labs-jules[bot]
a668834b2d
Add descriptive comments to public functions in src/debug.c
...
This change adds Doxygen-style comments to the public API functions
in `src/debug.c`, including mrb_packed_int_len, mrb_packed_int_encode,
and mrb_packed_int_decode. The comments explain the purpose of each function,
its parameters, and its return value. This improves the readability
and maintainability of the code.
2025-05-28 22:06:18 +00:00
google-labs-jules[bot]
e0d1f99744
I've added descriptive comments for functions/macros in src/mempool.c.
...
This commit adds Doxygen-style comments to the public functions,
internal static functions, and structs within the `src/mempool.c` file.
These comments clarify the purpose, parameters, and return values (where applicable)
of these code elements, improving code readability and maintainability.
The following elements were commented:
- struct mempool_page
- struct mempool
- ALIGN_PADDING macro
- mempool_open()
- mempool_close()
- page_alloc()
- mempool_alloc()
- mempool_realloc()
2025-05-28 22:02:53 +00:00
google-labs-jules[bot]
224d0c8933
Add descriptive comment to mrb_read_float function
...
This commit adds a descriptive comment at the beginning of the `mrb_read_float` function in `src/readfloat.c`.
The comment explains the function's purpose, its parameters (`str`, `endp`, `fp`), and its return value (`TRUE` or `FALSE`). This improves code readability and understanding.
2025-05-28 22:01:17 +00:00
Yukihiro "Matz" Matsumoto
e5905fe1dc
Merge pull request #6533 from katafrakt/fix-extended-callback
2025-05-28 11:13:38 +09:00
Yukihiro "Matz" Matsumoto
eb5fbfbb40
class.c: Remove MRB_INLINE_METHOD_CACHE support from mt_tbl
...
The sorted array binary search implementation no longer uses the inline
cache array, so remove all MRB_INLINE_METHOD_CACHE definitions and
related code.
2025-05-28 08:33:21 +09:00
Yukihiro "Matz" Matsumoto
e8ebeb151d
class.c: Switch mt_tbl to sorted array binary search for method lookups
...
By replacing the open‐addressing hash with a sorted array and binary
search, we eliminate tombstone management and improve cache locality of
method entries. This preserves the original contiguous values+keys
layout and peak memory usage, while simplifying growth logic and
delivering lookup performance gains.
2025-05-28 07:54:42 +09:00
Paweł Świątkowski
bdcd496bc2
Fix calling extended callback
...
The callback of extending module should be called, not of a singleton
class of an extended object.
2025-05-27 23:03:10 +02:00
Yukihiro "Matz" Matsumoto
bec5dbc4e9
variable.c (iv_copy): just memcpy sorted array; no iv_put
2025-05-27 10:58:41 +09:00
Yukihiro "Matz" Matsumoto
63a09ee336
variable.c (iv_rehash): just memcpy sorted array; no need to call iv_put
2025-05-27 10:53:58 +09:00
Yukihiro "Matz" Matsumoto
9cee6ead4c
variable.c: use binary search for iv_tbl lookups
...
Preserve the original iv_tbl heap layout and allocation pattern, but
switch iv_put to maintain sorted keys and iv_get/iv_del to perform
binary search. This eliminates extra probing overhead, improves
read-heavy lookup performance for small tables, and incurs zero
additional allocations.
2025-05-27 10:33:09 +09:00
Yukihiro "Matz" Matsumoto
ca6dc4ec2d
variable.c (iv_size): refactor the function
...
Along with removing an obsolete comment line.
2025-05-27 10:16:12 +09:00
Yukihiro "Matz" Matsumoto
7c02e17e25
variable.c (mrb_mod_cv_get): initialize local variable
...
To silence compiler warning.
2025-05-26 22:59:04 +09:00
Yukihiro "Matz" Matsumoto
11bf789730
array.c: remove unnecessary blank line
2025-05-26 14:32:19 +09:00
Yukihiro "Matz" Matsumoto
9537d9b75a
Merge pull request #6532 from mruby/improve-mt-hash-load-factor
2025-05-25 20:57:36 +09:00
google-labs-jules[bot]
e82f49adf7
I've reverted method table optimizations to prioritize memory savings for you.
...
My previous attempts to improve method table (mt_tbl) performance by introducing a load factor and adjusting the initial allocation size unfortunately led to undesirable increases in memory consumption.
Given that memory usage is a primary concern, I've reverted the following changes:
- Removed the load factor based rehashing logic.
- Removed the related definitions for the load factor.
- Ensured the initial allocation size is 8.
This restores the method table to its original behavior, where it rehashes only when the table is completely full or during initial allocation. This should bring memory usage back to its baseline level prior to these optimization attempts.
2025-05-25 11:40:43 +00:00
Yukihiro "Matz" Matsumoto
ed8ec097a2
Merge pull request #6531 from mruby/improve-mt-hash-load-factor
2025-05-25 20:12:46 +09:00
google-labs-jules[bot]
8a91c91a69
Improve method table performance by rehashing at 75% load factor.
...
The method table (mt_tbl) in src/class.c previously only rehashed when it became completely full. With linear probing, this could lead to significant performance degradation for lookups and insertions as the table approached full capacity.
This change introduces a load factor (MT_LOAD_FACTOR_NUM/MT_LOAD_FACTOR_DEN, set to 3/4 or 0.75). The mt_put function now checks if adding a new element would cause the table's size to meet or exceed this load factor relative to its allocated capacity. If so, it triggers a rehash before inserting the new element.
This helps maintain more empty slots in the hash table, improving the average-case performance of linear probing and reducing the likelihood of worst-case scenarios. The existing initial allocation size and doubling strategy for rehashing are retained.
2025-05-24 22:50:29 +00:00
Yukihiro "Matz" Matsumoto
0c51a72bfe
string.c (popcount): support when sizeof(int) == 4
...
This function is used when the compiler does not support builtin
popcount operation (namely VC++).
2025-05-23 23:10:45 +09:00
Yukihiro "Matz" Matsumoto
ca526044d3
vm.c (stack_init): clear initial stack
2025-05-23 23:09:53 +09:00
Yukihiro "Matz" Matsumoto
86ef7a912d
mruby-rational (int_lshift): check before actual left bit shift
2025-05-21 13:25:08 +09:00
Yukihiro "Matz" Matsumoto
f4b01ed19e
mruby-rational (int_lshift): exponential may be bigger than int bits
2025-05-21 10:40:02 +09:00
Yukihiro "Matz" Matsumoto
1fa9eaa2b5
mruby-eval (binding_eval_error_check): re-raise Exception in parsing
2025-05-21 10:25:35 +09:00
Yukihiro "Matz" Matsumoto
77d08772a5
error.c (mrb_vformat): prevent SEGV from %s with NULL
2025-05-21 09:52:10 +09:00
Yukihiro "Matz" Matsumoto
1726b61481
mruby-compiler (gen_move): avoid unnecessary goto's
2025-05-20 18:31:51 +09:00
Yukihiro "Matz" Matsumoto
d329d9af79
mruby-compiler (gen_move): avoid optimization of ADDI/SUBI
...
ADDI/SUBI may fall back to method call that may clear block argument
place holder, which may be a live register. So we cannot directly call
ADDI/SUBI over local variables.
2025-05-20 18:31:21 +09:00
Yukihiro "Matz" Matsumoto
d08276a052
codedump.c: remove unnecessary tab character from OP_MOVE
2025-05-19 23:36:16 +09:00
Yukihiro "Matz" Matsumoto
82d03b32f2
codedump.c: skip string body if it's empty
2025-05-19 23:34:02 +09:00
Yukihiro "Matz" Matsumoto
f9414456a5
codedump.c: output format for OP_ARRAY has changed
2025-05-19 23:09:03 +09:00
Yukihiro "Matz" Matsumoto
1d426c50bf
range.c (range_num_to_a): C++ compiler eagerly warns goto statement
2025-05-19 19:41:01 +09:00
Yukihiro "Matz" Matsumoto
94d9f6cfc7
range.c (range_num_to_a): support big integer beg/end in ranges
2025-05-19 17:36:54 +09:00
Yukihiro "Matz" Matsumoto
ff4109735f
range.c (range_num_to_a): improved float support
2025-05-19 17:36:45 +09:00
Yukihiro "Matz" Matsumoto
18c43c2a5a
mruby-io: provide Kernel#p in this gem
...
To prevent ordering instability when output from mruby-io and Kernel#p
mixed.
2025-05-19 13:31:01 +09:00
Yukihiro "Matz" Matsumoto
65247613b9
Merge pull request #6530 from dearblue/visibility
2025-05-19 08:11:18 +09:00
Yukihiro "Matz" Matsumoto
31ebcb349e
mruby-compiler: add y.tab.c in the repository again; close #6515
...
Since we have introduced lrama, everyone can generate same `y.tab.c`
on any platform, without installing Bison. That was the reason we have
removed `y.tab.c` from the repository. But this change cause #6515 and
bothered out-of-tree builds. So we (reluctantly) added `y.tab.c` again.
2025-05-19 08:00:37 +09:00
Yukihiro "Matz" Matsumoto
c356e8f2ff
.gitignore: no longer ignore y.tab.c; ref #6515
2025-05-19 08:00:36 +09:00
Yukihiro "Matz" Matsumoto
96cbde7988
mruby-compiler: remove mrb_free dependency from codegen.c
2025-05-19 08:00:36 +09:00
Yukihiro "Matz" Matsumoto
bb712f9467
mruby-compiler: remove mrb_calloc dependency from parse.y
2025-05-19 08:00:36 +09:00
Yukihiro "Matz" Matsumoto
9fc58852e3
mruby-compiler: removed mrb_state dependency from two functions
...
- mrb_ccontext_partial_hook
- mrb_ccontext_cleanup_local_variables
2025-05-19 08:00:36 +09:00
Yukihiro "Matz" Matsumoto
fa19d7d3b5
stdlib.gembox: add mruby-catch to the gembox
2025-05-19 08:00:36 +09:00
dearblue
36df859333
Revert "class.c (find_visibility_scope): when callinfo returns, *ep == NULL; #6512 "
...
This reverts commit 3879b95a62 .
This is because the code first reported in #6494 no longer works.
2025-05-18 18:52:32 +09:00
dearblue
4417321d1c
Add more test code for method visibility
...
This test corresponds to the first issue of #6494 .
Complement to #6512 .
2025-05-18 18:50:02 +09:00
Yukihiro "Matz" Matsumoto
b952ca30cd
Merge pull request #6529 from mruby/dependabot/github_actions/super-linter/super-linter-7.4.0
2025-05-15 05:46:57 +09:00
dependabot[bot]
ef840eced0
build(deps): bump super-linter/super-linter from 7.3.0 to 7.4.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v7.3.0...v7.4.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-version: 7.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-14 14:19:47 +00:00
Yukihiro "Matz" Matsumoto
923b1c9e37
stdlib.gembox: add mruby-enum-chain gem
2025-05-14 15:58:24 +09:00
Yukihiro "Matz" Matsumoto
9e6ddbb2ad
metaprog.gembox: add two binding gems
...
- mruby-binding
- mruby-proc-binding
2025-05-14 15:58:24 +09:00
Yukihiro "Matz" Matsumoto
d414e3f912
math.gembox: exclude mruby-cmath from math gembox
2025-05-14 15:58:23 +09:00
Yukihiro "Matz" Matsumoto
34bd571a65
Merge pull request #6528 from jbampton/fix-grammar-spelling
2025-05-14 15:58:05 +09:00
Yukihiro "Matz" Matsumoto
1fcaa3995e
Merge pull request #6418 from jbampton/add-ls-lint
2025-05-14 15:55:33 +09:00
John Bampton
781edbd446
misc: fix spelling
2025-05-14 02:01:02 +10:00
John Bampton
4f2f2cfd20
Add ls-lint with GitHub Actions
...
Rename files in the `mrbgems` directory
2025-05-14 01:14:02 +10:00
Yukihiro "Matz" Matsumoto
93a7e5ec26
Merge pull request #6526 from vickash/luckfox-pico
2025-05-13 16:46:23 +09:00
Yukihiro "Matz" Matsumoto
75466f9aab
mruby-compiler: use mrb_basic_alloc_func() directly from compiler
...
As a side effect, memory allocation failure may cause segmentation
fault. Maybe we have to add error detection later.
2025-05-13 13:20:06 +09:00
Yukihiro "Matz" Matsumoto
9ef2f551b7
mruby-compiler: use new mempool API
2025-05-13 08:13:48 +09: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
ebca0cbf6a
Merge pull request #6525 from hasse09052/skip-empty-mirb-history
2025-05-12 12:59:28 +09:00
Yukihiro "Matz" Matsumoto
c2d5a402ba
compile.h: change struct mrb_mempool to mrb_mempool
...
So that compatibility layer can be used without macro definition.
2025-05-12 12:30:15 +09:00
vickash
6700c327ac
Luckfox Pico config: Use realpath, comment flags and cmath exclusion
2025-05-11 23:25:32 -04:00
vickash
f98a05c738
Add build config for Luckfox Pico embedded SBC
2025-05-11 22:35:05 -04: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
4704a7700a
Merge pull request #6521 from jbampton/add-codespell-config
2025-05-11 20:09:25 +09:00
hasse
6df8096af2
mruby-bin-mirb: skip adding empty input to mirb history
2025-05-11 02:44:04 +09:00
Yukihiro "Matz" Matsumoto
c6e3ae7e74
doc/guides/memory.md: update the document
...
- new API
- detailed hook description
- migration path from old API
2025-05-10 09:34:20 +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
John Bampton
f515669ce3
Add codespell config file .codespellrc
...
Add `.codespellrc` to the GitHub labeler
Can now run codespell from the command line standalone and it will use
our standard config file. Running codespell with pre-commit will also use this config.
Useful when regenerating the ignored words file on the command line.
https://github.com/codespell-project/codespell?tab=readme-ov-file#using-a-config-file
https://github.com/codespell-project/codespell?tab=readme-ov-file#pre-commit-hook
2025-05-09 20:54:27 +10: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
3d2f848e64
mruby-random: Random#rand(nil) should raise TypeError
2025-05-08 17:37:05 +09:00
Yukihiro "Matz" Matsumoto
88e86ee62e
mruby-random: update error messages to be compatible with CRuby; #6523
2025-05-08 16:42:33 +09:00
Yukihiro "Matz" Matsumoto
21d6bfb6dd
test/kernel.rb: disable some Kernel#p tests; ref #6524
2025-05-08 16:21:01 +09:00
Yukihiro "Matz" Matsumoto
37b84f40e0
Merge pull request #6523 from leviongit/rand-range
2025-05-08 16:06:02 +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
147af9d669
Merge pull request #6522 from jbampton/label-more-files
2025-05-08 15:59:47 +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
c9a36e5d39
mruby/value.h: rename flag check macros; ref #6512
2025-05-08 07:27:30 +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
ef0cbc2981
mruby-eval (exec_irep): cache mrb->c->ci to a local variable
2025-05-07 23:30:41 +09:00
Yukihiro "Matz" Matsumoto
567617ceb5
Merge branch 'dearblue-visibility'
2025-05-07 15:37:37 +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
81f5f5b8d4
mruby-bin-debugger: should not use Exception#inspect to print errors
...
Use mrb_exc_get_output() instead.
2025-05-07 12:34:13 +09:00
Yukihiro "Matz" Matsumoto
c36d9b7732
mruby-bin-mirb: should not use Exception#inspect to print errors
...
Use mrb_exc_get_output() instead.
2025-05-07 12:32:12 +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
85d048c1fb
mruby-error: update tests for new Exception#inspect format
2025-05-07 12:19:05 +09:00
Yukihiro "Matz" Matsumoto
a87b4b6bc3
test/exception.rb: update for new Exception#inspect
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
Yukihiro "Matz" Matsumoto
0da5e0e190
AUTHORS: update entries [ci skip]
2025-05-07 12:19:04 +09:00
Yukihiro "Matz" Matsumoto
abfef2c38d
Merge pull request #6520 from jbampton/update-pre-commit
2025-05-04 23:19:54 +09:00
leviongit
7be940942c
random.c : treat ranges where r.begin > r.end the same way cruby does
2025-05-04 04:10:39 +02:00
leviongit
98906d5ac9
random.c : fix Random#rand not returning value
2025-05-04 03:48:22 +02: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
leviongit
202c213fe1
random.c : add some tests
2025-05-04 02:44:19 +02:00
leviongit
4390aeb78d
random.c : add rand(Range)
2025-05-04 02:44:19 +02:00
Yukihiro "Matz" Matsumoto
0723e10dcd
Merge pull request #6519 from jbampton/update-prettier-ignore
2025-05-03 14:42:24 +09:00
John Bampton
757c0472d0
gha: label more files
2025-05-03 04:47:04 +10:00
John Bampton
ddae958405
pre-commit: autoupdate and update node LTS version
...
https://nodejs.org/en
https://pre-commit.com/#pre-commit-autoupdate
2025-05-03 02:00:44 +10:00
John Bampton
7a3eebc1d5
Add tools/lrama to .prettierignore
...
Prettier uses an ignore file to exclude files from formatting when
running with pre-commit and also when running standalone from the command line.
This is detailed on the CLI docs page:
https://prettier.io/docs/cli
2025-05-03 01:42:36 +10: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
1b39c7d7da
mruby-compiler (codegen): private backquote should be called; fix #6516
2025-04-28 10:40:05 +09:00
Yukihiro "Matz" Matsumoto
e9d20a1590
doc/limitations.md: document double dispatch removal
...
We have removed `append_features`/`prepend_features`/`extend_object`.
It is incompatible with CRuby, but simpler.
2025-04-28 10:30:01 +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
6e1538ce3a
Merge pull request #6518 from HirohitoHigashi/master
2025-04-25 15:51:36 +09:00
Yukihiro "Matz" Matsumoto
279855985f
Merge pull request #6517 from jbampton/remove-unneeded-semicolon
2025-04-25 15:46:14 +09:00
HirohitoHigashi
586ff7a694
Change mrbc_args.flags bit width from 2 to 3.
2025-04-25 12:05:01 +09:00
John Bampton
fe201dc72f
core/codegen.c: remove unneeded duplicate semicolon
2025-04-25 05:10:24 +10:00
Yukihiro "Matz" Matsumoto
9c6349c769
Merge pull request #6513 from mruby/stable
2025-04-21 13:57:27 +09:00
Hiroshi Mimaki
d4097716b3
NEWS: remove wrong spelling from the pull-request description
2025-04-21 10:24:03 +09:00
mimaki
99f5668243
Merge branch 'master' into stable
2025-04-20 13:25:22 +09:00
mimaki
a309524d0b
Update version and release date. (mruby 3.4.0 (2025-04-20))
2025-04-20 13:08:22 +09:00
Yukihiro "Matz" Matsumoto
baea6e284e
mruby-bigint (mpz_bits): use lzb()
2025-04-17 08:11:27 +09:00
Yukihiro "Matz" Matsumoto
061521ead5
mruby-bigint (mpz_bits): renamed from mpz_bit_length()
2025-04-17 08:10:34 +09:00
Yukihiro "Matz" Matsumoto
16198dc985
mruby-numeric-ext (int_sqrt): translate Japanese comment (oops)
2025-04-17 01:43:03 +09:00
Yukihiro "Matz" Matsumoto
e42523fcf4
mruby-numeric-ext: add test for Integer.sqrt()
2025-04-16 23:30:23 +09:00
Yukihiro "Matz" Matsumoto
ddfe65763e
mruby-numeric-ext (int_sqrt): support bigint
2025-04-16 23:08:23 +09:00
Yukihiro "Matz" Matsumoto
dee661913f
mruby-numeric-ext (int_sqrt): Integer.sqrt implemented
...
This is the first version. It should support bigint eventually.
2025-04-16 22:37:06 +09:00
Yukihiro "Matz" Matsumoto
9a0f96e617
pre-commit autoupdate
2025-04-16 22:34:27 +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
9cc6d39956
test/module.rb: add test for #6506
2025-04-14 22:09:35 +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
95f9de4877
mruby-metaprog (mrb_mod_s_constants): Module.constants implemented
...
The method returns the list of all constants accessible from the point
of call.
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
cda551ce25
mruby-metaprog (mrb_mod_s_constants): call Module#constants if possible
...
When the optional argument is given or the receiver is not `Module`.
2025-04-14 22:09:34 +09:00
Yukihiro "Matz" Matsumoto
82522a2e71
mruby-bigint (mrb_bint_to_s): add check for MRB_32BIT and MRB_INT64
2025-04-14 22:09:33 +09:00
Yukihiro "Matz" Matsumoto
29964b3ba7
mruby-io (mrb_file_size): add check for MRB_32BIT and MRB_INT64
2025-04-14 22:09:33 +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
Yukihiro "Matz" Matsumoto
52de3b7e10
Merge pull request #6511 from dearblue/precommit
...
Exclude the external project "lrama" from pre-commit
2025-04-08 23:44:31 +09:00
dearblue
40095bf755
Exclude the external project "lrama" from pre-commit
2025-04-08 22:11:32 +09:00
Yukihiro "Matz" Matsumoto
46aa35a117
Merge pull request #6510 from dearblue/visibility
...
Fixed class method visibility via `module_function`
2025-04-08 17:18:19 +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
Yukihiro "Matz" Matsumoto
1fdd961041
mruby-compiler (scope_new): need to initialize nregs; fix #6509
...
`nregs` should not be smaller than `nlocals`.
2025-04-07 11:35:19 +09:00
Yukihiro "Matz" Matsumoto
8c2ea232ea
Revert "mruby-enum-ext (cycle): need to splat block parameters; #6508 "
...
This reverts commit 6c4b799b42 .
2025-04-07 08:23:52 +09:00
Yukihiro "Matz" Matsumoto
6c4b799b42
mruby-enum-ext (cycle): need to splat block parameters; #6508
2025-04-06 22:05:57 +09:00
Yukihiro "Matz" Matsumoto
96855d31b5
mruby-enum-ext (sum): need to honor index; fix #6508
2025-04-06 22:04:56 +09:00
Yukihiro "Matz" Matsumoto
dd68681002
mruby-enum-ext: tally should respect multi-values; fix #6507
2025-04-05 22:12:51 +09:00
Yukihiro "Matz" Matsumoto
cb8cd9388c
mruby-enum-ext: filter_map should not ignore index; fix #6504
2025-04-05 21:44:49 +09:00
Yukihiro "Matz" Matsumoto
9750513c25
mruby-bigint (mpz_get_str): add type cast to stop warning
2025-04-04 23:55:44 +09:00
Yukihiro "Matz" Matsumoto
bf36ba9d10
Merge pull request #6505 from jbampton/fix-spelling
...
mrbgems: fix spelling
2025-04-04 17:33:32 +09:00
John Bampton
b1d910f6f4
mrbgems: fix spelling
2025-04-04 15:05:13 +10:00
Yukihiro "Matz" Matsumoto
76f7678db2
AUTHORS: update entries [ci skip]
2025-04-04 07:56:52 +09:00
Yukihiro "Matz" Matsumoto
07d7aa6fdb
mruby-pack: fix int and mrb_int mixture
2025-04-02 16:45:11 +09:00
Yukihiro "Matz" Matsumoto
b88680ee9e
mruby-pack (pack_unpack): use mrb_bool instead of int
2025-04-02 16:44:06 +09:00
Yukihiro "Matz" Matsumoto
3684a27209
tools/lrama: update to lrama 0.7.0; close #6384
2025-04-02 00:16:23 +09:00
Yukihiro "Matz" Matsumoto
5c2c77c71c
mruby-string (str_succ_bang): fixed sample string; close #6500
...
To avoid spellcheck failure in pre-commit.
2025-04-01 11:00:25 +09:00
Yukihiro "Matz" Matsumoto
4af6fe87c4
doc/mruby3.4.md: remove wrong spelling from the pull-request description
2025-03-31 21:42:01 +09:00
Yukihiro "Matz" Matsumoto
9405702e02
Merge pull request #6503 from jbampton/misc-typo-fixes
...
misc: fix typos
2025-03-31 16:16:55 +09:00
Yukihiro "Matz" Matsumoto
206eccb828
boxing_word.h: allow 4 byte alignment of object pointers
...
Only if MRB_WORDBOX_NO_FLOAT_TRUNCATE or MRB_NO_FLOAT is defined.
2025-03-30 23:23:02 +09:00
John Bampton
b56f984c25
misc: fix typos
2025-03-30 14:04:34 +10:00
Yukihiro "Matz" Matsumoto
39fbc96eaf
Merge pull request #6502 from jbampton/patch-2
...
pre-commit: update prettier to the latest version
2025-03-29 19:02:42 +09:00
John Bampton
14f2e6db5a
pre-commit: update prettier to the latest version
...
https://www.npmjs.com/package/prettier
2025-03-29 16:31:58 +10:00
Yukihiro "Matz" Matsumoto
a317b744f4
Merge pull request #6501 from jbampton/patch-2
...
Update pre-commit Node.js version to `v22.14.0 LTS`
2025-03-29 14:09:15 +09:00
John Bampton
14de644234
Update pre-commit Node.js version to v22.14.0 LTS
2025-03-29 07:32:47 +10:00
Yukihiro "Matz" Matsumoto
6a3e5b87f8
Merge pull request #6497 from jbampton/patch-2
...
gha: update `build.yml` try `windows-2025` image
2025-03-28 12:40:40 +09:00
Yukihiro "Matz" Matsumoto
a9353c4f73
Merge pull request #6498 from jbampton/pre-commit-clean-up
...
Clean up and standardize the pre-commit config
2025-03-28 09:02:57 +09:00
Yukihiro "Matz" Matsumoto
2ce0606f14
guides/symbol.md: 'punctuation' is uncountable; close #6488
...
Issue #6488 is addressed by fixing spelling.
2025-03-28 08:22:53 +09:00
John Bampton
c1a0a6193b
pre-commit autoupdate
2025-03-28 08:04:21 +10:00
John Bampton
1ae4f94844
Clean up and standardize the pre-commit config
2025-03-28 07:39:59 +10:00
Yukihiro "Matz" Matsumoto
7538ee8f5d
gperf: remove obsolete command line options -p and -g
2025-03-28 06:16:00 +09:00
John Bampton
68a0ecc782
gha: update build.yml try windows-2025 image
...
https://github.com/actions/runner-images?tab=readme-ov-file#available-images
https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md
2025-03-28 04:24:32 +10:00
Yukihiro "Matz" Matsumoto
0090e2cd01
github/workflows/coverage.yml: measure coverage on push only
2025-03-26 16:22:37 +09: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
d908daa8b9
mruby-rational (rational_hash): hash value is uint32_t
2025-03-25 08:10:49 +09:00
Yukihiro "Matz" Matsumoto
b446b0d547
mruby-compiler: add type cast to silence warning
2025-03-25 08:10:04 +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
4ca61298ac
mruby-sprintf: add type cast to silence warning
2025-03-25 08:08:26 +09:00
Yukihiro "Matz" Matsumoto
7e18b1dadb
mruby-fiber/fibertest.c: use ptrdiff_t for pointer difference
2025-03-24 22:31:27 +09:00
Yukihiro "Matz" Matsumoto
b8351d6191
mruby-io/file.c: use ptrdiff_t for pointer difference
2025-03-24 22:30:53 +09:00
Yukihiro "Matz" Matsumoto
dd2950211c
mruby-io/mruby_io_test.c: use -1 for length (means strlen(s))
2025-03-24 15:19:54 +09:00
Yukihiro "Matz" Matsumoto
4aae7be949
mruby-io (path_gethome): move local variable declarations
2025-03-24 14:03:13 +09:00
Yukihiro "Matz" Matsumoto
a33426da15
mruby-io (mrb_file_s_chmod): check string type before casting
2025-03-23 20:04:25 +09:00
Yukihiro "Matz" Matsumoto
11f6251d23
mruby-io (mrb_file_basename): fixed a silly mistake
2025-03-22 13:01:38 +09:00
Yukihiro "Matz" Matsumoto
cde0b7edeb
Merge pull request #6495 from dearblue/cleanup
...
Remove `MRB_ENDIAN_LOHI()` that is no longer in use
2025-03-22 11:15:36 +09:00
Yukihiro "Matz" Matsumoto
aa06aff50d
mruby-io/file.c: use mrb_sys_fail instead of mrb_raise (w/ errno info)
2025-03-22 11:02:05 +09:00
dearblue
4e7399d4f4
Remove MRB_ENDIAN_LOHI() that is no longer in use
2025-03-21 21:56:42 +09:00
Yukihiro "Matz" Matsumoto
f3b79fcc23
mruby-io (mrb_file_s_readlink): increase buffer size linearly
2025-03-21 19:34:05 +09:00
Yukihiro "Matz" Matsumoto
ca693dec30
mruby-io (mrb_file_s_readlink): when rc == bufsize, rc never be -1
2025-03-21 19:31:12 +09:00
Yukihiro "Matz" Matsumoto
9e315af2a5
mruby-io (mrb_file_basename): fixed wrong strncmp usage
2025-03-21 10:37:05 +09:00
Yukihiro "Matz" Matsumoto
90d4805f5b
mruby-io (mrb_file_realpath): use mrb_str_cat instead of mrb_str_append
2025-03-20 22:04:49 +09:00
Yukihiro "Matz" Matsumoto
5bc391e170
mruby-io (mrb_file_basename): use mrb_str_cat() instead of snprintf(3)
2025-03-20 22:03:30 +09:00
Yukihiro "Matz" Matsumoto
ed00879923
Merge pull request #6493 from hasumikin/patch-1
...
Fix TYPO in memory.md
2025-03-20 14:42:56 +09:00
Yukihiro "Matz" Matsumoto
dbafada7be
mruby-io (mrb_file_basename): use "z" specifier for mrb_get_args()
2025-03-20 13:39:38 +09:00
HASUMI Hitoshi
1ec84a2874
Fix TYPO in memory.md
...
No `alloc.c` in the source tree. It'd be `allocf.c`
2025-03-20 10:15:20 +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
Yukihiro "Matz" Matsumoto
c0024e1077
Merge pull request #6492 from jethrodaniel/fix-typo
...
fix a typo, update specs
2025-03-18 10:40:00 +09:00
Mark Delk
6396aac434
fix a typo, update specs
2025-03-17 10:47:33 -05:00
mimaki
2a435caf79
Update version to 3.4.0RC2.
2025-03-17 16:31:36 +09:00
mimaki
8b65a296db
Merge branch 'master' into stable
2025-03-17 15:52:25 +09:00
Yukihiro "Matz" Matsumoto
468c6f1901
doc/mruby3.4.md: add #6491 to the release note
2025-03-17 09:21:36 +09:00
Yukihiro "Matz" Matsumoto
d1909320d9
mruby-compiler: fixed a bug in string literal merge; fix #6491
2025-03-17 09:17:38 +09:00
Yukihiro "Matz" Matsumoto
a6848ca2cb
pre-commit autoupdate
2025-03-15 16:34:18 +09:00
Yukihiro "Matz" Matsumoto
eb455c19fe
mruby-compiler: prohibit singleton methods for literals
...
We have checked `def (literal).m` style but not `def literal.m` style.
In addition, `NODE_INT` check is newly added.
2025-03-14 23:28:42 +09:00
Yukihiro "Matz" Matsumoto
8472fe0f13
doc/limitation.md: remove visibility note
...
We have implemented visibility in mruby 3.4
2025-03-13 22:46:23 +09:00
Yukihiro "Matz" Matsumoto
9c37098c15
Merge pull request #6490 from dearblue/string
...
Fixed `RSTR_SINGLE_BYTE_P()` return values to boolean
2025-03-13 10:57:49 +09:00
dearblue
609a5c23b2
Fixed RSTR_SINGLE_BYTE_P() return values to boolean
...
Incorrectly returned void type when `MRB_UTF8_STRING` definition is not present.
2025-03-12 22:01:37 +09:00
Yukihiro "Matz" Matsumoto
17d5aaa048
doc/mruby3.4.md: first draft of the mruby 3.4 release note
2025-03-12 14:51:58 +09:00
Yukihiro "Matz" Matsumoto
5bc00bf199
mruby-compiler: detect super without surrounding method; close #6271
2025-03-11 21:21:50 +09:00
Yukihiro "Matz" Matsumoto
1e6442f54e
Revert "class.c (include_module_at): narrow local variable scope"
...
C++ does not compile `goto` cross local variable declaration.
This reverts commit c618b44fee .
2025-03-10 19:33:49 +09:00
mimaki
a2841fd9a8
Update version to 3.4.0RC.
2025-03-10 14:42:59 +09:00
Yukihiro "Matz" Matsumoto
1e36d7662c
object.h: rename gccolor to clearer gc_color
2025-03-10 14:23:51 +09:00
Yukihiro "Matz" Matsumoto
92b18d6a44
gc.c: fix re-using to reusing
2025-03-10 14:23:21 +09:00
Yukihiro "Matz" Matsumoto
f4de205960
range.c (range_num_to_a): reduce integer to float conversion
...
For big numbers (especially integers close to MRB_INT_MAX), float
conversion may be lose precisions. So we try not to convert numbers, but
just compare.
2025-03-10 13:13:10 +09:00
Yukihiro "Matz" Matsumoto
76d3739a89
mruby-metaprog (mrb_obj_methods): should not retrieve obj->c directly
...
In some cases, `obj` may not be an object structure, but an immediate.
2025-03-10 11:40:48 +09:00
Yukihiro "Matz" Matsumoto
c618b44fee
class.c (include_module_at): narrow local variable scope
2025-03-10 11:26:13 +09:00
Yukihiro "Matz" Matsumoto
48f93adcdc
class.c (boot_defclass): unify variable declaration and initialization
2025-03-10 11:25:34 +09:00
Yukihiro "Matz" Matsumoto
32200f1eb9
build_config/no-float.rb: test build for MRB_NO_FLOAT
...
mruby allows to disable floating point numbers. We have add a build
configuration to test mruby build without floating point numbers.
2025-03-09 17:14:46 +09:00
Yukihiro "Matz" Matsumoto
f2c8b43d42
mruby-test: stop unused local variable warning
2025-03-09 16:43:28 +09:00
Yukihiro "Matz" Matsumoto
4ba0cac481
numeric.c (coerce_step_counter): move local variable definition
...
To avoid unused local variable warning.
2025-03-09 16:42:28 +09:00
Yukihiro "Matz" Matsumoto
2b76967724
Merge pull request #6487 from esotericpig/master
...
Add Emscripten toolchain & build_config
2025-03-09 14:28:30 +09:00
Yukihiro "Matz" Matsumoto
9a226c28bc
hash.c: add arity check for Hash#default_proc (and Hash.new); fix #6484
2025-03-08 16:14:26 +09:00
Yukihiro "Matz" Matsumoto
a7f3cfb711
hash.c: allow 'default_proc=nil' to clear default_proc; ref #6483
2025-03-08 15:49:26 +09:00
Yukihiro "Matz" Matsumoto
837f62f18a
hash.c: should check type before setting default_proc; fix #6483
2025-03-08 12:34:25 +09:00
Yukihiro "Matz" Matsumoto
fbaedfeaad
test/hash.rb: remove Hash#freeze before Hash#rehash; ref #6485
2025-03-08 11:25:49 +09:00
Yukihiro "Matz" Matsumoto
87680d3ab2
hash.c (mrb_hash_rehash): call hash_modify before actual modify; fix #6485
2025-03-08 11:21:27 +09:00
Yukihiro "Matz" Matsumoto
213a262b20
hash.c (mrb_hash_compact): call hash_modify instead of mrb_check_frozen
...
Currently, hash_modify() only calls mrb_check_frozen, but we may add new
checks in the future; ref #6485
2025-03-08 11:15:37 +09:00
Yukihiro "Matz" Matsumoto
96113a2ed9
mruby-io: define File.absolute_path method; ref #6482
2025-03-08 11:12:12 +09:00
Yukihiro "Matz" Matsumoto
436269f62c
class.c: remove duplicated CI_TARGET_CLASS definition from class.c
2025-03-08 11:09:57 +09:00
Yukihiro "Matz" Matsumoto
3c4f6501b0
class.c (find_visibility_ci): inline find_ci_from_proc()
2025-03-08 07:54:51 +09:00
esotericpig
bfc9742848
Add Emscripten toolchain & build_config
2025-03-07 12:39:54 -10:00
Yukihiro "Matz" Matsumoto
07b986f710
symbol.c (sym_inline_unpack): should not mix signedness
2025-03-07 17:55:20 +09:00
Yukihiro "Matz" Matsumoto
ec7477fe0d
class.c: take visibility from outer scope
...
It is possible to update the visibility from within a block, so that
`find_visibility_ci()` should look up outer scopes.
2025-03-07 17:49:08 +09:00
Yukihiro "Matz" Matsumoto
67e85ed296
vm.c (mrb_object_exec): update ci's target class by update function
...
To avoid breaking a Proc with env set.
2025-03-07 17:17:50 +09:00
Yukihiro "Matz" Matsumoto
fb56fecf51
class.h: remove macros no longer used
2025-03-07 17:17:50 +09:00
Yukihiro "Matz" Matsumoto
889f09f8b7
class.c: move visibility flags from classes/modules to callinfo
2025-03-07 17:17:50 +09:00
Yukihiro "Matz" Matsumoto
02bf7fe08e
symbol.c (sym_inline_pack): max inline symbol length is now 4
2025-03-07 17:17:50 +09:00
Yukihiro "Matz" Matsumoto
6e1ab49ed3
class.c: allow changing visibility of methods defined in superclasses
2025-03-07 17:17:49 +09:00
Yukihiro "Matz" Matsumoto
2309fa0353
AUTHORS: update entries [ci skip]
2025-03-07 17:17:49 +09:00
Yukihiro "Matz" Matsumoto
37fb59bdac
class.h: rename macros for clarity
...
- MRB_SET_VISIBILITY -> MRB_CLASS_SET_VISIBILITY
- MRB_VISIBILITY -> MRB_CLASS_VISIBILITY
2025-03-07 17:17:49 +09:00
Yukihiro "Matz" Matsumoto
5e6ea6c5f9
vm.c: restore visibility when reopen class/module definition
...
Ideally, the default visibility should be stored in the scope. But for
the time being mruby stores the visibility in the class/module. As a
result, nesting class/module reopening or class_eval/module_eval could
cause incompatibility. We will try to fix them in the future.
2025-03-07 17:17:49 +09:00
Yukihiro "Matz" Matsumoto
2a876d2047
class.c: implement top-level public/private/protected in the core in C
2025-03-07 17:17:49 +09:00
Yukihiro "Matz" Matsumoto
43da490a1e
class.c: alias should keep the visibility of the original
2025-03-07 17:17:48 +09:00
Yukihiro "Matz" Matsumoto
18674c0237
test/module.rb: add visibility tests; ref #1835
2025-03-07 17:17:48 +09:00
Yukihiro "Matz" Matsumoto
384579fd21
test/module.rb: rename to pass the spell check
2025-03-07 17:17:48 +09:00
Yukihiro "Matz" Matsumoto
921d632615
class.c (mrb_mod_visibility): clear method cache
2025-03-07 17:17:48 +09:00
Yukihiro "Matz" Matsumoto
20d5330417
class.c: use MT_VMASK to mask the flag values
2025-03-07 17:17:48 +09:00
Yukihiro "Matz" Matsumoto
3f93254b02
mruby-metaprog: add actual test for Kernel#protected_methods
2025-03-07 17:17:47 +09:00
Yukihiro "Matz" Matsumoto
16db15d6fd
mruby-metaprog: add actual test for Kernel#private_methods
2025-03-07 17:17:47 +09:00
Yukihiro "Matz" Matsumoto
2db1ad9ce3
mruby-metaprog/test: avoid potential name crash by Foo class
2025-03-07 17:17:47 +09:00
Yukihiro "Matz" Matsumoto
6f2409adf3
Revert "proc.h: define visibility flags for RProc"
...
This reverts commit 7948373c7d2a019b0eed6ca6dfcb4d6e503b75d8.
2025-03-07 17:17:47 +09:00
Yukihiro "Matz" Matsumoto
b0db0bdd3a
vm.c: add checks for visibility (private, protected); close #1835
2025-03-07 17:17:47 +09:00
Yukihiro "Matz" Matsumoto
aba9a7d053
class.c: #initialize should be private by default
...
Fixed wrong condition.
2025-03-07 17:17:46 +09:00
Yukihiro "Matz" Matsumoto
1a026ba9aa
pre-commit: autoupdate
2025-03-07 17:17:46 +09:00
Yukihiro "Matz" Matsumoto
29cb270ef4
proc.h: define visibility flags for RProc
...
Visibility status should be store in Procs (that represent scopes), not
classes. Since classes can be reopened or can be accessed recursively.
2025-03-07 17:17:46 +09:00
Yukihiro "Matz" Matsumoto
c22f527bac
symbol.c (SYMBOL_INLINE_P): fix the check condition
...
Symbol `:_` would break the assertion.
2025-03-07 17:17:46 +09:00
Yukihiro "Matz" Matsumoto
6a61cd9373
kernel.c: make #respond_to_missing? private
2025-03-07 17:17:46 +09:00
Yukihiro "Matz" Matsumoto
52403abcf8
mruby-binding: make Kernel#binding private
2025-03-07 17:17:45 +09:00
Yukihiro "Matz" Matsumoto
e5e8dd11c0
mruby-rational: make Rational() private
2025-03-07 17:17:45 +09:00
Yukihiro "Matz" Matsumoto
2a991fb399
mruby-complex: make Complex() private
2025-03-07 17:17:45 +09:00
Yukihiro "Matz" Matsumoto
111fe4b3be
mruby-compiler: generate OP_SSEND from Complex and Rational literals
2025-03-07 17:17:45 +09:00
Yukihiro "Matz" Matsumoto
4a0e80601f
mruby-kernel-ext: make Kernel methods private
...
- fail
- caller
= __method__
- __callee__
- Integer
= Float
- String
- Array
- Hash
2025-03-07 17:17:45 +09:00
Yukihiro "Matz" Matsumoto
93e133548f
mruby-eval: make #eval private
2025-03-07 17:17:44 +09:00
Yukihiro "Matz" Matsumoto
d7a4275dd1
mruby-metaprog: make #global_variables, #local_variables private
2025-03-07 17:17:44 +09:00
Yukihiro "Matz" Matsumoto
95b30a38dc
kernel.rb: make Kernel#loop private
2025-03-07 17:17:44 +09:00
Yukihiro "Matz" Matsumoto
ff6149dea7
kernel.c: removed some Kernel singleton methods
...
Since virtually no one calls `Kernel.block_given?` but just
`block_given?`. For the cases `raise` is redefined (like Ruby/Tk),
`Kernel.raise` is kept.
2025-03-07 17:17:44 +09:00
Yukihiro "Matz" Matsumoto
3a56106d6c
mruby-proc-ext: make #proc private
2025-03-07 17:17:43 +09:00
Yukihiro "Matz" Matsumoto
efc03f60af
proc.c: make #lambda private
2025-03-07 17:17:43 +09:00
Yukihiro "Matz" Matsumoto
cc54865873
mruby-sleep: make #sleep (and #usleep) private
2025-03-07 17:17:43 +09:00
Yukihiro "Matz" Matsumoto
f7142cd327
mruby-random: make Kernel#srand and #rand private
2025-03-07 17:17:43 +09:00
Yukihiro "Matz" Matsumoto
4f5cad6444
mruby-catch: make #catch and #throw private
2025-03-07 17:17:43 +09:00
Yukihiro "Matz" Matsumoto
6bb629e957
mruby-exit: make exit methods private
2025-03-07 17:17:42 +09:00
Yukihiro "Matz" Matsumoto
6f97c842d2
mruby-io: use ... for argument forwarding
2025-03-07 17:17:42 +09:00
Yukihiro "Matz" Matsumoto
a736ddcbb7
mruby-io: make some methods private
...
- open
- print
- printf
- gets
2025-03-07 17:17:42 +09:00
Yukihiro "Matz" Matsumoto
37d3d34036
mruby-compiler: use OP_SSEND for backquote calls
2025-03-07 17:17:42 +09:00
Yukihiro "Matz" Matsumoto
cfc104e66c
class.c (mrb_define_module_function): make instance method private
2025-03-07 17:17:42 +09:00
Yukihiro "Matz" Matsumoto
d022a3ee68
mruby-eval/test: use #__send__ to call private #eval
2025-03-07 17:17:41 +09:00
Yukihiro "Matz" Matsumoto
23d5e04fdf
mruby-proc-ext/test: fix wrong usage of mrb_module_function()
2025-03-07 17:17:41 +09:00
Yukihiro "Matz" Matsumoto
541cdf35eb
00kernel.rb: use #__send__ to skip private check
2025-03-07 17:17:41 +09:00
Yukihiro "Matz" Matsumoto
798fd7dbdf
00class.rb: use #__send__ to skip private check
2025-03-07 17:17:41 +09:00
Yukihiro "Matz" Matsumoto
e8574b6298
mruby-struct/test: call #remove_const via #__send__
2025-03-07 17:17:41 +09:00
Yukihiro "Matz" Matsumoto
cce8f62b21
mruby-object-ext/test: call #remove_const via #__send__
2025-03-07 17:17:40 +09:00
Yukihiro "Matz" Matsumoto
4d547b6cbb
test/module.rb: call #remove_const via #__send__ to skip private check
2025-03-07 17:17:40 +09:00
Yukihiro "Matz" Matsumoto
e0cb99aad4
test/module.rb: call #extend_object via #__send__ to skip private check
2025-03-07 17:17:40 +09:00
Yukihiro "Matz" Matsumoto
8a409feaad
test/module.rb: call #prepend_features via #__send__ to skip private check
2025-03-07 17:17:40 +09:00
Yukihiro "Matz" Matsumoto
701a18deda
test/module.rb: call #append_features via #__send__ to skip private check
2025-03-07 17:17:40 +09:00
Yukihiro "Matz" Matsumoto
7653bdd05e
test/codegen.rb: call #remove_const via #__send__ to skip private check
2025-03-07 17:17:39 +09:00
Yukihiro "Matz" Matsumoto
f82cd188b0
test/exception.rb: call #initialize via #__send__ to skip private check
2025-03-07 17:17:39 +09:00
Yukihiro "Matz" Matsumoto
214ae5aad3
test/array.rb: call #initialize via #__send__ to skip private check
2025-03-07 17:17:39 +09:00
Yukihiro "Matz" Matsumoto
7981865e18
test/string.rb: call #initialize via #__send__ to skip private check
2025-03-07 17:17:39 +09:00
Yukihiro "Matz" Matsumoto
4122cee9e4
class.c: implement attr_accessor in C
2025-03-07 17:17:39 +09:00
Yukihiro "Matz" Matsumoto
27828de749
kernel.c: make some methods private
...
- block_given?
- initialize_copy
- iterator?
- p
- print
- raise
- respond_to_missing?
2025-03-07 17:17:38 +09:00
Yukihiro "Matz" Matsumoto
bfcc1e3c2c
mruby-io: puts should print nothing for empty arrays
2025-03-07 17:17:38 +09:00
Yukihiro "Matz" Matsumoto
7d2beb9fef
class.c (mrb_remove_method): should call hook method from the origin
...
MRB_CLASS_ORIGIN moves the pointer for prepended class/module, but the
hook method should be searched from the original class/module.
2025-03-07 17:17:38 +09:00
Yukihiro "Matz" Matsumoto
6168b15e0e
class.c (undef_method): call hook method when undef'ing a method
2025-03-07 17:17:38 +09:00
Yukihiro "Matz" Matsumoto
bcd0e0e439
class.c (mrb_remove_method): call hook method
...
Depending the context, hook method should be either method_removed or
singleton_method_removed.
2025-03-07 17:17:38 +09:00
Yukihiro "Matz" Matsumoto
457aaa173b
mruby-metaprog (mrb_mod_remove_method): stop calling method_removed()
...
The hook method should be called from mrb_remove_method().
2025-03-07 17:17:37 +09:00
Yukihiro "Matz" Matsumoto
0863c08841
class.c: implement singleton method hook methods
...
- singleton_method_removed
- singleton_method_undefined
2025-03-07 17:17:37 +09:00
Yukihiro "Matz" Matsumoto
9c74f6e908
class.c: implement method hook methods
...
- method_removed
- method_undefined
2025-03-07 17:17:37 +09:00
Yukihiro "Matz" Matsumoto
eb8b4120d7
class.c: initialize method needs to be private by default
2025-03-07 17:17:37 +09:00
Yukihiro "Matz" Matsumoto
4ea5510937
mruby-compiler (merge_op_string): fix #6477
...
If two merging strings are the same and registered at the bottom of the
pool, we should not remove the slot from the pool.
2025-03-07 17:17:37 +09:00
Yukihiro "Matz" Matsumoto
e660e28a39
class.c: make some Module methods private
...
- append_features
- extend_object
- extended
- included
- initialize
- method_added
- module_function
- prepend_features
- prepended
- private
- protected
- public
- remove_const
2025-03-07 17:17:36 +09:00
Yukihiro "Matz" Matsumoto
f5150ab98a
class.c: make some Class methods private
...
- initialize
- inherited
2025-03-07 17:17:36 +09:00
Yukihiro "Matz" Matsumoto
c5e270e8f3
class.c: make some BasicObject methods private
...
- initialize
- singleton_method_added
- method_missing
2025-03-07 17:17:36 +09:00
Yukihiro "Matz" Matsumoto
ca20017ac9
class.c: implement mrb_define_private_method()
2025-03-07 17:17:36 +09:00
Yukihiro "Matz" Matsumoto
71c0de7f08
class.c (mrb_define_method_raw): take visibility from the class
...
If not explicitly specified in the method struct.
2025-03-07 17:17:36 +09:00
Yukihiro "Matz" Matsumoto
1ab8e4d27d
mruby-toplevel-ext: make Main#include private
2025-03-07 17:17:35 +09:00
Yukihiro "Matz" Matsumoto
7f12e6648f
AUTHORS: update entries [ci skip]
2025-03-07 17:17:35 +09:00
Yukihiro "Matz" Matsumoto
1e4a3f3e5c
mruby-toplevel-ext: implement toplevel public/private/protected
2025-03-07 17:17:35 +09:00
Yukihiro "Matz" Matsumoto
235c1484d0
mruby-toplevel-ext: Directly include features to Object class
2025-03-07 17:17:35 +09:00
Yukihiro "Matz" Matsumoto
9e3e7b2cfe
mruby-metaprog: add 3 new methods to retrieve instance method names
...
- public_instance_methods
- private_instance_methods
- protected_instance_methods
2025-03-07 17:17:34 +09:00
Yukihiro "Matz" Matsumoto
9229da10e4
mruby-metaprog: implement method list from a class (or an instance)
2025-03-07 17:17:34 +09:00
Yukihiro "Matz" Matsumoto
a282f8bf2a
mruby-metaprog: remove unnecessary enum
2025-03-07 17:17:34 +09:00
Yukihiro "Matz" Matsumoto
fdf71d8f2d
class.c: first step to private methods; #1835
...
Now each method entry holds visibility information in flag bits.
2025-03-07 17:17:34 +09:00
Yukihiro "Matz" Matsumoto
3a3e877ae5
codedump.c: update OP_DEF output
...
OP_DEF takes R(a) as a class to define a method, sym(b) as a method
name, and R(a+1) as a method body. So we added `(R(a+1))` in the output.
2025-03-07 17:17:34 +09:00
Yukihiro "Matz" Matsumoto
6442a012c8
symbol.c (SYMBOL_INLINE_P): inline symbol to occupy 26 bits in mrb_sym
...
It used to occupy 30 bits, but we need 2 more bits to keep method
visibility in the method tables.
2025-03-07 17:17:33 +09:00
Yukihiro "Matz" Matsumoto
3e6abfd21c
symbol.c (sym_inline_pack): set pack_length_max to 4
2025-03-07 17:17:33 +09:00
Yukihiro "Matz" Matsumoto
fc16f9dd13
Merge pull request #6482 from dearblue/absolute_path
...
Add `File.absolute_path?` method
2025-03-07 17:16:20 +09:00
dearblue
c796729fa8
Add File.absolute_path? method
2025-03-05 22:23:49 +09:00
Yukihiro "Matz" Matsumoto
8f69fbbaf8
Merge pull request #6480 from mruby/dependabot/github_actions/super-linter/super-linter-7.3.0
2025-02-28 12:24:20 +09:00
dependabot[bot]
1d76e9f4f4
build(deps): bump super-linter/super-linter from 7.2.1 to 7.3.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 7.2.1 to 7.3.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v7.2.1...v7.3.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-27 14:28:50 +00:00
Yukihiro "Matz" Matsumoto
0e1a77e7d7
Merge pull request #6479 from dearblue/expand_path
2025-02-27 10:36:32 +09:00
Yukihiro "Matz" Matsumoto
30b0b41fb1
Merge pull request #6478 from dearblue/chars2bytes
2025-02-27 10:32:55 +09:00
dearblue
f77ebfe102
Reimplementation of File.expand_path method
...
The reason for this is to fix the following problems
- Even on non-Windows, drive letter recognition was still being handled.
- On Windows, paths starting with a slash were not expanded correctly.
- On Windows, relative paths containing drive letters behaved differently than in CRuby.
Due to reimplementation, the internal methods `File._concat_path`, `File._gethome` and `File._getwd` methods have been removed.
2025-02-26 21:55:25 +09:00
dearblue
437065997f
Redefine some macros in mruby-io
...
To improve uniformity of names and definition locations.
2025-02-26 21:55:17 +09:00
dearblue
76fc6e9ace
Fixed buffer overrun in function chars2bytes()
...
If `off` was greater than zero, the address pointed to by `e` exceeded the valid range of the buffer.
2025-02-26 21:22:37 +09:00
Yukihiro "Matz" Matsumoto
66606f71dd
Merge pull request #6474 from dearblue/kwerr
2025-02-03 11:54:52 +09:00
Yukihiro "Matz" Matsumoto
623e953193
Merge pull request #6473 from dearblue/bigint
2025-02-03 08:28:54 +09:00
Yukihiro "Matz" Matsumoto
8c1915ec3b
Merge pull request #6475 from dearblue/buildconf
2025-02-02 21:24:32 +09:00
dearblue
d946c3e264
Don't include deleted mruby-print
2025-02-02 21:13:11 +09:00
dearblue
b86c220384
Avoid array object creation with “unknown keyword” error
...
It is sufficient to return the first element.
2025-02-02 21:02:03 +09:00
dearblue
3b1e3d930f
Hide mpz_and() symbol
2025-02-02 16:59:28 +09:00
Yukihiro "Matz" Matsumoto
49396024b7
Merge pull request #6472 from dearblue/rational
2025-01-27 12:37:53 +09:00
Yukihiro "Matz" Matsumoto
cb3b94346e
mruby-complier (gen_call): remove duplicate MRB_OPSYM_2(); #6471
2025-01-27 12:36:14 +09:00
Yukihiro "Matz" Matsumoto
69024d9a36
mruby-compiler (gen_call): operator optimization with self; close #6471
...
If the left operand is `self`, the previous (reverted) change disabled
optimization with operators. This is sort of a hack, but it works.
2025-01-26 23:14:19 +09:00
dearblue
12e90896a5
Moved tests for Integer#quo
...
The `Rational` class is never defined during core testing.
2025-01-26 21:11:21 +09:00
Yukihiro "Matz" Matsumoto
acddb3945b
mruby-compiler (gen_call): adjust spacing
2025-01-26 20:08:01 +09:00
Yukihiro "Matz" Matsumoto
6731d59f06
Revert "mruby-compiler (gen_call): use OP_SSEND for self.foo() calls"
...
This reverts commit 583aa985c8f3117a833a38f0d27753a090503f17; #6471
2025-01-26 19:52:01 +09:00
Yukihiro "Matz" Matsumoto
171847a99a
build_config/playstationportable.rb: remove obsolete mruby-print gem
2025-01-23 22:02:24 +09:00
Yukihiro "Matz" Matsumoto
37cff2ceea
Merge pull request #6469 from dearblue/const-proc
2025-01-23 22:01:57 +09:00
Yukihiro "Matz" Matsumoto
9bab92e060
.git-blame-ignore-revs: ignore indentation fix commit; ref #6470
2025-01-22 14:10:30 +09:00
Yukihiro "Matz" Matsumoto
f311a53995
Merge pull request #6470 from dearblue/psp
2025-01-22 13:58:18 +09:00
Yukihiro "Matz" Matsumoto
91a7bc53a6
.pre-commit-config.yml: pre-commit autoupdate
2025-01-21 13:07:44 +09:00
Yukihiro "Matz" Matsumoto
5ed4a772f3
array.c (mrb_ary_unshift_m): defer mrb_get_argv call
2025-01-21 13:07:44 +09:00
Yukihiro "Matz" Matsumoto
3b6325ba3c
hash.c (mrb_hash_aset): use pre-assigned local variable
2025-01-21 13:07:44 +09:00
Yukihiro "Matz" Matsumoto
4ebe706496
Merge pull request #6468 from dearblue/hash
2025-01-21 10:29:47 +09:00
dearblue
90ab714fda
Adjusting indentation
2025-01-20 22:51:36 +09:00
dearblue
a981f5aed7
Add more const qualifier for RProc
2025-01-20 22:25:50 +09:00
dearblue
1e504bb16a
Fixed missing changes to IB_FIND_BY_KEY() parameter names
...
This is a #6432 supplement.
2025-01-20 22:11:45 +09:00
Yukihiro "Matz" Matsumoto
ab3abdf5aa
print.c (mrb_print_m): need to copy argument array; fix #6467
2025-01-18 13:35:40 +09:00
Yukihiro "Matz" Matsumoto
6174541d82
mruby-encoding: move String#b to mruby-string-ext gem
2025-01-18 13:23:55 +09:00
Yukihiro "Matz" Matsumoto
583214f452
build_config: remove MRB_UTF8_STRING from full-core configurations
...
- host-debug
- ci/gcc-clang
Since it is automatically turned on by mruby-encoding.
2025-01-16 09:18:14 +09:00
Yukihiro "Matz" Matsumoto
351cd5aa46
mruby-string-ext: remove some methods moved to mruby-encoding
...
- String#valid_encoding?
- String#force_encoding
2025-01-16 09:12:09 +09:00
Yukihiro "Matz" Matsumoto
3b1c5d7397
mruby-string-ext: remove duplicated definition of String#b
...
When we use `mruby-encoding` gem as well.
2025-01-16 09:08:14 +09:00
Yukihiro "Matz" Matsumoto
0c01bf7ff0
mruby-string-ext: String#codepoints to support binary encoding
2025-01-16 09:06:19 +09:00
Yukihiro "Matz" Matsumoto
8395ffb5f8
mruby-string-ext: String#ord to support binary encoding
2025-01-16 09:00:44 +09:00
Yukihiro "Matz" Matsumoto
74bdae9e4c
mruby-encoding: add Poorman's Encoding gem
...
The difference from CRuby's Encoding:
- Encoding is a module, instead of a class
- each Encoding (e.g. `Encoding::UTF_8) is a string instead of Encoding object
- only supports `UTF-8` and `ASCII-8BIT` (and its alias `BINARY`)
Using this gem automatically turn on `MRB_UTF8_STRING` support.
2025-01-16 08:52:41 +09:00
Yukihiro "Matz" Matsumoto
e45ea53773
print.c: update the header comment
2025-01-15 14:27:22 +09:00
Yukihiro "Matz" Matsumoto
f9c1894087
print.c (printstrln): a new function to print string and newline
2025-01-15 09:19:34 +09:00
Yukihiro "Matz" Matsumoto
25bf1faa81
print.c: fixed link error from mrb_print_m with MRB_NO_STDIO; #6466
2025-01-15 09:12:36 +09:00
Yukihiro "Matz" Matsumoto
6c3143aa12
mrbgem/full-core.gembox: stop excluding mruby-print gem; #6466
...
Since the gem no longer exists.
2025-01-14 13:30:33 +09:00
Yukihiro "Matz" Matsumoto
89d83c27f3
mruby-print: remove the gem; ref #6466
2025-01-14 13:30:32 +09:00
Yukihiro "Matz" Matsumoto
b9b505b5f2
kernel.c: define Kernel#print unless mruby-io is loaded; fix #6466
...
- In addition, merge mruby-print body in to print.c
2025-01-14 13:30:32 +09:00
Yukihiro "Matz" Matsumoto
b623f5c149
mruby-io: define HAVE_MRUBY_IO_GEM if present; ref #6466
2025-01-14 13:24:16 +09:00
Yukihiro "Matz" Matsumoto
272f61a051
AUTHORS: update entries [ci skip]
2025-01-13 12:18:59 +09:00
Yukihiro "Matz" Matsumoto
e47b4ca704
mruby-string-ext: new method String#force_encoding
...
It takes a string instead of Encoding object for simplicity
2025-01-12 23:13:28 +09:00
Yukihiro "Matz" Matsumoto
187f27b00b
string.c (char_adjust): align arguments with char_backtrack
...
Also remove the unused argument.
2025-01-12 23:13:28 +09:00
Yukihiro "Matz" Matsumoto
a67c8f9335
string.c: use byte index for a string with binary encoding
2025-01-12 23:13:28 +09:00
Yukihiro "Matz" Matsumoto
d5fa9504ad
mruby-string-ext (str_b): String#b should copy the receiver
2025-01-12 23:13:28 +09:00
Yukihiro "Matz" Matsumoto
6c530b8f48
mruby-string-ext (str_append_as_bytes): reimplement in C
...
To handle strings as byte sequences.
2025-01-12 23:13:27 +09:00
Yukihiro "Matz" Matsumoto
c18cd60c4b
string.h: remove unused flag unset macros
2025-01-12 23:13:27 +09:00
Yukihiro "Matz" Matsumoto
0098654e1f
string.h: rename MRB_STR_EMBED_LEN_BITS (use plurality for bit width)
2025-01-12 23:13:26 +09:00
Yukihiro "Matz" Matsumoto
8c184d4566
string.h: move flag definitions for readability
2025-01-12 23:13:26 +09:00
Yukihiro "Matz" Matsumoto
e75654a991
string.h (RSTR_SET_TYPE): simplify macro definition
2025-01-12 23:13:26 +09:00
Yukihiro "Matz" Matsumoto
0a5acc0303
string.c (str_unshare_buffer): renamed function for more intuitive name
...
The old name `str_modify_keep_ascii` does not describe the function
behavior. It was named so since it was separated from the function
`mrb_str_modify_keep_ascii`.
2025-01-12 23:13:25 +09:00
Yukihiro "Matz" Matsumoto
797c49bc0b
Merge pull request #6465 from diamant3/add-psp-build
2025-01-12 23:10:06 +09:00
Diamond Rivero
7fa467eb40
Add initial playstation portable crossbuild
2025-01-11 08:28:06 +08:00
Yukihiro "Matz" Matsumoto
8276143f03
object.h: remove MRB_SET_FROZEN_FLAG/MRB_UNSET_FROZEN_FLAG macros
...
Simple `o->frozen = 1/0` now works.
2025-01-07 13:56:30 +09:00
Yukihiro "Matz" Matsumoto
c11d18e426
object.h: unify MRB_FROZEN_P() and mrb_frozen_p()
2025-01-07 11:24:58 +09:00
Yukihiro "Matz" Matsumoto
21003746df
object.h: separate frozen flag to the independent bit-field
...
So that other flag operation do not break frozen flag.
2025-01-07 07:44:10 +09:00
Yukihiro "Matz" Matsumoto
a234c66c97
class.c: removed a mistakenly copied function
2025-01-06 22:15:58 +09:00
Yukihiro "Matz" Matsumoto
003e0fb330
mruby-print: disable the gem unless explicitly specified
...
mruby-print is the duplicate of part of mruby-io. You need it only when
limited I/O functionality required.
2025-01-06 13:57:23 +09:00
Yukihiro "Matz" Matsumoto
ef88c3b726
kernel.c: move Kernel#p to kernel.c from mruby-print
...
It's easier to skip `p` in the debugger if it's implemented in C.
2025-01-06 13:57:23 +09:00
Yukihiro "Matz" Matsumoto
6f8bfed18e
object.h: change gccolor type to unsigned int
...
I was uncomfortable with the combination of an integer with a size
specification (uint32_t) and a bit field.
2025-01-06 13:56:58 +09:00
Yukihiro "Matz" Matsumoto
0e79f6b34b
include/object.h: rename color to gccolor
...
To clarify the color is for garbage collection.
2025-01-03 19:12:40 +09:00
Yukihiro "Matz" Matsumoto
4582cc8579
string.c: rename type setting macro
2025-01-03 09:29:43 +09:00
Yukihiro "Matz" Matsumoto
04ab2be2f0
mruby-string-ext (str_ascii_only_p): simplify the flag update
2025-01-03 08:47:38 +09:00
Yukihiro "Matz" Matsumoto
5a7c944a52
mruby-string-ext (str_b): simplify the flag update
2025-01-03 08:46:04 +09:00
Yukihiro "Matz" Matsumoto
8c2c57c59b
Merge pull request #6461 from dearblue/auto-release
2025-01-02 21:58:26 +09:00
Yukihiro "Matz" Matsumoto
e35c027966
Merge pull request #6463 from dearblue/dirname
2025-01-02 21:58:01 +09:00
Yukihiro "Matz" Matsumoto
1c50d1885d
Merge pull request #6462 from dearblue/mruby-io
2025-01-02 21:55:17 +09:00
Yukihiro "Matz" Matsumoto
b0127f0cdd
mruby-string-ext (str_b): add a new method String#b
...
The method makes the receiver binary-mode, but in mruby, which is
virtually no meaning.
2025-01-02 18:45:50 +09:00
dearblue
5c91014530
Add level argument to File.dirname
...
from Ruby-3.1
https://bugs.ruby-lang.org/issues/12194
2025-01-02 18:10:14 +09:00
dearblue
ef11cd94e7
Reimplement the File.dirname method
...
The purpose is as follows:
- Stop using `mrb_locale_from_utf8()`.
- Because there is no corresponding `mrb_utf8_from_locale()`.
- Because on Windows, for example, if the code page is 932 (CP932, likely ShiftJIS), it cannot be distinguished from the second byte 0x5c (\), and returns wrong results.
- Stop using `dirname(3)`.
- Because leading consecutive slashes are not truncated.
For example, if `/////a/b` is given, CRuby returns `/a`, but mruby so far returns `/////a`.
- Because the `path` argument cannot be passed in an immutable form.
- Stop using `_splitpath()` in the Windows implementation.
- Because there is no support for UNC paths with up to 32767 characters.
ref. https://learn.microsoft.com/ja-jp/dotnet/standard/io/file-path-formats#unc-paths
- Because modifying the result of paths terminated by a directory separator.
Previously, for example, `C:/` would return `C:.` instead of `C:/`, and `a/b/` would return `a/b` instead of `a`.
2025-01-02 17:42:40 +09:00
dearblue
3b659f5320
Properly cast the return value of memchr()
2025-01-02 15:34:36 +09:00
dearblue
af1e33c442
To create a release package file in draft
...
This is to allow final confirmation of the created release file.
Release files in draft form cannot be downloaded by the general public.
2025-01-01 20:24:56 +09:00
Yukihiro "Matz" Matsumoto
85df487e63
mruby-string-ext (append_as_bytes): new method introduced by CRuby 3.4
...
Since mruby does not have Encoding support, append_as_bytes works
exactly same as String#concat.
2025-01-01 16:05:00 +09:00
Yukihiro "Matz" Matsumoto
9f59d26c35
class.c: adjust space around the operator
2024-12-30 22:45:13 +09:00
Yukihiro "Matz" Matsumoto
59d1fcfa02
include/proc/h: add 2 new constants for the future
2024-12-29 18:04:40 +09:00
Yukihiro "Matz" Matsumoto
d7559253de
mruby-compiler: need to add proper type cast for C++
2024-12-28 11:39:22 +09:00
Yukihiro "Matz" Matsumoto
86a40189b4
class.c: remove _P suffix from non predicate
2024-12-28 11:18:46 +09:00
Yukihiro "Matz" Matsumoto
0b5ebf1b79
class.c: avoid using separate values in files
2024-12-27 18:49:35 +09:00
Yukihiro "Matz" Matsumoto
cf8e0f3f47
class.c: define MT_KEY_SHIFT (2) for the future
2024-12-27 18:39:46 +09:00
Yukihiro "Matz" Matsumoto
32d11d86ff
mruby-compiler (new_lit_str2): move declarations to the point needed
2024-12-26 09:58:01 +09:00
Yukihiro "Matz" Matsumoto
648495a4b3
mruby-compiler (mrb_prev_pc): remove unnecessary local variable
2024-12-25 12:40:33 +09:00
Yukihiro "Matz" Matsumoto
160935dc24
mruby-compiler (mrb_prev_pc): add assertion to ensure pc within iseq
2024-12-25 12:39:57 +09:00
Yukihiro "Matz" Matsumoto
dbcb5b5a6d
mruby-compiler (merge_pool_str): check whether merged string is in the pool
2024-12-25 12:39:34 +09:00
Yukihiro "Matz" Matsumoto
890a8362b6
mruby-compiler (new_lit_str2): fixed a bug in pool string equality check
2024-12-25 12:39:34 +09:00
Yukihiro "Matz" Matsumoto
6687bddba3
mruby-compiler (gen_addsub): merge 2 literal strings str + str
...
Unlike previous attempt, this change can merge sequence of plus
operations (e.g. `str + str + str`). Need more tests though.
2024-12-25 12:39:34 +09:00
Yukihiro "Matz" Matsumoto
b44372599e
mruby-compiler (codegen): combine literal str + str to one string
2024-12-25 12:39:34 +09:00
Yukihiro "Matz" Matsumoto
61f57b22dd
Merge pull request #6459 from dearblue/FileTest
2024-12-25 00:04:11 +09:00
dearblue
7c69a37aa6
FileTest is a module
...
It has been incorrectly defined as a class.
2024-12-23 22:45:47 +09:00
Yukihiro "Matz" Matsumoto
6037e50298
test/hash: update tests to new hash format
2024-12-21 08:53:57 +09:00
Yukihiro "Matz" Matsumoto
baeeb5e435
hash.c (mrb_hash_to_s): print :sym => val as sym: val
...
Ruby 3.4 changed the format of hash string representation. We follow.
2024-12-21 08:52:23 +09:00
Yukihiro "Matz" Matsumoto
e31869fd91
mruby-fiber: rename fiber_init_fiber to init_fiber
...
Resolve confusing function names
2024-12-20 17:56:25 +09:00
Yukihiro "Matz" Matsumoto
583aa985c8
mruby-compiler (gen_call): use OP_SSEND for self.foo() calls
2024-12-20 10:05:09 +09:00
Yukihiro "Matz" Matsumoto
aad7dce017
gc.c (mark_context_stack): use SET_NIL_VALUE macro to clear the stack
2024-12-19 16:20:46 +09:00
Yukihiro "Matz" Matsumoto
c83bddd856
mruby-bigint (bint_new): avoid memcpy'ing NULL pointer
...
The second argument of memcpy() is declared to never be NULL. Clang ASAN
report this as an undefined behavior error.
2024-12-18 13:48:11 +09:00
Yukihiro "Matz" Matsumoto
18cc2cea41
mruby-compiler (codegen): loop info may be NULL (retry)
2024-12-17 10:41:23 +09:00
Yukihiro "Matz" Matsumoto
a77b9b4bab
mruby-compiler (codegen): loop info may be NULL (redo)
2024-12-17 10:41:23 +09:00
Yukihiro "Matz" Matsumoto
f67939ff78
Merge pull request #6458 from mruby/dependabot/github_actions/super-linter/super-linter-7.2.1
2024-12-17 10:32:32 +09:00
dependabot[bot]
8099db94ff
Bump super-linter/super-linter from 7.2.0 to 7.2.1
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 7.2.0 to 7.2.1.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v7.2.0...v7.2.1 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-12-16 14:23:58 +00:00
Yukihiro "Matz" Matsumoto
2f5c2d6b42
Revert "vm.c (OP_ENTER): clear all registers region in the stack"
...
This reverts commit 19385a8710 .
The issue is covered by 1003a6.
2024-12-16 19:26:56 +09:00
Yukihiro "Matz" Matsumoto
d1003a6f9a
mruby-fiber (fiber_init_fiber): clear all of fiber stack allocated
2024-12-16 19:23:05 +09:00
Yukihiro "Matz" Matsumoto
19385a8710
vm.c (OP_ENTER): clear all registers region in the stack
...
To keep GC away from touching uninitialized values
2024-12-15 23:23:07 +09:00
Yukihiro "Matz" Matsumoto
d13e6ff8c9
include/presym.h: MRB_GVSYM() for global variables is now available
2024-12-14 16:03:35 +09:00
Yukihiro "Matz" Matsumoto
46019f3871
Merge pull request #6444 from hoshiumiarata/tests_for_bigint
2024-12-13 17:57:16 +09:00
Hoshiumi Arata
03ed952600
Merge branch 'master' into tests_for_bigint
2024-12-13 17:31:54 +09:00
Yukihiro "Matz" Matsumoto
b561abd46b
Merge pull request #6457 from hoshiumiarata/fix_division_of_smallint_by_bigint
2024-12-13 14:23:52 +09:00
Hoshiumi Arata
6fb93ce6f7
mruby-bigint: fix bug with division of a small number by a bigint; fix #6456
2024-12-13 12:07:34 +09:00
Yukihiro "Matz" Matsumoto
917066647e
Merge pull request #6450 from dearblue/io-pread-pwrite
2024-12-13 08:19:55 +09:00
dearblue
ce1abfb2c9
Change MRB_WITH_IO_PREAD_PWRITE configuration name
...
Change to `MRB_USE_IO_PREAD_PWRITE` for consistency with mruby configuration macros.
Similarly, `MRB_WITHOUT_IO_PREAD_PWRITE` is changed to `MRB_NO_IO_PREAD_PWRITE`.
The previous names are available for compatibility but are deprecated.
2024-12-12 22:18:34 +09:00
Yukihiro "Matz" Matsumoto
29a2bc19a3
mruby-bigint (mpz_get_str): use UL suffix for mp_limb table
2024-12-12 17:15:02 +09:00
Hoshiumi Arata
3152402fa6
Merge branch 'master' into tests_for_bigint
2024-12-12 17:01:06 +09:00
Yukihiro "Matz" Matsumoto
c495d08c5b
mruby-io (mrb_file__gethome): add casts to stop type warnings
2024-12-12 16:13:56 +09:00
Yukihiro "Matz" Matsumoto
423c12e985
Merge pull request #6455 from hoshiumiarata/bigint_fix_div_rounding
2024-12-12 16:13:47 +09:00
Yukihiro "Matz" Matsumoto
ceb1885121
Merge pull request #6454 from hoshiumiarata/fix_rhs_bigint_mod_and_divmod
2024-12-12 13:45:48 +09:00
Yukihiro "Matz" Matsumoto
d8e6de28e9
mruby-bigint (mrb_bint_add_n): fixed a memory leak
2024-12-11 21:29:22 +09:00
Yukihiro "Matz" Matsumoto
8bd62ca311
mruby-bigint (mrb_bint_xor): fix a bug in bigint ^ int operation
...
Fix #6453 ; ref #6444
2024-12-11 21:29:21 +09:00
Yukihiro "Matz" Matsumoto
b807c0a27d
mruby-bigint (mpz_pow): combine mpz_init and mpz_set
2024-12-11 21:29:21 +09:00
Yukihiro "Matz" Matsumoto
8da0db545e
mruby-bigint (mpz_get_str): reduce one division
2024-12-11 21:29:21 +09:00
Hoshiumi Arata
94a3a3eb6e
mruby-bigint: fix rounding behavior in mpz_mdiv and mpz_mdivmod functions
2024-12-11 21:09:46 +09:00
Hoshiumi Arata
52e1ebe191
mruby-bigint: handle rhs bigint in int_mod and int_divmod functions
2024-12-11 20:58:03 +09:00
Yukihiro "Matz" Matsumoto
989c133c9f
Merge pull request #6449 from dearblue/presym.2
2024-12-11 10:46:27 +09:00
Yukihiro "Matz" Matsumoto
a77e917d78
Merge pull request #6448 from dearblue/presym.1
2024-12-11 10:08:22 +09:00
Yukihiro "Matz" Matsumoto
19cb0fc374
Merge pull request #6447 from dearblue/File.expand_path
...
Fixed `File.expand_path`
2024-12-10 13:54:46 +09:00
Hoshiumi Arata
7dfbbd1eaa
Merge branch 'master' into tests_for_bigint
2024-12-09 22:38:32 +09:00
dearblue
27082d143c
Using presym in the mruby-io/src/file_test.c file
2024-12-09 22:09:15 +09:00
dearblue
384db9054d
Suppress presym in mruby/ext/io.h file
...
When defining macro constants for error classes in public header files, it is preferable to use `MRB_ERROR_SYM()`.
2024-12-09 22:05:01 +09:00
Yukihiro "Matz" Matsumoto
9af061a4ce
mruby-bigint: fixed a bug in string conversion; ref #6444
2024-12-09 13:14:22 +09:00
Yukihiro "Matz" Matsumoto
6d2e7f50e2
mruby-bigint: compact mpz_add_int,mpz_sub_int calling conditions
2024-12-09 13:04:01 +09:00
Yukihiro "Matz" Matsumoto
441d4be0ad
mruby-bigint: fixed a bug with bigint +/- mrb_int; close #6445
2024-12-08 23:45:25 +09:00
Yukihiro "Matz" Matsumoto
33841519a9
AUTHORS: update entries [ci skip]
2024-12-08 19:35:41 +09:00
Yukihiro "Matz" Matsumoto
7b0dcaaa34
Merge pull request #6446 from dearblue/win64
2024-12-08 19:35:27 +09:00
dearblue
88e3ce1b58
Fix File.expand_path for Windows
...
- The inner method `File._gethome` could be read as intending to use the `USERPROFILE` environment variable instead on Windows when the `HOME` environment variable is not available.
In reality, however, this was not the case.
- The result of `File.expand_path` should unify path separators with `/`, but it did not.
2024-12-08 10:43:20 +09:00
dearblue
06bb54d380
Improved File.expand_path test in `mruby-io
...
Since `mruby-io` does not depend on `mruby-env` even for test builds, it is impossible that `ENV` constants are defined.
Therefore, define `MRubyIOTestUtil::ENV_HOME` for alternative use.
2024-12-08 10:43:20 +09:00
dearblue
1326017d1d
Omit the _WIN64 definition check
...
Checking the official MSVC documentation, if `_WIN64` is defined, then `_WIN32` is also defined.
https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros
I could not find any documentation on MinGW, but I assume it is not a problem.
2024-12-07 22:47:28 +09:00
Yukihiro "Matz" Matsumoto
1dfd3d9043
Merge pull request #6442 from dearblue/jmpuw
2024-12-06 23:43:31 +09:00
Yukihiro "Matz" Matsumoto
ac6436556b
Merge pull request #6440 from dearblue/redo
...
Fix `redo` keyword
2024-12-06 23:42:44 +09:00
Hoshiumi Arata
9a02daaca0
Merge branch 'master' into tests_for_bigint
2024-12-04 20:58:55 +09:00
Yukihiro "Matz" Matsumoto
16028442e6
Merge pull request #6443 from hoshiumiarata/node_negate_for_bigint
2024-12-04 20:50:22 +09:00
Hoshiumi Arata
21ccbf965e
bigint: expand test cases for arithmetic operations
2024-12-04 18:34:21 +09:00
Hoshiumi Arata
3034b0847a
codegen: fix NODE_NEGATE for bigints
2024-12-04 17:57:50 +09:00
dearblue
95e2f8e844
Fixed wrong range condition in OP_JMPUW
...
fixed #6441
2024-12-03 22:14:50 +09:00
Yukihiro "Matz" Matsumoto
4a99f28ec3
Revert "vm.c (cipush): small refactoring"
...
This reverts commit d6e23f3cdc .
Caused some memory crashes.
2024-12-03 16:48:48 +09:00
Yukihiro "Matz" Matsumoto
94a4b95b5d
test/lang.rb: update compiled code in comments
...
- variable sized instructions
- new instruction names
- remove OP_ prefix as code dump does
2024-12-02 15:23:06 +09:00
Yukihiro "Matz" Matsumoto
77e08c9193
ops.h: rename OP_LOADI to OP_LOADI8
...
OP_LOADI stores an 8 bit integer to a register, so we renamed the
instruction name to describe the behavior more precisely, like
OP_LOADI16 and OP_LOADI32.
2024-12-01 19:16:54 +09:00
dearblue
9a67bdb6aa
Fix redo keyword
...
Add `OP_NOP` to distinguish `retry` and jump targets while maintaining instruction compatibility.
Ideally, it might be preferable to separate them into `OP_REDO`.
fixed #6439
2024-12-01 11:40:17 +09:00
dearblue
939659e2db
Allow redo from nested LOOP_BEGIN and LOOP_RESCUE
2024-12-01 11:34:10 +09:00
dearblue
01ea2c088d
Add more tests for redo keyword
2024-12-01 11:33:23 +09:00
Yukihiro "Matz" Matsumoto
d6e23f3cdc
vm.c (cipush): small refactoring
...
- simplified if-statement
- rename local variable size to diff (means diff between cibase & ci).
2024-11-30 11:13:38 +09:00
Yukihiro "Matz" Matsumoto
e05dbf7bbc
mruby-compiler (mrb_irep_remove_lv): remove the function altogether
...
Recent changes make mrb_irep_remove_lv() used no longer. Removing this
function would not make any compatibility issue, since it's an internal
function.
2024-11-29 17:09:44 +09:00
Yukihiro "Matz" Matsumoto
28d2dfbb11
mruby-bin-mrbc: use MRB_DUMP_NO_LVAR flag
...
Instead of `mrb_irep_remove_lv()` function.
2024-11-29 16:45:26 +09:00
Yukihiro "Matz" Matsumoto
3a6272d9e9
mruby-bin-strip: use MRB_DUMP_NO_LVAR flags
...
Instead of `mrb_irep_remove_lv()` function.
2024-11-29 16:41:27 +09:00
Yukihiro "Matz" Matsumoto
5b69185171
dump.c (mrb_dump_irep): skip lv section if MRB_DUMP_NO_LVAR is set
2024-11-29 16:29:18 +09:00
Yukihiro "Matz" Matsumoto
bd5ece3a26
dump.h: remove obsolete flag DUMP_DEBUG_INFO
2024-11-29 07:39:26 +09:00
Yukihiro "Matz" Matsumoto
4751e385c3
dump.h: add new dump flag MRB_DUMP_NO_LVAR
2024-11-29 07:38:47 +09:00
Yukihiro "Matz" Matsumoto
673d71ffca
dump.c (mrb_dump_irep): reorganize if-structure
2024-11-28 10:14:06 +09:00
Yukihiro "Matz" Matsumoto
8a25c424a4
dump.c: remove unnecessary braces around return
2024-11-28 04:54:20 +09:00
Yukihiro "Matz" Matsumoto
b1091e7c64
dump.c: use post-decrements
2024-11-28 04:54:19 +09:00
Yukihiro "Matz" Matsumoto
a5c6cb5afb
Merge pull request #6434 from dearblue/doc/hier
2024-11-28 04:53:55 +09:00
dearblue
26f949e612
Added document "The mruby directory structure"
...
This text was translated from Japanese to English by https://www.deepl.com/ .
2024-11-27 23:04:23 +09:00
Yukihiro "Matz" Matsumoto
3505874f72
Merge pull request #6437 from jbampton/pre-commit-config-add-more-details
2024-11-27 14:40:38 +09:00
Yukihiro "Matz" Matsumoto
85eeeda0b3
Merge pull request #6438 from dearblue/task/install
2024-11-27 14:36:21 +09:00
dearblue
c7ca1038d2
Remove unused MRuby::Build#list_install_excludes method
...
This method was added by commit 0ac755dbc8 (#6407 ).
It was added during the initial conception, but was ultimately no longer needed.
2024-11-26 22:05:47 +09:00
Yukihiro "Matz" Matsumoto
c96f0cd265
mruby-compar-ext (clamp): found a bug by newly added test
...
Translate CRuby's logic (in C) to Ruby.
2024-11-26 17:40:10 +09:00
Yukihiro "Matz" Matsumoto
ec68c6afd8
mruby-compar-ext: add test for Comparable#clamp
2024-11-26 17:40:09 +09:00
Yukihiro "Matz" Matsumoto
a6267a4145
Merge pull request #6436 from dearblue/doc/index
2024-11-26 13:35:27 +09:00
John Bampton
7fb6fdd4e2
Add more details to the pre-commit config
2024-11-25 22:49:30 +10:00
dearblue
f42a55d9e0
Make rake doc:update-index prettier friendly
2024-11-25 21:32:14 +09:00
Yukihiro "Matz" Matsumoto
3ececd4f1f
mruby-catch: fixed typo
2024-11-25 16:51:46 +09:00
Yukihiro "Matz" Matsumoto
1c317cf79e
mruby-catch (throw_m): small refactoring
2024-11-25 12:28:50 +09:00
Yukihiro "Matz" Matsumoto
79dda053a5
mruby-numeric-ext: add test for Integer#digits
2024-11-23 23:16:47 +09:00
Yukihiro "Matz" Matsumoto
781359a1d1
Merge pull request #6432 from dearblue/hash
2024-11-22 09:53:10 +09:00
dearblue
fd97241cd6
Moving code in macro arguments out of macros
...
In `src/hash.c`, there are code blocks that are passed as macro arguments.
These code blocks are interpreted as part of the macro function, so breakpoints cannot be set in the debugger.
Also, the gcov command will aggregate them to the caller, and the code in the block will not be counted.
This patch will prevent them from being interpreted as part of a macro, and thus the aforementioned problems will no longer occur.
2024-11-21 22:52:29 +09:00
Yukihiro "Matz" Matsumoto
87bd5c7abc
Merge pull request #6409 from jbampton/add-prettier-config
2024-11-21 14:01:41 +09:00
Yukihiro "Matz" Matsumoto
1e41c47ebf
Merge pull request #6429 from hoshiumiarata/fix_num_params_as_hash_key
2024-11-21 11:47:00 +09:00
Yukihiro "Matz" Matsumoto
4a54b551e8
hash.c (ht_set): inline ht_set_without_ib_adjustment()
2024-11-21 07:59:11 +09:00
Yukihiro "Matz" Matsumoto
3ad85e6038
Merge pull request #6431 from dearblue/typo
2024-11-21 07:58:55 +09:00
dearblue
de494796ac
Fixed typo
2024-11-20 21:14:55 +09:00
John Bampton
a7c947360e
[CI] Add prettier to pre-commit
...
Add `.prettierignore` and the `.prettierrc` config file. Prettier is currently targeting the `JSON`, `Markdown` and `YAML` files in the mruby repo.
Additional file types can be targetted with prettier via additional community plugins.
https://prettier.io/docs/en/
You can see all the languages that are supported on the homepage:
https://prettier.io/
This PR references a few other issues and PRs
We did have prettier running with pre-commit before that method was removed from prettier.
https://github.com/mruby/mruby/pull/6292
https://github.com/mruby/mruby/issues/6291
https://github.com/mruby/mruby/issues/6138
https://github.com/mruby/mruby/pull/5490
Perhaps we could add more npm software to pre-commit in future using new the `local` repo approach.
https://pre-commit.com/#repository-local-hooks
The best part is that it runs with pre-commit on our local machines on `git commit` and also when running `pre-commit run --all-files` or for example when running `make check`.
There were also some minor fixes / style changes in the pre-commit config to standardize casing.
https://www.npmjs.com/package/prettier?activeTab=readme
2024-11-20 14:51:11 +10:00
Yukihiro "Matz" Matsumoto
dc5566e560
mruby-bigint (int_fit_limb_p): fix the logic to check mrb_int size
...
`int_fit_limb_p()` checks if `mrb_int` fits in `mp_limb`. Previous logic
did not work well with negative integers.
2024-11-20 11:27:54 +09:00
Yukihiro "Matz" Matsumoto
33357d4f35
hash.c (ht_set_without_ib_adjustment): need to skip tombstone; #6421
...
If a tombstone (a deleted entry slot) is found in searching the entry,
it should be skipped, but we had added the new entry even if the entry
to be replaced might be found in the further search. #6414 and #6421
tried to rehash the table to remove tombstone. But rehashing consumes
memory. So for the time being, we just skip tombstones in the search.
Maybe we will add some heuristics to rehash when the table has too many
tombstones. close #6414
2024-11-20 10:52:39 +09:00
Yukihiro "Matz" Matsumoto
9ea6bda781
Merge pull request #6427 from dearblue/vm-recursive
2024-11-20 07:22:12 +09:00
Yukihiro "Matz" Matsumoto
4953dcd81f
Merge pull request #6428 from hoshiumiarata/change_limits_of_addi_and_subi
2024-11-20 06:37:19 +09:00
Hoshiumi Arata
386cd771e7
Fix numbered parameters when used as hash keys
2024-11-20 00:31:44 +09:00
Hoshiumi Arata
d5823623ed
Change the limits of OP_ADDI and OP_SUBI from 0-127 to 0-255.
2024-11-19 23:36:22 +09:00
Yukihiro "Matz" Matsumoto
9546207047
Merge pull request #6426 from hoshiumiarata/coverage
...
Add GitHub Actions workflow for coverage reporting
2024-11-19 22:55:37 +09:00
dearblue
0337e0e0f1
Need to update ci variable after re-entry to VM
...
Some functions called by `mrb_vm_exec()` involve re-entry into the mruby VM.
If the `ci` variable is not updated after re-entry, use-after-free is caused.
This patch makes the following after-call fixes.
| called | might call methods
| ----------------------- | ----------------
| `mrb_ary_splat()` | `#to_a`
| `hash_new_from_regs()` | `#eql?` `#hash`
| `mrb_hash_delete_key()` | `#eql?` `#hash`
| `mrb_hash_get()` | `#eql?` `#hash` `#default`
| `mrb_hash_key_p()` | `#eql?` `#hash`
| `mrb_hash_merge()` | `#eql?` `#hash`
| `mrb_hash_set()` | `#eql?` `#hash`
| `mrb_range_new()` | `#<=>`
2024-11-19 22:47:04 +09:00
Hoshiumi Arata
0947dd64d0
Update coverage workflow to use Clang 18 for compilation
2024-11-19 18:24:40 +09:00
Hoshiumi Arata
abca6549d8
Update coverage workflow to use Clang for compilation
2024-11-19 18:12:57 +09:00
Hoshiumi Arata
593cda570f
Update retention days for coverage report in GitHub Actions workflow
2024-11-19 18:11:08 +09:00
Yukihiro "Matz" Matsumoto
dbb1d2342f
Merge pull request #6425 from mruby/dependabot/github_actions/super-linter/super-linter-7.2.0
2024-11-19 06:41:07 +09:00
Hoshiumi Arata
1fbcd4a39b
Fix lint errors
2024-11-19 00:06:37 +09:00
Hoshiumi Arata
f7b2ec1408
Fix formatting of coverage report in GitHub Actions workflow
2024-11-19 00:00:49 +09:00
Hoshiumi Arata
7cf5e9b0af
Refactor coverage report generation in GitHub Actions workflow
2024-11-18 23:56:55 +09:00
dependabot[bot]
cc76dda8a5
Bump super-linter/super-linter from 7.1.0 to 7.2.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v7.1.0...v7.2.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-11-18 14:45:49 +00:00
Hoshiumi Arata
fbcc6cf255
Update coverage workflow to trigger on pull requests
2024-11-18 23:29:17 +09:00
Hoshiumi Arata
6028be193c
Add GitHub Actions workflow for coverage reporting
2024-11-18 23:19:28 +09:00
Yukihiro "Matz" Matsumoto
b437b1da24
Merge pull request #6424 from MaxFork/max-add-check_command
2024-11-18 23:15:40 +09:00
Max Base
f6106f62c7
Update Makefile - Add check_command
2024-11-17 14:43:21 +03:30
Yukihiro "Matz" Matsumoto
f27bc6ab32
Merge pull request #6423 from dearblue/task/test
2024-11-17 07:52:50 +09:00
Yukihiro "Matz" Matsumoto
6663f1072c
Merge pull request #6422 from dearblue/hash
2024-11-17 00:05:20 +09:00
dearblue
cf91cbf090
Adding a serialized test task
...
Under normal circumstances, `rake -m test` will parallelize not only the build task, but also the test task.
With this patch, `rake -m test:run:serial` will parallelize the build tasks, but the test tasks will be done one by one in sequence.
The name of the task to be added is as follows:
| tasks to be added | corresponding exist tasks
| --------------------- | ----------------
| `test:run:serial` | `test:run`
| `test:run:serial:bin` | `test:run:bin`
| `test:run:serial:lib` | `test:run:lib`
2024-11-16 21:21:51 +09:00
dearblue
9501c3f58c
Add annotations for function names defined in the preprocessor
2024-11-16 20:50:49 +09:00
Yukihiro "Matz" Matsumoto
013bcb9221
Merge pull request #6420 from jbampton/patch-2
2024-11-16 04:52:15 +09:00
Yukihiro "Matz" Matsumoto
628f057482
Merge pull request #6419 from hoshiumiarata/fix_numparams_in_lambda
2024-11-15 16:17:03 +09:00
Yukihiro "Matz" Matsumoto
e0d9bce8b6
Merge pull request #6415 from hoshiumiarata/fix_numbered_parameters_in_singleton
2024-11-15 16:10:34 +09:00
Yukihiro "Matz" Matsumoto
a00267c802
Merge pull request #6417 from hoshiumiarata/fix_email_lint
2024-11-15 16:03:41 +09:00
Yukihiro "Matz" Matsumoto
a247f48cf6
Merge pull request #6416 from hoshiumiarata/optimize_class_new_iseq
2024-11-15 15:42:57 +09:00
Yukihiro "Matz" Matsumoto
ab3bc12fcb
class.c: remove 'class' prefix from error messages
2024-11-15 15:33:14 +09:00
Yukihiro "Matz" Matsumoto
a109599d53
vm.c (prepare_missing): add receiver's class in superclass calls
2024-11-15 15:15:08 +09:00
Yukihiro "Matz" Matsumoto
65e0e5bbd3
class.c (mrb_method_missing): add receiver's class to clarify
...
We needed to modify a lot of test code that expected the old style.
2024-11-15 15:13:24 +09:00
John Bampton
d506ed08da
Update .github/labeler.yml
2024-11-13 23:46:22 +10:00
John Bampton
33ba77fb00
Update labeler.yml: add label for the tools directory
2024-11-13 23:39:51 +10:00
Hoshiumi Arata
9fe2a5c46a
parser: setup numbered parameters in new_lambda and adjust dump_prefix offset
2024-11-13 22:19:27 +09:00
Hoshiumi Arata
3be0e6b24f
Update mlc_config.json to ignore mailto links in linting
2024-11-13 20:45:28 +09:00
Hoshiumi Arata
0b1d55a088
class.c: replace OP_SEND with OP_SSEND in "new" method's iseq
2024-11-13 18:34:16 +09:00
Hoshiumi Arata
cc2ec53807
parser: support numbered parameters when used as a singleton
2024-11-13 00:22:49 +09:00
Yukihiro "Matz" Matsumoto
13acf12df5
test/t/vformat.rb: fix encoding error; should have been UTF-8
2024-11-11 23:52:58 +09:00
Yukihiro "Matz" Matsumoto
5387b74be7
hash.c (mrb_hash_to_s): put spaces around =>
...
CRuby 3.4 puts spaces around `=>` since for example `{:a!=>2}` can be
confusing where to separate tokens. mruby should follow the behavior.
Many tests in `test/t` directory assumed no spaces around `=>`, so we
needed to fix them too.
2024-11-11 11:07:43 +09:00
Yukihiro "Matz" Matsumoto
d2eb2bcacc
Update AUTHORS [ci skip]
2024-11-11 11:07:42 +09:00
Yukihiro "Matz" Matsumoto
1d88398d94
Merge pull request #6413 from dearblue/doc/index
2024-11-11 09:45:14 +09:00
Yukihiro "Matz" Matsumoto
d4cb111d14
Merge pull request #6412 from dearblue/OP_RETURN_BLK
...
Distinguish the call frame of the generator with `OP_RETURN_BLK`
2024-11-10 23:10:27 +09:00
dearblue
6291b55bba
Add links to documentation in README.md
...
The documentation table is generated by the `rake doc:update-index` command.
The following conditions must be met for links to be added to the documentation table.
- The file must be placed under the `doc/` directory
- The file must have the extension `.md`
- The file must be written at the top of the file with `<! -- summary: ANY-TEXT -->`
2024-11-10 22:39:14 +09:00
dearblue
c654123561
Distinguish the call frame of the generator with OP_RETURN_BLK
...
When multiple identical proc objects are placed on the call stack, it is not possible to distinguish where to `return`.
Therefore, use env object comparisons to do this.
fixed #6411
2024-11-10 18:39:00 +09:00
Yukihiro "Matz" Matsumoto
90764b10fd
Merge pull request #6410 from dearblue/msvc
2024-11-07 14:12:18 +09:00
dearblue
ff9c03fde4
Put #include <stdlib.h> in parse.y
...
ref. #6388
2024-11-06 22:29:29 +09:00
Yukihiro "Matz" Matsumoto
fcab6d2769
Merge pull request #6408 from dearblue/c++
2024-11-06 13:31:42 +09:00
dearblue
a92b97ff45
Improve compliance with C++ standards
...
- Avoid "Designated initializer"
C++20 is required for C++.
- Avoid "Compound literals"
Not available for C++.
2024-11-05 22:07:53 +09:00
Yukihiro "Matz" Matsumoto
ee7919e658
Merge pull request #6407 from dearblue/install/libmruby_core
2024-11-05 13:10:44 +09:00
Yukihiro "Matz" Matsumoto
521766009b
Merge pull request #6405 from ArtSin/io_read-fix-mrb_raisef-arg
2024-11-05 13:08:42 +09:00
Yukihiro "Matz" Matsumoto
fed631c21b
mruby-bigint (mrb_bint_sub_n): avoid allocating mpz_z
2024-11-05 13:03:54 +09:00
Yukihiro "Matz" Matsumoto
6085ffb968
mruby-bigint (mrb_bint_add_n): avoid allocating mpz_z
2024-11-05 12:22:10 +09:00
Yukihiro "Matz" Matsumoto
ef18bd86a6
mruby-bigint (mpz_sub_int): avoid allocating mpz_t for mrb_int
2024-11-05 11:52:22 +09:00
Yukihiro "Matz" Matsumoto
fe12e840f3
mruby-bigint (mpz_add_int): move the function definition
...
To prepare `mpz_sub_int` update.
2024-11-05 11:52:22 +09:00
dearblue
0ac755dbc8
Allow to exclude specific files in rake install
...
Introduce the `MRuby::Build#install_excludes` attribute.
This attribute is an array to which you add strings, regular expressions, and proc objects that will serve as filters to exclude.
This feature was inspired by @hoshiumiarata's comment.
https://github.com/mruby/mruby/issues/6352#issuecomment-2426721517
2024-11-04 20:44:13 +09:00
ArtSin
0afc7ae13b
io_read: use %i instead of %d in call to mrb_raisef
...
`length` is `mrb_int`, not `int`.
2024-11-04 13:56:46 +04:00
Yukihiro "Matz" Matsumoto
48455756d2
Merge pull request #6399 from jbampton/patch-2
2024-11-03 07:21:26 +09:00
John Bampton
903baddb03
Add macOS 15 to the build
...
macOS 15 (Sequoia) is now available as a public beta in GitHub Actions
https://github.com/actions/runner-images/issues/10686
https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
2024-11-02 12:50:17 +10:00
Yukihiro "Matz" Matsumoto
16ae9e6ed9
Merge pull request #6397 from wataash/boxno-set-value
2024-11-01 11:11:39 +09:00
Wataru Ashihara
b1d299f88b
boxing_no.h: rename BOXNIX_SET_VALUE -> BOXNO_SET_VALUE
...
boxing_nix.h was renamed to boxing_no.h on
https://github.com/mruby/mruby/commit/df4c298e3b280b11add8502f1602cefc246655dd
2024-10-31 16:01:05 +09:00
Yukihiro "Matz" Matsumoto
3885e14049
mruby-rational: explicitly add return for error cases too
2024-10-31 14:06:10 +09:00
Yukihiro "Matz" Matsumoto
19d3620965
mruby-bigint (mrb_bint_powm): stop a warning for no return
2024-10-31 14:06:10 +09:00
Yukihiro "Matz" Matsumoto
49525fa207
mempool.c: renamed from pool.c
...
To avoid confusion with pools in irep, we renamed region-based memory
manager from pool to mempool.
- rename pool.c to mempool.c
- separate mempool.h
- rename all mrb_pool to mrb_mempool
So if someone is using pool.c functions (I suppose no one does though),
they need to rename all `mrb_pool` to `mrb_mempool` and include
`mruby/mempool.h` header at the top.
2024-10-31 14:06:10 +09:00
Yukihiro "Matz" Matsumoto
62ef5db13e
irep.h: rename mrb_pool_value to mrb_irep_pool
...
mrb_pool_value is a structure that represents a value in the irep
literal pool and is unrelated to mrb_pool, which performs region-based
memory management. It has been renamed mrb_irep_pool to avoid confusion.
2024-10-29 20:34:53 +09:00
Yukihiro "Matz" Matsumoto
2436b32f1f
irep.h: reformat comments
2024-10-29 20:34:52 +09:00
Yukihiro "Matz" Matsumoto
6ad6b6c6c1
Merge pull request #6396 from vickash/milkvduo
2024-10-28 10:42:51 +09:00
vickash
8fbc809614
milkvduo: update GPIO gem url
2024-10-27 17:37:33 -04:00
Yukihiro "Matz" Matsumoto
cda7b56d65
Merge pull request #6395 from dearblue/to_proc
2024-10-27 21:14:48 +09:00
dearblue
a7a81aa761
Storing method-id inside Symbol#to_proc
...
When called in combination with a method like `*_eval` or `*_exec` that switches self, `__send__` was passed an object that was not necessarily a symbol as the method name.
This problem was discovered during the #6389 correction process.
2024-10-27 10:41:51 +09:00
Yukihiro "Matz" Matsumoto
38487f2100
Merge pull request #6393 from dearblue/mrb_object_exec
2024-10-26 07:51:55 +09:00
dearblue
94290b9bb8
Follow-up to #6391
...
The #6392 has been merged, so the call to `mrb_yield_with_class()` is no longer needed.
2024-10-25 21:11:07 +09:00
Yukihiro "Matz" Matsumoto
ba69f36d6d
Merge pull request #6392 from dearblue/mrb_exec_irep
2024-10-25 07:12:05 +09:00
Yukihiro "Matz" Matsumoto
49b9db24b2
Merge pull request #6391 from dearblue/instance_exec
2024-10-25 07:09:44 +09:00
dearblue
8d64788cbf
Fix argument forwarding in mrb_exec_irep()
...
C to Ruby calls using `mrb_exec_irep()` were not forwarding arguments.
There was also a problem in setting the target class and method ID, which is also fixed.
This issue was discovered during the work to fix #6389 .
2024-10-24 22:33:18 +09:00
dearblue
a196d8a5f3
Fixed also argument forwarding in class_exec
...
Pointed out by @matz.
https://github.com/mruby/mruby/pull/6391#issuecomment-2433662139
2024-10-24 22:05:59 +09:00
dearblue
f9151e0bd9
Fixed argument forwarding in instance_exec
...
However, on C, there is no easy way to pass keyword arguments.
Therefore, when called `Kernel#instance_exec` on C, keyword arguments are converted to positional arguments.
This is a limitation of current mruby.
fixed #6389
2024-10-24 21:20:46 +09:00
Yukihiro "Matz" Matsumoto
f245943aed
mruby-bigint (mrb_bint_powm): fixed bugs in type casting
2024-10-24 07:21:12 +09:00
Yukihiro "Matz" Matsumoto
0b96f7f2f7
mruby-bigint (mrb_bint_to_s): add uzero_p() check
2024-10-24 07:20:24 +09:00
Yukihiro "Matz" Matsumoto
c5565a37ac
mruby-bigint: add checks for divided by zero by sizes and contents
2024-10-24 07:18:34 +09:00
Yukihiro "Matz" Matsumoto
5e9593e285
mruby-bigint (udiv): add assertion for divided by zero
2024-10-24 07:16:32 +09:00
Yukihiro "Matz" Matsumoto
3d3aa92649
Merge pull request #6390 from dearblue/mrb_gc_free_gv
2024-10-23 10:03:16 +09:00
dearblue
be9431a9ef
Fix use-after-free by mrb_gc_unregistor()
...
Calling `mrb_gc_unregistor()` from `mrb_data_type::dfree` caused a use-after-free deep inside `mrb_close()`.
The impetus to investigate was <https://github.com/mruby/mruby/pull/6342#pullrequestreview-2292747530 >.
Currently, when `mrb_close()` is called, all objects are destroyed first.
The process is done heap page by heap page, and when all objects belonging to a heap page are destroyed, the heap page is released.
If the next heap page contains `RData` objects, the `mrb_gc_unregistor()` function may be called from the `mrb_data_type::dfree` function.
At this time, the `mrb_gc_unregistor()` function gets an array object from a Ruby global variable.
If the array object belongs to a freed heap page, use-after-free is established by referencing this array object.
About the fixes.
First of all, there is the fact that the `mrb_gv_get()` function returns `nil` if `mrb->globals` is `NULL`.
Therefore, before destroying all objects, free `mrb->globals` and set `mrb->globals` to `NULL` at the same time.
Now the `mrb_gv_get()` function will return `nil` to the calling `mrb_gc_unregistor()` function and `mrb_gc_unregistor()` will do nothing more.
ref. https://github.com/mruby/mruby/issues/4618
2024-10-22 22:57:49 +09:00
Yukihiro "Matz" Matsumoto
b95ca53e5c
mruby-compiler: revert ce2fdb7; close #6388
...
The commit was to stop warnings from Visual C but unexpectedly caused
compilation errors on some configuration.
2024-10-22 14:46:12 +09:00
Yukihiro "Matz" Matsumoto
51fd065722
mruby-compiler (parser_yylex): skip sign if bigint starts with +
...
To reserve memory (1 byte) and avoid error (fixed by 11cff8f ).
2024-10-22 14:45:48 +09:00
Yukihiro "Matz" Matsumoto
11cff8fa7d
mruby-bigint (mpz_init_set_str): should skip + in the string
...
When the string starts with `+` it should not cause error silently. It
might cause serious error afterwards.
2024-10-22 14:44:51 +09:00
Yukihiro "Matz" Matsumoto
f2908031c4
Merge pull request #6387 from dearblue/gc-unregister.1
2024-10-21 10:56:49 +09:00
Yukihiro "Matz" Matsumoto
f6fbfdfcf0
Merge pull request #6386 from dearblue/gc-unregister
2024-10-21 10:55:38 +09:00
Yukihiro "Matz" Matsumoto
df0fc6f3a8
Merge pull request #6385 from dearblue/gc-register.1
2024-10-21 10:49:37 +09:00
Yukihiro "Matz" Matsumoto
c317659b8f
Merge pull request #6382 from dearblue/gc-register
2024-10-21 10:48:46 +09:00
Yukihiro "Matz" Matsumoto
1f5ba7e01d
vm.c (OP_STRCAT): mrb_str_concat may call VM recursively
...
And recursive calls may reallocate call-info stack.
2024-10-20 19:46:23 +09:00
Yukihiro "Matz" Matsumoto
d8e6987e4c
Merge pull request #6358 from jbampton/add-latest-ubuntu-to-build
2024-10-19 02:17:59 -04:00
Yukihiro "Matz" Matsumoto
56fc329633
Merge pull request #6383 from jbampton/remove-macos-12
2024-10-19 00:28:25 -04:00
Yukihiro "Matz" Matsumoto
f3257c448b
mruby-bigint (mrb_bint_powm): should call mpz_clear() on exceptions
2024-10-19 13:09:03 +09:00
Yukihiro "Matz" Matsumoto
e4d2f343fe
mruby-bigint (mrb_bint_neg): move the function to group bit operations
2024-10-19 12:47:06 +09:00
Yukihiro "Matz" Matsumoto
ee13b9e67b
mruby-bigint: fix mrb_int optimization bugs for and, or, xor
...
If the operand is a small integer, those functions tried to reduce
bigint allocations, but we had some bugs in them. We removed those
imperfect optimization altogether.
2024-10-19 12:45:04 +09:00
dearblue
2ec2437d23
Small improvements for mrb_gc_unregister()
...
`ARY_PTR()` and `ARY_LEN()` avoid using them in a loop if the array is not changed, since they involve branching.
2024-10-19 11:10:10 +09:00
dearblue
1dcc2cac03
Avoid calling mrb_gv_set() from mrb_gc_unregister()
...
Should simply be ignored for the possibility of being called from `RData::dfree`.
2024-10-19 11:08:32 +09:00
dearblue
b28d53bda9
Small improvements for mrb_gc_register()
...
The `mrb_nil_p()` used in conditional expressions is semantically included in `!mrb_array_p()`.
2024-10-19 10:59:21 +09:00
Yukihiro "Matz" Matsumoto
2430eaba13
mruby-bigint (mrb_bint_powm): fixed memory leak
2024-10-19 07:32:06 +09:00
Yukihiro "Matz" Matsumoto
001d5fcc3f
mruby-bigint (mpz_get_str): get b2 by table lookup
...
The `b2` is the power of `base` no bigger than DIG_BASE.
2024-10-19 07:32:05 +09:00
Yukihiro "Matz" Matsumoto
4aa87acfc9
mruby-bigint (mpz_set_uint64): adjust reallocation size for uint64
...
The uint64_t value may fit in `mp_limb*n` where n is 1..4.
2024-10-19 07:32:05 +09:00
John Bampton
86e969a406
Remove macOS 12 from the build
...
The macOS 12 runner image will be removed by December 3rd, 2024.
2024-10-19 00:18:19 +10:00
dearblue
13512aba91
Make array objects invisible in mrb_gc_register()
...
Once the class is set, objects can be referenced and manipulated from the Ruby side by using `ObjectSpace.each_object`.
Also, currently `mrb_gc_unregister()` assumes that the element is a non-immediate object.
However, `mrb_gc_unregister()` does not read or write to the address, so there was no problem.
2024-10-18 22:29:23 +09:00
Yukihiro "Matz" Matsumoto
c3be2568ea
Merge pull request #6005 from jbampton/build-and-test-on-macos-13
2024-10-17 23:28:03 -04:00
Yukihiro "Matz" Matsumoto
5e6d382782
mruby-bigint (mpz_set_uint64): fixed a bug in for loop
...
Found double increments in a loop. Since no one called mpz_set_int64()
in the real code, we could not find this bug for long time.
2024-10-18 12:27:02 +09:00
Yukihiro "Matz" Matsumoto
fe42f1d047
mruby-bigint (mpz_set_int): simplify using early return
2024-10-18 12:27:02 +09:00
Yukihiro "Matz" Matsumoto
a5c0b2114a
mruby-bigint (mrb_bint_2comp): need to initialize mpz_t
2024-10-18 12:27:02 +09:00
Yukihiro "Matz" Matsumoto
c8a73515e9
Merge pull request #6381 from 513ry/iss6380
2024-10-17 22:00:56 -04:00
siery
1a426e245f
part 2: Fix indentation to include break after function return type
2024-10-17 22:26:20 +02:00
siery
7d694df717
Fix indentation to include break after function return type
2024-10-17 21:11:11 +02:00
John Bampton
d387e89ae2
Build and test on macOS 13
...
https://github.com/actions/runner-images#available-images
2024-10-17 22:33:59 +10:00
Yukihiro "Matz" Matsumoto
63f3ff4ac5
Merge pull request #6379 from jbampton/add-pre-commit-hook-gitleaks
2024-10-17 02:40:28 -04:00
Yukihiro "Matz" Matsumoto
b4ab4cd7cf
Merge branch 'master' into add-pre-commit-hook-gitleaks
2024-10-17 02:33:23 -04:00
Yukihiro "Matz" Matsumoto
f1863163a8
mruby-bigint (uzero_p): avoid signed and unsigned comparison in loop
2024-10-16 16:33:43 +09:00
Yukihiro "Matz" Matsumoto
84d17f2c44
array.c (mrb_ary_clear): remove unnecessary function
2024-10-16 16:33:42 +09:00
Yukihiro "Matz" Matsumoto
389740e1d2
Merge pull request #6377 from jbampton/add-pre-commit-hook-oxipng
2024-10-16 03:34:12 -04:00
Yukihiro "Matz" Matsumoto
62c8951787
Merge pull request #6378 from jbampton/add-pre-commit-hook-format-json
2024-10-16 03:25:58 -04:00
John Bampton
42d3eb4b60
Add pre-commit hook gitleaks to detect and prevent hardcoded secrets
...
https://github.com/gitleaks/gitleaks
Adding another check/test to our pre-commit framework.
gitleaks is a popular tool that helps with security.
Removes the gitleaks check from the Super-Linter.
So now we can run gitleaks with pre-commit on `git commit`
2024-10-16 04:20:49 +10:00
John Bampton
e0a9a06c77
Add pre-commit hook pretty-format-json
...
https://github.com/pre-commit/pre-commit-hooks?tab=readme-ov-file#pretty-format-json
From the official pre-commit team a minor feature to add.
We have one JSON file at `.github/linters/mlc_config.json`.
2024-10-16 03:56:19 +10:00
John Bampton
83040c50e7
Add pre-commit hook oxipng for lossless PNG compression
...
Oxipng is a multithreaded lossless PNG/APNG compression optimizer.
Lossless compression is a class of data compression that allows the original data to be perfectly reconstructed from the compressed data with no loss of information.
https://en.wikipedia.org/wiki/Lossless_compression
https://github.com/shssoichiro/oxipng?tab=readme-ov-file#git-integration-via-pre-commit
Oxipng is a multithreaded PNG optimizer written in Rust
https://pre-commit.com/index.html#rust
"pre-commit will bootstrap rust if it is not present."
2024-10-16 03:10:16 +10:00
Yukihiro "Matz" Matsumoto
bbce194609
Merge pull request #6374 from jbampton/add-hooks-upgrade-pre-commit
2024-10-15 08:43:54 -04:00
Yukihiro "Matz" Matsumoto
7b5608e78a
mruby-rational: refactor float to rational conversion
...
- the function `float_decode_internal` was removed
- simplified `rational_new_f()`
- do not need to call `ldexp`
- allocate less bigint objects
2024-10-15 21:10:11 +09:00
Yukihiro "Matz" Matsumoto
51b11a6919
mruby-rational: add comments
...
We used `mrb_bint_mul(mrb, n, ONE)` to normalize `n`. The code confused
ChatGPT that could not read the intention.
2024-10-15 21:10:10 +09:00
Yukihiro "Matz" Matsumoto
8cfc1a4581
variable.c: fix int and mrb_bool confusion
2024-10-15 21:10:10 +09:00
Yukihiro "Matz" Matsumoto
540bd54ed3
variable.c (iv_rehash): name magic number 4 as IV_INITIAL_SIZE
2024-10-15 21:10:10 +09:00
Yukihiro "Matz" Matsumoto
06f45f8635
mruby-compiler (codegen): detect too-deep nesting error; fix #6270
2024-10-15 21:10:10 +09:00
Yukihiro "Matz" Matsumoto
fa68e634a7
variable.c (mrb_exc_const_get): E_XXX_ERROR should not call const_missing
...
As #6359 pointed out, calling const_missing hook from E_XXX_ERROR (that
calls mrb_exc_get_id()) can be an attack vector. Since E_XXX_ERROR is
supposed to be a defined error class, we think that the situation where
it is undefined and the const_missing hook is called should be detected
as an error; fix #6359
2024-10-15 21:09:48 +09:00
Yukihiro "Matz" Matsumoto
b5801cd730
mruby-bigint (mrb_bint_new_int64): fixed a bug on the 32bit platforms
2024-10-11 14:19:33 +09:00
Yukihiro "Matz" Matsumoto
2d565d30cb
Merge pull request #6376 from 513ry/master
2024-10-11 01:18:02 -04:00
siery
c8203b2d52
Fix typo
2024-10-11 05:08:46 +02:00
Yukihiro "Matz" Matsumoto
e29f3d64b2
mruby-compiler: stop malloc/free warnings from Visual Studio build
2024-10-11 09:10:44 +09:00
Yukihiro "Matz" Matsumoto
32a527ad6d
readfloat.c: fix float to int assignment
2024-10-11 08:45:27 +09:00
Yukihiro "Matz" Matsumoto
763c9cba03
mruby-rational (int_lshift): add cast to stop overflow warning
2024-10-11 08:44:12 +09:00
Yukihiro "Matz" Matsumoto
f4fdf25bb0
mruby-bigint (mrb_bint_new_int64): wrong return value
2024-10-11 08:41:51 +09:00
Yukihiro "Matz" Matsumoto
39a5d2a9d8
Merge pull request #6375 from jbampton/fix-grammar
2024-10-10 19:36:49 -04:00
John Bampton
6f97cf10e9
docs: fix grammar
2024-10-11 04:07:58 +10:00
John Bampton
95f58d8a98
Upgrade pre-commit min version; add hook; pre-commit autoupdate
...
https://github.com/pre-commit/pre-commit-hooks/releases/tag/v5.0.0
pre-commit-hooks now requires pre-commit>=3.2.0
https://github.com/pre-commit/pre-commit-hooks?tab=readme-ov-file#check-illegal-windows-names
https://pre-commit.com/#pre-commit-autoupdate
refs pre-commit/pre-commit#2808
https://pre-commit.com/#top_level-default_stages
2024-10-11 03:32:16 +10:00
Yukihiro "Matz" Matsumoto
6d4de2496c
mruby-bigint: remove unused macros; ref #6371
2024-10-10 23:14:27 +09:00
Yukihiro "Matz" Matsumoto
e21055604c
mruby-bigint: separate mpz and bint functions; ref #6371
...
The pull-request #6371 was tight integration of mpz and bint functions.
The mpz functions take `struct RBigint*` instead of `mpz_t*`. It
decrease maintainability, in my opinion. This commit initializes `mpz_t`
from `struct RBigint*` in bint functions, so that we can keep separation
of function roles.
2024-10-10 23:04:04 +09:00
Yukihiro "Matz" Matsumoto
c6dbaf702e
Merge branch 'bigint-embed'; #6371
2024-10-10 23:02:10 +09:00
Yukihiro "Matz" Matsumoto
12b97ceb78
fixup! Merge branch 'bigint-embed' of https://github.com/dearblue/mruby into bigint-embed
2024-10-10 22:57:32 +09:00
Yukihiro "Matz" Matsumoto
bda2fa39d2
Merge branch 'bigint-embed' of https://github.com/dearblue/mruby into bigint-embed
2024-10-10 22:31:55 +09:00
Yukihiro "Matz" Matsumoto
453e9eabf0
mruby-rational (rat_add_b): might have called rational_new_b with int
...
`rational_new_b` should be called with bigint objects.
2024-10-10 07:55:51 +09:00
Yukihiro "Matz" Matsumoto
5a40f6710b
Update AUTHORS [ci skip]
2024-10-09 22:56:45 +09:00
Yukihiro "Matz" Matsumoto
b56ad8fdee
mruby-bigint: improve mpz_mul_int() and mpz_add_int()
...
Both functions are only called from mpz_init_set_str(). We can assume
- mpz_t is modifiable
- mpz_t is positive
- n is positive and small (n <= 36)
Those new definitions consume less memory and are slightly faster.
2024-10-08 16:09:46 +09:00
Yukihiro "Matz" Matsumoto
3b06ad4737
mruby-bigint (mpz_mul): cancel Karatsuba algorithm
...
We tried many times to implement the Karatsuba method to improve the
performance of multiplication of large multi-precision integers. But it
did not speed up in all cases due to the cost of memory allocation. We
decided to go back to the basic multiplication method.
If anyone wants to take on the challenge of improving the performance of
multiplication, we welcome it.
2024-10-08 16:02:19 +09:00
John Bampton
f13a4bfe65
gha: add Ubuntu 24.04 to the build
...
Remove Ubuntu 20.04
2024-10-08 16:23:49 +10:00
Yukihiro "Matz" Matsumoto
7e6f8685a3
Merge pull request #6373 from vickash/milkvduo
2024-10-06 20:30:10 -04:00
Yukihiro "Matz" Matsumoto
77fb1b1b65
mruby-bigint (mul_karatsuba): use byte-wise addition to combine
2024-10-07 07:28:24 +09:00
vickash
e99f605458
milkv config: Add directive for board variant, and optional wiringX mrbgem
2024-10-06 12:27:12 -04:00
dearblue
6366f1cbb9
Update mrbgems/mruby-bigint/core/bigint.h
...
Co-authored-by: John Bampton <jbampton@users.noreply.github.com >
2024-10-06 23:03:03 +09:00
vickash
115a739059
milkv config: forgot to remove "-L" in linker paths taken from official Makefile
2024-10-06 09:54:41 -04:00
dearblue
009a79b5c9
Embedding in RBigint objects
...
Integers up to 3 words long will no longer allocate heap space.
2024-10-06 22:28:22 +09:00
vickash
d2878ef47f
Comment out test-inline-struct in milv_duo config
2024-10-06 08:33:21 -04:00
vickash
491b7685db
Add build config for Milk-V Duo (RISC-V Linux) board
2024-10-06 00:26:07 -04:00
Yukihiro "Matz" Matsumoto
40c7febca8
mruby-bigint (uadd): remove redundant trim()
2024-10-05 15:08:16 +09:00
Yukihiro "Matz" Matsumoto
be9da7199b
mruby-bigint (mul_karatsuba) improve performance
...
Unnecessary mpz_t u0u1 and v0v1 are removed.
2024-10-05 10:57:42 +09:00
Yukihiro "Matz" Matsumoto
8faf78f1b8
mruby-method: singleton_method() should search in superclasses
...
[ruby-bugs:20620](https://bugs.ruby-lang.org/issues/20620 )
2024-10-04 21:37:49 +09:00
Yukihiro "Matz" Matsumoto
32aed6ad8c
mruby-bigint: increase KARATSUBA_THREASHOLD to 512
...
Since Karatsuba algorithm is far heavier than the basic multiplication,
we have increased KARATSUBA_THREASHOLD and decreased MAX_RECURSION_DEPTH.
2024-10-04 18:10:14 +09:00
Yukihiro "Matz" Matsumoto
6820da1526
mruby-bigint (mpz_abs): use zero_p()
2024-10-04 18:10:14 +09:00
Yukihiro "Matz" Matsumoto
fd8d3a8d70
mruby-bigint: use zero() to make mpz_t zero.
2024-10-04 18:10:14 +09:00
Yukihiro "Matz" Matsumoto
6274f8de43
mruby-bigint (mpz_sub): avoid data copy
...
Since mpz_sub() calls mpz_add() with opposite sign, refer same data from
the original, instead of copying whole data.
2024-10-04 18:10:14 +09:00
Yukihiro "Matz" Matsumoto
363754b5d1
mruby-bigint (uzero_p): check from the top, not bottom
...
For most of the case, the first non-zero value would be found earlier
when search starts from the top.
2024-10-04 18:10:14 +09:00
Yukihiro "Matz" Matsumoto
fcc1832efc
mruby-bigint (mul_karatsuba): avoid copying operand u and v
2024-09-30 18:32:26 +09:00
Yukihiro "Matz" Matsumoto
0023cbdb3d
mruby-bigint (mpz_mul): use Karatsuba algorithm to improve performance
2024-09-28 05:26:40 +09:00
Yukihiro "Matz" Matsumoto
1348daa683
vm.c: save offset in a local variable in OP_BLKPUSH
2024-09-27 16:31:13 +09:00
Yukihiro "Matz" Matsumoto
b94be7de5a
gc.c (mark_context): no need to mark ci->blk; ref #5791
...
Since the passed block is referenced from the stack after the last
commit.
2024-09-26 02:57:57 +09:00
Yukihiro "Matz" Matsumoto
9c5812a463
mruby-compier: keep stack reference to passed block after modifying &b
...
To mark `MRB_PROC_ORPHAN` we need to keep track of passed block, even
after the assignment to the block argument. And `yield` should use the
original block; #5786 , #5791 , #6369
2024-09-26 02:48:16 +09:00
Yukihiro "Matz" Matsumoto
d6fa7772a0
mruby.h (mrb_method_t): avoid unnamed union
...
It caused errors in the pedantic-mode of GCC.
2024-09-26 00:07:03 +09:00
Yukihiro "Matz" Matsumoto
204928120b
vm.c (cipop): fix improper code to check if env is reclaimed; fix #6369
...
The callinfo refers blk since #5786 but not marked at the time. Later we
added reclamation check by #5791 but its repeated heap scans decrease
the performance drastically in some cases. So the original @dearblue's
solution should be taken
Probably we need to always keep the original block at the bottom of
arguments. And the explicit block argument should be a normal local
variable. We will investigate it later.
2024-09-25 14:12:50 +09:00
Yukihiro "Matz" Matsumoto
12264e33e5
Merge pull request #6361 from jbampton/add-pre-commit-hook-shellcheck
2024-09-24 09:44:25 +09:00
Yukihiro "Matz" Matsumoto
abc4ccf763
Merge pull request #6368 from jbampton/add-pre-commit-hook-check-json
2024-09-24 09:40:39 +09:00
Yukihiro "Matz" Matsumoto
05e3c5831d
Merge pull request #6367 from jbampton/fix-spelling
2024-09-24 07:16:55 +09:00
John Bampton
2adf60320d
Add pre-commit hook check-json
...
https://github.com/pre-commit/pre-commit-hooks?tab=readme-ov-file#check-json
Adds another check/test to our pre-commit framework for checking JSON files
We have one JSON file at `.github/linters/mlc_config.json`
2024-09-24 00:47:27 +10:00
John Bampton
e12da35645
Fix spelling
2024-09-24 00:14:24 +10:00
Yukihiro "Matz" Matsumoto
919a689517
Merge pull request #6363 from dearblue/mrb_type
2024-09-23 14:49:55 +09:00
Yukihiro "Matz" Matsumoto
17acf23914
readfloat.c: we don't need long double for mruby; fix #6365
...
`mrb_read_float()` function does not raise ERANGE (unlike `strtod()`)
so we don't need high precision double for calculation.
2024-09-23 08:11:23 +09:00
Yukihiro "Matz" Matsumoto
ecd42ab3e9
Merge pull request #6360 from jbampton/add-actionslint-to-pre-commit
2024-09-22 20:21:44 +09:00
Yukihiro "Matz" Matsumoto
1b875a925c
Merge pull request #6364 from jbampton/fix-spelling
2024-09-22 20:19:06 +09:00
John Bampton
b974b944af
docs: fix spelling
2024-09-22 12:16:23 +10:00
dearblue
1f933c21e3
Revert "Perform pseudo binary search with mrb_type()"
...
This reverts commit e76bebe836 (#6309 ).
Because it crashes limited to gcc13 -O3.
ref. #6358 .
Also, benchmark tests have shown that revert tends to be preferable in this time.
2024-09-22 10:51:12 +09:00
John Bampton
6fe57ae44e
Add pre-commit hook shellcheck-py to check syntax of shell scripts
...
https://github.com/shellcheck-py/shellcheck-py
https://www.shellcheck.net/
https://github.com/koalaman/shellcheck
Remove bash/shell checking from the Super-Linter
2024-09-22 10:18:21 +10:00
John Bampton
6d749e92ed
Add pre-commit hook actionlint
...
Validate GitHub Actions with pre-commit.
Remove the Super-Linter GitHub Actions check.
It is more useful to run "actionlint" with pre-commit
since the hooks run on our local machines on git commit.
We also run pre-commit on GitHub.
Whereas the Super-Linter tests only run on GitHub.
https://github.com/rhysd/actionlint/blob/main/docs/usage.md#pre-commit
2024-09-22 08:51:42 +10:00
Yukihiro "Matz" Matsumoto
bd668e4c9d
readfloat.c: new implementation of mrb_read_float(); ref #6187
...
The new version gives more accurate values for decimal number
representation that are not divisible in binary representations, for
example `0.3`.
The function uses `long double` for precision. Please report if `long
double` causes problems on any platform (especially microcontrollers).
Ref #6182
2024-09-21 02:47:42 +09:00
Yukihiro "Matz" Matsumoto
c162f8f709
Merge pull request #6356 from dearblue/get-args-splat
2024-09-21 00:03:38 +09:00
dearblue
cf23861166
Making splat argument objects invisible from Ruby side
...
The `mrb_get_argv()` function and the `*` specifier of `mrb_get_args()` get the address of the argument.
At this time, if it is passed in the form of a splat argument, it will be an address to an element of an array object.
After getting the pointer to the array object, the caller may call `mrb_vm_exec()` directly or indirectly.
At this time, a splat argument with the class set can be retrieved as an array object by searching with `ObjectSpace.each_object`.
If changes are made as array objects, addresses on the heap as arrays may become invalid, or objects in the array may be recycled by the GC.
When the caller references the changed address in a subsequent operation, use-after-free is established.
This patch assigns `NULL` as the class of the array object so that it cannot be detected by `ObjectSpace.each_object` from the Ruby side.
2024-09-19 23:13:18 +09:00
Yukihiro "Matz" Matsumoto
f6caf0d788
mruby-bigint (mrb_init_set_str): reduce mpz_t allocations
2024-09-19 20:52:11 +09:00
Yukihiro "Matz" Matsumoto
e3ff54fda3
vm.c (mrb_vm_exec): unify declaration and initialization of variables
2024-09-18 22:32:35 +09:00
Yukihiro "Matz" Matsumoto
d1d010a03a
array.c (mrb_ary_delete): array index should be mrb_int
2024-09-17 12:07:39 +09:00
Yukihiro "Matz" Matsumoto
ba8ee7b895
mruby-socket (inet_pton): need to initialize loop variable
2024-09-17 12:05:46 +09:00
Yukihiro "Matz" Matsumoto
4b500eb971
Merge pull request #6340 from dearblue/array-cmp
2024-09-17 11:29:41 +09:00
Yukihiro "Matz" Matsumoto
b8a6752570
Merge pull request #6354 from dabroz/dabroz-patch-1
2024-09-17 11:00:49 +09:00
Tomasz Pędraszewski
78ee1529d6
Update AUTHORS
2024-09-17 00:01:02 +02:00
Yukihiro "Matz" Matsumoto
de6955b1b0
vm.c (mrb_vm_run): merge declaration and initialization
2024-09-16 17:50:13 +09:00
Yukihiro "Matz" Matsumoto
fddc7650ca
numeric.c (int_ceil): should rename mrb_bint_add_d to mrb_bint_add_n
2024-09-15 04:00:52 +09:00
Yukihiro "Matz" Matsumoto
afefb5261b
mruby-rational (rat_sub_b): avoid normalization of big integers
2024-09-15 03:04:32 +09:00
Yukihiro "Matz" Matsumoto
bdbf8536a7
mruby-bigint: rename add_d and sub_d to add_n and sub_n respectively
...
`_n` suffix represents `no_normalize`.
2024-09-15 03:02:41 +09:00
Yukihiro "Matz" Matsumoto
50225acec4
mruby-rational (rat_mul_b): should not normalize multiplication results
2024-09-15 02:50:57 +09:00
Yukihiro "Matz" Matsumoto
3ce96e5c4d
Merge pull request #6353 from dearblue/array-delete
2024-09-14 06:11:54 +09:00
dearblue
0955539cf9
Fix use-after-free in mrb_ary_delete()
...
`mrb_equal()` may call `obj.==` method internally.
Therefore, using an unupdated pointer and length after `mrb_equal()` could result in a read/write to an invalid address.
Fresh properties must always be obtained regardless of the result of `mrb_equal()`.
Also, `ary_modify()` must be called each time before writing.
ref. #6339
2024-09-13 21:44:56 +09:00
Yukihiro "Matz" Matsumoto
6e44c0bc91
vm.c (argnum_error): merge declaration and initialization
2024-09-13 07:27:17 +09:00
Yukihiro "Matz" Matsumoto
704ad87150
Merge pull request #6338 from dearblue/proc-align
2024-09-12 06:43:42 +09:00
Yukihiro "Matz" Matsumoto
ee9b1381ec
Merge pull request #6347 from leviongit/fixes/yield-kw-codegen
...
codegen.c,parse.y: remove flattening of `yield` arguments; fix #6346
2024-09-12 06:39:27 +09:00
Yukihiro "Matz" Matsumoto
413b005801
Merge pull request #6349 from dearblue/dir-test
2024-09-11 07:12:31 +09:00
Yukihiro "Matz" Matsumoto
a38dd0c988
Merge pull request #6350 from dearblue/io-filepath
2024-09-11 07:10:45 +09:00
Yukihiro "Matz" Matsumoto
9aee23b056
Merge pull request #6351 from dearblue/io-arena
2024-09-11 07:09:11 +09:00
Yukihiro "Matz" Matsumoto
06db87e758
Merge pull request #6348 from dearblue/warnings
2024-09-10 22:11:14 +09:00
dearblue
9cb42438e1
Remove unnecessary mrb_gc_arena_restore()
...
When a function defined as a method returns, there is no need to call `mrb_gc_arena_restore()` immediately before it.
2024-09-10 21:45:44 +09:00
dearblue
33cf729a39
Fixed character encoding conversion function mismatch
2024-09-10 21:34:05 +09:00
dearblue
3aa9a5ee68
Perform GC before deleting directories
...
In some environments, the test will fail because the directory in use cannot be deleted.
This problem was encountered when building 32-bit binary with mingw32 on FreeBSD and running on wine.
2024-09-10 21:17:10 +09:00
dearblue
8b495cdfda
Cancel the warning disablement
...
Suppress warnings for 0-length sequences is not required.
By commit f1a02dff58 , it was introduced.
By commit 24939723d7 , pseudo-variable length arrays are now used and the warning suppression is no longer needed.
By commit e8841fbf58 , moved the intervening code.
2024-09-10 21:07:43 +09:00
Yukihiro "Matz" Matsumoto
da4cfbf89c
mruby-array-ext: add a new method Array#fetch_values
2024-09-10 10:22:34 +09:00
leviongit
87801ed5f1
codegen.c,parse.y: remove flattening of yield arguments; fix #6346
...
this commit changes the parse tree of the `yield` node, allowing for
proper keyword argument generation
2024-09-09 10:06:31 +02:00
Yukihiro "Matz" Matsumoto
0972c84773
array.c (mrb_ary_delete): protect return value; fix #6339
...
The C local variable is not protected from GC, so we use the function
mrb_gc_protect() to keep the value. We also keep the arena position by
mrb_gc_arena_save(), then restoring the position for every new return
value, to minimize arena size.
Small cosmetic changes (pre-increment to post-increment) are also made
in this commit.
2024-09-09 14:57:32 +09:00
Yukihiro "Matz" Matsumoto
1c4514964e
AUTHORS: update entries [ci skip]
2024-09-09 09:55:30 +09:00
Yukihiro "Matz" Matsumoto
2d871fb1ef
vm.c (catch_handler_find): merge declaration and initialization
2024-09-09 07:10:50 +09:00
Yukihiro "Matz" Matsumoto
a3aff8f437
vm.c (mrb_yield_cont): merge declaration and initialization
2024-09-07 08:36:02 +09:00
Yukihiro "Matz" Matsumoto
1f9fa06119
array.c: no need to assert if blk is a Proc; ref #6344
...
Since `blk` always comes from `mrb_get_args`, it should always be either
`nil` or a Proc.
2024-09-05 15:26:09 +09:00
Yukihiro "Matz" Matsumoto
3ca3849f54
Merge pull request #6344 from leviongit/array/yield
2024-09-05 15:23:01 +09:00
leviongit
020cfa9283
prefer using mrb_yield to call block arguments
2024-09-04 20:44:51 +02:00
Yukihiro "Matz" Matsumoto
4671459e73
Merge pull request #6343 from mruby/dependabot/bundler/yard-0.9.37
2024-09-05 00:10:42 +09:00
dependabot[bot]
c3615be2ac
build(deps): bump yard from 0.9.36 to 0.9.37
...
Bumps [yard](https://github.com/lsegal/yard ) from 0.9.36 to 0.9.37.
- [Release notes](https://github.com/lsegal/yard/releases )
- [Changelog](https://github.com/lsegal/yard/blob/main/CHANGELOG.md )
- [Commits](https://github.com/lsegal/yard/compare/v0.9.36...v0.9.37 )
---
updated-dependencies:
- dependency-name: yard
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-09-04 14:52:41 +00:00
Yukihiro "Matz" Matsumoto
649162624f
Merge pull request #6341 from dearblue/restore-arena
2024-09-04 09:39:41 +09:00
dearblue
e476d9a344
Need to restore the GC arena after some function calls
...
When calling `mrb_equal()` or `mrb_funcall()` family functions, the GC arena should be restored if the loop is repeated by a non-immediate return value.
In my opinion, restoring the GC arena is unnecessary when a non-immediate (true) value causes the function to return (e.g. the `mrb_ary_index_m()` function).
The patch does not take into account the case of recursive calls and may be incomplete.
2024-09-03 21:29:06 +09:00
dearblue
29496c9931
Fix use-after-free for Array#<=>
...
The `mrb_ary_cmp()` function calls `mrb_cmp()` for comparison, but `mrb_cmp()` may call the `obj.<=>` method internally.
If a user-defined `<=>` method is called and the array object under comparison is expanded or reduced, a reference to an invalid address may subsequently be made.
2024-09-03 21:25:31 +09:00
Yukihiro "Matz" Matsumoto
1d12097bae
mruby-io (mrb_file__gethome): allow avoiding getpwnam(3); ref #5358
...
You have to define `MRB_IO_NO_PWNAM` to skip calling getpwname(3).
2024-09-03 15:27:29 +09:00
Yukihiro "Matz" Matsumoto
96cf9ba230
vm.c (mrb_yield_with_class): merge declaration and initialization
2024-09-03 11:58:20 +09:00
Yukihiro "Matz" Matsumoto
4062069679
gc.c (gc_arena_keep): revert 2 commits regarding arena allocation; #6329
...
We assumed there's no need for gc_arena_keep() when MRB_GC_FIXED_ARENA
is set. But it turned out that gc_protect() still can cause use-after-free
with fixed arena.
Revert "gc.c (gc_protect): should not call gc_arena_keep twice from allocation"
This reverts commit 28ece4ed8b .
Revert "gc.c (gc_arena_keep): reorganized for MRB_GC_FIXED_ARENA; ref #6329 "
This reverts commit 33dd623a02 .
2024-09-02 23:00:09 +09:00
Yukihiro "Matz" Matsumoto
6c4dbe8584
vm.c (eval_under): unify declaration and initialization of variables
2024-09-02 11:52:32 +09:00
Yukihiro "Matz" Matsumoto
f2d9995984
Merge pull request #6332 from dearblue/mruby-compiler
2024-09-01 22:45:07 +09:00
Yukihiro "Matz" Matsumoto
472f699ee6
vm.c (mrb_f_send): unify declaration and initialization of variables
2024-09-01 22:29:46 +09:00
dearblue
42513d61fd
Need to place static proc objects into 8-byte alignments
...
Static proc objects defined as methods may be placed in 4-byte alignments in 32-bit environments.
This may be misinterpreted as an immediate value depending on the address.
Since C11 and C++11 have additional language features for byte alignment, corresponding compilers use them to define the `mrb_alignas()` macro.
For earlier compilers, they use their own extensions to define the `mrb_alignas()` macro.
GCC supports `__attribute__((aligned(alignment)))` since at least version 2.95.3 (1999).
https://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_4.html#IDX305
According to GPT-4, support was added in version 2.7 (1995).
It is not known which version of Visual C++ added support for `__declspec(align(n))`.
According to GPT-4, at least Visual C++ 6.0 (1998) seems to support it.
Also, the documentation of past Intel C/C++ compilers that support `__declspec(align(n))` makes reference to support with Visual C++ 4.2 (1996).
https://www.intel.com/content/dam/www/public/ijkk/jp/ja/documents/developer/ccomp40j.pdf
2024-09-01 20:28:34 +09:00
Yukihiro "Matz" Matsumoto
56c3d748fb
Merge pull request #6335 from dearblue/OP_RETURN
2024-08-30 10:53:58 +09:00
Yukihiro "Matz" Matsumoto
fa62129fdc
Merge pull request #6337 from mruby/dependabot/github_actions/super-linter/super-linter-7.1.0
2024-08-29 09:55:03 +09:00
dependabot[bot]
45bb0973fd
build(deps): bump super-linter/super-linter from 7.0.0 to 7.1.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v7.0.0...v7.1.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-28 14:08:55 +00:00
Yukihiro "Matz" Matsumoto
6de3009606
Merge pull request #6328 from dearblue/env-obj_free
2024-08-28 16:40:04 +09:00
Yukihiro "Matz" Matsumoto
4a71d4604e
mruby-rational: add typecast to check if a value is fit in mrb_int
2024-08-27 22:48:40 +09:00
Yukihiro "Matz" Matsumoto
540d976f7f
array.c (sort_cmp): mrb_cmp() may return -2 for errors
2024-08-27 22:36:24 +09:00
dearblue
7ec5d47a91
Add return_ci in CHECKPOINT_MAIN() of OP_RETURN
...
For role clarity, distinguish between `ci` and `return_ci`.
2024-08-27 21:39:09 +09:00
Yukihiro "Matz" Matsumoto
28ece4ed8b
gc.c (gc_protect): should not call gc_arena_keep twice from allocation
2024-08-27 11:03:14 +09:00
Yukihiro "Matz" Matsumoto
ef5ae1c629
Merge pull request #6333 from dearblue/heap_p
2024-08-26 05:49:49 +09:00
Yukihiro "Matz" Matsumoto
33dd623a02
gc.c (gc_arena_keep): reorganized for MRB_GC_FIXED_ARENA; ref #6329
2024-08-26 05:47:28 +09:00
Yukihiro "Matz" Matsumoto
1a322449aa
Merge pull request #6331 from dearblue/test-gcarena
2024-08-26 05:47:48 +09:00
Yukihiro "Matz" Matsumoto
b9c93673f9
Merge pull request #6329 from dearblue/mrb_obj_alloc
2024-08-26 05:40:12 +09:00
Yukihiro "Matz" Matsumoto
325c918464
class.c: use mrb_unboxed_type where obj is not immediate for sure
2024-08-26 05:33:19 +09:00
dearblue
98fdfe1037
Reduce the number of branch instructions in the heap_p()
...
As far as `gcc -S` for several CPU architectures has confirmed, it reduces the number of branch instructions by one.
2024-08-25 20:35:41 +09:00
dearblue
cfe410f466
Must not depend on the “host” build to generate mruby-compiler/core/y.tab.c
...
“mruby-compiler” should be able to generate `y.tab.c` files through a separate build configuration if it is not added to the ‘host’ build.
In the example above, the “host/mrbc” build should generate the `y.tab.c` file.
2024-08-25 11:17:56 +09:00
dearblue
79d7ac5f7e
Restore the GC arena with tests.
...
This was the unintentional catalyst for finding the problem in #6329 , but it is preferable to add a test if necessary.
2024-08-25 11:08:40 +09:00
dearblue
1c5839fb01
Fix use-after-free in mrb_obj_alloc()
...
When GC occurs during the expansion of the GC arena by `gc_protect()` in `mrb_obj_alloc()`, the object page just allocated by `add_heap()` is released.
Therefore, as soon as control returns from `gc_protect()`, there is a possibility of illegal writing or reading to the address just released.
This issue was discovered during the investigation of #6326 .
2024-08-25 10:55:15 +09:00
Yukihiro "Matz" Matsumoto
a2db222422
Merge pull request #6330 from dearblue/mrb_env_unshare
2024-08-24 21:47:44 +09:00
dearblue
13571402d2
Add a precondition to call mrb_env_unshare().
...
The following assertions can be added to omit the `if` block
- env object must be non-null
- env object must be in a shared state with the stack
The current caller is believed to satisfy the condition.
2024-08-24 17:30:54 +09:00
dearblue
22b1ac9070
Fix use-after-free in obj_free() for env objects
...
A reference to an invalid address might occur in `is_dead()` of `obj_free()` called from `incremental_sweep_phase()`.
This would happen if the heap page was freed ahead of time in the same `incremental_sweep_phase()`.
fixed #6326
2024-08-24 16:46:27 +09:00
Yukihiro "Matz" Matsumoto
204b81c563
mruby-bin-mirb: fix the issue on macOS; #6327
2024-08-24 07:13:45 +09:00
Yukihiro "Matz" Matsumoto
7ba95e2f5e
Merge pull request #6327 from juchem/master
2024-08-23 22:33:44 +09:00
Yukihiro "Matz" Matsumoto
f35000f2a9
array.c (sort_cmp): comparing objects may be freed by GC; #6326
...
If comparing function (block or `<=>`) modifies the sorting array and GC
happens after the modification, objects passed to comparison may be
freed by GC.
2024-08-23 22:29:45 +09:00
Marcelo Juchem
a6eb3e5c27
fix ncurses linking issues
...
The build configuration for `mruby` assumes only the `ncurses` library
needs to be linked because `tinfo` is implicitly pulled in.
In environments where ncurses is available only as a static library,
`tinfo` needs to be linked explicitly (needed for functions like
`tputs`.
This patch fixes that by linking `tinfo` if available.
It also fixes the build for environments where only the `ncursesw`
version of the library (including wide character support) is present,
while still giving preference to the `ncurses` version (without wide
character support).
2024-08-22 14:11:48 -05:00
Yukihiro "Matz" Matsumoto
58c70834d9
array.c (srot_cmp): need modify check after mrb_cmp as well; #6326
...
mrb_cmp() may also modify the sorting array internally.
2024-08-22 07:49:16 +09:00
Yukihiro "Matz" Matsumoto
4ea6d74d83
mruby-rational: introduce the constants ONE and ZERO
2024-08-21 18:38:51 +09:00
Yukihiro "Matz" Matsumoto
752ebe6b7f
array.c (mrb_ary_sort_bang): check if array is modified in blocks
...
This address at least part of #6326 . CRuby copied the array internally,
but mruby avoid copying to reserve memory.
2024-08-21 18:31:46 +09:00
Yukihiro "Matz" Matsumoto
4b9f567821
vm.c (exec_irep): unify declaration and initialization
2024-08-20 12:49:45 +09:00
Yukihiro "Matz" Matsumoto
98440e095f
vm.c (mrb_ci_nregs): unify declaration and initialization
2024-08-20 10:39:12 +09:00
Yukihiro "Matz" Matsumoto
166262243a
benchmark/bm_so_mandelbrot.rb: add new benchmark
2024-08-18 23:11:29 +09:00
Yukihiro "Matz" Matsumoto
39b9a1a06a
mruby-rational (rational_new): fix compilation condition
2024-08-17 16:29:51 +09:00
Yukihiro "Matz" Matsumoto
44908e5cba
mruby-rational: support bigint numerators & denominators
2024-08-16 15:12:03 +09:00
Yukihiro "Matz" Matsumoto
92f476d8fa
mruby-bigint (mpz_set): trim destination mpz_t
2024-08-16 07:32:05 +09:00
Yukihiro "Matz" Matsumoto
479259b4e1
Merge pull request #6324 from dearblue/localjump_error
2024-08-16 06:22:32 +09:00
Yukihiro "Matz" Matsumoto
b202d00219
Merge pull request #6325 from mruby/dependabot/github_actions/super-linter/super-linter-7.0.0
2024-08-16 06:19:16 +09:00
dependabot[bot]
f3b24009e6
build(deps): bump super-linter/super-linter from 6.9.0 to 7.0.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.9.0 to 7.0.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.9.0...v7.0.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-15 14:34:20 +00:00
Yukihiro "Matz" Matsumoto
a4225709ef
Merge pull request #6323 from mruby/dependabot/github_actions/super-linter/super-linter-6.9.0
2024-08-15 12:15:17 +09:00
dearblue
9d0617f27b
Remove localjump_error()
...
Suppress heap allocation for strings.
2024-08-15 10:27:53 +09:00
Yukihiro "Matz" Matsumoto
dfe2dbcde6
class.c (init_copy): need to copy float numbers in some cases
...
If `MRB_BOXING_WORD` and `MRB_WORDBOXING_NO_FLOAT_TRANCATE` is defined,
float numbers are packed in the heap object. We need to copy them
explicitly.
2024-08-15 09:57:56 +09:00
dependabot[bot]
eb6d7afd7e
build(deps): bump super-linter/super-linter from 6.8.0 to 6.9.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.8.0 to 6.9.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.8.0...v6.9.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-14 14:56:30 +00:00
Yukihiro "Matz" Matsumoto
e9c4486e27
mruby-bigint: add fast path to mrb_bint_mul() & mrb_bint_div()
2024-08-14 22:36:47 +09:00
Yukihiro "Matz" Matsumoto
16f5000794
Merge pull request #6320 from dearblue/OP_BREAK
2024-08-14 18:02:34 +09:00
Yukihiro "Matz" Matsumoto
6e5a493ff3
mruby-bigint (mrb_bint_new_float): add fast path for FIXABLE_FLOAT
2024-08-14 16:11:27 +09:00
Yukihiro "Matz" Matsumoto
92302df49d
Merge pull request #6322 from hoshiumiarata/fix_mrb_ro_data_p
2024-08-13 17:50:35 +09:00
Hoshiumi Arata
da54da1923
Fix mrb_ro_data_p on Intel Mac
2024-08-13 17:27:08 +09:00
Yukihiro "Matz" Matsumoto
1e503f902d
Merge pull request #6321 from dearblue/lib-warnings
2024-08-13 11:48:21 +09:00
Yukihiro "Matz" Matsumoto
c853dc4090
vm.c (funcall): move va_list declaration right before va_start()
2024-08-12 22:57:05 +09:00
dearblue
79f4a67268
Avoid warnings in lib/**/*.rb
...
```console
% find -s lib -type f -name '*.rb' -exec ruby -cw {} \;
lib/mruby/build/command.rb:320: warning: `+' after local variable or literal is interpreted as binary operator
lib/mruby/build/command.rb:320: warning: even though it seems like unary operator
Syntax OK
Syntax OK
Syntax OK
Syntax OK
Syntax OK
lib/mruby/gem.rb:469: warning: `&' interpreted as argument prefix
Syntax OK
Syntax OK
Syntax OK
Syntax OK
```
2024-08-12 21:06:31 +09:00
dearblue
682583a609
Shrinking the code in OP_BREAK and OP_RETURN_BLK
...
- Can refer directly to `proc->e.env` after `MRB_PROC_ENV_P()`.
- Can omit `MRB_ENV_ONSTACK_P()` since `mrb->c` is never NULL and can be directly compared to `env->cxt`.
- Can avoid `goto` by putting the code block that raises the `LocalJumpError` at the end.
2024-08-12 20:54:55 +09:00
Yukihiro "Matz" Matsumoto
22eb7e87af
vm.c (uvenv): move declaration to initialization
2024-08-11 23:45:40 +09:00
Yukihiro "Matz" Matsumoto
7ca60a0964
vm.c (stack_extend_alloc): move variable declaration to initialization
2024-08-10 21:57:51 +09:00
Yukihiro "Matz" Matsumoto
56a82009aa
Revert "The lex_state after literals should be EXPR_ENDARG."; fix #6298
...
This reverts commit e98823f189 .
2024-08-10 19:17:49 +09:00
Yukihiro "Matz" Matsumoto
a267dfd76b
vm.c (OP_CLASS,OP_MODULE): combine declarations with initializers
2024-08-08 06:11:52 +09:00
Yukihiro "Matz" Matsumoto
22ec76f46c
vm.c (OP_RANGE_INC): remove unnecessary local variable
2024-08-08 06:10:35 +09:00
Yukihiro "Matz" Matsumoto
320c757186
Merge pull request #6318 from dearblue/shrink-vm-vars
...
Shrink variables in `mrb_vm_exec()`
2024-08-06 12:21:36 +09:00
Yukihiro "Matz" Matsumoto
aad2aacf25
range.c (mrb_get_values_at): support bigint too
2024-08-05 16:35:41 +09:00
Yukihiro "Matz" Matsumoto
6da2e60edc
mruby-bigint (mpz_get_str): avoid malloc when base is a power of 2
2024-08-05 10:43:47 +09:00
Yukihiro "Matz" Matsumoto
0e6ef15b0f
AUTHORS: update entries [ci skip]
2024-08-04 23:19:25 +09:00
Yukihiro "Matz" Matsumoto
e8bb03da40
numeric.rb (step): iterate over integers even if end is a float
...
It used to check all `start`, `end` and `step`. If either of them are
float number, `#step` iterated over float number. Now we don't check the
type of `end` argument.
2024-08-03 13:35:09 +09:00
Yukihiro "Matz" Matsumoto
6d6e26661d
gc.c: remove unnecessary argument from add_gray_list()
2024-08-02 21:14:58 +09:00
Yukihiro "Matz" Matsumoto
3324773f56
gc.c (mrb_gc_register): protect obj from GC during execution
...
Because `mrb_ary_new()` and `mrb_ary_push()` can cause GC; fix #6317
2024-08-02 04:52:11 +09:00
Yukihiro "Matz" Matsumoto
16fe4b2701
Merge pull request #6319 from mruby/dependabot/github_actions/super-linter/super-linter-6.8.0
2024-08-02 04:47:42 +09:00
dependabot[bot]
7db4cfd5cd
build(deps): bump super-linter/super-linter from 6.7.0 to 6.8.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.7.0 to 6.8.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.7.0...v6.8.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-01 14:32:11 +00:00
Yukihiro "Matz" Matsumoto
aa06432776
mruby-array-ext: index should be within mrb_int range
...
Type check is done by `__to_int` method.
2024-08-01 07:34:20 +09:00
dearblue
822e3fdfd7
Remove pool and syms variables in mrb_vm_exec()
...
Can be referenced by traversing through the `irep` pointer.
2024-07-31 22:27:04 +09:00
dearblue
f2a139a616
Avoid assignments to pc and proc parameters in mrb_vm_exec()
...
Introduce the `ci` variable instead and refer to it indirectly.
2024-07-31 22:27:04 +09:00
Yukihiro "Matz" Matsumoto
a668e6d81e
Merge pull request #6310 from dearblue/ci-extend
2024-07-31 11:09:23 +09:00
Yukihiro "Matz" Matsumoto
eca59ad9ac
Merge pull request #6312 from dearblue/OP_RETURN
2024-07-30 12:04:01 +09:00
Yukihiro "Matz" Matsumoto
3c5baac5c5
mruby-sprintf: fix a bug with negative octals
...
Leading octal digit may be 1, 3, 7 unlike binary or hexadecimal.
2024-07-30 11:33:18 +09:00
Yukihiro "Matz" Matsumoto
ab95e042ca
mruby-bigint (mrb_bint_xor): add fast path with fixnums
2024-07-29 16:44:54 +09:00
Yukihiro "Matz" Matsumoto
b706c89c41
mruby-bigint (mrb_bint_2comp): fix assertion
2024-07-29 16:44:54 +09:00
Yukihiro "Matz" Matsumoto
bf7f14341d
mruby-bigint (mrb_bint_or): add fast path with fixnums
2024-07-29 15:47:19 +09:00
Yukihiro "Matz" Matsumoto
dcf7adeeb7
mruby-bigint: use zero_p()
2024-07-29 15:43:22 +09:00
Yukihiro "Matz" Matsumoto
196c2bd0b9
mruby-bigint (mrb_bint_add): add type cast to stop warnings in C++
2024-07-28 23:29:54 +09:00
Yukihiro "Matz" Matsumoto
081cd0627f
mruby-bigint (mrb_bint_hash): need to get hash from all digits
2024-07-27 18:54:50 +09:00
Yukihiro "Matz" Matsumoto
203a89a3f2
mruby-bigint (zero_p): define a new predicate to check if mpz_t is 0
2024-07-27 18:54:50 +09:00
Yukihiro "Matz" Matsumoto
234a2b10fb
mruby-bigint (mpz_neg): no need to check x != y
2024-07-27 18:54:50 +09:00
Yukihiro "Matz" Matsumoto
811637e99f
mruby-bigint (mrb_bint_2comp): inline mpz_2comp
2024-07-27 18:54:49 +09:00
Yukihiro "Matz" Matsumoto
c218894af9
mruby-bigint: use mp_limb instead of uint32_t
...
Because mp_limb may be uint16_t on some platforms.
2024-07-27 18:54:48 +09:00
Yukihiro "Matz" Matsumoto
a50a2ce148
.gitingore: add entries (.cache, gmon.out, perf.data)
2024-07-27 18:53:55 +09:00
Yukihiro "Matz" Matsumoto
2247e4f355
mruby-bigint (mpz_xor): simplify the code
2024-07-27 18:53:36 +09:00
Yukihiro "Matz" Matsumoto
b573a8430f
mruby-bigint (mpz_or): simplify the code
2024-07-27 18:50:09 +09:00
Yukihiro "Matz" Matsumoto
dea1cc18a6
mruby-bigint (mpz_and): simplify the code
2024-07-27 18:48:01 +09:00
Yukihiro "Matz" Matsumoto
bf081c3d3d
mruby-bigint (mrb_bint_and): further optimization for bint & int
2024-07-25 17:46:36 +09:00
Yukihiro "Matz" Matsumoto
99c078bb6b
mruby-bigint (mrb_bint_2comp): simplify using mpz_2comp()
2024-07-25 16:18:49 +09:00
Yukihiro "Matz" Matsumoto
3d69412ea5
mruby-bigint: Distinguish uzero_p(x) and x->sn == 0
...
The latter is a check for integers that have been set up (and disclosed to the
outer world), while the former is a check for integers that are being worked on.
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
93653dfd4c
mruby-bigint (uzero_p): add fast path
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
4ee7c8e021
mruby-bigint: rename uzero to uzero_p
...
Since uzero() is a predicate, and zero() is a function to assign zero to
mpz_t, it's confusion. Rename predicate uzero() to uzero_p() to follow
mruby naming convention.
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
88536ebe30
mruby-bigint (mpz_xor): support bit-wise xor with negative numbers; #6314
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
ee2eb6c87e
mruby-bigint (mpz_or): support bit-wise or with negative numbers; #6314
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
69a80c94b9
mruby-bigint (mpz_and): support bit-wise and with negative numbers
...
Negative integers are virtually considered as 2's compliment of the
absolute value of the corresponding number. It means `-1` is considered
as infinite sequence of `1` toward msb side. ref #6314
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
e3a459d5b9
mruby-bigint (mrb_bint_and): optimize bint & fixnum operation; ref #6314
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
c16aba9280
mruby-bigint: remove special handling of Float in bitwise operations
...
CRuby raises TypeError with float numbers as operands; ref #6314
2024-07-25 16:18:47 +09:00
Yukihiro "Matz" Matsumoto
81a9eef591
Merge pull request #6313 from hoshiumiarata/fix_typo_in_opcode_doc
2024-07-24 12:28:52 +09:00
Yukihiro "Matz" Matsumoto
b4ffddebdf
Merge pull request #6314 from hoshiumiarata/optimize_int_even
2024-07-24 08:11:43 +09:00
Hoshiumi Arata
612941dcbc
Add test code for even?/odd?
2024-07-23 21:09:17 +09:00
Hoshiumi Arata
80502b30fb
Optimize even?/odd? for big integers
2024-07-23 21:05:10 +09:00
Hoshiumi Arata
35571df7ea
Update opcode.md: fix wrong column number
2024-07-23 20:25:22 +09:00
Yukihiro "Matz" Matsumoto
bb4a8c2410
Merge pull request #6311 from dearblue/OP_SEND
2024-07-23 11:04:20 +09:00
Yukihiro "Matz" Matsumoto
6a03647fc0
Merge pull request #6309 from dearblue/mrb_type
2024-07-23 07:26:04 +09:00
Yukihiro "Matz" Matsumoto
d2878138d9
mruby-numeric-ext: implement Integer#even? and Integer#odd?
2024-07-23 07:23:13 +09:00
Yukihiro "Matz" Matsumoto
9d709164dc
Merge pull request #6308 from dearblue/vm-catch
2024-07-22 16:29:56 +09:00
Yukihiro "Matz" Matsumoto
f3b570f33a
mruby-enumerator: add test for Enumerable#chunk_while
2024-07-22 13:52:12 +09:00
dearblue
e93226f402
Doubling the call stack when extending it
...
Previously it was "approximately double".
2024-07-21 21:58:18 +09:00
dearblue
748af76ed2
Omit error checking at OP_RETURN, OP_RETURN_BLK and OP_BREAK
...
Clearing errors at the beginning of `mrb_vm_exec()` essentially keeps the mruby VM in a non-error state.
For consistency, functions such as `mrb_funcall()` check for errors when control returns from a C function as a method.
In the case of a tail call, it should return to `mrb_vm_exec()` afterwards, so error checking is performed there.
Instructions issued while `mrb->exc` is non-null should be limited to `OP_EXCEPT`, the jump target of the catch handler table.
2024-07-21 21:58:18 +09:00
dearblue
ce847c1aa9
Added fast-path for positional arguments less than 15 in OP_SEND
2024-07-21 21:58:18 +09:00
dearblue
e76bebe836
Perform pseudo binary search with mrb_type()
2024-07-21 21:58:18 +09:00
dearblue
45007888f5
Assume that MRB_CATCH() has mrb->exc set
...
The caller of `MRB_EXC_THROW()` must be preconfigured.
2024-07-21 21:58:18 +09:00
Yukihiro "Matz" Matsumoto
dcbe2e3eb3
mruby-enumerator: add Enumerable#chunk_while
2024-07-21 20:29:27 +09:00
Yukihiro "Matz" Matsumoto
7d8fc3b35f
Merge pull request #6305 from dearblue/method_missing
...
Protect keyword arguments in `prepare_missing()`
2024-07-20 22:04:50 +09:00
dearblue
890dda79d0
Protect keyword arguments in prepare_missing()
...
Previously, keyword arguments were lost if no positional arguments were passed.
Fixed #6304
2024-07-20 16:25:11 +09:00
Yukihiro "Matz" Matsumoto
3ec6038505
Merge pull request #6299 from mruby/dependabot/github_actions/super-linter/super-linter-6.7.0
...
build(deps): bump super-linter/super-linter from 6.6.0 to 6.7.0
2024-07-20 15:25:20 +09:00
dependabot[bot]
6c4ea4cd10
build(deps): bump super-linter/super-linter from 6.6.0 to 6.7.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.6.0 to 6.7.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.6.0...v6.7.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-07-20 06:16:03 +00:00
Yukihiro "Matz" Matsumoto
9326c514c5
mruby-enum-ext: add Enumerable#each_entry test
2024-07-20 14:20:15 +09:00
Pete Kinnecom
509590c18d
Method missing kwargs test failure:
...
Fail: Method#call with undefined method -- only kwargs (mrbgems: mruby-method)
- Assertion[6]
NoMethodError exception expected, not
Class: <TypeError>
Message: <Array cannot be converted to Hash>
- Assertion[9]
Expected: {:kwarg1=>:val1, :kwarg2=>:val2}
Actual: [:foo]
2024-07-19 20:37:40 +00:00
Yukihiro "Matz" Matsumoto
c539256b43
mruby-enum-ext: add Enumerable#each_entry
2024-07-19 23:29:45 +09:00
Yukihiro "Matz" Matsumoto
313c5a31ac
test/hash.rb: add tests for Hash#assoc and Hash#rassoc
2024-07-18 15:09:49 +09:00
Yukihiro "Matz" Matsumoto
398e669bbf
hash.c: add Hash#assoc and Hash#rassoc
2024-07-18 15:06:31 +09:00
Yukihiro "Matz" Matsumoto
1fc8c20723
Merge pull request #6303 from hasumikin/fix/return-value-of-String_aset
...
mrb_str_aset_m() should return replace instead of str
2024-07-17 09:49:34 +09:00
Yukihiro "Matz" Matsumoto
cd8582a011
hash.c: define Hash#to_hash
2024-07-17 09:46:46 +09:00
Yukihiro "Matz" Matsumoto
45078d9a49
mruby-string-ext: fixed typo (casecmp! -> casecmp?)
2024-07-17 02:25:49 +09:00
HASUMI Hitoshi
cc16afb7f3
mrb_str_aset_m() should return replace instead of str
...
`string[]=(idx, replace)` should return `replace`.
## Actual (wrong)
```
string.[]=(idx, replace) → string
string.[]=(idx, len, replace) → string
```
## Expected
```
string.[]=(idx, replace) → replace
string.[]=(idx, len, replace) → replace
```
## Sidenote
As of the current mruby-compiler, `(string[idx] = 'X')` creates not only "CALL_NODE" but also "ASGN_NODE" and "OP_MOVE", overriding the wrong return value.
On the other hand, `string.[]=(idx, 'X')` creates only "CALL_NODE", exposing the wrong return value.
If my new mruby-compiler2, leveraging Prism, took the place of official compiler, `(string[idx] = 'X')` and `string.[]=(idx, 'X')` would be going to generate the same VM code without "OP_MOVE".
So I paranoidly added tests.
FYI: You can find how the new mruby-compiler2's AST and VM code look like in mruby/c's issue (mruby/c had the same bug): https://github.com/mrubyc/mrubyc/pull/210
2024-07-16 18:55:26 +09:00
Yukihiro "Matz" Matsumoto
ac8846dbce
numeric.c: add Numeric#fdiv
2024-07-15 22:16:52 +09:00
Yukihiro "Matz" Matsumoto
301242c822
numeric.c (int_fdiv): add Integer#fdiv and Float#fdiv
2024-07-15 22:16:52 +09:00
Yukihiro "Matz" Matsumoto
4faab0581e
Merge pull request #6302 from auroranockert/minor-mrb-str-init-cleanup
...
Minor cleanup in mrb_str_init
2024-07-15 21:38:48 +09:00
Yukihiro "Matz" Matsumoto
ca28e639c6
mruby-numeric-ext: move allbits?, anybits?, nobits? to Integer class
2024-07-15 21:35:42 +09:00
Yukihiro "Matz" Matsumoto
3f5138a6ac
mruby-numeric-ext: implement Numeric#integer? method
2024-07-15 21:35:42 +09:00
Yukihiro "Matz" Matsumoto
1a8df40392
mruby-enum-ext: add Array#sort_by! method
2024-07-15 21:35:42 +09:00
Yukihiro "Matz" Matsumoto
fcab7ef377
numeric.c (int_div): fixed a bug regarding bigint / non-integer
...
Non-integer means Complex or Rational.
2024-07-15 21:35:42 +09:00
Yukihiro "Matz" Matsumoto
bcba0bc674
Merge pull request #6300 from jbampton/fix-spelling
...
Fix spelling
2024-07-15 21:35:43 +09:00
Aurora Nockert
a871e4908f
Minor cleanup in mrb_str_init
...
mrb_str_new was essentially manually inlined here, and I think it is a bit easier to follow if we just call the function instead.
2024-07-13 15:38:14 +02:00
John Bampton
de8a6fe787
Fix spelling
2024-07-13 00:21:53 +10:00
Yukihiro "Matz" Matsumoto
c75f7587bc
mruby-numeric-ext: add call-seq reference for Integer#size
2024-07-10 14:56:13 +09:00
Yukihiro "Matz" Matsumoto
ee296f024b
mruby-numeric-ext: add Integer#size method
...
Although CRuby uses clz() for the biggest word, mruby bigint only counts
number of digit words.
2024-07-10 14:50:54 +09:00
Yukihiro "Matz" Matsumoto
a77bc25a5f
mruby-sprintf: support dots expression of negative integer format
...
For specifiers assume unsigned integers, negative numbers show dots (..)
to indicate virtual infinite 1s at the MSB side of 2's compliment.
2024-07-09 11:13:55 +09:00
Yukihiro "Matz" Matsumoto
80fec16cb6
mruby-sprintf: inline sign_bits() function
2024-07-09 10:48:07 +09:00
Yukihiro "Matz" Matsumoto
d249c2e939
mruby-sprintf: separate filling high bits and converting negatives
2024-07-09 10:40:46 +09:00
Yukihiro "Matz" Matsumoto
2488375a35
mruby-bigint (mpz_mod): move mpz_init() to avoid memory leak
2024-07-09 08:00:23 +09:00
Yukihiro "Matz" Matsumoto
0ea1549faa
mruby-sprintf: reorder functions
...
In addition, internal function `mrb_str_format()` is made `static`.
2024-07-06 08:45:19 +09:00
Yukihiro "Matz" Matsumoto
bd502f6d7b
mruby-sprintf: support Big integers for %d etc.
2024-07-04 22:51:14 +09:00
Yukihiro "Matz" Matsumoto
f1a04dae3e
mruby-enum-ext (sort_by): avoid copying the receiver
...
When the receiver is an Array.
2024-07-03 07:31:32 +09:00
Yukihiro "Matz" Matsumoto
7c7ee5c244
array.c: implement Array#delete method in C
2024-07-02 11:45:20 +09:00
Yukihiro "Matz" Matsumoto
b9cb9b9bbe
Merge pull request #6295 from dearblue/revert-6282
...
Revert "Delegate the care of a directly given block from `cipop()` to `cipush()`"
2024-07-02 11:45:13 +09:00
dearblue
ad576f1e75
Revert "Delegate the care of a directly given block from cipop() to cipush()"
...
This reverts commit ad2e626e7a .
Because of the changes made by #6282 , the following code caused a problem.
```ruby
b = proc { break "BAD!" }
p self.tap { b.call }
# (expected) => break from proc-closure (LocalJumpError)
# (after #6282 ) => "BAD!"
```
I revived the `mrb_callinfo::blk` field to fix this, but it did not overcome the following problem.
```ruby
def m(&b); b = b.clone; GC.start; b.call; end
p m { break "OK!" }
# (expected) => "OK!"
# (revived blk) => break from proc-closure (LocalJumpError)
```
2024-06-30 21:01:45 +09:00
Yukihiro "Matz" Matsumoto
73337133f7
Merge pull request #6294 from auroranockert/optimise-obj-iv-p
...
Optimise `mrb_iv_get`
2024-06-30 18:25:43 +09:00
Yukihiro "Matz" Matsumoto
72bf46de22
array.c (mrb_ary_cmp): fixed wrong type casting
2024-06-30 18:19:52 +09:00
Yukihiro "Matz" Matsumoto
eee83ed7af
array.c: implement Array#index and Array#rindex in C
...
No need to override Array#index in mruby-array-ext. We can call
`to_enum` from C implemented methods.
2024-06-29 15:03:12 +09:00
Yukihiro "Matz" Matsumoto
dd808a0be4
array.c: implement Array#<=> in C
2024-06-29 15:03:12 +09:00
Yukihiro "Matz" Matsumoto
8cffa04def
array.c: implement Array#== and Array#eql? in C
...
It seems OK to call comparison from C method from measurement.
2024-06-29 08:32:06 +09:00
Yukihiro "Matz" Matsumoto
5b8de8d616
Array.c (mrb_ary_init): implement Array#initialize in C
2024-06-28 08:56:41 +09:00
Aurora Nockert
646c37ecda
Add a fast-path for mrb_type
...
By adding a fast-path where we ignore boxed types we can gain a pretty substantial speedup of mrb_iv_get, making it about 25% faster during a standard optcarrot benchmark run.
NOTE: It is just mrb_iv_get that is that much faster, the whole benchmark seems to be about 3-5% faster with word boxing.
2024-06-27 22:46:13 +02:00
Aurora Nockert
27f972b048
Reorder mrb_vtype
...
This allows the compiler to optimise the case in obj_iv_p into a range check. There does not seem to be any other very hot uses of this index and it grants a pretty big gain on optcarrot.
2024-06-27 22:46:13 +02:00
Yukihiro "Matz" Matsumoto
f709847bde
numeric.c (cmpnum): skip mrb_as_float() if possible
2024-06-27 10:02:06 +09:00
Yukihiro "Matz" Matsumoto
5b27469d19
numeric.c (mrb_cmp): check the first argument if it's int or float
...
To avoid the cost of `mrb_type(obj1)`.
2024-06-27 09:24:34 +09:00
Yukihiro "Matz" Matsumoto
ac1e4a2d58
numeric.c (cmpnum): handle the case where both arguments are fixnum first
...
To avoid the cost of `mrb_type(v2)`.
2024-06-27 08:55:28 +09:00
Yukihiro "Matz" Matsumoto
b8f968b4a3
numeric.c (mrb_cmp): no need to check respond_to?(:<=>)
...
Because every object responds to `<=>`.
2024-06-27 08:48:11 +09:00
Yukihiro "Matz" Matsumoto
5bd63d6232
array.c: replace sort! method implementation
...
- use heap sort (O(1)) instead of merge sort (O(n)) for better space
complexity.
- method implemented in C for better performance
As a result, simple sorting now consumes far less memory and is faster.
Since it's implemented in C, fiber context switching is not allowed from
comparison, but we consider the risk is minimal (no one switches context
in the comparison, right?)
2024-06-26 11:28:56 +09:00
Yukihiro "Matz" Matsumoto
b521d0816f
numeric.c (cmpnum): restrict comparison between Numeric objects
2024-06-25 14:36:56 +09:00
Yukihiro "Matz" Matsumoto
bb2733e9a2
numeric.c (cmpnum): rafactoring
...
- separate `MRB_NO_FLOAT` case
- use `mrb_as_float()` as much as possible
2024-06-24 09:34:13 +09:00
Yukihiro "Matz" Matsumoto
a0d4c63f9a
Merge pull request #6293 from dearblue/doc/opcode.md
...
Changed the instruction table in `opcode.md`
2024-06-23 20:14:51 +09:00
dearblue
f4f3a061be
Changed the instruction table in opcode.md
...
- Added the index number corresponding to the instruction code.
- Omitted trailing `|` from table elements.
The table elements in GitHub Flavored Markdown can't wrap wherever wanted.
And trying to align the end of it tends to make the whole thing longer.
2024-06-22 23:21:43 +09:00
Yukihiro "Matz" Matsumoto
54e99197bd
Revert "tools/lrama: apply ruby/lrama#442"
...
This reverts commit fb9fbc8498 .
The fix in the upstream still causes syntax error in C++.
2024-06-22 13:34:46 +09:00
Yukihiro "Matz" Matsumoto
eab6bddffe
Merge pull request #6292 from jbampton/pre-commit-autoupdate
...
markdownlint --fix; remove prettier; pre-commit autoupdate; fix spelling
2024-06-21 14:33:44 +09:00
Yukihiro "Matz" Matsumoto
d4c65d7ab1
AUTHORS: update entries [ci skip]
2024-06-21 13:01:38 +09:00
Yukihiro "Matz" Matsumoto
c592e7b70d
string.c: small refactoring
2024-06-21 10:11:32 +09:00
Yukihiro "Matz" Matsumoto
fb9fbc8498
tools/lrama: apply ruby/lrama#442
2024-06-21 08:12:27 +09:00
John Bampton
88e2eb0188
Fix spelling
2024-06-21 08:14:17 +10:00
John Bampton
06becc3495
pre-commit autoupdate
2024-06-21 08:14:17 +10:00
John Bampton
bbb0dddc7e
Remove prettier from pre-commit
2024-06-21 08:14:17 +10:00
John Bampton
ac74c90b30
Run markdownlint --fix
2024-06-21 06:53:42 +10:00
Yukihiro "Matz" Matsumoto
73c3970ea1
numeric.c: fix spacing in a comment
2024-06-19 09:25:19 +09:00
Yukihiro "Matz" Matsumoto
b8396aec33
numeric.c (cmpnum): fix a bug in float-bigint comparison
...
Should have used bigint to float conversion.
2024-06-19 09:25:19 +09:00
Yukihiro "Matz" Matsumoto
0f2d12a005
numeric.c (cmpnum): reduce else nesting
2024-06-18 01:50:49 +09:00
Yukihiro "Matz" Matsumoto
75de002058
mruby-complex: provide Complex#<=> in Ruby
2024-06-17 08:14:27 +09:00
Yukihiro "Matz" Matsumoto
3b9aec90dd
mruby-rational: define <=> method in Ruby, not in C
2024-06-17 08:02:42 +09:00
Yukihiro "Matz" Matsumoto
36eff3ec59
mruby-rational/test: remove UserDefinedNumeric tests
...
Since they checks the behavior different from CRuby.
2024-06-17 07:57:54 +09:00
Yukihiro "Matz" Matsumoto
d1592ba9f9
numeric.c (cmpnum): use mrb_as_int() instead of mrb_integer()
2024-06-17 07:51:25 +09:00
Yukihiro "Matz" Matsumoto
b44dc1c0b9
mruby-rational: use presym for initialization
2024-06-14 06:17:20 +09:00
Yukihiro "Matz" Matsumoto
0e045a52f6
mruby-complex: use presym for initialization
2024-06-14 06:15:34 +09:00
Yukihiro "Matz" Matsumoto
921a54ef33
mruby-socket/socket.rb: done some small refactoring
2024-06-14 06:14:27 +09:00
Yukihiro "Matz" Matsumoto
39d577799f
mruby-socket: use presym for initialization
2024-06-14 06:14:07 +09:00
Yukihiro "Matz" Matsumoto
7be10097a0
mruby-io: use presym for initialization
2024-06-14 02:00:17 +09:00
Yukihiro "Matz" Matsumoto
db8d43090a
mruby-struct: use presym for initialization
2024-06-14 01:59:30 +09:00
Yukihiro "Matz" Matsumoto
8bd66a9358
mruby-data: use presym for initialization
2024-06-14 01:59:10 +09:00
Yukihiro "Matz" Matsumoto
d5fd3338a4
mruby-method: use presym for initialization
2024-06-14 01:46:22 +09:00
Yukihiro "Matz" Matsumoto
71a4e5f3ff
mruby-proc-ext: use presym for initialization
2024-06-14 01:45:58 +09:00
Yukihiro "Matz" Matsumoto
2b4591fe68
mruby-proc-binding: use presym for initialization
2024-06-14 01:45:23 +09:00
Yukihiro "Matz" Matsumoto
9fbdf78380
mruby-binding: use presym for initialization
2024-06-14 01:44:49 +09:00
Yukihiro "Matz" Matsumoto
d1e49f7121
mruby-metaprog: use presym for initialization
2024-06-14 01:43:57 +09:00
Yukihiro "Matz" Matsumoto
c32a94d878
mruby-string-ext: use presym for initialization
2024-06-14 01:43:03 +09:00
Yukihiro "Matz" Matsumoto
513908d77f
mruby-range-ext: use presym for initialization
2024-06-14 01:42:30 +09:00
Yukihiro "Matz" Matsumoto
4104837ba1
mruby-hash-ext: use presym for initialization
2024-06-14 01:41:55 +09:00
Yukihiro "Matz" Matsumoto
cfd90a65f7
mruby-array-ext: use presym for initialization
2024-06-14 01:41:06 +09:00
Yukihiro "Matz" Matsumoto
574f9f0d39
mruby-class_ext: use presym for initialization
2024-06-14 00:37:05 +09:00
Yukihiro "Matz" Matsumoto
6361f6d661
mruby-numeric-ext: use presym for initialization
2024-06-14 00:35:44 +09:00
Yukihiro "Matz" Matsumoto
d94916bf15
mruby-kernel-ext: use presym for initialization
2024-06-14 00:34:07 +09:00
Yukihiro "Matz" Matsumoto
e1a62a581f
mruby-object-ext: use presym for initialization
2024-06-14 00:33:18 +09:00
Yukihiro "Matz" Matsumoto
c99b8d7d3b
mruby-fiber: use presym for initialization
2024-06-14 00:32:07 +09:00
Yukihiro "Matz" Matsumoto
bf8e19f7da
mruby-sleep: use presym for initialization
2024-06-14 00:30:32 +09:00
Yukihiro "Matz" Matsumoto
0eb616e3bd
mruby-symbol-ext: use presym for initialization
2024-06-14 00:28:33 +09:00
Yukihiro "Matz" Matsumoto
3628d093f4
mruby-dir: use presym for initialization
2024-06-14 00:27:13 +09:00
Yukihiro "Matz" Matsumoto
6535f6d159
mruby-eval: use presym for initialization
2024-06-14 00:26:22 +09:00
Yukihiro "Matz" Matsumoto
9c060b425c
mruby-errno: use presym for initialization
2024-06-14 00:25:26 +09:00
Yukihiro "Matz" Matsumoto
e4c2423f6e
mruby-catch: use presym for initialization
2024-06-14 00:23:11 +09:00
Yukihiro "Matz" Matsumoto
6bcaeb5a93
mruby-pack: use presym for initialization
2024-06-14 00:19:21 +09:00
Yukihiro "Matz" Matsumoto
f3c2373c6f
mruby-print: use presym for initialization
2024-06-14 00:18:22 +09:00
Yukihiro "Matz" Matsumoto
c94ae288d5
mruby-time: use presym for initialization
2024-06-14 00:16:21 +09:00
Yukihiro "Matz" Matsumoto
8f184a356b
mruby-random: use presym for initialization
2024-06-14 00:15:25 +09:00
Yukihiro "Matz" Matsumoto
3141b9424c
mruby-compiler/y.tab.c: it will be generated by Lrama from parse.y
...
No longer need to bundle in the repository.
2024-06-10 15:34:16 +09:00
Yukihiro "Matz" Matsumoto
933e966fab
tools/lrama: update template to stop C++ compiler error
2024-06-10 15:23:53 +09:00
Yukihiro "Matz" Matsumoto
fbe21a0321
tools/lrama: bundle Lrama 0.6.9 (copied from CRuby source)
2024-06-10 14:26:26 +09:00
Yukihiro "Matz" Matsumoto
d6da2d4760
mruby-compiler: use @1 in parse.y to enable YYLTYPE
...
This change itself does nothing good, but it is a preparation for the
future Bison to Lrama migration. As of 0.6.9, Lrama has a compatibility
issue for grammar files without `@n`.
2024-06-10 08:23:36 +09:00
Yukihiro "Matz" Matsumoto
473206c5d8
class.c: adjust local variable declarations with initialization
2024-06-10 08:23:36 +09:00
Yukihiro "Matz" Matsumoto
b6b74b3a5b
Merge pull request #6290 from dearblue/libdir
...
Allow to change the output directory name of the `libmruby` file
2024-06-10 08:22:52 +09:00
dearblue
0fcf54b47d
Allow to change the output directory name of the libmruby file
...
Add the `MRuby::Build#libdir_name` accessor and the `MRUBY_SYSTEM_LIBDIR_NAME` environment variable.
Resolved #6240
2024-06-09 22:49:46 +09:00
Yukihiro "Matz" Matsumoto
43b3536803
Merge pull request #6288 from dearblue/closing
...
Detach `env` of ci explicitly on atexit
2024-06-09 19:40:21 +09:00
Yukihiro "Matz" Matsumoto
b60cd351a1
Merge pull request #6289 from dearblue/orphan-block
...
Simplify `OP_RETURN_BLK` and `OP_BREAK
2024-06-08 23:51:48 +09:00
dearblue
f48ac7469b
Simplify OP_RETURN_BLK and `OP_BREAK
...
- There was some unnecessary complexity in `OP_BREAK` introduced in commit ad2e626 (#6282 ).
- Since `mrb->c` is never NULL, there is no need to check it with `MRB_ENV_ONSTACK_P()` beforehand.
2024-06-08 13:46:28 +09:00
dearblue
bd596153f1
Detach env of ci explicitly on atexit
...
Supplement to commit 177debacc5 (#6276 ).
If the ci is incomplete, the previous method may cause the application to crash because `env->stack` points to an invalid address when expanding the data stack.
Since the ci is in an abnormal state, control it by putting `NULL` in `env->stack`.
If the ci is fine and top-level, detach `env` as usual with `mrb_env_unshare()`.
2024-06-06 21:35:24 +09:00
Yukihiro "Matz" Matsumoto
8c1e12263e
Merge pull request #6287 from mruby/dependabot/github_actions/super-linter/super-linter-6.6.0
...
build(deps): bump super-linter/super-linter from 6.5.1 to 6.6.0
2024-06-05 21:26:23 +09:00
Yukihiro "Matz" Matsumoto
889af10090
mruby-compiler: prohibit dynamic assignment to constants; #3521
...
Along with some declaration adjustments to minimize `y.tab.c` diff.
2024-06-05 18:56:11 +09:00
dependabot[bot]
bc930d68ab
build(deps): bump super-linter/super-linter from 6.5.1 to 6.6.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.5.1 to 6.6.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.5.1...v6.6.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-04 14:49:19 +00:00
Yukihiro "Matz" Matsumoto
5072358276
vm.c: remove unnecessary type cast to blk; ref #6282
2024-06-03 19:45:53 +09:00
Yukihiro "Matz" Matsumoto
dcdd94c04c
Merge pull request #6282 from dearblue/orphan-block
...
Delegate the care of a directly given block from `cipop()` to `cipush()`
2024-06-02 22:02:58 +09:00
Yukihiro "Matz" Matsumoto
95dcc52e16
Merge pull request #6283 from dearblue/env
...
Simplify `uvenv()`
2024-06-01 22:51:02 +09:00
dearblue
d0b06446f2
Simplify uvenv()
...
The part removed in this patch was introduced by commit c7c9543bed .
The current mechanism should be able to trace from block objects created by `eval` to higher level blocks without any problems.
2024-06-01 20:36:22 +09:00
Yukihiro "Matz" Matsumoto
00a874cff6
Merge pull request #6281 from dearblue/binding
...
Fixes local variables in `mruby-binding`.
2024-05-31 22:56:04 +09:00
Yukihiro "Matz" Matsumoto
8d79cfdc83
Merge pull request #6280 from dearblue/env
...
Remove `MRB_ENV_CLOSED` flag
2024-05-31 22:50:56 +09:00
Yukihiro "Matz" Matsumoto
7b9b0997e0
string.c: adjust local variable declarations
2024-05-31 22:49:25 +09:00
dearblue
ad2e626e7a
Delegate the care of a directly given block from cipop() to cipush()
...
Outlines:
- Removed `mrb_callinfo::blk`
- Added `mrb_callinfo::flags`
- Added `MRB_CI_COMPANION_BLOCK` flag
2024-05-31 22:03:15 +09:00
dearblue
e82b36035e
Fixes local variables in mruby-binding.
...
There are two issues to be fixed:
- `mrb_irep` could leak if `mrb_calloc()` encountered an out-of-memory exception
- `mrb_proc_merge_lvar()` allocated one extra variable name.
`irep->lv` can always refer to only one less range than `irep->nlocals`.
Also, when `mrb_proc_merge_lvar()` extends `irep->lv`, `mrb_realloc()` with `NULL` has the same behavior as `mrb_malloc()`.
2024-05-30 21:25:30 +09:00
dearblue
7ab6386cc6
Remove MRB_ENV_CLOSED flag
...
Set `env->cxt` to `NULL` when it is detached from the call frame.
In other words, we can determine if `env->cxt` is `NULL` or not.
Also, `mruby-binding` had been setting `env->cxt` unnecessarily, so this has been fixed.
2024-05-30 21:09:49 +09:00
Yukihiro "Matz" Matsumoto
0a11af74f4
Merge pull request #6279 from kou/windows-lean-and-mean-include
...
Include headers for malloc() explicitly; fix #6277
2024-05-29 14:37:10 +09:00
Sutou Kouhei
c258ead85b
Include headers for malloc() explicitly; fix #6277
...
We need to include stdlib.h and malloc.h to use malloc()/free() but
they aren't included in src/string.c with WIN32_LEAN_AND_MEAN. It
generates build time warnings.
We can solve this by including stdlib.h and malloc.h explicitly.
2024-05-29 09:45:36 +09:00
Yukihiro "Matz" Matsumoto
f1dec3959f
mruby-range-ext (range_size): raise TypeError if not iterable
...
According ruby/ruby#8663 , `Range#size` behavior has changed.
2024-05-28 15:30:08 +09:00
Yukihiro "Matz" Matsumoto
f2dc44215c
Merge pull request #6276 from dearblue/closing
...
Always run `atexit` on the top-level call frame
2024-05-27 12:40:52 +09:00
Yukihiro "Matz" Matsumoto
bf244d65db
Merge pull request #6275 from dearblue/binding.eval
...
Fixed `Binding#eval` that failed to assign to the same variable
2024-05-27 08:49:14 +09:00
dearblue
177debacc5
Always run atexit on the top-level call frame
...
In the following example, the fiber context and call stack may be in an incomplete state.
- In case another thread running mruby is terminated abnormally
- In case of a global jump that is out of management by mruby
2024-05-26 21:17:00 +09:00
Yukihiro "Matz" Matsumoto
d03394fbc4
mruby-os-memsize: adjust local variable declarations
2024-05-26 18:01:15 +09:00
Yukihiro "Matz" Matsumoto
681bcdbcd3
mruby-bigint: adjust local variable declarations
2024-05-26 07:38:34 +09:00
dearblue
75b0d06c41
Fixed Binding#eval that failed to assign to the same variable
...
In `Binding#eval`, two times parsing is executed.
The problem found in this case was caused by not passing an upper block to hold variables of the binding object during the first parsing.
The problem was uncovered by <https://github.com/mruby/mruby/discussions/6274 >.
2024-05-25 21:55:02 +09:00
Yukihiro "Matz" Matsumoto
20cf58d1d3
Merge pull request #6273 from dearblue/closing
...
Improvements to `mrb_protect_atexit()`
2024-05-25 16:48:56 +09:00
Yukihiro "Matz" Matsumoto
d415a45a33
AUTHORS: update entries [ci skip]
2024-05-25 16:47:08 +09:00
Yukihiro "Matz" Matsumoto
10bc15c23e
mruby-class-ext: adjust variable declarations
2024-05-25 16:41:24 +09:00
Yukihiro "Matz" Matsumoto
292f7ef0ce
mruby-proc-ext (mrb_proc_parameters): adjust variable declarations
2024-05-25 16:39:32 +09:00
Yukihiro "Matz" Matsumoto
89c70aeea0
mruby-range-ext: move local variable declarations to minimize scope
2024-05-25 16:39:32 +09:00
Yukihiro "Matz" Matsumoto
7c2be58e2a
mruby-rational (rational_pow): fix wrong power calculation
...
`a/b ** -n` can be calculated by `b/a ** n` for correctness.
2024-05-25 16:39:32 +09:00
Yukihiro "Matz" Matsumoto
d148bf8c0b
mruby-rational: adjust local variable declarations with initialization
2024-05-25 16:39:32 +09:00
Yukihiro "Matz" Matsumoto
68e093729b
string.c: refactor bit operation (e.g. SWAR)
...
To generate a bit mask of `0x8080...` of the word size, we prepare
`MASK01` which is `0x0101...` and multiply masking word (e.g., `0x80).
2024-05-25 16:39:32 +09:00
Yukihiro "Matz" Matsumoto
bff68cbf17
mruby-socket (inet_ntop): refactor addrinfo loop
2024-05-25 16:39:31 +09:00
Yukihiro "Matz" Matsumoto
4e824048c0
mruby-socket: adjust local variable declarations
2024-05-25 16:39:31 +09:00
Yukihiro "Matz" Matsumoto
bd7efbe75f
string.c: check if the index points character boundary; fix #6267
2024-05-25 16:39:31 +09:00
dearblue
b12ea17d0b
Improvements to mrb_protect_atexit()
...
- Initialize the GC arena each time `atexit` is called.
- To reduce the overhead of `MRB_TRY()`, an internal loop is also performed.
2024-05-25 10:48:16 +09:00
Yukihiro "Matz" Matsumoto
f2e1cf2d3c
Merge pull request #6272 from mruby/dependabot/github_actions/super-linter/super-linter-6.5.1
...
build(deps): bump super-linter/super-linter from 6.5.0 to 6.5.1
2024-05-25 07:57:55 +09:00
dependabot[bot]
ccc34c37b9
build(deps): bump super-linter/super-linter from 6.5.0 to 6.5.1
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.5.0 to 6.5.1.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.5.0...v6.5.1 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-24 14:22:15 +00:00
Yukihiro "Matz" Matsumoto
86f620822f
Merge pull request #6269 from mruby/dependabot/github_actions/super-linter/super-linter-6.5.0
...
build(deps): bump super-linter/super-linter from 6.4.1 to 6.5.0
2024-05-16 07:09:41 +09:00
Yukihiro "Matz" Matsumoto
c635456f16
mruby-dir: fix indentation
2024-05-16 07:06:59 +09:00
dependabot[bot]
e36f0fd266
build(deps): bump super-linter/super-linter from 6.4.1 to 6.5.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.4.1 to 6.5.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.4.1...v6.5.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-15 14:28:17 +00:00
Yukihiro "Matz" Matsumoto
156c7ecae3
Merge pull request #6266 from dearblue/array-delete
...
Passes the nonexistent key as a block argument in `Array#delete`
2024-05-14 09:49:36 +09:00
Yukihiro "Matz" Matsumoto
7865593823
mruby-dir: enumerating methods should return enumerators; #6265
2024-05-14 09:42:38 +09:00
Yukihiro "Matz" Matsumoto
dd552cee13
Merge pull request #6265 from dearblue/dir-children
...
Fixes `Dir.children` and `Dir.each_child`
2024-05-14 09:32:51 +09:00
Yukihiro "Matz" Matsumoto
169114666a
mruby-io: fix Win32 declaration bugs
2024-05-14 01:34:43 +09:00
Yukihiro "Matz" Matsumoto
a147b2c149
Merge pull request #6264 from dearblue/to_enum
...
Must pass keyword arguments for `Kernel#to_enum`
2024-05-14 01:28:14 +09:00
Yukihiro "Matz" Matsumoto
37e7c071c2
mruby-io: adjust local variable declarations
2024-05-14 01:22:04 +09:00
Yukihiro "Matz" Matsumoto
ae6e5b7b5e
mruby-method: adjust local variable declaration place
2024-05-13 23:37:21 +09:00
Yukihiro "Matz" Matsumoto
7dee66c5db
mruby-fiber: adjust local variable declaration places
2024-05-12 20:34:25 +09:00
dearblue
f0cd35c78b
Passes the nonexistent key as a block argument in Array#delete
...
```ruby
a = %w(R G B A)
p a.delete("Y") { _1 }
# BEFORE => nil (same for mruby 3.3)
# AFTER => "Y" (same for CRuby)
```
2024-05-10 22:46:11 +09:00
dearblue
c753ca33d0
Add test for Array#delete
2024-05-10 22:35:13 +09:00
dearblue
12030b3f41
Fixes Dir.children and Dir.each_child
...
The two methods exclude "." and "..".
2024-05-10 21:54:59 +09:00
dearblue
a06e2484e6
Must pass keyword arguments for Kernel#to_enum
2024-05-10 21:50:51 +09:00
Yukihiro "Matz" Matsumoto
dcee404ebb
mruby-hash-ext: use NONE.equal?() for NONE comparison; ref #6262
2024-05-10 20:40:11 +09:00
Yukihiro "Matz" Matsumoto
4d7ad4863f
mruby-enumerator: use NONE.equal?() for NONE comparison; ref #6262
2024-05-10 20:40:11 +09:00
Yukihiro "Matz" Matsumoto
1f80b875c4
mruby-enum-ext: use NONE.equal?() for NONE comparison; ref #6262
2024-05-10 20:40:11 +09:00
Yukihiro "Matz" Matsumoto
db30b0636f
mruby-array-ext: use NONE.equal?() for NONE comparison; fix #6262
...
The equal (`==`) method of the comparison target might be redefined
(the root cause of #6262 ), and not supposed to be compared with NONE.
To reduce chance for the problem, we use `NONE.equal?()` for comparison.
2024-05-10 20:37:01 +09:00
Yukihiro "Matz" Matsumoto
058a4ab5c6
Merge pull request #6263 from leviongit:array/delete
...
fix: `Array#delete` mistakingly calling block even if not passed
2024-05-10 12:11:53 +09:00
leviongit
67df0aca67
fix: Array#delete mistakingly calling block even if not passed
2024-05-09 14:33:23 +02:00
Yukihiro "Matz" Matsumoto
19d9f48f7d
mruby-sleep: update MIT license URL
2024-05-09 17:08:27 +09:00
Yukihiro "Matz" Matsumoto
aac9e4cf0d
Merge pull request #6261 from leviongit/range/to_a
...
fix: `to_a` integer ranges with `begin > end` failing
2024-05-09 17:07:51 +09:00
leviongit
fff07ca182
fix: to_a integer ranges with begin > end failing
...
example of failure:
```rb
(-1..-4).to_a
```
expected result:
```rb
(-1..-4).to_a
```
2024-05-08 23:10:28 +02:00
Yukihiro "Matz" Matsumoto
06480f7147
mruby-string-ext: move local variable declarations
2024-05-08 11:29:20 +09:00
Yukihiro "Matz" Matsumoto
cf785a6133
mruby-random: move variable declarations to initialization
2024-05-07 17:57:41 +09:00
Yukihiro "Matz" Matsumoto
f975794f19
Merge pull request #6260 from dearblue/mrb_vm_exec-exception
...
Remove `exc_caught` from `mrb_vm_exec()`
2024-05-06 22:55:07 +09:00
dearblue
dea5c9e1dc
Remove exc_caught from mrb_vm_exec()
...
Only go to exception handling if `mrb->exc` is non-null.
This may cause some compatibility problems, but I doubt that it is necessary to maintain that compatibility.
Here is how I see the incompatibility with the change at this time:
- If `mrb->exc` is non-null and `mrb_vm_exec()` is called, an exception will be thrown immediately.
- If `MRB_THROW()` is used while `mrb->exc` is `NULL`, it will not go to exception handling.
2024-05-05 21:30:18 +09:00
Yukihiro "Matz" Matsumoto
1e61a875ed
mruby-data: adjust local variable declarations
2024-05-05 18:56:20 +09:00
Yukihiro "Matz" Matsumoto
0a61a9a76f
mruby-struct: adjust local variable declarations
2024-05-05 18:55:42 +09:00
Yukihiro "Matz" Matsumoto
c548943a2b
mruby-symbol-ext: adjust local variable declarations
2024-05-04 08:30:53 +09:00
Yukihiro "Matz" Matsumoto
86b1c8ff87
string.c (utf8_strlen): add assertion utf8_len <= byte_len
2024-05-03 07:50:40 +09:00
Yukihiro "Matz" Matsumoto
aea3e7aedd
mruby-sprintf: raise ArgumentError for % at the bottom
2024-05-03 07:46:45 +09:00
Yukihiro "Matz" Matsumoto
4801a424a3
mruby-time: adjust local variable declarations
2024-05-02 19:55:29 +09:00
Yukihiro "Matz" Matsumoto
c5314a29b7
mruby-test: move declarations in driver.c and vformat.c
2024-05-01 13:24:32 +09:00
Yukihiro "Matz" Matsumoto
2c8cde2ba7
codedump.c: move variable declarations to initialization place
2024-04-30 22:17:22 +09:00
Yukihiro "Matz" Matsumoto
fa213a2d89
string.c (search_nonascii): prevent buffer overrun; ref #6255
2024-04-29 16:35:08 +09:00
Yukihiro "Matz" Matsumoto
714ef4c4fd
string.c (mrb_utf8_strlen): handle invalid UTF-8 sequence; fix #6255
...
Previous SWAR version assumes valid UTF-8 to count number of code points
in the string, but we need to handle invalid sequence as well. We now
use `search_nonascii` to skip counting single byte characters for
performance. The new version is even faster than SWAR version (probably
because `search_nonascii` uses SSE2 on Intel compatible CPU (which I use).
2024-04-29 15:37:22 +09:00
Yukihiro "Matz" Matsumoto
c9ae8df2c2
error.c: move variable declaration to initialization
2024-04-29 14:42:49 +09:00
Yukihiro "Matz" Matsumoto
7cea1cd035
Merge pull request #6256 from dearblue/doc/mrb_top_run
...
Update documentation for `mrb_top_run()`
2024-04-27 14:57:03 +09:00
Yukihiro "Matz" Matsumoto
09896099ee
Merge pull request #6257 from jethrodaniel/tiny-mrbconf-doc-updates
...
fix some mrbconf.md typos
2024-04-27 14:41:50 +09:00
Mark Delk
b99536f1fc
rm unneeded MRB_NO_GEMS doc addition
2024-04-26 23:33:16 -05:00
Mark Delk
f78eab7c3f
fix some typos, mention MRB_NO_GEMS
2024-04-26 19:54:07 -05:00
Yukihiro "Matz" Matsumoto
598dca7a08
debug.c: move local variable declarations to initialization place
2024-04-27 08:40:36 +09:00
dearblue
a0526418ce
Update documentation for mrb_top_run()
...
Also, add explanations for the `mrb_load_irep()` and `mrb_load_string()` families, which are indirect calls to `mrb_top_run()`.
2024-04-26 22:05:45 +09:00
Yukihiro "Matz" Matsumoto
7edbff8c83
Merge pull request #6253 from dearblue/fiber-sweep
...
Allow recycling fibers by GC if not referenced directly
2024-04-25 11:34:08 +09:00
Yukihiro "Matz" Matsumoto
22518b5b78
Merge pull request #6244 from dearblue/mrb_vm_run
...
Revise scope of role of `mrb_vm_run()`
2024-04-24 08:45:29 +09:00
dearblue
f1c9260ada
Allow recycling fibers by GC if not referenced directly
...
The patch assumes that `struct REnv::cxt` only performs checks with the `OP_BREAK` and `OP_RETURN_BLK` instructions, and does not reference the entity.
Therefore, by changing to a weak reference, it is possible to collect fibers that are no longer directly referenced while in the suspended state.
However, we need to detach the living env objects that remain in the call stack of the fiber.
So, in effect, it involves a revert of following commits.
- commit a3365d8b3f
- commit 57ffa1c150
Examples of the effects of change are shown below.
Note that it was built with `rake MRUBY_CONFIG=host-debug`.
```ruby
f = Fiber.new { (x, y, z) = "X", "Y", "Z"; Fiber.yield -> { [x, y, z] } }
g = f.resume
GC.start
p ObjectSpace.memsize_of_all
# => 59532
g.call
# => ["X", "Y", "Z"]
f = nil
GC.start
ObjectSpace.memsize_of_all
# BEFORE => 59532
# AFTER => 58044
g.call
# => ["X", "Y", "Z"]
```
2024-04-23 22:30:32 +09:00
dearblue
c8c7d1ab23
Don't mrb_realloc_simple() call mrb_full_gc() in the sweep phase
...
`mrb_env_unshare()` calls `mrb_realloc_simple()` and follows `mrb_full_gc()` to avoid an infinite loop where `mrb_env_unshare()` is called again.
This does not occur at this time, but may occur in subsequent patches.
2024-04-23 22:25:54 +09:00
Yukihiro "Matz" Matsumoto
85120d524a
Merge pull request #6250 from jbampton/fix-spelling
...
Fix spelling
2024-04-23 00:21:59 +09:00
Yukihiro "Matz" Matsumoto
3d32bc11ef
Merge pull request #6252 from mruby/dependabot/github_actions/super-linter/super-linter-6.4.1
...
build(deps): bump super-linter/super-linter from 6.4.0 to 6.4.1
2024-04-23 00:20:28 +09:00
Yukihiro "Matz" Matsumoto
2e4dc20673
Merge pull request #6251 from jbampton/clean-up-root-move-codeowners
...
Clean up root move `CODEOWNERS` to `.github` directory
2024-04-23 00:18:03 +09:00
dependabot[bot]
2fc2c20155
build(deps): bump super-linter/super-linter from 6.4.0 to 6.4.1
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.4.0...v6.4.1 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-04-22 14:37:45 +00:00
John Bampton
5c39e39b8a
Clean up root move CODEOWNERS to .github directory
...
https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-file-location
2024-04-22 20:41:41 +10:00
John Bampton
67c5ced277
Fix spelling
2024-04-22 18:00:27 +10:00
Yukihiro "Matz" Matsumoto
ca29aa81bd
Merge pull request #6247 from jbampton/clean-up-dockerignore
...
Clean up the `.dockerignore` file
2024-04-22 09:49:52 +09:00
Yukihiro "Matz" Matsumoto
34c8e8253a
Merge pull request #6249 from jbampton/fix-grammar
...
Fix grammar in `src/vm.c`; `catched` -> `caught`
2024-04-22 09:49:19 +09:00
Yukihiro "Matz" Matsumoto
9c2fa6239e
Merge pull request #6248 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2024-04-22 09:47:53 +09:00
Yukihiro "Matz" Matsumoto
87b756086f
Merge pull request #6246 from jbampton/fix-spelling
...
Fix typo in `test/t/hash.rb`
2024-04-22 09:47:22 +09:00
Yukihiro "Matz" Matsumoto
5661cf6939
Merge pull request #6245 from jbampton/gha-label-more-files
...
gha: add labels to more files
2024-04-22 09:46:58 +09:00
John Bampton
f9c2ea2f11
Fix grammar in src/vm.c; catched -> caught
...
Saying 'catched' instead of 'caught' is a grammatical error
2024-04-22 00:01:21 +10:00
John Bampton
fef91724cb
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2024-04-21 23:21:46 +10:00
John Bampton
7e8ec85f6b
Clean up the .dockerignore file
2024-04-21 22:46:19 +10:00
John Bampton
983a13f342
Fix typo in test/t/hash.rb
2024-04-21 22:21:57 +10:00
John Bampton
b71092d440
gha: add labels to more files
2024-04-21 21:32:03 +10:00
dearblue
5aa20f41ef
Revise scope of role of mrb_vm_run()
...
`mrb_vm_run()` is,
- It does not change the fiber context.
- When control is returned, only one ci prepared by the caller is popped.
If the ci equals cibase when called, the ci position does not change.
related commits:
- commit 4e84bdb507
- commit 34dd258c63
- commit ebd6636a1e
- commit c6736357a7
- commit 23a4e7149d
- commit 31a961acf1
2024-04-21 13:30:24 +09:00
Yukihiro "Matz" Matsumoto
ad476c3684
Merge pull request #6243 from dearblue/base64
2024-04-21 08:25:56 +09:00
dearblue
6c2f570d79
Fixed base64 decoding in mruby-pack
...
Previously `\x80` was incorrectly mapped to `0`.
```ruby
"\x80\x80\x80\x80".unpack("m*")
# before => "\x00\x00\x00"
# after => ""
```
The reason is that the C string terminator is placed in `base64_dec_tab[128]` and the array length is obtained by `sizeof`.
Therefore, the length of `base64_dec_tab[]` is strictly specified and replaced with element-by-element initialization.
Also, similar changes are made to `base64chars[]`.
2024-04-20 09:56:08 +09:00
Yukihiro "Matz" Matsumoto
4a27a18807
dump.c: adjust local variable declarations
2024-04-20 09:54:55 +09:00
Yukihiro "Matz" Matsumoto
c445723fa4
enum.c: adjust local variable declaration
2024-04-19 16:20:36 +09:00
Yukihiro "Matz" Matsumoto
8350106896
etc.c: adjust local variable initializations
2024-04-18 15:49:19 +09:00
Yukihiro "Matz" Matsumoto
ca26f41b57
mruby-sprintf: remove unnecessary assignment
2024-04-18 15:48:45 +09:00
Yukihiro "Matz" Matsumoto
e52b608ed9
Merge pull request #6241 from mruby/dependabot/github_actions/super-linter/super-linter-6.4.0
...
build(deps): bump super-linter/super-linter from 6.3.1 to 6.4.0
2024-04-18 07:53:16 +09:00
dependabot[bot]
e2f7c5daff
build(deps): bump super-linter/super-linter from 6.3.1 to 6.4.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.3.1 to 6.4.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.3.1...v6.4.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-04-17 14:28:32 +00:00
Yukihiro "Matz" Matsumoto
c01899a8d3
Merge pull request #6235 from leviongit/array/delete
...
fix `Array#delete` always firing the block when deleting `nil`
2024-04-16 07:35:59 +09:00
Yukihiro "Matz" Matsumoto
aec67dcd17
Merge pull request #6237 from dearblue/env-strict
...
Stricter env objects to attach to ci
2024-04-15 13:59:32 +09:00
Yukihiro "Matz" Matsumoto
93c02e96d5
Merge pull request #6238 from dearblue/init-stack
...
Minimize zero initialization of the stack
2024-04-15 13:59:14 +09:00
Yukihiro "Matz" Matsumoto
c183e12d68
Merge pull request #6236 from leviongit/array/filters
...
unify the code for filter methods (and speed up `#reject!`)
2024-04-15 00:05:12 +09:00
Yukihiro "Matz" Matsumoto
bc8b76a7a5
cdump.c: adjust local variable declarations
2024-04-15 00:01:11 +09:00
dearblue
a4b57aa47b
Minimize zero initialization of the stack
2024-04-13 22:22:39 +09:00
dearblue
e3d51497cf
Stricter env objects to attach to ci
...
- Don't create multiple envs on one ci.
- Don't share a env to different ci.
- Don't attach a closed env to any ci.
Changes in `envadjust()` can be simplified with those guarantees.
2024-04-13 22:13:04 +09:00
Yukihiro "Matz" Matsumoto
3174488851
backtrace.c: remove uninitialized local variable declaration
2024-04-13 16:17:47 +09:00
leviongit
81bb520919
unify the code for filter methods (and speed up #reject!)
...
the worst case for `Array#reject!` (i.e. a proc always returning `true`)
is at least 5x worse than the worst case for `Array#select!` (proc
always returning `false`)
this commit unifies these implementations and inlines the (effective)
call of `#select!` in `#keep_if` and `#reject!` in `#delete_if`
2024-04-13 08:53:32 +02:00
leviongit
bb78c2cbc9
reimplement Array#delete with a helper method
2024-04-13 07:41:00 +02:00
leviongit
312d49c59f
reimplement Array#delete in ruby
2024-04-13 07:21:51 +02:00
leviongit
c04afb9e99
revert moving Array#delete to c
2024-04-13 06:52:37 +02:00
leviongit
d46e9a9480
fix shared array mistake
2024-04-12 18:12:51 +02:00
leviongit
14bd875d70
fix Array#delete
...
reimplement `Array#delete` in c, fixing `ary.delete(nil, &blk)` firing the block regardless of removal
minimal reproduction:
```rb
ary = [nil]
ret = ary.delete(nil) { "not deleted?" }
```
2024-04-12 17:30:03 +02:00
Yukihiro "Matz" Matsumoto
f30e8240d2
array.c: adjust local variable declarations
2024-04-12 18:07:51 +09:00
Yukihiro "Matz" Matsumoto
d761561be3
Merge pull request #6233 from dearblue/fiber-end-free
...
Free stack memory at end of fiber
2024-04-11 23:31:54 +09:00
Yukihiro "Matz" Matsumoto
1c021a5c3a
hash.c (obj_eql): simplify the expression
2024-04-11 15:39:45 +09:00
Yukihiro "Matz" Matsumoto
492d8331e1
mruby-io/ext/io.h: reorder struct mrb_io to reduce the size; #6231
...
The `sizeof(struct mrb_io)` is reduced from 32 bytes to 24 bytes on
x86_64-linux.
2024-04-10 13:35:03 +09:00
Yukihiro "Matz" Matsumoto
0ad669eb80
Merge pull request #6231 from Asmod4n/add_close_fd_to_io
...
Add a way to let other gems handle closing of fds in mruby-io
2024-04-10 13:29:20 +09:00
Yukihiro "Matz" Matsumoto
6c4f5a34cc
Revert "object.c (mrb_eql): avoid mrb_funcall_argv() when possible"
...
This reverts commit bc012deef9 .
Ref #6168
2024-04-10 13:28:28 +09:00
dearblue
f3b393272c
Free stack memory at end of fiber
...
Immediately frees the call stack and data stack at the end of a non-root fiber.
If the env object needs to be detached, the data stack is reused through `mrb_realloc()`.
Previously, it was not necessary to take into account that `c->cibase` could be `NULL`.
Note that this is no longer the case due to this patch.
In fact, changes to "mruby-fiber" are now required.
2024-04-09 21:13:32 +09:00
Yukihiro "Matz" Matsumoto
7403cb57ac
AUTHORS: update entries [ci skip]
...
From now on, we exclude merge commits (add `--no-merges` option to
`git shortlog` command in the counting script) to count contribution
fairly.
2024-04-09 08:03:50 +09:00
Yukihiro "Matz" Matsumoto
3ce5f3acbc
Merge pull request #6232 from dearblue/free-env
...
Fold the code for freeing `env`
2024-04-08 23:37:24 +09:00
Yukihiro "Matz" Matsumoto
6eeb06795f
Merge pull request #6230 from dearblue/fiber-err-switch
...
Fix status of fiber after switched by exception raised
2024-04-08 23:37:09 +09:00
Yukihiro "Matz" Matsumoto
f3f7df0da0
vm.c: update ci after switching context
...
0614a1 removed too much `ci` updates, as @dearblue pointed out.
2024-04-08 08:38:23 +09:00
Asmod4n
96b5cd757d
Add a way to let other gems handle closing of FDs
2024-04-07 13:46:11 +02:00
dearblue
1a9282914e
Fold the code for freeing env
...
Also, `e->stack = NULL` is not needed.
This is because "use-after-free" can be detected with `MRB_DEBUG` + `MRB_GC_STRESS`.
2024-04-07 20:45:10 +09:00
dearblue
4956584ff1
Fix status of fiber after switched by exception raised
...
The state of a fiber switched due to an exception occurrence was incorrectly set to "Suspended".
```ruby
Fiber.new {
begin
Fiber.new { 0 / 0 }.resume
rescue
p Fiber.current
# before => #<Fiber:0x159f61e43ce0 fiber.rb:1 (suspended by resuming)>
# after => #<Fiber:0x159f61e43ce0 fiber.rb:1 (resumed)>
end
}.resume
```
2024-04-07 20:08:12 +09:00
dearblue
307812ff20
Revert "env referred from top-level callinfo should not be unshared; fix #4019 "
...
This reverts commit 72581696d3 .
The #4012 that may have been the trigger for issue #4019 was later reverted by #4039 due to issue #4021 .
2024-04-06 08:59:51 +09:00
Yukihiro "Matz" Matsumoto
d503d9b113
Merge pull request #6229 from mruby/dependabot/bundler/rake-13.2.1
...
build(deps): bump rake from 13.2.0 to 13.2.1
2024-04-06 08:51:07 +09:00
dependabot[bot]
b174ea5847
build(deps): bump rake from 13.2.0 to 13.2.1
...
Bumps [rake](https://github.com/ruby/rake ) from 13.2.0 to 13.2.1.
- [Release notes](https://github.com/ruby/rake/releases )
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc )
- [Commits](https://github.com/ruby/rake/compare/v13.2.0...v13.2.1 )
---
updated-dependencies:
- dependency-name: rake
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-04-05 14:52:46 +00:00
Yukihiro "Matz" Matsumoto
47642f70cb
Merge pull request #6227 from leviongit/array/shuffle_b
...
fix: `Array#shuffle(!)` result distribution
2024-04-05 08:33:04 +09:00
Yukihiro "Matz" Matsumoto
88792e0d9a
Merge pull request #6226 from mruby/dependabot/github_actions/super-linter/super-linter-6.3.1
...
build(deps): bump super-linter/super-linter from 6.3.0 to 6.3.1
2024-04-05 08:19:12 +09:00
leviongit
ad62d7809e
fix: Array#shuffle(!) result distribution
2024-04-04 20:36:44 +02:00
dependabot[bot]
e610322a47
build(deps): bump super-linter/super-linter from 6.3.0 to 6.3.1
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.3.0...v6.3.1 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-04-04 14:33:40 +00:00
Yukihiro "Matz" Matsumoto
d3e4450917
Merge pull request #6225 from dearblue/revert-3991
...
Revert "Adjust environment when `mrb_exec_irep` happened."
2024-04-04 08:19:57 +09:00
Yukihiro "Matz" Matsumoto
d8a3406132
Merge pull request #6224 from dearblue/orphan-env
...
`mrb_env_unshare()` to break the link to fiber
2024-04-04 08:19:08 +09:00
Yukihiro "Matz" Matsumoto
c42f4e1d2c
Merge pull request #6191 from leviongit/sym-eql
...
Speed up symbol equality comparison
2024-04-04 07:35:54 +09:00
dearblue
28d31262e5
Revert "Adjust environment when mrb_exec_irep happened."
...
This reverts commit 26e436e247 .
After investigation, it is possible to revert by commit e89cc9b9fa .
The build configuration file used in the investigation is shown below.
```ruby
MRuby::Build.new do |conf|
toolchain :clang
enable_debug
enable_bintest
enable_test
cc.command = "clang18"
linker.command = "clang18"
[cc, cxx].each { |c| c.defines << "MRB_GC_STRESS" }
[cc, cxx, linker].each { |cmd| cmd.flags << %w(-fsanitize=address) }
gem github: "iij/mruby-dir" # rev: "89dceefa1250fb1ae868d4cb52498e9e24293cd1"
gem github: "iij/mruby-env" # rev: "056ae324451ef16a50c7887e117f0ea30921b71b"
gem github: "iij/mruby-errno" # rev: "b4415207ff6ea62360619c89a1cff83259dc4db0"
gem github: "iij/mruby-require" # rev: "f0634d785e5cbb73cd7d118ee36deff499e4181e"
gem github: "iij/mruby-tempfile" # rev: "9b883438547020dae328e34c8a2fe736171cd0ab"
end
```
Since the `rake` command needs to be from the past, we used the Ruby 2.6 version.
2024-04-03 22:04:25 +09:00
dearblue
96d56debc7
mrb_env_unshare() to break the link to fiber
...
Currently `e->cxt` is used exclusively to check for `break` / `return` availability.
In other words, there is no need to maintain a reference to a fiber that has reached its end.
2024-04-03 21:54:53 +09:00
Yukihiro "Matz" Matsumoto
88004e44af
Merge pull request #6223 from mruby/dependabot/bundler/rake-13.2.0
...
build(deps): bump rake from 13.1.0 to 13.2.0
2024-04-03 08:15:45 +09:00
dependabot[bot]
bb7370b59a
build(deps): bump rake from 13.1.0 to 13.2.0
...
Bumps [rake](https://github.com/ruby/rake ) from 13.1.0 to 13.2.0.
- [Release notes](https://github.com/ruby/rake/releases )
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc )
- [Commits](https://github.com/ruby/rake/compare/v13.1.0...v13.2.0 )
---
updated-dependencies:
- dependency-name: rake
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-04-02 14:38:41 +00:00
Yukihiro "Matz" Matsumoto
aa28f48c3b
string.c (search_nonascii): simplify fallback implementation by SWAR
2024-04-02 19:50:13 +09:00
Yukihiro "Matz" Matsumoto
898d1ff11e
proc.h: simplify method macros; ref #6220
...
- MRB_METHOD_CFUNC_P: reduce ternary; use logical-or instead
- MRB_METHOD_CFUNC: assume MRB_METHOD_CFUNC_P check before call
2024-04-01 07:33:28 +09:00
Yukihiro "Matz" Matsumoto
4982999e07
Merge pull request #6221 from dearblue/arrange-each_backtrace
...
Arranging `each_backtrace()`
2024-03-31 21:44:56 +09:00
Yukihiro "Matz" Matsumoto
586ce04cee
Merge pull request #6222 from dearblue/sync-regs
...
Need to synchronize `dbg->regs` after VM call in `mrdb`
2024-03-31 21:41:16 +09:00
Yukihiro "Matz" Matsumoto
423026353d
Merge pull request #6220 from dearblue/methodcache
...
Reorganize `mrb_cache_entry` and `mrb_method_t` types
2024-03-31 21:36:19 +09:00
dearblue
8dfebe8d12
Need to synchronize dbg->regs after VM call in mrdb
...
VM inrush could invalidate addresses stored in `dbg->regs` by `stack_extend()`.
2024-03-31 11:53:09 +09:00
dearblue
9b8b864be1
Arranging each_backtrace()
...
Highlights are:
- `Integrate the blocks `if (!ci->proc || MRB_PROC_CFUNC_P(ci->proc))` and `if (loc.irep == NULL)`.
- Folding some other conditionals.
- Assertions ensure that procs are not aliases.
2024-03-31 09:53:16 +09:00
Yukihiro "Matz" Matsumoto
2fbd49903b
LEGAL: update memsearch_swar description
2024-03-30 23:06:03 +09:00
Yukihiro "Matz" Matsumoto
cbb31e6a7c
string.c (mrb_utf8_strlen): use SWAR technique for performance
2024-03-30 22:50:12 +09:00
dearblue
328eb71e52
Reorganize mrb_cache_entry and mrb_method_t types
...
The purpose is to remove the `mid` field from the `mrb_cache_entry` structure.
The resulting RAM requirement for the method cache is reduced from 5 words per entry to 4 words per entry for 32-bit CPUs.
The relevant changes are as follows:
- Removed `MRB_USE_METHOD_T_STRUCT`.
The `mrb_method_t` type is now always defined as a structure.
- Include method IDs in `mrb_method_t`
Change the `flags` member to `uint32_t`.
The bitstring structure should be the same as the keys of the `mt` table in `class.c`.
I believe the impact on API compatibility with previous versions is minimal.
2024-03-30 18:19:26 +09:00
Yukihiro "Matz" Matsumoto
61b1a4db8e
Merge pull request #6219 from dearblue/fixed-to-out
...
Avoid assigning a fixed value in the loop
2024-03-29 23:55:05 +09:00
Yukihiro "Matz" Matsumoto
27061e4d58
Merge pull request #6216 from dearblue/shared-class-iv
...
Shared empty `iv_tbl` of module
2024-03-29 23:12:32 +09:00
dearblue
3d91ae28f5
Avoid assigning a fixed value in the loop
2024-03-29 22:26:46 +09:00
Yukihiro "Matz" Matsumoto
f0614a1e0c
vm.c: remove unnecessary update of ci local variable
2024-03-29 21:22:37 +09:00
Yukihiro "Matz" Matsumoto
f54ff74f9b
vm.c: add volatile to a variable across setjmp/longjmp
2024-03-29 21:22:37 +09:00
Yukihiro "Matz" Matsumoto
c54bf673a9
vm.c: remove unused initializations
2024-03-29 21:22:36 +09:00
Yukihiro "Matz" Matsumoto
5b133e42cc
Merge pull request #6217 from dearblue/mrb_istruct_size
...
Strict declaration for `mrb_istruct_size()`
2024-03-28 15:29:25 +09:00
dearblue
1c1c67b878
Strict declaration for mrb_istruct_size()
...
In C, `void` is required if there are no parameters.
2024-03-27 22:01:18 +09:00
dearblue
f1c0752ab8
Shared empty iv_tbl of module
...
This will be a partial merge of #5317 with the following changes.
- Remove `iclass->iv_c` since `iclass->iv_c` is equivalent to `iclass->c`.
- `class_iv_ptr()` returns a single pointer instead of a double pointer.
2024-03-27 21:39:32 +09:00
Yukihiro "Matz" Matsumoto
ef94bfc2e6
proc.c (closure_setup): fix NULL check logic
...
It used to check ci to be non NULL in line 37, but we silently assumed
ci was not NULL in the `else` clause too. So instead of checking NULL,
we add assertion. This incomplete check was found by clang-tidy.
2024-03-26 14:00:00 +09:00
Yukihiro "Matz" Matsumoto
b42b8480d1
vm.c: adjust spacing
2024-03-26 14:00:00 +09:00
Yukihiro "Matz" Matsumoto
a97c27358e
class.c (prepare_name_common): remove unnecessary pointer update
2024-03-26 14:00:00 +09:00
Yukihiro "Matz" Matsumoto
07f9f9b4be
gc.c (mrb_alloca): add const modifier
2024-03-26 13:59:59 +09:00
Yukihiro "Matz" Matsumoto
87b358a342
Including header files in include/* by <>
2024-03-26 13:59:59 +09:00
Yukihiro "Matz" Matsumoto
0786b24528
proc.h: stop including khash.h which is no longer used
...
Instead, we need to include <string.h> explicitly.
2024-03-26 13:59:59 +09:00
Yukihiro "Matz" Matsumoto
81e8617d02
mruby-metaprog: explicitly include khash.h which was included from proc.h
2024-03-26 13:59:59 +09:00
Yukihiro "Matz" Matsumoto
a8977f713d
class.c,variable.c: use mrb_int_hash_func instead of kh_ version
2024-03-26 13:59:59 +09:00
Yukihiro "Matz" Matsumoto
96fa3461f0
mruby.h: move integer hash function from khash.h
2024-03-26 13:59:58 +09:00
Yukihiro "Matz" Matsumoto
3ccc98fa32
Merge pull request #6215 from mruby/dependabot/bundler/rake-13.1.0
...
build(deps): bump rake from 13.0.6 to 13.1.0
2024-03-26 12:05:29 +09:00
dependabot[bot]
86155d8ab4
build(deps): bump rake from 13.0.6 to 13.1.0
...
Bumps [rake](https://github.com/ruby/rake ) from 13.0.6 to 13.1.0.
- [Release notes](https://github.com/ruby/rake/releases )
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc )
- [Commits](https://github.com/ruby/rake/compare/v13.0.6...v13.1.0 )
---
updated-dependencies:
- dependency-name: rake
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-03-26 02:12:45 +00:00
Yukihiro "Matz" Matsumoto
a7aa7a8772
Merge pull request #6205 from jbampton/gha-label-more-files
...
GitHub labeler: label more files
2024-03-26 11:12:40 +09:00
Yukihiro "Matz" Matsumoto
24c60895cd
Merge pull request #6214 from jbampton/add-more-comments
...
Improve the `pre-commit` and `.github` YAML files
2024-03-26 11:12:06 +09:00
Yukihiro "Matz" Matsumoto
4cdbddb3b0
Merge pull request #6213 from jbampton/add-pre-commit-hook-destroyed-symlinks
...
Add `pre-commit` hook `destroyed-symlinks`
2024-03-26 11:11:06 +09:00
John Bampton
e26d33caf5
GitHub labeler: label more files
...
These are some of the config files for the linters/tests that run
2024-03-24 04:36:09 +10:00
John Bampton
cc6d25dc29
Improve the pre-commit and .github YAML files
2024-03-23 22:46:19 +10:00
John Bampton
2e9f79409a
Add pre-commit hook destroyed-symlinks
...
https://github.com/pre-commit/pre-commit-hooks?tab=readme-ov-file#destroyed-symlinks
Another check or test we can have
2024-03-23 20:46:11 +10:00
Yukihiro "Matz" Matsumoto
a810b9bca8
mruby-compiler/codegen.c: stop too aggressive optimization; fix #6210
...
The old code assumes unary minus (`-@`) does not cause any side effect
(including errors). Considering the code like `-nil; nil`, the
assumption was too aggressive.
2024-03-19 13:38:05 +09:00
Yukihiro "Matz" Matsumoto
7404fab8fb
Merge pull request #6211 from jbampton/clean-up-git-ignore
...
Minor `.gitignore` clean up; order entries
2024-03-19 13:13:38 +09:00
John Bampton
0541713b6b
Minor .gitignore clean up; order entries
2024-03-19 12:51:37 +10:00
Yukihiro "Matz" Matsumoto
07fd080321
Merge pull request #6208 from jbampton/clean-up-the-pre-commit-config
...
Clean up the `pre-commit` config
2024-03-18 14:57:32 +09:00
Yukihiro "Matz" Matsumoto
35cf1abd4e
Merge pull request #6209 from jbampton/clean-up-gitignore
...
Minor `.gitignore` clean up
2024-03-17 23:57:33 +09:00
John Bampton
7ac2773a84
Minor .gitignore clean up
2024-03-16 20:40:49 +10:00
John Bampton
f18d8888ba
Clean up the pre-commit config
...
Removal of unneeded files / file types
Clean up the repo root folder by moving `codespell.txt`
2024-03-16 20:03:21 +10:00
Yukihiro "Matz" Matsumoto
4da5d025d3
Merge pull request #6206 from dearblue/table-expansion
...
Simplify expansion of mt and iv a bit
2024-03-16 08:17:42 +09:00
Yukihiro "Matz" Matsumoto
eb57432d03
Bump yard from 0.9.28 to 0.9.36
2024-03-15 23:52:00 +09:00
Yukihiro "Matz" Matsumoto
53c38db2fc
Merge pull request #6200 from jbampton/super-linter-validate-dockerfile
...
super-linter: validate the `Dockerfile` with `hadolint`
2024-03-15 23:38:22 +09:00
Yukihiro "Matz" Matsumoto
b913824d47
range.c (mrb_gc_mark_range): return size
...
If not initialized, size is zero, otherwise two.
2024-03-15 23:36:30 +09:00
dearblue
227ebb9daa
Simplify expansion of mt and iv a bit
2024-03-14 22:12:35 +09:00
Yukihiro "Matz" Matsumoto
f13daee2f5
class.c (mrb_gc_mark_mt_size) unify with mrb_gc_mark_mt
2024-03-14 11:58:00 +09:00
Yukihiro "Matz" Matsumoto
2cb3f1d9e5
hash.c (mrb_gc_mark_hash_size): unify with mrb_gc_mark_hash
2024-03-14 11:52:25 +09:00
Yukihiro "Matz" Matsumoto
63900814b9
variable.c (mrb_gc_mark_iv_size): unify the function with mrb_gc_mark_iv
2024-03-14 11:49:47 +09:00
Yukihiro "Matz" Matsumoto
e8525df576
gc.c (gc_gray_counts): unify the function with gc_mark_children
...
Avoid traversing object repeatedly.
2024-03-14 11:44:06 +09:00
Yukihiro "Matz" Matsumoto
2b597c596c
Merge pull request #6180 from jbampton/super-linter-validate-github-actions
...
super-linter: set `VALIDATE_GITHUB_ACTIONS` to `true`
2024-03-13 10:14:49 +09:00
John Bampton
107b6f7d30
super-linter: set VALIDATE_GITHUB_ACTIONS to true
...
Flag to enable the linting process of the GitHub Actions.
Another check or test we can have.
https://github.com/super-linter/super-linter?tab=readme-ov-file#configure-super-linter
Lint shell script. Tested with ShellCheck
https://www.shellcheck.net/
2024-03-13 10:37:40 +10:00
Yukihiro "Matz" Matsumoto
9bbefd3979
Merge pull request #6204 from jbampton/editorconfig-clean-up
...
Clean up the `.editorconfig` file
2024-03-13 09:08:59 +09:00
Yukihiro "Matz" Matsumoto
31d85c20db
Merge pull request #6202 from jbampton/clean-yardoc-folder
...
Remove the `.yardoc` folder with `rake doc:clean:api`
2024-03-13 09:08:07 +09:00
Yukihiro "Matz" Matsumoto
ea7c067bd0
Merge pull request #6201 from jbampton/standardize-rake-doc-error-message
...
tasks/doc.rake: standardize the `rake doc` error messages
2024-03-13 09:07:24 +09:00
Yukihiro "Matz" Matsumoto
aa247d3e14
Merge pull request #6199 from jbampton/configure-pre-commit
...
pre-commit: fix the arguments syntax
2024-03-13 09:06:17 +09:00
Yukihiro "Matz" Matsumoto
faf76b6b7f
Merge pull request #6198 from mruby/dependabot/github_actions/softprops/action-gh-release-2
...
build(deps): bump softprops/action-gh-release from 1 to 2
2024-03-12 08:22:37 +09:00
Yukihiro "Matz" Matsumoto
168eb8c267
readint.c (mrb_read_int): narrow scope of a local variable
2024-03-12 08:21:27 +09:00
John Bampton
774ee3c760
Clean up the .editorconfig file
2024-03-12 08:41:33 +10:00
John Bampton
5895e8ebeb
Remove the .yardoc folder with rake doc:clean:api
2024-03-12 06:43:35 +10:00
John Bampton
d2206cd359
tasks/doc.rake: standardize the rake doc error messages
2024-03-12 05:30:54 +10:00
John Bampton
e266ea760f
super-linter: validate the Dockerfile with hadolint
...
https://github.com/super-linter/super-linter?tab=readme-ov-file#configure-super-linter
https://github.com/hadolint/hadolint
https://github.com/hadolint/hadolint?tab=readme-ov-file#configure
https://github.com/hadolint/hadolint/wiki/DL3042
2024-03-12 04:40:27 +10:00
John Bampton
3b3f8b1196
pre-commit: fix the arguments syntax
...
https://github.com/igorshubovych/markdownlint-cli?tab=readme-ov-file#use-with-pre-commit
https://yamllint.readthedocs.io/en/stable/integration.html#integration-with-pre-commit
2024-03-12 01:55:21 +10:00
dependabot[bot]
c56e61ebbd
build(deps): bump softprops/action-gh-release from 1 to 2
...
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release ) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases )
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md )
- [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2 )
---
updated-dependencies:
- dependency-name: softprops/action-gh-release
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-03-11 14:43:56 +00:00
Yukihiro "Matz" Matsumoto
db8368fa86
numeric.c: remove bit operations methods from Float class; #6197
...
mruby used to use float numbers for overflown integers before we
implemented big integers. Now we don't need bit operations for float
numbers anymore. Also removed tests for shift operations for float
numbers.
2024-03-11 11:44:41 +09:00
Yukihiro "Matz" Matsumoto
39e3db20af
Merge pull request #6197 from niyarin/fix/call-flo_xor
...
Fix int_xor to call flo_xor.
2024-03-11 11:44:17 +09:00
Yukihiro "Matz" Matsumoto
95765c8193
mruby-time: mrb_time_at is an API function; close #6195
...
5265e35 was wrong. Should not remove `mrb_` prefix from the function.
2024-03-11 09:48:32 +09:00
niyarin
af8e772b9e
Fix int_xor to call flo_xor.
2024-03-10 12:13:34 +09:00
leviongit
deb133c8ef
use a type-check macro instead of mrb_type comparison
2024-03-09 13:56:21 +01:00
leviongit
d1b3198109
remove redundant function definition
2024-03-09 13:41:58 +01:00
Yukihiro "Matz" Matsumoto
44edd3438b
gc.c: remove unused local variable; ref #6194
2024-03-09 14:29:42 +09:00
Yukihiro "Matz" Matsumoto
4b312bdb2f
debug.c: narrow scope of local variables
2024-03-09 14:29:42 +09:00
Yukihiro "Matz" Matsumoto
678bdd2c4b
cdump.c (sym_operator_name): narrow scope of local variables
2024-03-09 14:29:42 +09:00
Yukihiro "Matz" Matsumoto
3699f013ac
Merge pull request #6193 from dearblue/c-epilogue-assert
...
Fix wrong assertion in `OP_SENDB`.
2024-03-09 13:23:33 +09:00
Yukihiro "Matz" Matsumoto
f1f022bd1a
Merge pull request #6194 from dearblue/count-closures
...
Simplify the calculation of the number of closures in `MRB_TT_FIBER`
2024-03-09 13:22:47 +09:00
Yukihiro "Matz" Matsumoto
6c73defb26
Merge pull request #6192 from dearblue/OP_STOP
...
Fix `OP_STOP` with exception
2024-03-09 13:21:13 +09:00
dearblue
cb36398d30
Simplify the calculation of the number of closures in MRB_TT_FIBER
2024-03-08 22:06:08 +09:00
dearblue
9616971c70
Fix wrong assertion in OP_SENDB.
...
Assertions were failing on exit if started with `mrb_fiber_resume()`.
The bug that caused it was introduced by commit 42308c42b5 (#6106 ).
The bug was moved by commit 990e18ad59 .
2024-03-08 21:56:00 +09:00
dearblue
4380773666
Fix OP_STOP with exception
...
Previously, `mrb->exc` would remain replaced by a `break` object if a rewind operation was performed during the processing of a `OP_STOP` instruction.
This problem has existed since #5060 , when it was introduced in mruby-3.0.
However, as of mruby-3.0, a manual or third-party generator is required to cause the `OP_STOP` instruction to be issued.
Therefore, it is believed that this has not had an impact until now.
2024-03-08 21:50:46 +09:00
leviongit
af06d54843
Speed up symbol equality comparison
2024-03-07 16:22:35 +01:00
Yukihiro "Matz" Matsumoto
9257a61b39
Merge pull request #6137 from dearblue/fiber-unreachable
...
Remove unreachable blocks in `OP_RETURN`
2024-03-07 16:13:56 +09:00
Yukihiro "Matz" Matsumoto
a8694bdefb
Merge pull request #6184 from dearblue/L_STOP
...
Remove the `L_STOP` label
2024-03-06 18:02:34 +09:00
Yukihiro "Matz" Matsumoto
01373a9db0
Merge pull request #6188 from mruby/dependabot/github_actions/super-linter/super-linter-6.3.0
...
build(deps): bump super-linter/super-linter from 6.2.0 to 6.3.0
2024-03-06 18:01:05 +09:00
Yukihiro "Matz" Matsumoto
130ec9cd90
backtrace.c (mrb_unpack_backtrace): need no NULL check
2024-03-05 12:24:49 +09:00
Yukihiro "Matz" Matsumoto
0ca4ab886f
AUTHORS: update entries [ci skip]
2024-03-04 13:01:21 +09:00
Yukihiro "Matz" Matsumoto
439a895f46
symbol.c: use post increment if possible (just style matter)
2024-03-04 13:01:21 +09:00
Yukihiro "Matz" Matsumoto
d840274805
symbol.c: narrow scope of local variables
2024-03-04 13:01:20 +09:00
Yukihiro "Matz" Matsumoto
aa0cb370a8
kernel.c (mrb_obj_is_instance_of): add const qualifier
2024-03-04 13:01:20 +09:00
Yukihiro "Matz" Matsumoto
b023017a0d
Merge pull request #6190 from jbampton/label-more-files
...
Pull Request Labeler: Add labels to more files
2024-03-04 13:01:04 +09:00
Yukihiro "Matz" Matsumoto
861bf778b5
Merge pull request #6189 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2024-03-04 12:59:42 +09:00
John Bampton
6dd3f27634
Pull Request Labeler: Add labels to more files
2024-03-02 13:51:09 +10:00
John Bampton
fc13411c61
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2024-03-02 13:37:00 +10:00
dependabot[bot]
7864112f96
build(deps): bump super-linter/super-linter from 6.2.0 to 6.3.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.2.0...v6.3.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-02-29 14:35:04 +00:00
Yukihiro "Matz" Matsumoto
b0d11ddb4e
error.c (mrb_sys_fail): narrow scope of local variables
2024-02-29 19:14:19 +09:00
Yukihiro "Matz" Matsumoto
a0d10c0384
pool.c (mrb_pool_close): narrow scope of a local variable
2024-02-29 19:14:19 +09:00
Yukihiro "Matz" Matsumoto
371b13a32e
dump.c: inline loop variables (with small refactoring)
2024-02-29 19:14:18 +09:00
Yukihiro "Matz" Matsumoto
099d01c751
class.c (mrb_mod_module_function): narrow scope of local variables
2024-02-29 19:14:18 +09:00
Yukihiro "Matz" Matsumoto
11d7c74e50
Merge pull request #6185 from dearblue/keep_context
...
Added `mrb_callinfo::u.keep_context` for clarity
2024-02-29 19:13:59 +09:00
Yukihiro "Matz" Matsumoto
0673563968
Merge pull request #6186 from dearblue/check-env.cxt
...
Omit NULL check of `e->cxt` in `OP_RETURN_BLK`
2024-02-25 23:46:16 +09:00
Yukihiro "Matz" Matsumoto
ab94f6533d
Revert "gha: add macOS 14 to the build"
...
This reverts commit 9b9cbd77b0 .
2024-02-24 23:31:28 +09:00
Yukihiro "Matz" Matsumoto
8130bbc479
string.c (mrb_str_len_to_dbl): should return zero for invalid string
...
We should not use uninitialized value; fix #6183
2024-02-24 23:03:15 +09:00
dearblue
e94eef6f98
Omit NULL check of e->cxt in OP_RETURN_BLK
...
Since `mrb->c` is never `NULL`, there is no need to check it beforehand.
2024-02-24 21:38:51 +09:00
dearblue
ce8b2d4973
Added mrb_callinfo::u.keep_context for clarity
2024-02-24 21:32:11 +09:00
dearblue
c7af3d48e3
Remove the L_STOP label
...
The post-processing of the jump source is decided, and it is more natural to deploy it on the spot.
2024-02-24 18:23:33 +09:00
Yukihiro "Matz" Matsumoto
6248e9c2ef
Merge pull request #6155 from dearblue/jmpbuf_id
...
Removed `mrb_jmpbuf_id` for C++ exceptions
2024-02-23 23:51:45 +09:00
Yukihiro "Matz" Matsumoto
72f956d3e0
readfloat.c: remove unused local variable
2024-02-22 10:40:24 +09:00
Yukihiro "Matz" Matsumoto
643d91d566
Merge pull request #6181 from mruby/dependabot/github_actions/super-linter/super-linter-6.2.0
...
build(deps): bump super-linter/super-linter from 6.1.1 to 6.2.0
2024-02-22 10:32:22 +09:00
dependabot[bot]
d4eb58c824
build(deps): bump super-linter/super-linter from 6.1.1 to 6.2.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.1.1 to 6.2.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.1.1...v6.2.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-02-21 14:50:07 +00:00
Yukihiro "Matz" Matsumoto
49f8c9be5b
Merge pull request #6177 from jbampton/test-on-macOS14
...
gha: add macOS 14 to the build
2024-02-20 12:16:47 +09:00
Yukihiro "Matz" Matsumoto
88c7e14d24
Merge pull request #6179 from jbampton/link-check-ignore-links
...
pre-commit: add `markdown-link-check` config and ignore links
2024-02-20 12:15:51 +09:00
Yukihiro "Matz" Matsumoto
dde8b37331
Merge pull request #6178 from jbampton/super-linter-validate-gitleaks
...
super-linter: set `VALIDATE_GITLEAKS` to `true`
2024-02-20 12:15:13 +09:00
John Bampton
8772592fa2
pre-commit: add markdown-link-check config and ignore links
...
https://github.com/tcort/markdown-link-check?tab=readme-ov-file#config-file-format
2024-02-20 12:28:16 +10:00
John Bampton
ae8419dba7
super-linter: set VALIDATE_GITLEAKS to true
...
Flag to enable the linting process of the secrets.
Just another check or test we can have.
Set VALIDATE_ALL_CODEBASE: true
https://github.com/super-linter/super-linter?tab=readme-ov-file#configure-super-linter
2024-02-20 12:11:19 +10:00
John Bampton
6f8ae1cbb3
Update .github/workflows/build.yml
2024-02-20 11:07:47 +10:00
John Bampton
9b9cbd77b0
gha: add macOS 14 to the build
...
https://github.com/actions/runner-images?tab=readme-ov-file#available-images
2024-02-20 10:58:00 +10:00
Yukihiro "Matz" Matsumoto
2f77f2b525
Merge pull request #6133 from dearblue/auto-release
...
Create source code packages by adding release tags
2024-02-19 22:20:43 +09:00
Yukihiro "Matz" Matsumoto
9e9545b1a6
Merge pull request #6176 from dearblue/alias-proc
...
Stop assuming alias proc in `CI_PROC_SET()`
2024-02-18 22:13:30 +09:00
Yukihiro "Matz" Matsumoto
1bb93e74a0
Merge pull request #6175 from dearblue/mrb_vm_run-cond
...
Corrected strange conditional in `mrb_vm_run()`
2024-02-18 22:11:45 +09:00
dearblue
f5cce68ba6
Stop assuming alias proc in CI_PROC_SET()
...
Resolving alias proc should be done by the caller of `CI_PROC_SET()`.
The same applies to `mrb_vm_ci_proc_set()`.
2024-02-18 21:09:45 +09:00
dearblue
2c66d34a7e
Corrected strange conditional in mrb_vm_run()
...
This was introduced in commit 365c151df0 .
I should have checked env first.
2024-02-18 18:18:21 +09:00
Yukihiro "Matz" Matsumoto
10de08fa4e
Merge pull request #6174 from dearblue/mruby-config-dir
...
Fix `MRUBY_PACKAGE_DIR` in `mruby-config.bat`
2024-02-17 23:21:01 +09:00
dearblue
06e791e1d7
Fix MRUBY_PACKAGE_DIR in mruby-config.bat
...
Previously, the correct directory could not be obtained in some environments.
Therefore, changed the method to leave an element indicating the parent directory.
fix #6156
2024-02-17 11:14:57 +09:00
Yukihiro "Matz" Matsumoto
4855e50cbe
Merge pull request #6172 from mruby/dependabot/github_actions/super-linter/super-linter-6.1.1
...
build(deps): bump super-linter/super-linter from 6.0.0 to 6.1.1
2024-02-16 08:14:18 +09:00
Yukihiro "Matz" Matsumoto
7d199b7256
src/error.h: remove unused header
2024-02-16 08:10:53 +09:00
Yukihiro "Matz" Matsumoto
a1be05e79f
src/opcode.h: remove unused header
2024-02-16 08:09:58 +09:00
dependabot[bot]
aebc951533
build(deps): bump super-linter/super-linter from 6.0.0 to 6.1.1
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 6.0.0 to 6.1.1.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v6.0.0...v6.1.1 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-02-15 14:43:54 +00:00
Yukihiro "Matz" Matsumoto
c37e76ec75
Merge pull request #6171 from buty4649/add-enumrable-lazy-grep_v
...
Add Enumerable::Lazy#grep_v to mruby-enum-lazy
2024-02-15 15:49:30 +09:00
buty4649
031476a853
mruby-enum-lazy: add grep_v method
2024-02-15 14:55:38 +09:00
Yukihiro "Matz" Matsumoto
3eeeb8fabf
string.c (memsearch_swar): skip a local variable
2024-02-15 14:01:49 +09:00
Yukihiro "Matz" Matsumoto
55ca34c31b
backtrace.c (mrb_print_backtrace): skip a local variable
2024-02-15 14:01:48 +09:00
Yukihiro "Matz" Matsumoto
c3f8227c6d
mruby.h: adjust comment offset [ci skip]
2024-02-15 14:01:48 +09:00
Yukihiro "Matz" Matsumoto
9e1ed100ce
Merge pull request #6169 from mruby/stable
...
Merge mruby 3.3.0
2024-02-15 14:01:28 +09:00
mimaki
94062b4356
Merge branch 'master' into stable
2024-02-14 19:01:59 +09:00
Yukihiro "Matz" Matsumoto
9c840a68e2
string.c (memsearch_swar): boundary check by the latest position
2024-02-13 22:36:03 +09:00
Yukihiro "Matz" Matsumoto
6810423da1
backtrace.c (mrb_print_backtrace): avoid backtrace to array conversion
...
Made print_backtrace() to support both array form and packed backtrace
form, so that we can avoid allocating an array.
2024-02-13 16:18:14 +09:00
Yukihiro "Matz" Matsumoto
441de05376
error.h: use RBasic instead of RObject for generic objects
...
RObject is type for objects with instance variables. For generic
objects, use RBasic.
2024-02-13 11:05:27 +09:00
Yukihiro "Matz" Matsumoto
f285420653
backtrace.c (decode_location): decode packed backtrace location on demand.
2024-02-13 00:07:54 +09:00
Yukihiro "Matz" Matsumoto
a3da9c1da3
AUTHORS: update entries [ci skip]
2024-02-12 00:02:35 +09:00
Yukihiro "Matz" Matsumoto
d2af9da799
Merge branch 'dearblue-doc/mruby3.3.md'
2024-02-10 17:08:57 +09:00
Yukihiro "Matz" Matsumoto
01ff7fbf0a
Update mruby3.3.md
2024-02-10 17:05:55 +09:00
Yukihiro "Matz" Matsumoto
2d2693d823
Merge branch 'doc/mruby3.3.md' of https://github.com/dearblue/mruby into dearblue-doc/mruby3.3.md
2024-02-10 16:49:56 +09:00
Yukihiro "Matz" Matsumoto
abcad36bae
string.c (memsearch_swar): fixed a buffer overflow
2024-02-09 19:09:01 +09:00
Yukihiro "Matz" Matsumoto
868aeaf48c
string.c (memsearch_swar): fixed a buffer overflow
2024-02-09 18:52:44 +09:00
Yukihiro "Matz" Matsumoto
874f1e0138
backtrace.c (copy_location): rename some function and arguments
2024-02-08 23:41:22 +09:00
Yukihiro "Matz" Matsumoto
432caf0670
backtrace.c (pack_backtrace): refactor the function that called once
2024-02-08 23:22:48 +09:00
Yukihiro "Matz" Matsumoto
60919807e5
backtrace.c (each_backtrace): make return type to size_t
2024-02-07 17:34:33 +09:00
Yukihiro "Matz" Matsumoto
0a11215452
backtrace.c (packed_backtrace): avoid calling each_backtrace() twice
...
Since the length of the backtrace is at most `ciidx + 1` we can avoid
the first call of each_backtrace().
2024-02-07 17:32:58 +09:00
Yukihiro "Matz" Matsumoto
b67cea4442
backtrace.c (pack_backtrace_i): avoid infinite loop; ref #6161
...
When irep->refcnt reaches UINT16_MAX, mrb_irep_incref() raises
exception but the function pack_backtrace_i() is called from
mrb_exc_raise() thus causes the infinite loop problem. So this is a
hack-ish workaround by making irep reference to NULL if refcnt reaches
the maximum count. Probably we will address this issue again to make it
better.
2024-02-07 17:30:11 +09:00
Yukihiro "Matz" Matsumoto
b8e4c4b6ba
Merge pull request #6166 from dearblue/mrb_heap_page
...
Stop pseudo flexible array in `mrb_heap_page`
2024-02-05 21:45:04 +09:00
Yukihiro "Matz" Matsumoto
32fb0c04ee
Merge pull request #6165 from dearblue/RVALUE
...
Reduce `RVALUE` related pointer casts.
2024-02-05 21:42:51 +09:00
Yukihiro "Matz" Matsumoto
5f699e797d
Merge pull request #6167 from dearblue/obj_free
...
Change the `end` parameter of `obj_free()` to a boolean type
2024-02-05 21:42:41 +09:00
Yukihiro "Matz" Matsumoto
0fe95d6c81
mruby-pack (mrb_pack_pack): avoid integer overflow
...
`int` (32bit integer) may be too small on 64bit platforms.
2024-02-05 21:28:11 +09:00
dearblue
8f14785f10
Stop pseudo flexible array in mrb_heap_page
...
For reference, the flexible array was introduced by commit 3ab2f9371e (#2997 ).
Subsequently changed for compatibility with C++ by commit 24939723d7 (#5596 ).
2024-02-04 21:55:54 +09:00
dearblue
84fbe63457
Change the end parameter of obj_free() to a boolean type
...
The caller is a boolean value from the first.
2024-02-04 21:55:54 +09:00
dearblue
dde5fe3a60
Reduce RVALUE related pointer casts.
2024-02-04 21:55:53 +09:00
Yukihiro "Matz" Matsumoto
f04a729dc9
gc.c (obj_free): check if irep is NULL before mrb_irep_decref(); #6161
2024-02-04 17:06:05 +09:00
Yukihiro "Matz" Matsumoto
2f63b49542
backtrace.c: use mrb_irep references instead of struct RProc
...
To reduce GC burden (no mark needed). We use `mrb_irep_incref()` and
`mrb_irep_decref()` instead to track irep memory usage; ref #6161
2024-02-04 16:48:42 +09:00
Yukihiro "Matz" Matsumoto
4dfadb4f9f
Merge pull request #6159 from dearblue/debug/irep-free
...
Allow to detect use-after-free after `mrb_irep_free()` for debugging
2024-02-04 16:26:03 +09:00
Yukihiro "Matz" Matsumoto
0abc36f761
Merge pull request #6161 from dearblue/backtrace
...
Fixed use-after-free by backtrace object
2024-02-03 23:39:58 +09:00
Yukihiro "Matz" Matsumoto
9524d8e199
Merge pull request #6164 from jbampton/remove-ERROR_ON_MISSING_EXEC_BIT
...
super-linter: remove `ERROR_ON_MISSING_EXEC_BIT` check
2024-02-03 00:25:35 +09:00
John Bampton
8e04e76325
super-linter: remove ERROR_ON_MISSING_EXEC_BIT check
...
https://github.com/super-linter/super-linter/releases/tag/v6.0.0
https://github.com/super-linter/super-linter/pull/5120
2024-02-02 15:51:18 +10:00
Yukihiro "Matz" Matsumoto
08c422c7ee
numeric.c (cmpnum): support fixnum cmp bignum; fix #6163
2024-02-02 14:18:57 +09:00
Yukihiro "Matz" Matsumoto
4762689f93
Merge pull request #6153 from dearblue/gem-list
...
Make `MRuby::Gems::List#{each,<<}` method return `self`
2024-02-02 08:19:44 +09:00
Yukihiro "Matz" Matsumoto
fd04ffc2f6
Merge pull request #6144 from jbampton/add-hook-detect-aws-credentials
...
pre-commit: add hook `detect-aws-credentials`
2024-02-02 08:15:38 +09:00
Yukihiro "Matz" Matsumoto
6e09555749
Merge pull request #6150 from dearblue/itself
...
Introduce `mrb_obj_itself()`
2024-02-01 16:15:42 +09:00
Yukihiro "Matz" Matsumoto
24aad706e1
Merge pull request #6162 from mruby/dependabot/github_actions/super-linter/super-linter-6.0.0
...
build(deps): bump super-linter/super-linter from 5.7.2 to 6.0.0
2024-02-01 16:02:45 +09:00
dependabot[bot]
a0bcf63bd5
build(deps): bump super-linter/super-linter from 5.7.2 to 6.0.0
...
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter ) from 5.7.2 to 6.0.0.
- [Release notes](https://github.com/super-linter/super-linter/releases )
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md )
- [Commits](https://github.com/super-linter/super-linter/compare/v5.7.2...v6.0.0 )
---
updated-dependencies:
- dependency-name: super-linter/super-linter
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-01-31 14:23:26 +00:00
dearblue
9543cfa7ee
Fixed use-after-free by backtrace object
...
The `MRB_TT_BACKTRACE` object has been added for the purpose.
Previously, "use-after-free" could occur because the reference count in `backtrace_location::irep` was not incremented.
fixed #6160
2024-01-31 22:17:16 +09:00
Yukihiro "Matz" Matsumoto
cac698fe88
string.c (memsearch_swar): changed the function name
...
For your information, SWAR stands for SIMD within a register.
2024-01-31 21:37:39 +09:00
Yukihiro "Matz" Matsumoto
f8527f0670
string.c (mrb_memsearch_ss): update a comment regarding alignment issue
2024-01-31 21:36:05 +09:00
Yukihiro "Matz" Matsumoto
d8144aef78
string.c: remove a comment regarding unsigned char*
2024-01-31 21:34:54 +09:00
Yukihiro "Matz" Matsumoto
363f795432
string.c: remove unnecessary type casts
...
We don't need `unsigned` for string pointers.
2024-01-31 15:06:04 +09:00
Yukihiro "Matz" Matsumoto
e61a2881a7
string.c (mrb_memsearch_ss): fix potential buffer overflow; fix #6158
...
- stop using `bigint*`
- stop integer pointer dereferences
- use `memcpy` to integer variables
- add reminder search for shorter patterns
2024-01-31 07:48:24 +09:00
Yukihiro "Matz" Matsumoto
219cfd63e1
string.c (mrb_memsearch_ss): update integer prefixes (LLU -> ULL)
2024-01-31 07:42:52 +09:00
Yukihiro "Matz" Matsumoto
6ba65ea0f0
string.c (mrb_memsearch_ss): update comment
2024-01-31 01:54:37 +09:00
Yukihiro "Matz" Matsumoto
44a5882bc2
string.c (mrb_memsearch_ss): remove useless alignment adjustment
...
Ref #6158
2024-01-31 01:27:10 +09:00
Yukihiro "Matz" Matsumoto
be5448fd16
string.c (mrb_memsearch): refactor m==1 (use memchr) case
2024-01-31 01:17:12 +09:00
Yukihiro "Matz" Matsumoto
d8e1aed646
string.c (search_nonascii): need not to check n>3 on 32bit platforms
2024-01-30 12:35:56 +09:00
dearblue
60dd6b5586
Allow to detect use-after-free after mrb_irep_free() for debugging
...
Write invalid value to `irep` if `MRB_DEBUG` is defined by `MRuby::Build#enable_debug`.
2024-01-29 21:32:04 +09:00
Yukihiro "Matz" Matsumoto
0e1125c3af
Merge pull request #6152 from dearblue/io-error
...
Retrieving the IO exception class with presym
2024-01-27 15:10:29 +09:00
Yukihiro "Matz" Matsumoto
fefebf7a77
Merge pull request #6151 from dearblue/eval-init
...
Refer to `mrb->module_class` directly in `mrb_mruby_eval_gem_init()`
2024-01-27 15:09:30 +09:00
Yukihiro "Matz" Matsumoto
e859b430cc
fixup! string.c (search_nonascii): add faster search using SSE2
2024-01-27 11:59:29 +09:00
Yukihiro "Matz" Matsumoto
dee1ded7b5
string.c (mrb_memsearch_ss): support bigendians
2024-01-27 06:23:16 +09:00
Yukihiro "Matz" Matsumoto
06d9a54760
string.c (mrb_memsearch): remove simple search and quick search
...
Since mrb_memsearch_ss() is fast enough for most of the cases, we try to
simplify the code.
2024-01-27 06:22:55 +09:00
Yukihiro "Matz" Matsumoto
2943ca2685
string.c (mrb_memsearch_ss): faster integer-wise substring search
...
The function is based on @WojciechMula's code from the repository
https://github.com/WojciechMula/sse4-strstr.git Since it's licensed
under 2 clause BSD, we updated LEGAL file too.
2024-01-27 06:16:33 +09:00
Yukihiro "Matz" Matsumoto
08cd281200
string.c (search_nonascii): skip alignment adjustment for some CPUs
...
Some CPUs (e.g. x86) allow unaligned access to the memory.
2024-01-26 08:22:33 +09:00
Yukihiro "Matz" Matsumoto
68ab95ea57
string.c (mrb_memsearch): take char* instead of void*
...
Avoid useless `void*`.
2024-01-25 22:32:31 +09:00
Yukihiro "Matz" Matsumoto
cf0cd6785c
string.c: rename MRB_QS_SHORT_STRING_LENGTH
...
The new name is MRB_SEARCH_SHORT_STRING_LENGTH since it's no longer used
in the mrb_memsearch_qs(). FYI, 'qs' stands for 'quick search'.
2024-01-23 23:28:45 +09:00
Yukihiro "Matz" Matsumoto
fb2ebcde7c
string.c (search_nonascii): add faster search using SSE2
2024-01-23 23:28:45 +09:00
Yukihiro "Matz" Matsumoto
4108b85c62
string.c (search_nonascii): faster search using integer match
...
If you define `SIMPLE_SEARCH_NONASCII`, you can use old, naive
implementation of search_nonascii(). You may want to use the old one for
code size constraint for example.
2024-01-23 23:28:45 +09:00
Yukihiro "Matz" Matsumoto
f41593f55a
Merge pull request #6154 from dearblue/int_to_str
2024-01-23 21:59:14 +09:00
Yukihiro "Matz" Matsumoto
18bdcbe536
Merge pull request #6145 from hoshiumiarata/enum_chunk
...
Enumerable#chunk implementation
2024-01-23 08:58:19 +09:00
星湖新
ab21813100
Move Enumerable#chunk to mruby-enumerator
2024-01-22 18:31:28 +09:00
星湖新
d001974439
Revert "Enumerable#chunk implementation"
...
This reverts commit ebf86a24b0 .
2024-01-22 18:26:01 +09:00
Yukihiro "Matz" Matsumoto
5431575d11
Merge pull request #6148 from buty4649/add-enumerable-grep_v
...
Add Enumerable#grep_v to mruby-enum-ext
2024-01-21 18:51:11 +09:00
dearblue
c112e83b5d
Removed mrb_jmpbuf_id for C++ exceptions
...
Use stack variable addresses as identifiers instead of global variable values.
Since the stack variable address is uniquely determined within the call, there is no need to maintain a global variable.
2024-01-21 13:14:41 +09:00
dearblue
bf2db1ed2b
Check mrb_bigint_p() before mrb_integer()
2024-01-21 10:59:06 +09:00
Yukihiro "Matz" Matsumoto
028c53d667
Merge pull request #6149 from dearblue/rational.new
...
Remove unnecessary `Rational._new` method
2024-01-20 23:28:38 +09:00
Yukihiro "Matz" Matsumoto
888dd230dd
Merge pull request #6147 from dearblue/memsearch
...
Fixed buffer overflow in `mrb_memsearch()`
2024-01-20 23:25:34 +09:00
Yukihiro "Matz" Matsumoto
12483c8393
Merge pull request #6146 from mruby/dependabot/github_actions/actions/cache-4
...
build(deps): bump actions/cache from 3 to 4
2024-01-20 23:24:40 +09:00
dearblue
464ac4581e
Make MRuby::Gems::List#{each,<<} method return self
...
Returning internal objects is undesirable.
2024-01-20 22:49:31 +09:00
dearblue
5caf8e14cf
Retrieving the IO exception class with presym
2024-01-20 22:33:43 +09:00
dearblue
82312467d0
Refer to mrb->module_class directly in mrb_mruby_eval_gem_init()
2024-01-20 22:20:20 +09:00
dearblue
3111990089
Introduce mrb_obj_itself()
...
Some method definitions were changed to use this function.
2024-01-20 22:07:29 +09:00
dearblue
35375257f6
Remove unnecessary Rational._new method
2024-01-20 21:52:49 +09:00
buty4649
97203729a9
Add Enumerable#grep_v to mruby-enum-ext
2024-01-20 11:47:37 +09:00
dearblue
772f13520c
Fixed buffer overflow in mrb_memsearch()
2024-01-20 09:44:47 +09:00
Yukihiro "Matz" Matsumoto
f13101124c
string.c: add cast to remove warnings
2024-01-19 18:24:34 +09:00
Yukihiro "Matz" Matsumoto
69cf074778
string.c (mrb_memsearch): move simple search from mrb_memsearch_qs()
2024-01-19 15:21:43 +09:00
dependabot[bot]
1e9d69f896
build(deps): bump actions/cache from 3 to 4
...
Bumps [actions/cache](https://github.com/actions/cache ) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases )
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md )
- [Commits](https://github.com/actions/cache/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: actions/cache
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-01-18 14:59:43 +00:00
Yukihiro "Matz" Matsumoto
6f0c34e04e
mruby-string-ext: implement String#ascii_only? method
2024-01-18 22:53:46 +09:00
Yukihiro "Matz" Matsumoto
57fd0edaa7
mruby.h: rename ASCII flag to SINGLE_BYTE
...
This flag means all the characters in the string can be represented by a
single byte, i.e., the string does not contain any multi-byte character.
Those characters are likely ASCII characters, but may be a part of broken
UTF-8 sequence, so the term 'ASCII' is not sufficient.
2024-01-18 22:50:39 +09:00
Yukihiro "Matz" Matsumoto
5b76d2cbbe
string.h: RSTR_ASCII_P(s) should always be true for non-UTF8 mode
2024-01-16 17:38:51 +09:00
Yukihiro "Matz" Matsumoto
6c2ed55077
mruby-bin-mruby: remove unused assignments
2024-01-16 12:28:32 +09:00
Yukihiro "Matz" Matsumoto
0e079fe946
mruby-bin-mruby: reduce the scope of a loop variable i
2024-01-15 23:04:18 +09:00
Yukihiro "Matz" Matsumoto
9298dfb927
mruby-bin-mruby: reduce the scope of a local variable c
2024-01-15 23:03:34 +09:00
Yukihiro "Matz" Matsumoto
90fac46751
mruby-bin-mruby: remove unnecessary condition
2024-01-15 23:00:46 +09:00
Yukihiro "Matz" Matsumoto
4f8fd23f7a
mruby-string-ext (str_uminus): remove wrong document
...
In mruby, deduplication of strings is not implemented (yet), so we have
to remove the description from `String#-@` document.
2024-01-13 23:00:13 +09:00
Yukihiro "Matz" Matsumoto
c53d9a33fc
mruby-string-ext (mrb_valid_enc_p): simplify the code
...
By using `mrb_utf8len` directly. If `len == 1` and `ch >= 0x80`, the
character should be an invalid character.
2024-01-13 22:48:16 +09:00
星湖新
ebf86a24b0
Enumerable#chunk implementation
2024-01-13 17:36:02 +09:00
Yukihiro "Matz" Matsumoto
fb8bc1954b
string.c: improve performance of chars2bytes/bytes2chars; ref #6143
2024-01-11 18:23:50 +09:00
Yukihiro "Matz" Matsumoto
f646228dbe
string.c (str_index_str_by_char): simplify using str_index_str()
...
Instead of its own version of quick search, now we use str_index_str()
and adjust character position. This change makes searching 4 times
faster in some cases; ref #6143
2024-01-11 12:23:06 +09:00
Yukihiro "Matz" Matsumoto
e42f3b36f9
string.c (chars2bytes): simplify the condition to detect break
2024-01-11 11:49:49 +09:00
John Bampton
f8f3ff10fa
pre-commit: add hook detect-aws-credentials
...
https://github.com/pre-commit/pre-commit-hooks#detect-aws-credentials
Another check or test we can have.
"--allow-missing-credentials - Allow hook to pass when no credentials are detected."
2024-01-11 03:18:15 +10:00
dearblue
514c926e97
Update the mruby3.3.md file
...
- Remove items changed by mruby 3.2.
- The commit hash or pull request number will be written along with the changes.
- Add some items.
2024-01-10 23:00:10 +09:00
Yukihiro "Matz" Matsumoto
787439455c
string.c: remove the macro BYTES_ALIGN_CHECK which is no longer used
2024-01-10 17:31:04 +09:00
Yukihiro "Matz" Matsumoto
c2f148e15d
string.c (mrb_memsearch_qs): reduce the scope of local variables
2024-01-10 16:21:39 +09:00
Yukihiro "Matz" Matsumoto
31f2d93657
string.c (bytes2chars): skip calling mrb_utf8len() if possible
...
If (ch < 0x80) the length of the character (in bytes) should be 1, so we
don't have to call mrb_utf8len().
2024-01-10 15:36:07 +09:00
Yukihiro "Matz" Matsumoto
4c859e754d
string.c (bytes2chars): skip scanning if the string is ASCII only
2024-01-10 14:40:39 +09:00
Yukihiro "Matz" Matsumoto
df0a5e838d
string.c (chars2bytes): use early return
2024-01-10 12:41:28 +09:00
Yukihiro "Matz" Matsumoto
e39e4ea26d
string.c (chars2bytes): small refactoring
2024-01-10 11:09:47 +09:00
Yukihiro "Matz" Matsumoto
1d243bc58b
string.c (bytes2chars): takes a string object instead of char*
2024-01-10 10:53:26 +09:00
Yukihiro "Matz" Matsumoto
59a1d74937
string.c: inline str_range_to_bytes
2024-01-09 18:22:38 +09:00
Yukihiro "Matz" Matsumoto
9135f0991b
string.c: avoid RSTRING_CHAR_LEN() if possible
...
Current code scan the string twice (once from RSTRING_CHAR_LEN, and once
from chars2bytes), but those scans are not necessary. Just point the end
of the string.
2024-01-09 11:44:12 +09:00
Yukihiro "Matz" Matsumoto
f3ebef1172
mruby-string (chars2bytes): reduce the scope of local variables
2024-01-09 11:00:44 +09:00
Yukihiro "Matz" Matsumoto
f1d01a6107
string.c (mrb_utf8len): should return 1 for invalid chars; ref #6143
2024-01-09 10:39:03 +09:00
Yukihiro "Matz" Matsumoto
64a4bf0e28
string.c: avoid infinite loop; fix #6143
...
`mrb_utf8len` returns 0 for invalid characters.
2024-01-09 10:37:52 +09:00
Yukihiro "Matz" Matsumoto
a5e83075d4
string.c: reduce the scope of a local variable
2024-01-09 08:22:26 +09:00
Yukihiro "Matz" Matsumoto
af3482d562
mruby-math: use erfc(x) instead of 1.0 - erf(x)
2024-01-09 08:01:28 +09:00
Yukihiro "Matz" Matsumoto
51c4c4716a
mruby-math: use log1p(x) instead of log(1.0+x)
2024-01-09 07:59:42 +09:00
Yukihiro "Matz" Matsumoto
8a2e88390b
mruby-math: reduce the scope of a local variable
2024-01-09 07:47:57 +09:00
Yukihiro "Matz" Matsumoto
c1fc3219db
mruby-math: fix spacing
2024-01-08 23:18:57 +09:00
Yukihiro "Matz" Matsumoto
05e9fa34af
mruby-random: rename a conflicting local variable
2024-01-08 19:12:55 +09:00
Yukihiro "Matz" Matsumoto
27c2f9ac38
mruby-random (mrb_ary_sample): reduce the scope of loop variables
2024-01-08 07:23:03 +09:00
Yukihiro "Matz" Matsumoto
2cf6f7f5c7
mruby-rational: move misplaced #ifndef MRB_NO_FLOAT
2024-01-08 07:19:30 +09:00
Yukihiro "Matz" Matsumoto
be3b93ecb9
array.c (ary_expand_capa): rename a conflicting local variable
2024-01-06 14:33:50 +09:00
Yukihiro "Matz" Matsumoto
d47f1b4df3
array.c (ary_expand_capa): remove unnecessary condition check
2024-01-06 14:32:54 +09:00
Yukihiro "Matz" Matsumoto
2eeb19a5ed
mruby-kernel-ext (mrb_f_caller): remove unnecessary condition check
2024-01-06 14:31:32 +09:00
Yukihiro "Matz" Matsumoto
b06fdb4bfa
mruby-io/file.c: reduce the scope of local variables
2024-01-06 08:30:56 +09:00
Yukihiro "Matz" Matsumoto
e1b6501183
mruby-io: fix local variable initialization redundancy
2024-01-05 13:03:33 +09:00
Yukihiro "Matz" Matsumoto
f1b8d38eb5
mruby-io: narrow a local variable scope
2024-01-05 13:02:39 +09:00
Yukihiro "Matz" Matsumoto
20dd737a4a
mruby-io (io_s_popen): remove fflush(stdin)
...
Flushing input I/O should be useless.
2024-01-05 13:00:55 +09:00
Yukihiro "Matz" Matsumoto
9ee7d955e3
mruby-metaprog: narrow the scope of a local variable
2024-01-04 11:18:14 +09:00
Yukihiro "Matz" Matsumoto
2ce5c52726
mruby-errno (mrb_sce_sys_fail): remove redundant assignment
2024-01-04 10:08:22 +09:00
Yukihiro "Matz" Matsumoto
7861422cbe
mruby-fiber (fiber_switch): reduce the scope of local variables
2024-01-03 16:07:15 +09:00
Yukihiro "Matz" Matsumoto
93bda0d27f
mruby-fiber (fiber_init_fiber): rename conflicting local variables
2024-01-03 16:05:46 +09:00
Yukihiro "Matz" Matsumoto
f0ab79b195
Merge pull request #6136 from dearblue/fiber-fix
...
Fixed when combined `mrb_fiber_resume()` and `Fiber#transfer`
2024-01-03 07:33:48 +09:00
Yukihiro "Matz" Matsumoto
5257fe4333
mruby-bigint (mrb_bint_new_float): narrow the scope of variable 'f'
2024-01-03 07:23:55 +09:00
Yukihiro "Matz" Matsumoto
d632085b5b
mruby-bigint (udiv): narrow the scope of loop variable 'i'
2024-01-03 07:23:55 +09:00
Yukihiro "Matz" Matsumoto
d944a079a3
mruby-numeric-ext (int_digits): avoid variable name override
2024-01-03 07:23:55 +09:00
Yukihiro "Matz" Matsumoto
e71e1bc50e
mruby-hash-ext: reduce the scope of the loop variable i
2024-01-03 07:23:55 +09:00
Yukihiro "Matz" Matsumoto
17b2ec643e
Merge pull request #6140 from jbampton/actions-label-more-files
...
actions: label more files for build
2024-01-03 07:23:39 +09:00
dearblue
519a2cbd59
Fixed when combined mrb_fiber_resume() and Fiber#transfer
...
For example, the following code was crashing.
```c
#include <mruby.h>
#include <mruby/compile.h>
#include <mruby/proc.h>
int
main(int argc, char *argv[])
{
mrb_state *mrb = mrb_open();
mrb_value fiber = mrb_load_string(mrb, "Fiber.new { Fiber.new { 12345.6789 }.transfer }");
mrb_value res = mrb_fiber_resume(mrb, fiber, 0, NULL);
mrb_p(mrb, res);
mrb_close(mrb);
return 0;
}
```
2024-01-02 21:34:44 +09:00
John Bampton
e471399044
actions: label more files for build
2024-01-01 17:19:53 +10:00
Yukihiro "Matz" Matsumoto
d7a2174519
Merge pull request #6139 from jbampton/fix-prettier-hook
...
Fix `pre-commit` failure from `prettier`
2024-01-01 15:46:41 +09:00
Yukihiro "Matz" Matsumoto
a406e008d1
Merge branch 'master' into fix-prettier-hook
2024-01-01 15:29:08 +09:00
John Bampton
19d0ea803d
Fix pre-commit failure from prettier
2023-12-31 21:57:58 +10:00
dearblue
8322c441ee
Remove unreachable blocks in OP_RETURN
...
When `mrb->c->prev` is non `NULL` and `mrb->c->noexec` is false, switching source fiber should suspend with `Fiber#resume`.
In this case, the condition `mrb->c->ci == mrb->c->cibase` is not satisfied.
2023-12-31 14:49:59 +09:00
Yukihiro "Matz" Matsumoto
8094ac27d7
NEWS: add mruby3.3 changes description
2023-12-31 00:43:02 +09:00
Yukihiro "Matz" Matsumoto
39f48d732a
mruby-pack: update README.md
...
'X' and '@' directives are not listed
2023-12-30 16:02:20 +09:00
Yukihiro "Matz" Matsumoto
56b67f8613
mruby-pack (u64tostr): reimplement the function
...
- direct conversion of single digit numbers
- remove unnecessary update of `line` variable
- simplify the body according to the assertion
2023-12-30 15:35:55 +09:00
Yukihiro "Matz" Matsumoto
8cbd4638f4
mruby-pack (u64tostr): len should always be positive
...
Add `mrb_assert()` instead of just skipping the function.
2023-12-30 15:33:57 +09:00
Yukihiro "Matz" Matsumoto
1871ff14db
mruby-pack (pack_unpack): skip continuous extraction from unpack1
...
Ref #6134
2023-12-30 15:31:44 +09:00
Yukihiro "Matz" Matsumoto
7765c23f69
mruby-pack (pack_hex): the scope of variables a and b can be reduced
2023-12-30 15:12:17 +09:00
Yukihiro "Matz" Matsumoto
fca2bbdcca
mruby-pack (unpack_str): the scope of the variable cp can be reduced
2023-12-30 15:12:10 +09:00
dearblue
9d4931cd1b
Create source code packages by adding release tags
...
According to the [GitHub blog](https://github.blog/2023-02-21-update-on-the-future-stability-of-source-code-archives-and-hashes/ ), files by `git archive` are not guaranteed to have checksum persistence.
It is also stated that the archive file at this time is stable in bytes, but that this may change in the future.
2023-12-29 17:50:33 +09:00
Yukihiro "Matz" Matsumoto
159687bef3
mruby-pack: add tests for unpack1 method; ref #6134
2023-12-29 15:05:16 +09:00
KOBAYASHI Shuji
98d091436d
Reduce memory usage of instance variable table
...
## Implementation Summary
* Only keys and only values of hash table are contiguous to eliminate
structure padding.
* Change upper limit of `iv_tbl` size to `UINT16_MAX` (it seems to be
acceptable in mruby because the total number of classes/modules
immediately after starting Redmine is 20,000 or less).
* `iv_tbl*` point hash buckets directly.
## Benchmark Summary
Only the results of typical situations on 64-bit Word-boxing are present
here. For more detailed information, including consideration, see below
report (although most of the body is written in Japanese).
* https://shuujii.github.io/mruby-iv-benchmark
### Memory Usage
Lower value is better.
| iv_tbl Size | Baseline | New | Factor |
|------------:|---------------:|---------------:|-----------:|
| 4 | 88B | 52B | 0.59091x |
| 30 | 536B | 388B | 0.72388x |
| 100 | 2072B | 1540B | 0.74324x |
| 200 | 4120B | 3076B | 0.74660x |
Although not mentioned in the above report, the memory usage of `mrbtest`
(full-core gembox) is as follows in the result by Valgrind.
* Baseline: 108,086 allocs, 16,313,122 bytes allocated
* New: 94,273 allocs, 15,875,214 bytes allocated
### Performance
Higher value is better.
#### `mrb_obj_iv_set`
| iv_tbl Size | Baseline | New | Factor |
|------------:|---------------:|---------------:|-----------:|
| 4 | 88.63003M i/s | 92.60611M i/s | 1.04486x |
| 30 | 32.97066M i/s | 25.25095M i/s | 0.76586x |
| 100 | 16.33224M i/s | 22.74998M i/s | 1.39295x |
| 200 | 5.64484M i/s | 6.79949M i/s | 1.20455x |
#### `mrb_obj_iv_get`
| iv_tbl Size | Baseline | New | Factor |
|------------:|---------------:|---------------:|-----------:|
| 4 | 217.58391M i/s | 237.59912M i/s | 1.09199x |
| 30 | 139.56195M i/s | 160.49470M i/s | 1.14999x |
| 100 | 143.09716M i/s | 190.95047M i/s | 1.33441x |
| 200 | 89.75291M i/s | 134.78717M i/s | 1.50176x |
### Binary Size
Lower value is better.
| File | Baseline | New | Factor |
|:------------|---------------:|---------------:|-----------:|
| mruby | 697,520B | 697,520B | 1.00000x |
| libmruby.a | 1,046,570B | 1,046,682B | 0.99989x |
## Note
The address in `struct RObject::iv` may change after initialization because
`iv_tbl*` points directly to hash buckets. Therefore, the address cannot be
copied and shared when include/prepend. So, when sharing `iv_tbl`, refer to
it via the sharing source class. As a result, the following bug have also
been fixed.
* [An `iv_tbl` is not shared when a class includes or prepends an empty module](https://gist.github.com/shuujii/0ac23fa24b0c55b2c602b534d81e4a95 )
2021-02-03 23:16:09 +09:00