You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RBS has 3 prototype features. I propose to stop maintaining all of them and eventually deprecate them.
Issues
Implementation as Experimental Features
All three prototypes (rb, rbi, runtime) use Ripper or RubyVM::AbstractSyntaxTree.
Both Ripper and RubyVM::AbstractSyntaxTree are experimental features, and their deprecation has also been proposed.
Decreasing Use Cases
rb
The rbs-inline gem almost entirely covers the prototype rb functionality and is planned to be integrated into the rbs repo in rbs v4. It is expected that prototype rb will no longer be used.
rbi
The rbi feature has served its purpose and is likely no longer in use.
runtime
The runtime feature lacks sufficient functionality for use in large-scale codebases like applications, and for simple use cases, rbs-inline is often sufficient.
Deprecation Method
I propose to issue a warning for prototype features starting with rbs v4, indicating they are slated for deprecation, and to completely remove them in v5.
The runtime feature may still have uses for expanding type definitions in core and stdlib, so it is highly likely to remain for internal use within the rbs repository.
Regarding rbs prototype rbi, I thought it would be good to have it as it bridges the world of rbi and rbs.
Since rbs is Ruby official, if it's said that rbi should provide such a function, that might be true...
@pvcresin Thank you for your feedback.
A high volume of requests would be a strong reason to continue maintenance.
I believe the biggest point of contention is whether official support is necessary.
While official support brings high reliability, it incurs maintenance costs from the hackers. This trade-off should be considered.
Specifically, the current discussion revolves around whether to replace the RubyVM::AbstractSyntaxTree-centric implementation with a Prism-centric one.
I think it's time to consider whether we should invest the cost in this overhaul.
On the other hand, I do have ideas for a replacement implementation, so there's a possibility I might prepare it as a personal tool.
We discussed this internally with the RBS core team, and here is the current direction.
prototype runtime will be deprecated in RBS 3.11 and removed in RBS 4.0. (The use cases are limited.)
prototype rbi and prototype rb will remain supported. In RBS 3.11 (planned for April 2026, after the EOL of Ruby 3.2), we plan to update them to remove the Ripper-based implementation.
For prototype rb, we plan to update the implementation using Prism. In any case, we will keep the functionality to generate RBS files from Ruby code, possibly leveraging inline RBS annotations.
We will continue supporting prototype rbi. Ideally, we would like to rewrite it using Prism, but the exact plan and timeline are still uncertain. (We have some use cases -- to generate RBS type definitions from .rbi files.)
Activity
pvcresin commentedon Feb 6, 2026
Regarding
rbs prototype rbi, I thought it would be good to have it as it bridges the world of rbi and rbs.Since rbs is Ruby official, if it's said that rbi should provide such a function, that might be true...
ksss commentedon Feb 6, 2026
@pvcresin Thank you for your feedback.
A high volume of requests would be a strong reason to continue maintenance.
I believe the biggest point of contention is whether official support is necessary.
While official support brings high reliability, it incurs maintenance costs from the hackers. This trade-off should be considered.
Specifically, the current discussion revolves around whether to replace the
RubyVM::AbstractSyntaxTree-centric implementation with aPrism-centric one.I think it's time to consider whether we should invest the cost in this overhaul.
On the other hand, I do have ideas for a replacement implementation, so there's a possibility I might prepare it as a personal tool.
soutaro commentedon Feb 9, 2026
We discussed this internally with the RBS core team, and here is the current direction.
prototype runtimewill be deprecated in RBS 3.11 and removed in RBS 4.0. (The use cases are limited.)prototype rbiandprototype rbwill remain supported. In RBS 3.11 (planned for April 2026, after the EOL of Ruby 3.2), we plan to update them to remove the Ripper-based implementation.prototype rb, we plan to update the implementation using Prism. In any case, we will keep the functionality to generate RBS files from Ruby code, possibly leveraging inline RBS annotations.prototype rbi. Ideally, we would like to rewrite it using Prism, but the exact plan and timeline are still uncertain. (We have some use cases -- to generate RBS type definitions from.rbifiles.)