Skip to content

Pattern language functions, namespaces, optimizations and new views

Compare
Choose a tag to compare
@WerWolv WerWolv released this 10 Sep 15:21
· 3378 commits to master since this release

Documentation

A new documentation for ImHex (mainly the pattern language right now) is in the works and can be found here: https://imhex.werwolv.net/docs. It is a lot more detailed than the one found on the Wiki here and contains information about all the new features as well. Check it out!

Changelog

First of all, there has been made some adjustments to the distributed binaries:

  • Windows releases are now distributed as an installer and a portable version
  • Linux releases are now distributed as a flatpak file and a portable version
    • Thanks to @Calinou for the initial work on this
  • MacOS support has been dropped because it's impossible for me currently to get it working correctly
    • The reason for this is that I have no access to a Mac and development is just frustrating for me
    • The previous release was already horribly broken because of that
    • If anybody would like to help fix ImHex on MacOS, PRs are highly appreciated.

For people that rather like to build ImHex themselves, there's now a Dockerfile present in the /dist folder of this repository

Additions

  • Added a TTY console view (Windows only)
  • CTRL + A now selects all bytes in the hex view
  • Added default polynomials to CRC16 and CRC32 initially
  • Added CPU usage to footer (Windows only)
  • Added a new view for looking up common constants
  • Added Create new File option
  • Added Resize file option
  • Added a UNIX permissions calculator tool
  • Added a minimap to the data processor nodes editor
  • Added crash detection and emergency backups
    • If ImHex crashes now, an automatic backup will be created and you will be asked if you want to restore it the next time you open ImHex.
  • Got rid of the window border and title bar on Windows and instead use a custom one
  • Added a toolbar with buttons
  • Added proper interface scaling settings
  • Added tips of the day popup at launch
    • This can be disabled from the popup or in the settings
  • Added a tool to quickly upload files to https://anonfiles.com
  • Added a tool to get short definitions of terms from Wikipedia
  • Added half floats (16 bit floating point numbers) to data inspector
  • Added UTF-8 strings to data inspector
  • Added a built-in download "store" for patterns, libraries, magics and constant databases

Pattern Language

  • Added while statements for array definitions
  • Added [[hidden]] attribute to hide a variable from the pattern data view
  • Fixed the parent keyword not working properly
  • Added ability to declare custom functions
  • Allow fields in bitfields to be accessed like struct members
  • Added support for namespaces
  • Added support for declaring multiple variables on the same line
    • e.g u32 x, y, z;
  • Moved all built-in functions to the std namespace
    • Most functions also got renamed to use snake_case instead
  • Fixed endianess setting not applying to char16s
  • Added full unicode support by default
    • ImHex now loads unifont on launch
  • Optimize arrays of built-in types
    • This causes e.g huge byte arrays to not take up nearly as much memory anymore
    • The same optimization can be applied to custom structs by marking them with the new [[static]] attribute, however this only works correctly if the layout of the struct is actually static.

Improvements

  • ImHex now reduces its framerate if there's no events to be processed and doesn't render at all anymore when minimized.
  • Allow ImHex to redraw the screen when resizing for a much smoother experience
  • Added a nice banner to the welcome screen
  • Splash screen, banner and certificates are now embedded into the executable instead of needing to be in the right folder
  • ImHex now makes sure that saved project files always have the .hexproj extension. Thanks to @jam1garner
  • Added a bunch of icons to the welcome screen
  • The splash screen is now DPI aware
  • ImHex now more reliably detects when a file has been modified
  • Floats in the data inspector are now displayed in decimal form if they are reasonably close to 0.0 and in scientific notation otherwise. Thanks to @jam1garner
  • Drastically improved how bookmarks are displaying bytes
  • Added buttons to calculator tool
  • Reduced build times of ImHex quite a bit
  • Massively improved string search memory usage
  • ImHex now searches in the exeutable folder for plugins and resources again on Linux as well as in the system directories

Bug fixes

  • Fixed advanced decoding separator in the hex view not respecting horizontal scrolling
  • Fixed various issues related to plugin loading
  • Fixed keyboard shortcuts not working
  • ImHex no longer crashes on every exit

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button