From: "Eregon (Benoit Daloze) via ruby-core" Date: 2023-09-13T09:00:40+00:00 Subject: [ruby-core:114720] [Ruby master Misc#19772] API naming for YARP compiler Issue #19772 has been updated by Eregon (Benoit Daloze). @mame Thanks for the clarifications, notably about the name. My impression is if YARP supports multiple Ruby grammar versions then basically everything discussed in this is solved (and no need to rename, and only C files of yarp are copied in CRuby + available as a bundled gem). Regarding that handler, where would it be defined? It cannot be vendored in CRuby, otherwise e.g. if IntegerNode has a new field (in a newer yarp gem) it would call the IntegerNode constructor with not enough arguments. If it is in the yarp gem, and IntegerNode has a new field (in newer yarp gem) then `build_integer_node` needs e.g. 2 vs 1 arguments. So positional arguments cannot work. It could be keyword arguments, maybe but then it becomes extremely expensive to call those methods from a C extension. That overhead seems big enough to hurt YARP adoption, so I think this is not a good way. I think multi-version support is the best solution here. > I am concerned that if there is something that the parser gem can do but YARP cannot, then the original goal of making YARP a universal parser might not be achieved. Exactly. ---------------------------------------- Misc #19772: API naming for YARP compiler https://bugs.ruby-lang.org/issues/19772#change-104555 * Author: jemmai (Jemma Issroff) * Status: Open * Priority: Normal ---------------------------------------- We are working on the YARP compiler, and have [the first PR ready](https://github.com/ruby/ruby/pull/8042) which introduces the YARP compile method. Our only outstanding question before merging it is about naming. How should we expose the public API for YARP's compile method? Potential suggestions: 1. YARP.compile 2. RubyVM::InstructionSequence.compile(yarp: true) 3. RubyVM::InstructionSequence.compile_yarp 4. Any of the above options, with a name other than yarp (please suggest an alternative) Regarding option 1, which would mirror `YARP.parse`, is the top level constant `YARP` acceptable? cc @matz @ko1 -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/