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