Skip to content

Latest commit

 

History

History
371 lines (259 loc) · 11.8 KB

ChangeLog.rdoc

File metadata and controls

371 lines (259 loc) · 11.8 KB

BinData Changelog

Version 2.5.0 (2024-02-16)

  • Removed experimental :check_offset and :adjust_offset parameters.

  • Ruby 2.5 is now required.

  • Allow for nested tracing.

  • Skip :until_valid is now fast for :asserted_value.

  • Added Section - a way to transform the data stream.

  • Added transforms for brotli, lz4, xor, zlib, zstd.

  • Updated to current minitest

  • Fixed typos. Thanks to Patrick Linnane.

Version 2.4.15 (2023-02-07)

  • Added ruby 2.4.0 requirement to gemspec. Thanks to theldoria.

  • Added github CI action. Thanks to Peter Goldstein.

  • Convert file from latin1 to UTF-8. Thanks to Cédric Boutillier.

  • Move license from dual license to solely BSD-2-Clause.

  • Remove unnecessary files from gem. Requested by Orien Madgwick.

  • Allow multiple calls to auto_call_delayed_io. Thanks to dwelch-r7.

Version 2.4.14 (2022-10-31)

  • Use Comparable#clamp instead of manual calculations.

  • Update tests to new minitest requirements.

  • Adjust tests due to changes in ruby 3.1

Version 2.4.13 (2022-10-16)

  • Relax over-strict parameter naming requirements. Requested by vinayak3qilabs.

Version 2.4.12 (2022-10-03)

  • Do not include DelayedIO objects when :onlyif is false.

Version 2.4.11 (2022-09-27)

  • Make DelayedIO work with :onlyif. Reported by Spencer McIntyre.

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.