Item posted by Jose E. Marchesi
I am happy to announce a new major release of GNU poke, version 3.0.
This release is the result of a year of development. A lot of things have changed and improved with respect to the 2.x series; we have fixed many bugs and added quite a lot of new exciting and useful features. See below for a description of many of them.
From now on, we intend to do not one but two major releases of poke every year. What is moving us to change this is the realization that users have to wait for too long to enjoy new features, which are continuously being added in a project this young and active.
The tarball poke-3.0.tar.gz is now available at
https://ftp.gnu.org/gnu/poke/poke-3.0.tar.gz.
> GNU poke (http://www.jemarch.net/poke) is an interactive, extensible editor for binary data. Not limited to editing basic entities such as bits and bytes, it provides a full-fledged procedural, interactive programming language designed to describe data structures and to operate on them.
Thanks to the people who contributed with code and/or documentation to this release. In certain but no significant order they are:
Mohammad-Reza Nabipoor
Arsen Arsenović
Luca Saiu
Bruno Haible
apache2
Indu Bhagat
Agathe Porte
Alfred M. Szmidt
Daiki Ueno
Darshit Shah
Jan Seeger
Sergio Durigan Junior… and yours truly
As always, thank you all!
But wait, this time we also have special thanks:
To Bruno Haible for his invaluable advise and his help in throughfully testing this new release in many different platforms and configurations.
To the Sourceware overseers, Mark Wielaard, Arsen Arsenović, and Sam James for their help in setting up the buildbots we are using for CI at sourceware.
What is new in this release:
User interface updates
- A screen pager has been added to the poke application. If enabled with the `.set pager yes’ option, output will be paged one screenful at a time.
- A tracer has been added to libpoke and the poke application. If enabled with the `.set tracer yes’ option, subsequent loaded Poke types will be instrumentalized so calls to user-defined handlers are executed when certain events happen:
- Every time a field gets mapped.
- Every time a struct/union gets mapped.
- Every time a field gets constructed.
- Every time a struct/union gets constructed.
- Every time an optional field is omitted when mapping or constructing.
- A new command sdiff (for “structured diff”) has been added to the poke application, that provides a way to generate patchable diffs of mapped structured Poke values. This command is an interface to the structured diffs provided by the new diff.pk pickle.
- When no name is passed to the .mem command, an unique name for the memory IOS with the form N will be used automatically, where N is a positive integer.
- Auto-completion of ‘attributes is now available in the poke application.
- Constraint errors now contain details on the location (which field) where the constraint error happens, along with the particular expression that failed.
- Inline assembler expressions and statements are now supported:
,—-
| asm (TEMPLATE [: OUTPUTS [: INPUTS]])
| asm TYPE: (TEMPLATE [: INPUTS])
`—-
- Both `printf’ and `format’ now support printing values of type `any’.
- Both `printf’ and `format’ now support printing integral values interpreted as floating-point values encoded in IEEE 754. Format tags %f, %g and %e are supported. This feature, along with the new ieee754.pk pickle, eases dealing with floating-point data in binary data.
- Pre-conditional optional fields