P O S T M O D E R N

Ronin "theouterlibs" 0.2.2 released

bytes, chars, const_missing, cvs, darcs, git, hack, hacking, hex_unescape, overlay, overlays, repertoire, resources, ronin, ronin-gen, ronin-php, ronin-web, rubygems, static, unhexdump

Ronin 0.2.2, code-named "theouterlibs", has been released. This release of Ronin has seen more action in the other libraries which support Ronin.

Ronin::Chars was split out of Ronin into the Chars 0.1.0 library, in order to help other frameworks and code which work with characters.

The ronin-overlay and ronin-ext sub-commands which handled generating skeleton Overlays and Extensions have been moved to the ronin-gen library. The ronin-gen library provides various code-generates which allow other Ronin libraries to create their own custom code-generators.

The R'epertoire library saw significant refactoring after various bugs were uncovered while testing Ronin 0.2.2. Now R'epertoire 0.2.1 has improved Git support, but CVS and Darcs support was removed.

Ronin also saw some minor improvements in 0.2.2. New convenience methods were added for formatting binary data:

  • Integer#bytes: returns the bytes that make up the Integer.
    0xff41.bytes(2)
    # => [65, 255]
    0xff41.bytes(4, :big)
    # => [0, 0, 255, 65]
  • String#hex_unescape: unescape those annoying hex-escaped Strings.
    "\\x68\\x65\\x6c\\x6c\\x6f".hex_unescape
    # => "hello"
  • String#unhexdump: un-hexdump a variety of hexdump formats.
    File.read('data_dump.txt').unhexdump
    # => "..."

Ronin::Static was also added in 0.2.2. The Ronin::Static module handles static resource directories which Ronin can search within for various files and directories. Ronin::Static::Finders provides path/file/directory finder methods that can be included into classes. Ronin Overlays and Extensions can now have static/ directories of their own, which are accessible via the Ronin::Static::Finders methods.

Loaded extensions can now be reloaded on the fly:

Platform.extensions.reload!

Ronin Extensions also can be accessed via constants within the Ronin namespace:

Ronin::HelloWord.name
# => "hello_word"