<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/test/ripper, branch v3_4_9</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>merge revision(s) fb18bb183c24ca82b8f114ed090d62bd69b5df84: [Backport #20989]</title>
<updated>2025-02-14T01:50:05+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-02-14T01:50:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5ba052675f0eefe77dd7ab30bb9ac186f8d82ccb'/>
<id>5ba052675f0eefe77dd7ab30bb9ac186f8d82ccb</id>
<content type='text'>
	[Bug #20989] Ripper: Pass `compile_error`

	For the universal parser, `rb_parser_reg_fragment_check` function is
	shared between the parser and ripper.  However `parser_params` struct
	is partially different, and `compile_error` function depends on that
	part indirectly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[Bug #20989] Ripper: Pass `compile_error`

	For the universal parser, `rb_parser_reg_fragment_check` function is
	shared between the parser and ripper.  However `parser_params` struct
	is partially different, and `compile_error` function depends on that
	part indirectly.
</pre>
</div>
</content>
</entry>
<entry>
<title>[Bug #20969] Pass `assignable` from ripper</title>
<updated>2024-12-19T14:20:09+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-12-19T14:20:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7b2ae8df905d7bbc084d31a8f55cecc7e7c422b3'/>
<id>7b2ae8df905d7bbc084d31a8f55cecc7e7c422b3</id>
<content type='text'>
For the universal parser, `rb_reg_named_capture_assign_iter_impl`
function is shared between the parser and ripper.  However
`parser_params` struct is partially different, and `assignable`
function depends on that part indirectly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For the universal parser, `rb_reg_named_capture_assign_iter_impl`
function is shared between the parser and ripper.  However
`parser_params` struct is partially different, and `assignable`
function depends on that part indirectly.
</pre>
</div>
</content>
</entry>
<entry>
<title>[Bug #20784] Fix incomplete character syntax followed by EOF</title>
<updated>2024-10-05T06:59:01+00:00</updated>
<author>
<name>tompng</name>
<email>tomoyapenguin@gmail.com</email>
</author>
<published>2024-10-05T06:18:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6743e6285a585fbd0a3b25b8eeed10caf1fae66e'/>
<id>6743e6285a585fbd0a3b25b8eeed10caf1fae66e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix leak of token_info when Ripper#warn jumps</title>
<updated>2024-08-07T13:14:14+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-07-31T18:59:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=584559d86a951095d793a536ad998e12ea08a890'/>
<id>584559d86a951095d793a536ad998e12ea08a890</id>
<content type='text'>
For example, the following code leaks:

    class MyRipper &lt; Ripper
      def initialize(src, &amp;blk)
        super(src)
        @blk = blk
      end

      def warn(msg, *args) = @blk.call(msg)
    end

    $VERBOSE = true
    def call_parse = MyRipper.new("if true\n  end\n") { |msg| return msg }.parse

    10.times do
      500_000.times do
        call_parse
      end

      puts `ps -o rss= -p #{$$}`
    end

Before:

    37536
    53744
    70064
    86448
    102576
    119120
    135248
    151216
    167744
    183824

After:

    19280
    19696
    19728
    20336
    20448
    21408
    21616
    21616
    21824
    21840
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For example, the following code leaks:

    class MyRipper &lt; Ripper
      def initialize(src, &amp;blk)
        super(src)
        @blk = blk
      end

      def warn(msg, *args) = @blk.call(msg)
    end

    $VERBOSE = true
    def call_parse = MyRipper.new("if true\n  end\n") { |msg| return msg }.parse

    10.times do
      500_000.times do
        call_parse
      end

      puts `ps -o rss= -p #{$$}`
    end

Before:

    37536
    53744
    70064
    86448
    102576
    119120
    135248
    151216
    167744
    183824

After:

    19280
    19696
    19728
    20336
    20448
    21408
    21616
    21616
    21824
    21840
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix leak in warning of duplicate keys when Ripper#warn jumps</title>
<updated>2024-08-06T14:19:50+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-07-31T18:18:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=ced35800d48e671ed739c8451823c7d3180ef8ac'/>
<id>ced35800d48e671ed739c8451823c7d3180ef8ac</id>
<content type='text'>
For example, the following code leaks:

    class MyRipper &lt; Ripper
      def initialize(src, &amp;blk)
        super(src)
        @blk = blk
      end

      def warn(msg, *args) = @blk.call(msg)
    end

    $VERBOSE = true
    def call_parse = MyRipper.new("if true\n  end\n") { |msg| return msg }.parse

    10.times do
      500_000.times do
        call_parse
      end

      puts `ps -o rss= -p #{$$}`
    end

Before:

    34832
    51952
    69760
    88048
    105344
    123040
    141152
    159152
    176656
    194272

After:

    18400
    20256
    20272
    20272
    20272
    20304
    20368
    20368
    20368
    20400
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For example, the following code leaks:

    class MyRipper &lt; Ripper
      def initialize(src, &amp;blk)
        super(src)
        @blk = blk
      end

      def warn(msg, *args) = @blk.call(msg)
    end

    $VERBOSE = true
    def call_parse = MyRipper.new("if true\n  end\n") { |msg| return msg }.parse

    10.times do
      500_000.times do
        call_parse
      end

      puts `ps -o rss= -p #{$$}`
    end

Before:

    34832
    51952
    69760
    88048
    105344
    123040
    141152
    159152
    176656
    194272

After:

    18400
    20256
    20272
    20272
    20272
    20304
    20368
    20368
    20368
    20400
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix leak of AST when Ripper#compile_error jumps</title>
<updated>2024-07-31T18:47:44+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-07-31T17:32:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=635839749026b5d5bafeb892f2f01a9348a4b5c8'/>
<id>635839749026b5d5bafeb892f2f01a9348a4b5c8</id>
<content type='text'>
For example, the following script leaks:

    class MyRipper &lt; Ripper
      def initialize(src, &amp;blk)
        super(src)
        @blk = blk
      end

      def compile_error(msg) = @blk.call(msg)
    end

    def call_parse = MyRipper.new("/") { |msg| return msg }.parse

    10.times do
      100_000.times do
        call_parse
      end

      puts `ps -o rss= -p #{$$}`
    end

Before:

    93952
    169040
    244224
    318784
    394432
    468224
    544048
    618560
    693776
    768384

After:

    19776
    19776
    20352
    20880
    20912
    21408
    21328
    21152
    21472
    20944
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For example, the following script leaks:

    class MyRipper &lt; Ripper
      def initialize(src, &amp;blk)
        super(src)
        @blk = blk
      end

      def compile_error(msg) = @blk.call(msg)
    end

    def call_parse = MyRipper.new("/") { |msg| return msg }.parse

    10.times do
      100_000.times do
        call_parse
      end

      puts `ps -o rss= -p #{$$}`
    end

Before:

    93952
    169040
    244224
    318784
    394432
    468224
    544048
    618560
    693776
    768384

After:

    19776
    19776
    20352
    20880
    20912
    21408
    21328
    21152
    21472
    20944
</pre>
</div>
</content>
</entry>
<entry>
<title>[Bug #20649] Allow `nil` as 2nd argument of `assign_error`</title>
<updated>2024-07-24T13:18:36+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-07-24T12:28:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=97449338d6cb42d9dd7c9ca61550616e7e6b6ef6'/>
<id>97449338d6cb42d9dd7c9ca61550616e7e6b6ef6</id>
<content type='text'>
Fallback to the last token element in that case, for the backward
compatibilities.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fallback to the last token element in that case, for the backward
compatibilities.
</pre>
</div>
</content>
</entry>
<entry>
<title>[Bug #20579] ripper: Dispatch spaces at END-OF-INPUT without newline</title>
<updated>2024-06-14T08:54:02+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-06-14T07:46:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a1f72a563b74a44198b34add3aa9fdcef54c2405'/>
<id>a1f72a563b74a44198b34add3aa9fdcef54c2405</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[Bug #20578] ripper: Fix dispatching part at invalid escapes</title>
<updated>2024-06-14T06:02:15+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-06-14T05:10:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2e59cf00cc35183fe9b616672cb8d2b461b1cf9b'/>
<id>2e59cf00cc35183fe9b616672cb8d2b461b1cf9b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ripper: Fix excess `compile_error` at simple backref op_asgn</title>
<updated>2024-06-07T02:28:38+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-05-19T10:42:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9e28354705e2aa312e5dee775e3bd08095fc7e9c'/>
<id>9e28354705e2aa312e5dee775e3bd08095fc7e9c</id>
<content type='text'>
Fix up 89cfc1520717257073012ec07105c551e4b8af7c.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix up 89cfc1520717257073012ec07105c551e4b8af7c.
</pre>
</div>
</content>
</entry>
</feed>
