| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2019-02-11 | Should not copy keys&values when a hash table is empty; fix #4270 | Yukihiro "Matz" Matsumoto | |
| 2018-12-17 | Small refactoring of #4188 | Yukihiro "Matz" Matsumoto | |
| 2018-12-14 | Add `mrb_hash_size()` function. | dearblue | |
| 2018-12-11 | Avoid using floating point number for HT_SEG_INCREASE_RATIO; ref #4182 | Yukihiro "Matz" Matsumoto | |
| 2018-12-11 | Rename `ht_foreach_func` to `mrb_hash_foreach_func`. | Yukihiro "Matz" Matsumoto | |
| 2018-12-11 | Update comments. | Yukihiro "Matz" Matsumoto | |
| 2018-12-11 | Add API function `mrb_hash_foreach()` to iterate over items in a hash. | Yukihiro "Matz" Matsumoto | |
| 2018-11-19 | Removed `to_hash` conversion method. | Yukihiro "Matz" Matsumoto | |
| 2018-11-19 | Improve Hash table using variable sized segments. | Yukihiro "Matz" Matsumoto | |
| 2018-11-16 | The key or value object could be reclaimed by GC; fix #4164 | Yukihiro "Matz" Matsumoto | |
| The GC may occur between `sg_shift` and `mrb_assoc_new`, in which case `key` and `value` could be freed even tough they are still alive. The issue is found and fixed by https://hackerone.com/hexodus | |||
| 2018-10-20 | Need to freeze string keys. | Yukihiro "Matz" Matsumoto | |
| 2018-10-12 | Should not compare `undef` (deleted) key in hashes; fix #4136 | Yukihiro "Matz" Matsumoto | |
| 2018-10-12 | Add `NULL` check in `sg_compact()`; fix #4139 | Yukihiro "Matz" Matsumoto | |
| 2018-10-12 | `Hash#delete` should return the deleted value; fix #4133 | Yukihiro "Matz" Matsumoto | |
| 2018-09-26 | Implement `Hash#rehash` in C using `sg_compact()`. | Yukihiro "Matz" Matsumoto | |
| 2018-09-26 | Add index to larger segment lists for performance | Yukihiro "Matz" Matsumoto | |
| 2018-09-26 | Use `mrb_undef_value` for delete mark instead of shifting Hash entry table. | Yukihiro "Matz" Matsumoto | |
| That means entry table should be compacted periodically by `sg_compact()`. | |||
| 2018-09-26 | Use segmented list to implement `Hash` [Experimental] | Yukihiro "Matz" Matsumoto | |
| I know it's not hash at all, but reduce memory consumption. | |||
| 2018-09-06 | Need to check if merging hash is empty; fix #4107 | Yukihiro "Matz" Matsumoto | |
| 2018-08-30 | Add new function `mrb_ensure_hash_type()`; ref #4097 | Yukihiro "Matz" Matsumoto | |
| Unlike `mrb_check_hash_type()` that returns `nil` if the argument is not a `Hash`, `mrb_ensure_hash_type()` raises a `TypeError` exception. | |||
| 2018-08-25 | Add a new function `mrb_hash_merge()`. | Yukihiro "Matz" Matsumoto | |
| 2018-07-30 | Keyword argument implemented. | Yukihiro "Matz" Matsumoto | |
| 2018-06-01 | Instead of defining `Hash#dup`, we should define `Hash#initialize_copy`. | Yukihiro "Matz" Matsumoto | |
| `Hash#clone` did not work properly; fix #4030 | |||
| 2017-12-12 | Modifying frozen objects will raise `FrozenError`. | Yukihiro "Matz" Matsumoto | |
| `FrozenError` is a subclass of `RuntimeError` which used to be raised. [Ruby2.5] | |||
| 2017-11-19 | Leave `hash->ht` to be `NULL` if initial capacity is zero. | Yukihiro "Matz" Matsumoto | |
| 2017-10-11 | Add MRB_WITHOUT_FLOAT | YAMAMOTO Masaya | |
| 2017-09-27 | fix: src\hash.c(139): warning C4244: 'function': conversion from 'mrb_int' ↵ | Tomasz Dąbrowski | |
| to 'khint_t', possible loss of data | |||
| 2017-09-27 | fix: src\hash.c(40): warning C4244: '=': conversion from 'mrb_int' to ↵ | Tomasz Dąbrowski | |
| 'khint_t', possible loss of data | |||
| 2017-08-10 | Use standard hash functions in `mrb_hash_ht_hash_func`. | Yukihiro "Matz" Matsumoto | |
| 2017-08-05 | Prevented resizing just created hashes in specific size ranges | Christopher Aue | |
| 2017-08-04 | Improved speed of creating new hash tables | Christopher Aue | |
| 2017-07-27 | Embed small size array elements in the heap. | Yukihiro "Matz" Matsumoto | |
| It reduces the memory consumption and sometimes improve the performance as well. For example, the consumed memory size of `bench/bm_ao_render.rb` is reduced from 1.2GB to 1GB, and its total execution time become 18.795 sec from 22.229 sec. | |||
| 2017-06-19 | Use `mrb_int` instead of `int` as argument to `mrb_hash_new_capa`. | Yukihiro "Matz" Matsumoto | |
| 2017-04-18 | Hash#dup didn't check if internal khash is initialized; fix #3609 | Yukihiro "Matz" Matsumoto | |
| 2017-04-01 | Pacify signed warning; ref #3565 | Yukihiro "Matz" Matsumoto | |
| 2017-03-31 | Avoid crash if hv.n is greater than kh_size(h); fix #3565 | Yukihiro "Matz" Matsumoto | |
| The resulting behavior is different from CRuby, but modifying hash key afterwards is undefined behavior in ISO spec. | |||
| 2017-03-28 | Renumber hash keys during dup since there may be duplicates. | Clayton Smith | |
| 2017-02-15 | Use mrb_funcall_argv() instead of mrb_funcall() | Yukihiro "Matz" Matsumoto | |
| 2017-02-14 | Do not use mrb_funcall() if Hash#default is not overridden; ref #3421 | Yukihiro "Matz" Matsumoto | |
| This change reduces the recursion level, but does not solve the stack overflow issue entirely. | |||
| 2017-01-05 | Add mrb_hash_modify() to Hash#{delete,clear}; ref #3370 | Yukihiro "Matz" Matsumoto | |
| This issue was reported by https://hackerone.com/an0n-j | |||
| 2016-12-12 | rename prefix RBASIC_ to MRB_; ref #3340 | Yukihiro "Matz" Matsumoto | |
| 2016-12-11 | Implement Object#freeze | Takashi Kokubun | |
| 2016-12-07 | Copy default_proc by Hash#dup. | Shugo Maeda | |
| 2016-11-24 | always call Hash#default if no key found; fix #3272 | Yukihiro "Matz" Matsumoto | |
| 2016-11-12 | Hash#[] to call Hash#default | Yukihiro "Matz" Matsumoto | |
| 2016-08-01 | make mrb_hash_values() a public API function | William Light | |
| 2016-02-05 | Hash: check flags before accessing ifnone; ref #980 | Yukihiro "Matz" Matsumoto | |
| 2016-01-07 | move KHASH_DECLARE(ht..) to mruby/hash.h; close #3073 | Yukihiro "Matz" Matsumoto | |
| 2015-11-27 | include changed from by quotes ("") to by brackets (<>); close #3032 | Yukihiro "Matz" Matsumoto | |
| 2015-10-20 | Remove obvious warnings from docs | Seba Gamboa | |
