From: eregontp@gmail.com
To: ruby-core@ruby-lang.org
Subject: [ruby-core:99435] [Ruby master Feature#14844] Future of RubyVM::AST?
Date: Sat, 01 Aug 2020 13:11:01 +0000 (UTC) [thread overview]
Message-ID: <redmine.journal-86890.20200801131100.8779@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-14844.20180612141613.8779@ruby-lang.org
Issue #14844 has been updated by Eregon (Benoit Daloze).
[RBS](https://github.com/ruby/rbs) is using `RubyVM::AbstractSyntaxTree` for `rbs prototype`.
RBS is an official project under the Ruby organization, so I believe it should be able to fully work on other Ruby implementations too ([issue](https://github.com/ruby/rbs/issues/348) about this in RBS).
That is impossible as long as `AbstractSyntaxTree` is under `RubyVM`, or as long as RBS uses `RubyVM::AbstractSyntaxTree` with no fallback.
So, I think it is time to move `AbstractSyntaxTree` outside of RubyVM.
Otherwise, other Ruby implementations will have no choice but to define `RubyVM` too, which everyone seems to agree is unwanted as RubyVM is (at least currently) meant CRuby-only.
I see three ways forward:
* Move `AbstractSyntaxTree` under `ExperimentalFeatures` (#15752), so it is still experimental but at least other Ruby implementations can implement it too.
* Make `AbstractSyntaxTree` stable, and move it under a stable namespace (maybe just `::AbstractSyntaxTree`?)
* Change the meaning of RubyVM so it is not CRuby-specific but also exists on other Ruby implementations. Many people don't know that `RubyVM` means experimental, so `ExperimentalFeatures` seems much clearer.
I prefer the first option, but any of the 3 unblocks the situation (which is also explained in #15752).
Can we pick one?
@matz can you decide?
----------------------------------------
Feature #14844: Future of RubyVM::AST?
https://bugs.ruby-lang.org/issues/14844#change-86890
* Author: rmosolgo (Robert Mosolgo)
* Status: Open
* Priority: Normal
* Assignee: yui-knk (Kaneko Yuichiro)
----------------------------------------
Hi! Thanks for all your great work on the Ruby language.
I saw the new RubyVM::AST module in 2.6.0-preview2 and I quickly went to try it out.
I'd love to have a well-documented, user-friendly way to parse and manipulate Ruby code using the Ruby standard library, so I'm pretty excited to try it out. (I've been trying to learn Ripper recently, too: https://ripper-preview.herokuapp.com/, https://rmosolgo.github.io/ripper_events/ .)
Based on my exploration, I opened a small PR on GitHub with some documentation: https://github.com/ruby/ruby/pull/1888
I'm curious though, are there future plans for this module? For example, we might:
- Add more details about each node (for example, we could expose the names of identifiers and operators through the node classes)
- Document each node type
I see there is a lot more information in the C structures that we could expose, and I'm interested to help out if it's valuable. What do you think?
--
https://bugs.ruby-lang.org/
next parent reply other threads:[~2020-08-01 13:11 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <redmine.issue-14844.20180612141613.8779@ruby-lang.org>
2020-08-01 13:11 ` eregontp [this message]
2020-08-08 8:35 ` [ruby-core:99516] [Ruby master Feature#14844] Future of RubyVM::AST? samuel
2020-08-08 14:25 ` [ruby-core:99517] " eregontp
2020-08-31 8:22 ` [ruby-core:99791] " matz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.ruby-lang.org/en/community/mailing-lists/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=redmine.journal-86890.20200801131100.8779@ruby-lang.org \
--to=ruby-core@ruby-lang.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).