Newer
Older
----------------------------
Version 0.86 (2025-09-07)
----------------------------
* C23 compat for nhash.c function pointer magic (fixes
github #13)
----------------------------
Version 0.85 (2024-10-01)
----------------------------
* remove bundled Test modules (should fix github #11)
* small change for compatibility with pre-dor perls
(should fix github #10)
* suppress some gcc warnings during build
* update `ppport.h`, which gets rid of a lot of clang
warnings
----------------------------
Version 0.84 (2020-11-23)
----------------------------
* skip threads testing on 5.9.5 and 5.10.0 as
Perl_clone() segfaults for these releases
----------------------------
Version 0.83 (2020-11-19)
----------------------------
* more Windows fixes
----------------------------
Version 0.82 (2020-11-19)
----------------------------
* fix speed tests (the new smaller code was parsing too
quickly for caching to have a strong impact)
* update documentation, e.g. bugtracker
----------------------------
Version 0.81 (2020-11-18)
----------------------------
* fix parallel builds
----------------------------
Version 0.80 (2020-11-17)
----------------------------
* fix 602_threads.t
----------------------------
Version 0.79_01 (2020-11-15)
----------------------------
* [WIP] fixing cpan #132904: License Inconsitencies
* update documentation
-------------------------
Version 0.79 (2020-05-19)
-------------------------
* fix cpan #121039: Fails tests when no "." in @INC; thanks to
Kent Fredric for the report & pull request and sorry for the
long time this bug/pr sat in the queue
* merge github PR #5: Remove use of indirect object notation in
tests; thanks to Julien Fiegehenn for the PR and sorry for the
long time this sat in the queue
* fix some tests that generated spurious output and didn't
actually test anything useful
-------------------------
Version 0.78 (2016-02-14)
-------------------------
* added Clang support to ccconfig
* fix cpan #109978: improve wording/grammar in POD; thanks to
gregor herrmann for providing a patch
* fix cpan #95716: Add support for #warn/#warning; thanks to
Jon DuSaint for providing an initial patch
* update module metadata
-------------------------
* ensure consistent order of enums when generating code; this was
a real bug and caused the configuration part of C::B::C to report
wrong (even invalid) configurations back to the user when built
using a recent version of Perl that randomises hash keys
* fix cpan #85264: the POD test was reporting a missing =back tag
in one of the support modules; the ultimate fix was to ensure only
the provided modules were POD checked
* fix cpan #83167: an artificially low refcnt for immortal variables
introduced recently for debug Perl builds was causing the refcnt
tests to fail for SvNULLs; thanks to Reini Urban for his patch;
also thanks to Nicholas Clark for pointing me to the Perl commit
* fix cpan #78165: spelling errors in the documentation; thanks to
gregor herrmann for providing a patch
* fix deprecated use of unescaped braces in regex
* switch from SnapshotCM to git repo: github.com/mhx/Convert-Binary-C/
-------------------------
Version 0.76 (2011-04-11)
-------------------------
* it looks like I've found the source of the test failures reported
in cpan #56369; this version is an attempt to fix the problem, but
without fully understanding it -- if a windows guru can explain to
me why setjmp() deadlocks if the jmp_buf structure was allocated
through Perl's API (New, Newz, etc), I'd really appreciate it
-------------------------
Version 0.75 (2011-04-10)
-------------------------
* fix cpan #63381 / perl #79854: make sure warnings cause a cache
file not to be used (thanks to Andreas König for reporting this)
* fix bug in unpack where the code would attempt to create an array
with negative size when running out of input data
* make sure elf.PL reads/writes in binary mode (thanks to רחלי מרל
for finding this problem)
-------------------------
Version 0.74 (2009-04-18)
-------------------------
* fix sourcification of flexible array members (triggered by cpan
#45105; thanks to Alexander Ost for being persistent in his
attempt to convince me that there's a bug in sourcify)
Version 0.73 (2009-03-16)
-------------------------
* fix META.yml generation with newer versions of ExtUtils::MakeMaker
* work around an include path handling bug present in some versions
of Test::Harness
-------------------------
Version 0.72 (2009-03-15)
-------------------------
* fix cpan #43119: patch to allow Convert::Binary::C to build
with GCC 4.4.x (thanks to Alex Lancaster for providing a patch)
-------------------------
Version 0.71 (2008-04-15)
-------------------------
* added new 'StdCVersion' and 'HostedC' options for configuring
the predefined macros of the preprocessor
* fix debugging build with development version of Perl
-------------------------
Version 0.70 (2007-12-24)
-------------------------
-- released without changes --
----------------------------
Version 0.69_01 (2007-12-08)
----------------------------
* fix UV generation on platforms where NVs don't preserve
UVs (e.g. amd64) and perl doesn't know about UVs (<5.6.0)
* make the test suite more noisy when something goes wrong
-------------------------
Version 0.69 (2007-12-06)
-------------------------
* fix: unpack would return garbage when an unpack hook
causes the perl stack to be reallocated
* make ccconfig handle blanks in paths correctly
* slightly improve ELF parser example
* fix debug format strings
-------------------------
Version 0.68 (2007-06-25)
-------------------------
* allow #pragma pack(0) to reset to default alignment,
just like #pragma pack
* add checks for invalid #pragma pack() arguments
-------------------------
Version 0.67 (2006-12-29)
-------------------------
* bleeding edge perl versions don't have SVt_PVBM anymore,
which broke compilation of cbc/util.c
-------------------------
Version 0.66 (2006-11-02)
-------------------------
* fix a bug in the parser that accidentially allowed
qualified enum specifiers as unnamed compound members
* update test suite for better coverage of recent
compiler features and bitfields
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
-------------------------
Version 0.65 (2006-08-27)
-------------------------
* fix compilation issues with perls configured with
threads and debugging; these issues were caused by
a buggy implementation of the assert() macro in the
5.8 series of perl
* fix compilation issues with HP compiler on itanium
systems
* fix: hooks for the same type were not re-entrant
(i.e. you could not pack/unpack the same type
within a hook registered for that type)
* fix: passing sparse hashes or arrays to pack() in
combination with pack hooks was causing an assertion
* fix an integer promotion bug in the preprocessor
* add better support for C99-style array declarator
* fix enumerator handling: it was impossible to reuse
the name of an enumerator as an identifer
* ccconfig fix: macros defined to the empty string
were not properly detected
----------------------------
Version 0.64_02 (2006-03-24)
----------------------------
* struct members are now treated more Cish than before
* added experimental Dimension tag
* cleaned up some internals
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
----------------------------
Version 0.64_01 (2006-02-27)
----------------------------
* added new methods to interface with the preprocessor:
o the 'defined' method tests if a macro is defined
o the 'macro_names' method returns a list of all
defined macro names
o the 'macro' method returns macro definitions
* added 'Defines' option for 'sourcify' method; with
this option turned on, macro definition are also
sourcified
* the speed of the 'sourcify' method has been greatly
improved
* add a new pod coverage test
* fix a pod2usage call in elf.pl example
* improve warning when trying to pack references into
format tagged types
* make the module and some basic tests compatible with
perl 5.004
* the native() function/method now also supports the
'UnsignedChars' and 'UnsignedBitfields' properties
* the 'threads' feature is deprecated and will be removed
in a future relase
-------------------------
Version 0.64 (2006-01-16)
-------------------------
* fix version handling in *.pm files
* don't index bin/elf.PL
* upgrade ppport.h
----------------------------
Version 0.63_01 (2006-01-09)
----------------------------
* fix: using the Format tag on bitfield members now throws
an exception
* added experimental ByteOrder tag
* added ELF parser example
* improve internals
o better encapsulation of the pack/unpack code
o thanks to the cachegrind tool (http://valgrind.org), some
expressions in the lexer code of the ucpp preprocessor
could be optimized, making the preprocessor more than
10% faster on x86 platforms; this means that parsing
should be about 7% faster now
* improve test coverage
-------------------------
Version 0.63 (2005-12-29)
-------------------------
* fix a problem with the test suite when run in a directory
that contains whitespace characters
* (hopefully) fix the no_index problem in the META.yml by
replacing "dir" with "directory"
-------------------------
Version 0.62 (2005-12-01)
-------------------------
* fixed a bug in unpack() that would cause an error when
repeatedly passing a substr() as the data argument; this
is not a critical bug, because there's no silent failure
-------------------------
Version 0.61 (2005-10-27)
-------------------------
* fix Makefile.PL / META.yml
-------------------------
Version 0.60 (2005-10-26)
-------------------------
* fixed: the byte order setting was not correctly handed
to the bitfield layouter when using configure() before
using parse(); since that's what C::B::C::Cached does,
C::B::C::Cached could be using the wrong byte order for
bitfields
* the deprecated methods add_hooks(), delete_hooks() and
delete_all_hooks() have been removed
* silence some warnings with newer gcc versions
* start moving test suite to use Test::More
* bundle Test, Test::More and Test::Harness for older
perl versions
* extend compatibility down to perl 5.005
-------------------------
Version 0.59 (2005-06-13)
-------------------------
* fixed: dying hooks no longer leak memory
* added new 'UnsignedBitfields' option
* removed 'Bitfields are unsupported' warning
* documented bitfield support
* the usual cleanups and corrections
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
----------------------------
Version 0.58_01 (2005-05-23)
----------------------------
* bitfields are now supported; since bitfield implementations
differ from compiler to compiler (sometimes significantly),
the bitfield layouting engine can be exchanged at runtime;
bitfield support is, however, still considered experimental
* the memory used by internal data structures as well
as the number of malloc/free calls has been reduced
by about 15 percent; besides saving memory, this also
makes parsing and cloning a bit faster
* the whole pack()/unpack() engine was re-doing the work
that has previously been done by the compound layouter;
this redundancy has been removed, making the code more
readable (and a little bit faster)
* the compound layouter implementation has been separated
and can now be exchanged at runtime (which is currently
unused as there's only one implementation)
* the bison parser is now making use of the %destructor
feature introduced recently; this makes the parser code
a lot easier to read and maintain, and makes the parser
a bit faster; you need at least bison-2.0a to regenerate
the files
* when packing 'string' numbers, the 0b... syntax is now
supported for binary numbers
* ccconfig's interface and internals have been updated
* ccconfig now has a lot more options that hopefully allow
you to test compilers with strange commandline interface
* ccconfig is now more robust against compiler failures
* lots of minor tweaks and fixes
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
-------------------------
Version 0.58 (2005-02-21)
-------------------------
* there's now a mailing list; see the documentation or
README for details
* new tag() method provides a generic way of tagging
properties such as hooks to types
* the hooks methods are deprecated and will be removed
in a future release (new interface is provided through
tag() / untag())
* completely restructured the XS/C internals, since C.xs
was getting way too large; the code should be a lot
more modular and organized now
* make the preprocessor handle (read: ignore) any #ident
directives (problem spotted by Ronnie Kelly)
* use faster preprocessor tokenizer routine
* ccconfig: add --output-file and --output-format options
* fix invalid read bug when redefining a macro with trailing
whitespace (spotted by valgrind)
* make sure pack() returns null-terminated strings; not doing
so can confuse the regex engine
* strip redundant warnings from enum/compound/typedef methods
* fix deep recursion in llex() that causes bus error on hpux
(this should fix the activestate test failures)
* make util / ucpp use Perl's memory allocation functions
(this should fix problems with -Dusethreads and -Dusemymalloc)
* as usual, more tests and more docs
-------------------------
Version 0.57 (2004-11-23)
-------------------------
* allow empty initializers (spotted by Mike Lamb)
* add CharSize option to support architectures where
chars are larger than 8 bits (spotted by Esa Östring)
-------------------------
Version 0.56 (2004-09-19)
-------------------------
* allow empty member declaration lists
* minor doc fixes
-------------------------
Version 0.55 (2004-08-22)
-------------------------
* new native() function to query native properties
* feature() and native() can now also be called as methods
* allow setting Alignment and CompoundAlignment to zero to
request native alignment and compound alignment
* prefix compile-time defaults with CBC_ and document them
* upgrade ppport.h
* minor cleanups
-------------------------
Version 0.54 (2004-07-01)
-------------------------
* improved hooks features
* changed handling of autogenerated files that has been
causing trouble with crappy archiving tools
* minor bugfixes
Version 0.53 (2004-05-25)
-------------------------
* fixed a bug that messed up the return values when using
unpack in list context together with OrderMembers => 1
-------------------------
Version 0.52 (2004-05-24)
-------------------------
* added new CompoundAlignment option
* added new behaviour for unpack method in list context
* simplify inheriting from Convert::Binary::C
* fixed a bug in the initializer method that caused
wrong initialization strings for unnamed unions
* fixed a systematic bug that caused sourcify to return
invalid C code in a few special cases
-------------------------
Version 0.51 (2004-03-23)
-------------------------
* added method chaining for add_hooks, delete_hooks and
delete_all_hooks
* fixed some bugs when using substr() with pack and unpack
* documentation fixes and updates
-------------------------
Version 0.50 (2004-03-22)
-------------------------
* added support for flexible array members and incomplete
types
* added support for registering pack/unpack hooks to allow
user-defined packing/unpacking
* ucpp is now reentrant, thus there's no more locking of
parse/parse_file
* fixed a memory leak when using OrderMembers => 1
* improved ccconfig's detection of ability to compile
object/executable files
* lots of minor bugfixes and code cleanups
-------------------------
Version 0.49 (2003-11-24)
-------------------------
* fixed build problem on multi-threaded 5.6.x perls by
removing irrelevant code from ppport.h
* changed error reporting: preprocessor errors are no
longer only warnings
(this fixes an issue with Convert::Binary::C::Cached
creating an empty cache file if none of the #include'd
files could be found)
* fixed some error/warnings reporting problems with
Convert::Binary::C::Cached
* minor cleanups
-------------------------
Version 0.48 (2003-11-03)
-------------------------
* added new 'OrderMembers' option: this option allows you
to tie all hashes returned by the unpack method to either
Tie::Hash::Indexed or Tie::IxHash, thus preserving the
order of compound members when e.g. dumping the hashes or
iterating through their keys/values
* slightly improved performance for pack method
* added META.yml
-------------------------
Version 0.47 (2003-09-11)
-------------------------
* enhanced behaviour of def() method
* added new pod test
* fixed some buglets
-------------------------
Version 0.46 (2003-09-09)
-------------------------
* fixed bug #3753 "packing a struct/member/field causes a
bus error"
* added new warnings when packing/unpacking zero-sized types
* updated the docs with links to http://rt.cpan.org and
http://cpanratings.perl.org
-------------------------
Version 0.45 (2003-08-18)
-------------------------
* fixed/improved sourcify output for #pragma pack
* added Context option for sourcify method
-------------------------
Version 0.44 (2003-08-17)
-------------------------
* fixed behaviour of typeof method for bitfields
* dependencies method now returns plain list of files when
called in list context
* doc fixes
-------------------------
Version 0.43 (2003-07-24)
-------------------------
* fixed: undef values returned by unpack were not writable
and caused problems with almost all versions of perl
* fixed: sizeof() could return garbage when used on array
types
* fixed bogus warning generated by pack when explicitly
passing 'undef'
* improved warning messages generated by pack
* added error when using offsetof on bitfields
* added new initializer method
* the offset argument to the member method is now optional;
without the offset argument, a list of all possible
members is returned
* code cleanups
-------------------------
Version 0.42 (2003-06-23)
-------------------------
* added new 'ieeefp' feature
* new floating point conversion code to support both IEEE
and non-IEEE sytems
o on machines using the IEEE format to store floating
point numbers, you can pack/unpack arbitrary byteorder
floating point values for all supported native sizes
o on machines not using the IEEE format, packing and
unpacking of floating point values is restricted to
the types natively available
* floating point conversion checks and warnings have been
improved
* added floating point format detection to ccconfig
* some code cleanups
-------------------------
Version 0.41 (2003-06-10)
-------------------------
* added support for gcc's asm syntax
* some cleanups
-------------------------
Version 0.40 (2003-04-20)
-------------------------
* same as 0.13, just to make CPAN(?:PLUS|-indexer)? happy
-------------------------
Version 0.13 (2003-04-20)
-------------------------
* changed behaviour of member method in list context
o doesn't return the member's type any longer
o returns all matching members instead, if multiple
members match the given offset
o this change is NOT backward compatible
($member, $typeof) = $c->member( $type, $offset );
$member = $c->member( $type, $offset );
$typeof = $c->typeof( $type.$member );
* fixed lots of memory leaks resulting from using sv_dec()
where SvREFCNT_dec() should have been used instead
* fixed memory leak when object construction fails
* fixed sourcify for enums in special cases
* fixed segfault in debugging mode
* removed lots of limitations and fixed lots of bugs when
dealing with member expressions
* changed module/ccconfig versioning; now
$Convert::Binary::C::VERSION
$Convert::Binary::C::Cached::VERSION
as well as the version of ccconfig are all set to the
version of the distribution to avoid confusion
* added dwimmy handling of offset suffixes
* added basic type support for many methods
* allowed basic types to be used without parsing any code
* allowed enum/struct/union prefixes for enum, compound,
struct and union methods
* improved performance when using a threaded perl binary
by about 20%; performance is now only 5% worse than
with a non-threaded binary
* added new "understanding types" section to documentation
* fixed some inconsistencies in documentation
* added lots of new tests, some based on coverage analysis
using gcov
* fixed some tests that could fail due to random binary
input when (un)packing floating point values
* added check for unsupported perl binary configuration
with usemymalloc=y _and_ threads
-------------------------
Version 0.12 (2003-03-18)
-------------------------
* fixed dealing with cache file corruption
* use Devel::Tokenizer::C for tokenizer generation
-------------------------
Version 0.11 (2003-02-27)
-------------------------
* fixed problem with recursive data structures in sourcify
-------------------------
Version 0.10 (2003-01-23)
-------------------------
* cleaned up and fixed format strings
-------------------------
Version 0.09 (2003-01-20)
-------------------------
* fixed problems with va_list on Linux-PPC that caused some
tests to segfault
* updated preprocessor output detection in ccconfig for
"smart" preprocessors
* minor fixes and cleanups
* minor documentation updates
-------------------------
Version 0.08 (2003-01-15)
-------------------------
* added ccconfig --nodelete option
* added context info for structs/unions/enums
* removed 'c99' feature
* documentation updates and fixes
-------------------------
Version 0.07 (2003-01-09)
-------------------------
* fixed packing/unpacking for #pragma pack
* complete rewrite of member() algorithm
* added 'KeywordMap' option to add keywords directly to the parser
* added new behaviour for EnumSize => -1
* extended ranges of some integer options
* integrated new version of ucpp
* added 'ccconfig' script
* example scripts are now generated
* added and improved tests
* documentation updates
* lots of other tiny tweaks
* deprecated 'c99' feature, will be removed in 0.08
-------------------------
Version 0.06 (2002-12-13)
-------------------------
* removed options 'HasVOID' and 'HasC99Keywords'
* added 'DisabledKeywords' option, which replaces both 'HasVOID' and
'HasC99Keywords', and allows to disable a lot of other keywords, too:
HasVOID => 0 --> DisabledKeywords => ['void']
HasC99Keywords => 0 --> DisabledKeywords => [qw(inline restrict)]
* updated parser to ignore type definitions within code blocks
* fixed an access violation when cleaning up the preprocessor
* removed warning when using sourcify method
* added some more tests
* added examples directory and some example scripts
* added more examples to documentation
* documentation fixes/updates
-------------------------
Version 0.05 (2002-11-28)
-------------------------
* fixed a bug that suppressed the error message
when the cache file could not be created, and
added a test for it
-------------------------
Version 0.04 (2002-11-27)
-------------------------
* support for 64-bit data types on all platforms
o depencencies -- retrieve an object's dependencies
o sourcify -- emit an object's parsed data as C source
- The 'HashSize' option has been removed. I didn't like
it anyway, and since the hash tables are now growing
automatically, it's completely useless.
- Instead of undef, 0 and 1, the def method will now return
undef, '' (the empty string) or the kind of the type you
passed as an argument, e.g. 'typedef' or 'union'.
- Calls to configure (and other configuration methods) can
be chained together when they're 'set' method calls.
- All method calls that have no return value will return a
reference to their object, so method chaining is possible.
o pack, unpack, sizeof, offsetof, member
- These methods now can all operate on compound members, i.e.
you could say $obj->sizeof( 'type.foo.x' ).
- The member method now can optionally return the type of the
requested member.
* new Convert::Binary::C::Cached module
o cached Convert::Binary::C objects
o identical interface
o can speed up parsing by up to 10 - 20 times
* increased speed for packing and unpacking arrays
* increased portability
* added new and improved existing tests
* some bug fixes and a lot of code cleanups
* upgraded to bison 1.75
-------------------------
Version 0.03 (2002-09-25)
-------------------------
* fixed default sizes for floats and double in object constructor
* fixed some 64-bit architecture issues
* fixed bug in bison parser