ruby2c version 1.0.0.6 has been released!
Published 2009-06-23 @ 19:35
ruby_to_c translates a static ruby subset to C. Hopefully it works.
NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE
THIS IS BETA SOFTWARE!
NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE
RubyToC has the following modules:
- Rewriter - massages the sexp into a more consistent form.
- TypeChecker - type inferencer for the above sexps.
- RubyToRubyC - converts a ruby (subset) sexp to ruby interals C.
- RubyToAnsiC - converts a ruby (subset) sexp to ANSI C.
and the following tools:
- translate.rb - Translates a given file to C.
Changes:
1.0.0.6 / 2009-06-23
1 major enhancement:
- Switched from ParseTree to ruby_parser for 1.9 compatibility. woo.
- All translate/process methods are gone since we can’t reflect at runtime.
43 minor enhancements:
- Added IterRewriter for finding free variables in iter nodes.
- Added dxstr.
- Added lots of new and missing tests
- Added not, array, lit_long_negative, lit_range[23], lit_regexp{_n,_once}, lit_sym{,_splat}
- Added pct_w tests
- Added process_defx to ruby_to_ansi_c.rb
- Added test data for array_pct_W, array_pct_W_dstr, attrasgn_index_equals, attrasgn_index_equals_space, and attrset.
- Added tests for “and”. PONG to eric
- Added to_ary and masgn for TypeChecker.
- Added xstr support.
- Added yield(*ary)
- Cleaned up rewriter.rb and made changes for pt_testcase.rb
- Cleaned up some free_vars processing code.
- Converted everything to new enhanced PTTC test scheme.
- Enhanced with_scope to allow for static arrays.
- Extended Environment to separately store both types and values.
- Extern methods to support rb_iterate, including #each and #each_with_index.
- Free var static declarations for C layers.
- Merged IterRewriter into CRewriter and make typed.
- Migrated as much out of rewriter as possible.
- Modernized via hoe.
- Moved to full PTTC + UnifiedRuby.
- Pulled dstr up from ZenObfuscator.
- Pulled up tests, process_args, with_scope, and process_scope from obfuscator
- Pushed unique.rb up to PT
- Removed Environment methods that pushed up to ruby_parser.
- Removed Sexp#sexp_type
- Removed accessor, accessor_equals since they don’t exist in PTTC.
- Removed bin/*
- Removed dead test
- Removed redundant defn_lvar_boundary, but added call to lvar_def_boundary.
- Renamed blocks to extra_methods in ruby_to_ruby_c.
- Renamed environment.rb to r2cenvironment.rb (incl tests)
- Renamed iter_functions to extra_methods in crewriter.
- Reordered so RubyToRubyC was always after RubyToAnsiC.
- Some optimizations cleaning up Type#method_missing. Drops test time ~30%.
- Split rewriter.rb to crewriter.rb (and renamed class to CRewriter).
- Split up and deleted support.rb (and tests).
- Switched from makefile to rakefile.
- Switched to minitest
- Test or node.
- Track and trigger changes on pt_testcase.rb and r2ctestcase.rb
-
Used Hoe#add_include_dirs to clean up rakefile.
-
12 bug fixes:
- Fix types in iter rewriting.
- Fix yield([42, 24])
- Fixed 1.9-isms.
- Fixed all rubygems loaders.
- Fixed dependencies on all tests.
- Fixed for new (incompatible?) Environment supplied by SexpProcessor
- Fixed incompatibility with new inline changes.
- Fixed requires on ruby_parser
- Fixed ruby2c to work with autotest.
- Fixed tests in r2ctestcase for all layers except the C layers.
- Fixed zentest dependency in rakefile
- Fixes for RAD, mostly renaming environment.rb to r2cenvironment.rb at this stage.
- http://rubyforge.org/projects/ruby2c/
- mailto:ryand-ruby@zenspider.com
- ruby2c@zenspider.com - mailing list