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