Original libbz2 ruby C bindings from Guy Decoux, with some new love
C Ruby
Latest commit e58f154 Jun 26, 2013 @brianmario brianmario Revert "Revert "fix memory leaks in bz_reader_read""
This reverts commit 69766a7.
Failed to load latest commit information.
spec Implement Bzip2::Writer#closed? to match the api of Bzip2::Reader Dec 20, 2010
.gitignore move to rake-compiler Jan 27, 2011
.rspec move to rake-compiler Jan 27, 2011
CHANGELOG.md use markdown for changelog Feb 13, 2013
Gemfile Updated source in Gemfile Feb 14, 2013
Rakefile move to rake-compiler Jan 27, 2011
bzip2-ruby.gemspec Remove extra_rdoc_files because documentation is in Markdown format Mar 7, 2013


Ruby C bindings to libbzip2


First make sure you’ve got Gemcutter in your sources list:

gem sources -a http://gemcutter.org

Then go ahead and install it as usual:

sudo gem install bzip2-ruby

You may need to specify:

--with-bz2-dir=<include file directory for libbzip2>

Or in a Gemfile

gem 'bzip2-ruby'


The full documentation is hosted on rdoc.info.

Here's a quick overview, hower:

require 'bzip2'

# Quick shortcuts
data = Bzip2.compress 'string'
Bzip2.uncompress data

# Creating a bz2 compressed file
writer = Bzip2::Writer.new File.open('file')
writer << 'data1'
writer.puts 'data2'
writer.print 'data3'
writer.printf '%s', 'data4'

Bzip2::Writer.open('file'){ |f| f << data }

# Reading a bz2 compressed file
reader = Bzip2::Reader.new File.open('file')
reader.gets # => "data1data2\n"
reader.read # => 'data3data4'

reader.readline # => raises Bzip2::EOZError

Bzip2::Reader.open('file'){ |f| puts f.read }


This extension module is copyrighted free software by Guy Decoux
You can redistribute it and/or modify it under the same term as Ruby.
Guy Decoux <ts@moulon.inra.fr>

Modifications from origin version

  • Switch to Jeweler
  • Renamed BZ2 module/namespace to Bzip2
  • Renamed compiled binary from "bz2" to "bzip2"
  • Renamed gem from "bz2" to "bzip2-ruby"
  • Converted original tests to rspec
  • 1.9 compatibility