Skip to content

Latest commit

 

History

History
381 lines (265 loc) · 12.1 KB

File metadata and controls

381 lines (265 loc) · 12.1 KB
  • Namespacing now uses Ruby modules, rather than prefixes.

  • Added class names to dynamically generated ints and bits.

  • Added changelog link to gemspec. Thanks to Mark Young.

  • Support Ruby 3.4.

  • 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.

  • 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.

  • Use Comparable#clamp instead of manual calculations.

  • Update tests to new minitest requirements.

  • Adjust tests due to changes in ruby 3.1

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

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

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

  • Improve speed of dynamic object creation. Reported by Charlie Ablett.

  • Change example from Fixnum to Integer. Thanks to Tim Chambers.

  • Now works with frozen string literals. Requested by Jeremy Evans.

  • Bug fix array self assignment. Thanks to Spencer McIntyre.

  • Bug fix Stringz max_length. Thanks to cdelafuente-r7.

  • Fix choice assignment inside arrays. Reported by Spencer McIntyre.

  • More encoding fixes. Thanks to Aaron Patterson.

  • Small typo fixes to examples.

  • Fix encoding issue for ruby 2.7. Thanks to Aaron Patterson.

  • Quieter test output.

  • 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.

  • Add Uint8Arrays. Requested by masarakki.

  • Allow boolean values as parameters. Requested by Patrik Wenger.

  • Fix crash with String :length invoking :rel_offset. Reported by Claudius Coenen.

  • Reworked internal sanitizing API.

  • Fix bit-based integers inside buffers. Reported by Claudius Coenen.

  • Enforce Integer#nbits > 0. Reported by Keenan Tims.

  • Fix auto_call_delayed_io crash. Reported by Michael Petter.

  • Memoize dynamic methods for primitives. Thanks to hiroeorz.

  • Fix bug #80. Thanks to Michael Petter.

  • Add Buffer#raw_num_bytes.

  • IO#num_bytes_remaining now works inside Buffers.

  • Added ability to skip to arbitrary byte patterns. Requested by Stefan Kolb.

  • Improve list of reserved words. Thanks to Claudius Coenen.

  • Fix virtual fields to be bit aligned. Thanks to hopesea.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • Added license to .gemspec

  • Moved test suite from RSpec to Minitest.

  • Added :assert and :asserted_value.

  • :check_value has been deprecated. Use :assert instead.

  • 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.

  • 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.

  • Added the :pad_front option for padding to occur at the front of a String. (suggested by Eduardo Mourão).

  • 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.

  • 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).

  • \=~ now works for strings.

  • Added :default option for Choices.

  • Added count_bytes_remaining keyword.

  • Increased speed of lazy evaluation.

  • 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.

  • Fixed file permissions problem.

  • 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.

  • 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.

  • Updated specs to be compatible with ruby 1.9.1

  • 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).

  • 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.

  • Is now compatible with Ruby 1.9

  • Added reference manual.

  • Added #rel_offset to Base.

  • Removed support for deprecated functionality.

  • 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).

  • 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.

  • 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

  • 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.

  • 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.

  • Implemented bit fields.

  • Added :onlyif parameter to Base for specifying optional fields.

  • Fixed IO offset bug with SingleValues.

  • 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.

  • Reduced memory consumption.

  • Increased execution speed.

  • Deprecated BinData::Base.parameters.

  • Fixed spec syntax (thanks to David Goodlad).

  • 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.

  • 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.

  • Added 64 bit integers.

  • Added floating point numbers.

  • Added endian keyword to Struct to reduce the amount of typing needed.

  • Updated documentation.

  • Struct now raises an error if a field name shadows an existing method.

  • Initial public release.