Project

General

Profile

Actions

Feature #6611

open

Comments requested on implementation of set_parse_func

Added by cjheath (Clifford Heath) over 12 years ago. Updated almost 7 years ago.

Status:
Assigned
Target version:
-
[ruby-core:45706]

Description

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

  1. Will this line of code mess up the GC, and how should I fix that?

https://github.com/cjheath/ruby/commit/ea99527feaf7dd06b3e8433ec640238441b188db#L1R3853

  1. 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

  1. 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.

Updated by cjheath (Clifford Heath) over 12 years ago

Bump.

Please comment on https://bugs.ruby-lang.org/issues/6611.
I need to finish this implementation, and the support in RSpec.

Clifford Heath.

On 19/06/2012, at 10:45 AM, Clifford Heath wrote:

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

  1. Will this line of code mess up the GC, and how should I fix that?

https://github.com/cjheath/ruby/commit/ea99527feaf7dd06b3e8433ec640238441b188db#L1R3853

  1. 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

  1. 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.

Updated by naruse (Yui NARUSE) over 12 years ago

Generally speaking on ruby, feature request is hard to accept.
Submitter must make people understand why the feature is required.
The challenger must explain

  • Background
  • use case and current workaround
  • how the new feature make their life well

Therefore for your proposal, why ripper is not enough?

Updated by mame (Yusuke Endoh) about 12 years ago

  • Status changed from Open to Assigned
  • Assignee set to matz (Yukihiro Matsumoto)
  • Target version set to 2.6
Actions #4

Updated by naruse (Yui NARUSE) almost 7 years ago

  • Target version deleted (2.6)
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0