<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/prism/config.yml, branch v3_3_11</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Revert all of commits after Prism 0.19.0 release</title>
<updated>2023-12-16T03:08:51+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2023-12-16T03:05:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d242e8416e99eaee4465e2681210ae8b7ecd6d34'/>
<id>d242e8416e99eaee4465e2681210ae8b7ecd6d34</id>
<content type='text'>
  We should bundle released version of Prism for Ruby 3.3.0
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  We should bundle released version of Prism for Ruby 3.3.0
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Finish keyword hash node flag refactor by renaming flag</title>
<updated>2023-12-15T18:45:36+00:00</updated>
<author>
<name>Ufuk Kayserilioglu</name>
<email>ufuk.kayserilioglu@shopify.com</email>
</author>
<published>2023-12-15T18:03:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0a31cb1a37f184daa7c2839abd6a827793fdd2f3'/>
<id>0a31cb1a37f184daa7c2839abd6a827793fdd2f3</id>
<content type='text'>
https://github.com/ruby/prism/commit/7f812389f8
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/prism/commit/7f812389f8
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Flag for attribute write on calls</title>
<updated>2023-12-12T15:55:54+00:00</updated>
<author>
<name>Kevin Newton</name>
<email>kddnewton@gmail.com</email>
</author>
<published>2023-12-12T15:39:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=278ce27ee4063dec5b8967563d58e32ea087a380'/>
<id>278ce27ee4063dec5b8967563d58e32ea087a380</id>
<content type='text'>
https://github.com/ruby/prism/commit/465731969c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/prism/commit/465731969c
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Add `STATIC_KEYS` flag for `KeywordHashNode`</title>
<updated>2023-12-12T13:05:08+00:00</updated>
<author>
<name>Ufuk Kayserilioglu</name>
<email>ufuk.kayserilioglu@shopify.com</email>
</author>
<published>2023-12-11T20:26:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=25b9a0cbc86da562e765e4fac27bb28311646971'/>
<id>25b9a0cbc86da562e765e4fac27bb28311646971</id>
<content type='text'>
https://github.com/ruby/prism/commit/aa83de39c1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/prism/commit/aa83de39c1
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Split up CallNode in target position</title>
<updated>2023-12-11T15:32:31+00:00</updated>
<author>
<name>Kevin Newton</name>
<email>kddnewton@gmail.com</email>
</author>
<published>2023-12-08T14:57:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b673b5b4329d020b19907142f291c8ecd69e95e0'/>
<id>b673b5b4329d020b19907142f291c8ecd69e95e0</id>
<content type='text'>
In this commit we're splitting up the call nodes that were in target
positions (that is, for loop indices, rescue error captures, and
multi assign targets).

Previously, we would simply leave the call nodes in place. This had
the benefit of keeping the AST relatively simple, but had the
downside of not being very explicit. If a static analysis tool wanted
to only look at call nodes, it could easily be confused because the
method would have 1 fewer argument than it would actually be called
with.

This also brings some consistency to the AST. All of the nodes in
a target position are now *TargetNode nodes. These should all be
treated the same, and the call nodes can now be treated the same.

Finally, there is benefit to memory. Because being in a target
position ensures we don't have some fields, we can strip down the
number of fields on these nodes.

So this commit introduces two new nodes: CallTargetNode and
IndexTargetNode. For CallTargetNode we get to drop the opening_loc,
closing_loc, arguments, and block. Those can never be present. We
also get to mark their fields as non-null, so they will always be
seen as present.

The IndexTargetNode keeps around most of its fields but gets to
drop both the name (because it will always be []=) and the
message_loc (which was always super confusing because it included
the arguments by virtue of being inside the []).

Overall, this adds complexity to the AST at the expense of memory
savings and explicitness. I believe this tradeoff is worth it in
this case, especially because these are very much not common nodes
in the first place.

https://github.com/ruby/prism/commit/3ef71cdb45
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In this commit we're splitting up the call nodes that were in target
positions (that is, for loop indices, rescue error captures, and
multi assign targets).

Previously, we would simply leave the call nodes in place. This had
the benefit of keeping the AST relatively simple, but had the
downside of not being very explicit. If a static analysis tool wanted
to only look at call nodes, it could easily be confused because the
method would have 1 fewer argument than it would actually be called
with.

This also brings some consistency to the AST. All of the nodes in
a target position are now *TargetNode nodes. These should all be
treated the same, and the call nodes can now be treated the same.

Finally, there is benefit to memory. Because being in a target
position ensures we don't have some fields, we can strip down the
number of fields on these nodes.

So this commit introduces two new nodes: CallTargetNode and
IndexTargetNode. For CallTargetNode we get to drop the opening_loc,
closing_loc, arguments, and block. Those can never be present. We
also get to mark their fields as non-null, so they will always be
seen as present.

The IndexTargetNode keeps around most of its fields but gets to
drop both the name (because it will always be []=) and the
message_loc (which was always super confusing because it included
the arguments by virtue of being inside the []).

Overall, this adds complexity to the AST at the expense of memory
savings and explicitness. I believe this tradeoff is worth it in
this case, especially because these are very much not common nodes
in the first place.

https://github.com/ruby/prism/commit/3ef71cdb45
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Add necessary encoding flags for symbols and regex</title>
<updated>2023-12-08T18:59:52+00:00</updated>
<author>
<name>Kevin Newton</name>
<email>kddnewton@gmail.com</email>
</author>
<published>2023-12-08T15:10:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=98e3552cfb80d4d3a8176d9969ea4956adee93d5'/>
<id>98e3552cfb80d4d3a8176d9969ea4956adee93d5</id>
<content type='text'>
This doesn't actually fix the encodings for symbols and regex,
unfortunately. But I wanted to get this change in because it is
the last AST change we're going to make before 3.3 is released.

So, if consumers want, they can start to check these flags to
determine the encoding, even though it will be wrong. Then once we
actually set them correctly, everything should work.

https://github.com/ruby/prism/commit/9b35f7e891
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This doesn't actually fix the encodings for symbols and regex,
unfortunately. But I wanted to get this change in because it is
the last AST change we're going to make before 3.3 is released.

So, if consumers want, they can start to check these flags to
determine the encoding, even though it will be wrong. Then once we
actually set them correctly, everything should work.

https://github.com/ruby/prism/commit/9b35f7e891
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Update ordering of integer base flags</title>
<updated>2023-12-07T16:00:41+00:00</updated>
<author>
<name>Kevin Newton</name>
<email>kddnewton@gmail.com</email>
</author>
<published>2023-12-07T15:39:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c05278e425a7b7cadf0bf299ecfbe0ae9525c75c'/>
<id>c05278e425a7b7cadf0bf299ecfbe0ae9525c75c</id>
<content type='text'>
https://github.com/ruby/prism/commit/d711950d5f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/prism/commit/d711950d5f
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Move flag position consistently to front</title>
<updated>2023-12-06T20:50:02+00:00</updated>
<author>
<name>Kevin Newton</name>
<email>kddnewton@gmail.com</email>
</author>
<published>2023-12-06T20:32:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fe6ee5e92148755b75ffd00ab29611b59a416d5a'/>
<id>fe6ee5e92148755b75ffd00ab29611b59a416d5a</id>
<content type='text'>
https://github.com/ruby/prism/commit/6e69a81737
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/prism/commit/6e69a81737
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Provide flags for changing encodings</title>
<updated>2023-12-06T19:23:38+00:00</updated>
<author>
<name>Kevin Newton</name>
<email>kddnewton@gmail.com</email>
</author>
<published>2023-12-04T17:51:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=82f18baa21d0df59c30d8a6e60bf3e0991de1114'/>
<id>82f18baa21d0df59c30d8a6e60bf3e0991de1114</id>
<content type='text'>
https://github.com/ruby/prism/commit/e838eaff6f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/prism/commit/e838eaff6f
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Add locals_body_index to DefNode, BlockNode, LambdaNode</title>
<updated>2023-12-06T14:55:48+00:00</updated>
<author>
<name>Jemma Issroff</name>
<email>jemmaissroff@gmail.com</email>
</author>
<published>2023-12-04T21:40:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=018dbf18d50b34a3ea564bfe0264a423de4b33bb'/>
<id>018dbf18d50b34a3ea564bfe0264a423de4b33bb</id>
<content type='text'>
The locals_body_index gives the index in the locals array where
the locals from the body start. This allows compilers to easily
index past the parameters in the locals array.

https://github.com/ruby/prism/commit/5d4627b890
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The locals_body_index gives the index in the locals array where
the locals from the body start. This allows compilers to easily
index past the parameters in the locals array.

https://github.com/ruby/prism/commit/5d4627b890
</pre>
</div>
</content>
</entry>
</feed>
