ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / Atom feed
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)
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/

       reply index

Thread overview: 3+ 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] " samuel
2020-08-08 14:25 ` [ruby-core:99517] " eregontp

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

ruby-core@ruby-lang.org archive (unofficial mirror)

Archives are clonable: git clone --mirror https://public-inbox.org/ruby-core

Example config snippet for mirrors

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.lang.ruby.core
	nntp://ou63pmih66umazou.onion/inbox.comp.lang.ruby.core
	nntp://news.gmane.io/gmane.comp.lang.ruby.core

 note: .onion URLs require Tor: https://www.torproject.org/

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git