On 06/20/2016 04:05 PM, John Regehr wrote:
> Hi Moritz, I need to give your version a careful read and run it against the 
> default version-- will get back to you.  Thanks!
> 
> John
> 
> 
> On 6/19/16 9:08 PM, Moritz Pflanzer wrote:
>> Hi John,
>>
>> It took me a good time longer than I expected but I now my Python version of 
>> C-Reduce is complete. I ported all passes to Python and except for the "skip 
>> key" feature all options are supported. The skip-key feature seems indeed to 
>> be quite a problem under Linux as there is no non-blocking read function 
>> which reads only a single character (not followed by ENTER). For now I 
>> stopped trying to implement the feature to see if there is further interest 
>> at all.
>>
>> I pushed the current version to the "python" branch of my repository at: 
>> https://github.com/mpflanzer/creduce/tree/python
>> I added a second table to the spreadsheet for a speed comparison for the 
>> complete set of passes: 
>> https://docs.google.com/spreadsheets/d/1FIvuHr29X2T2H2wOrnGCU0BUM3NeQrvJY_GpKMVJRCA/edit?usp=sharing
>>
>>
>>> Yes, absolutely, there's no requirement for a line-by-line rewrite. I'll 
>>> have to look at the code to find things I'm unhappy with, but the short 
>>> version is I've rewritten the C-Reduce core enough times that I'm pretty 
>>> happy with it.
>>
>> I think I found a few minor bugs in some passes which I fixed in the Python 
>> version. So if the Python version has no future on its own I will compare it 
>> against the Perl version and report the issues I found.
>>
>> The only major change -- I think -- is that interestingness test are now 
>> Python modules, i.e. Python scripts. Currently each script has to define a 
>> "run" and a "check" function. Both function take a list of test cases as 
>> inout, "check" has to return True or False depending on the interestingness 
>> of the test cases and "run" has to exit with either 0 or 1; also depending 
>> on the interestingness.
>> Except for the fact that it have to be Python the "API" of the script could 
>> easily be changed. They have to be Python scripts because this allows to use 
>> the "multiprocessing" module which is platform independent and supports 
>> everything that is needed to run the interestingness tests as separate 
>> process and to wait on any process to finish.
>>
>>
>>> One thing I've wanted is a way to better specify the pass ordering, which 
>>> is kind of hacky.  It would also be nice to allow users to customize the 
>>> passes using a little file.  Also we'd like to customize the passes based 
>>> on the language that is being reduced.
>>
>> At the top-level passes are now represented in groups. This allows to make 
>> different configurations based on languages etc. Each group consists of 
>> three subgroups (first, main, last) which itself contain a list with passes. 
>> The priority is now implied by the position in the list.
>> The downside is that the passes have to be repeated for each group but this 
>> layout makes it easy to take for instance a JSON file as input to define a 
>> custom group of passes (not implemented yet).
>>
>>
>>> Regarding the passes, there's some pretty bad stuff in the regex-based 
>>> passes.  These are basically the original C-Reduce code from the mid/late 
>>> 2000s.  It would be great to find better ways to do these rewrites.
>>
>> I hope the nested regular expressions are now a bit nicer and maybe even 
>> faster. I had to write a custom parser for nested expressions as there seems 
>> to be no build-in approach. Currently it is more like a prototype -- though 
>> fully functional -- and I am sure it could be further improved. Both in 
>> terms of ease of use and performance.
>>
>> I am happy about any questions or comments. In the meantime I will try to 
>> keep my version up-to-date with the master branch of C-Reduce.
>>
>> Regards,
>>
>> Moritz
>>

Hello.

I've working on GCC as a develop, creduce is my daily tool and I'm really 
grateful we've got such a tool.
I'm also responsible for packaging of the project in openSUSE. And time to time 
I see some warnings/errors
in the tool. To be honest, I don't like Perl much, so I always bail out any 
debugging of the tool.

I would be happy to see the tool re-written in Python and I'm curious about any 
progress update
of the migration. From I've read in this discussion, the transition is very 
close.

Thank you,
Martin

Reply via email to