Issue #6611 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to matz (Yukihiro Matsumoto)
Target version set to next minor


----------------------------------------
Feature #6611:  Comments requested on implementation of set_parse_func
https://bugs.ruby-lang.org/issues/6611#change-33681

Author: cjheath (Clifford Heath)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: 
Target version: next minor


 Folk,
 
 I've implemented Twister, a new mutation testing tool to replace Heckle.
 It relies on a new hook into the Ruby parser, in order to modify what the
 parser thinks it has seen.
 
 Although I have written C extensions before, there are some aspects of
 the Ruby core which I'm unfamiliar with and as a result don't know the right
 way to handle. I'd like your comments, suggestions and improvements
 please.
 
 https://github.com/cjheath/ruby/commit/ea99527feaf7dd06b3e8433ec640238441b188db
 
 In particular, I'd like to know the following:
 
 1) Do you prefer that I move the literal strings (which occur once each) to #defined?
 
 https://github.com/cjheath/ruby/commit/ea99527feaf7dd06b3e8433ec640238441b188db#L1R1003
 
 2) Will this line of code mess up the GC, and how should I fix that?
 
 https://github.com/cjheath/ruby/commit/ea99527feaf7dd06b3e8433ec640238441b188db#L1R3853
 
 3) The set_parse_func is extern though it should be static, but I need to move
 the rb_define_global_function out of thread.c. Can someone please tell me where I should
 move it to, since there is no Init_Parser?
 
 https://github.com/cjheath/ruby/commit/ea99527feaf7dd06b3e8433ec640238441b188db#L1R9029
 
 https://github.com/cjheath/ruby/commit/ea99527feaf7dd06b3e8433ec640238441b188db#L3R4705
 
 4) I think I should change set_parse_func to accept a flags argument and a block,
 instead of assuming all flags, and taking a Proc. What are the downsides of using a
 block instead of a Proc (does this reduce the number of Bindings that get created)?
 How do I change set_parse_func to use a block?
 
 The initial implementation of Twister is an extension to RSpec which adds the option
 "--twist file-or-dir". It's still a bit rough - it needs to change the reporting on the twisted
 runs that follow the first (untwisted) run - but it does prove then concept.
 
 Clifford Heath, Data Constellation, http://dataconstellation.com
 Agile Information Management and Design.


-- 
http://bugs.ruby-lang.org/