1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351
|
= BinData Changelog
== 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.
|