🕷 software releases

by ryan davis


ruby2c version has been released!

Published 2009-06-23 @ 19:35

ruby_to_c translates a static ruby subset to C. Hopefully it works.


                   THIS IS BETA SOFTWARE!


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: / 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