From: "Martin J. Dürst via ruby-core" Date: 2024-01-22T14:02:02+09:00 Subject: [ruby-core:116361] Re: [Ruby master Bug#20150] Memory leak in grapheme clusters Hello Tomoyuki, Many thanks for your careful explanation! Regards, Martin. On 2024-01-19 17:14, nagachika (Tomoyuki Chikanaga) via ruby-core wrote: > Issue #20150 has been updated by nagachika (Tomoyuki Chikanaga). > > > Hello, Martin-sensei. > > In my understandings, there's no explicit rule regarding the order of backporting to each stable branch. > In this case, I backported the changeset to the 3.2 branch ahead of the 3.3 branch because I hoped to include some obvious bug-fixes in ruby-3.2.3 released yesterday. I also think these fixes should be backported to 3.3 branch before release of ruby-3.3.1, but it's up to naruse-san, the current 3.3 branch maintainer. > > Best Regards, > > ---------------------------------------- > Bug #20150: Memory leak in grapheme clusters > https://bugs.ruby-lang.org/issues/20150#change-106342 > > * Author: peterzhu2118 (Peter Zhu) > * Status: Closed > * Priority: Normal > * Backport: 3.0: UNKNOWN, 3.1: REQUIRED, 3.2: DONE, 3.3: REQUIRED > ---------------------------------------- > GitHub PR: https://github.com/ruby/ruby/pull/9414 > > String#grapheme_cluters and String#each_grapheme_cluster leaks memory because if the string is not UTF-8, then the created regex will not be freed. > > For example: > > ```ruby > str = "hello world".encode(Encoding::UTF_32LE) > > 10.times do > 1_000.times do > str.grapheme_clusters > end > > puts `ps -o rss= -p #{$$}` > end > ``` > > Before: > > ``` > 26000 > 42256 > 59008 > 75792 > 92528 > 109232 > 125936 > 142672 > 159392 > 176160 > ``` > > After: > > ``` > 9264 > 9504 > 9808 > 10000 > 10128 > 10224 > 10352 > 10544 > 10704 > 10896 > ``` > > ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/