BinData Changelog¶ ↑
Version 2.4.10 (2021-05-18)¶ ↑
-
Improve speed of dynamic object creation. Reported by Charlie Ablett.
Version 2.4.9 (2021-04-22)¶ ↑
-
Change example from Fixnum to Integer. Thanks to Tim Chambers.
-
Now works with frozen string literals. Requested by Jeremy Evans.
Version 2.4.8 (2020-07-21)¶ ↑
-
Bug fix array self assignment. Thanks to Spencer McIntyre.
-
Bug fix Stringz max_length. Thanks to cdelafuente-r7.
Version 2.4.7 (2020-03-31)¶ ↑
-
Fix choice assignment inside arrays. Reported by Spencer McIntyre.
Version 2.4.6 (2020-02-27)¶ ↑
-
More encoding fixes. Thanks to Aaron Patterson.
Version 2.4.5 (2020-02-21)¶ ↑
-
Small typo fixes to examples.
-
Fix encoding issue for ruby 2.7. Thanks to Aaron Patterson.
-
Quieter test output.
Version 2.4.4 (2018-10-03)¶ ↑
-
Display a hint when endian is omitted. Requested by Tails.
-
Add thread safety to Integer/BitField creation. Requested by jbpeirce.
-
Ensure windows sockets are unseekable. Thanks to Brent Cook.
Version 2.4.3 (2018-03-10)¶ ↑
-
Add Uint8Arrays. Requested by masarakki.
Version 2.4.2 (2018-01-31)¶ ↑
-
Allow boolean values as parameters. Requested by Patrik Wenger.
Version 2.4.1 (2017-08-30)¶ ↑
-
Fix crash with String :length invoking :rel_offset. Reported by Claudius Coenen.
Version 2.4.0 (2017-04-09)¶ ↑
-
Reworked internal sanitizing API.
-
Fix bit-based integers inside buffers. Reported by Claudius Coenen.
Version 2.3.5 (2017-01-19)¶ ↑
-
Enforce Integer#nbits > 0. Reported by Keenan Tims.
-
Fix auto_call_delayed_io crash. Reported by Michael Petter.
Version 2.3.4 (2016-10-17)¶ ↑
-
Memoize dynamic methods for primitives. Thanks to hiroeorz.
Version 2.3.3 (2016-09-07)¶ ↑
-
Fix bug #80. Thanks to Michael Petter.
-
Add Buffer#raw_num_bytes.
Version 2.3.2 (2016-09-02)¶ ↑
-
IO#num_bytes_remaining now works inside Buffers.
-
Added ability to skip to arbitrary byte patterns. Requested by Stefan Kolb.
Version 2.3.1 (2016-06-17)¶ ↑
-
Improve list of reserved words. Thanks to Claudius Coenen.
-
Fix virtual fields to be bit aligned. Thanks to hopesea.
Version 2.3.0 (2016-03-25)¶ ↑
-
Add :to_abs_offset to Skip.
-
Added backwards seeking via multi pass I/O. See DelayedIO.
-
Removed #offset, which was deprecated in 2.1.0.
-
Removed :adjust_offset. See NEWS.rdoc for details.
Version 2.2.0 (2016-01-30)¶ ↑
-
Warn if String has :value but no :read_length. Requested by Michael Genereux.
-
Prevent running under Ruby 2.1.0p0 due to ruby bug 44525.
-
Added #to_hex convenience method. Thanks to Gregory Romé.
-
Added namespacing via search_prefix. Requested by sumofparts.
Version 2.1.0 (2014-04-16)¶ ↑
-
Performance improvements.
-
Removed deprecated parameters.
-
Code refactored to use Ruby 1.9 features.
-
#eval_parameters can now call private methods. Requested by Ole Rasmussen.
-
Can now determine state of :onlyif fields. Requested by Ole Rasmussen.
-
Renamed #offset to #abs_offset for clarity. #offset is now deprecated.
-
Support :byte_align for fields in structs. Requested by Igor Yamolov.
-
Added bit fields with dynamic length. Requested by Jacob Dam.
-
Added “endian :big_and_little” option which creates :big and :little versions of the class. Thanks to Jacob Lukas for the prototype.
Version 2.0.0 (2014-02-02)¶ ↑
-
Ruby 1.8 now has its own separate branch.
-
Struct now uses symbols for field names instead of strings.
-
Added signed bitfields. Requested by redood.
-
Virtual fields can now have names.
-
Bug fixes.
Version 1.8.0 (2014-01-06)¶ ↑
-
Allow custom types to have endian, not just numerics.
-
Added missing field to TCP example. Thanks to Bertrand Paquet.
-
Made tests compatible with JRuby. Thanks to Charles Oliver Nutter.
-
Support travis ci for those that use it. Thanks to Charles Oliver Nutter.
-
Added Buffer for easier handling of nested streams.
-
Added Virtual field.
Version 1.6.0 (2013-09-02)¶ ↑
-
Added license to .gemspec
-
Moved test suite from RSpec to Minitest.
-
Added :assert and :asserted_value.
-
:check_value has been deprecated. Use :assert instead.
Version 1.5.1 (2013-08-16)¶ ↑
-
Rework build system and include .gemspec. Requested by Simon Shortman.
-
Fixed bug when Choice#clear didn’t clear everything. Thanks to Simon Shortman for the bug report.
-
Moved BinData::VERSION into its own file. Thanks to John Van Enk.
Version 1.5.0 (2013-05-21)¶ ↑
-
Moved to github.
-
Updated to Ruby 2.0
-
Arrays now accept BinData object factories for :type (feature request by Matt Dainty).
-
Dynamically generated BinData objects can use the :name parameter to register themselves.
-
Remove functionality that has been deprecated for two years.
Version 1.4.5 (2012-07-24)¶ ↑
-
Added the :pad_front option for padding to occur at the front of a String. (suggested by Eduardo Mourão).
Version 1.4.4 (2012-06-21)¶ ↑
-
Fixed bug where user defined boolean primitive wouldn’t set its value to false (reported by Frank Roland).
-
Fixed infinite looping bug caused by nested Choices.
-
Renamed String parameter :pad_char to :pad_byte.
-
Updated manual.
Version 1.4.3 (2011-10-01)¶ ↑
-
Exceptions no longer ignored inside lambdas when reading until eof in an array (thanks John Labovitz).
-
Fixed interaction bug between choices and records (reported by Refrigerator Johnny).
Version 1.4.2 (2011-08-06)¶ ↑
-
=~ now works for strings.
Version 1.4.1 (2011-06-20)¶ ↑
-
Added :default option for Choices.
-
Added count_bytes_remaining keyword.
-
Increased speed of lazy evaluation.
Version 1.4.0 (2011-06-14)¶ ↑
-
Record#snapshot now returns fields in order.
-
Removed the need to call #register_self in subclasses.
-
Wrapper is now deprecated. Use subclassing instead.
-
Updated license to mimic changes to the Ruby License.
-
Refactoring to reduce memory usage.
Version 1.3.1 (2011-01-25)¶ ↑
-
Fixed file permissions problem.
Version 1.3.0 (2011-01-25)¶ ↑
-
BinData objects can now assign values when instantiating.
-
Improved support for bit-based alignment.
-
Updated reference manual.
-
Added examples for declaring recursive structures.
-
Objects deriving from BinData::Base should no longer override #initialize.
-
Added BinData::Base(#new, #initialize_instance) to speed up instantiation of multiple objects.
-
Updated specs to rspec-1.3.0
-
BinData::Struct.hide now expects symbols instead of strings.
Version 1.2.2 (2010-12-14)¶ ↑
-
Added Base.bindata_name method.
-
Removed Base#done_read to reduce memory usage and cpu usage.
-
Derived classes should now use do_read et al, instead of _do_read.
-
Added predefinition of record fields to improve speed.
-
Made compatible with ruby 1.9.2. Thanks to Andrew Watts.
Version 1.2.1 (2010-07-20)¶ ↑
-
Updated specs to be compatible with ruby 1.9.1
Version 1.2.0 (2010-07-09)¶ ↑
-
Deprecated Base#register. Use #register_self or #register_subclasses instead.
-
Syntax improvement. Array, Structs and Choices can now use blocks to specify fields.
-
Reduced startup time (suggestion courtesy of Mike Ryan).
Version 1.1.0 (2009-11-24)¶ ↑
-
Allow anonymous fields in Records and Primitives.
-
Add the ability to skip over unused data.
-
Allow Records, Primitives and Wrappers to be derived from.
-
Classes for integers are now defined on demand.
Version 1.0.0 (2009-09-13)¶ ↑
-
Is now compatible with Ruby 1.9
-
Added reference manual.
-
Added #rel_offset to Base.
-
Removed support for deprecated functionality.
Version 0.11.1 (2009-08-28)¶ ↑
-
Allow wrapped types to work with struct’s :onlyif parameter
-
Use Array#index instead of #find_index for compatibility with Ruby 1.8.6 (patch courtesy of Joe Rozner).
Version 0.11.0 (2009-06-28)¶ ↑
-
Sanitizing code was refactored for speed.
-
Arbitrary sized integers and bit fields are now automatically instantiated.
-
Add ability to wrap existing types and override their parameters.
Version 0.10.0 (2009-04-17)¶ ↑
-
Arbitrary byte sized integers are now supported (e.g. 24bit, 808bit).
-
Renamed String :trim_value parameter to :trim_padding.
-
BinData::Array now behaves more like Ruby’s Array.
-
Added debug_name
-
Added ability to trace reading
-
Primitives now behave as their value. Calling #value is no longer needed.
-
Renamed #to_s -> #to_binary_s to avoid confusion with Ruby’s #to_s.
-
Added #assign as the generic way to assign values to objects.
-
Added :copy_on_change parameter to Choice.
-
Implement #offset for all objects.
-
Renamed Single -> BasePrimitive.
-
Renamed SingleValue -> Primitive.
-
Renamed MultiValue -> Record.
-
The :onlyif parameter now only applies to fields inside Structs.
-
LazyEvaluator can now supply arguments when invoking methods
Version 0.9.3 (2008-12-03)¶ ↑
-
Arrays can now :read_until => :eof
-
TCPSocket and UDPSocket can now be used as input streams (patch courtesy of Peter Suschlik).
-
Added 128 bit integers.
-
Significant memory usage reduction.
-
Added custom mandatory and default parameters for user defined MultiValues.
Version 0.9.2 (2008-07-18)¶ ↑
-
Added lazy instantiation to allow recursive definitions.
-
Array elements can be appended at any position.
-
Deprecated the :readwrite parameter.
-
Removed feature where Struct fields names could be nil.
-
Reworked sanitizing system.
Version 0.9.1 (2008-06-15)¶ ↑
-
Implemented bit fields.
-
Added :onlyif parameter to Base for specifying optional fields.
-
Fixed IO offset bug with SingleValues.
Version 0.9.0 (2008-06-02)¶ ↑
-
Added :adjust_offset option to automatically seek to a given offset.
-
Modified #read to accept strings as well as IO streams.
-
Choice now accepts sparse arrays and hashes as :choice.
-
Added BinData::Rest to help with debugging.
-
Major internal restructuring - memory usage is much better.
-
Improved documentation.
Version 0.8.1 (2008-01-14)¶ ↑
-
Reduced memory consumption.
-
Increased execution speed.
-
Deprecated BinData::Base.parameters.
-
Fixed spec syntax (thanks to David Goodlad).
Version 0.8.0 (2007-10-14)¶ ↑
-
Add reserved field names to Struct.
-
Prevent warnings about method redefinition.
-
Allow Struct to masquerade as one of its fields.
-
Renamed String param :initial_length to :read_length.
-
BinData::Array now behaves more like the internal Ruby array.
Version 0.7.0 (2007-08-26)¶ ↑
-
Arrays now support terminating conditions as well as fixed length reads.
-
Updated specs to new rspec syntax (0.9).
-
Added scoped resolution of variables in lambdas.
-
Added ability to append elements to arrays.
Version 0.6.0 (2007-03-28)¶ ↑
-
Added 64 bit integers.
-
Added floating point numbers.
-
Added endian keyword to Struct to reduce the amount of typing needed.
Version 0.5.1 (2007-03-21)¶ ↑
-
Updated documentation.
-
Struct now raises an error if a field name shadows an existing method.
Version 0.5.0 (2007-03-14)¶ ↑
-
Initial public release.