Pro text/hex editor
with Binary Templates

010 Editor - Text/Hex Editor Homepage

Version 15.0 - July 31st, 2024

The following is an overview of the new functionality in version 15.0 of 010 Editor:

  • Added support for Tree-sitter syntaxes which provide real-time syntax parsing.
  • Tree-sitter allows high-quality syntax highlighting including coloring function names, custom data types, struct definitions, etc.
  • Over 45 Tree-sitter syntaxes are included and more can be installed from the internet.
  • Brace and Tag Matching: Placing the caret over a bracket '(' or ')' will underline that bracket and the corresponding bracket in the syntax. Works with HTML and XML tags too.
  • Jump between matching braces or tags with 'Find > Jump to Matching Brace/Tag'.
  • Double-clicking on a word in the text editor will automatically highlight all occurrences of that word in the document.
  • Dotted lines are now drawn vertically between code sections as identified by a Tree-sitter syntax (for example, 'if' or 'while' statements).
  • Added new 'Select' menu to the main menu with 'Select Word', 'Select Line' and 'Expand Selection'.
  • Use 'Expand Selection' to increase the current selection by stepping up the syntax tree (requires a Tree-sitter syntax or Binary Template).
  • Added animated scrolling when using page up/page down or jumping to positions in the file using Find, Goto, etc.
  • On Windows added Full Screen mode using 'View > Enter Full Screen'.
  • Added new themes 'Sunset Sky' and 'Bright Sky' which adjust syntax highlighting colors.

The following is a list of all new features in version 15.0 of 010 Editor:

  • Tree-sitter
    • Added support for Tree-sitter syntaxes in addition to regular syntaxes from Binary Templates.
    • Tree-sitter performs real-time parsing of source code into a syntax tree and allows high-quality syntax highlighting, matching braces/tags, expand selection, drawing section lines, etc.
    • Tree-sitter syntaxes added for Ada, ASM, Bash, Common Lisp, C/C++, C#, CSS, D, Dart, Elixir, Fortran, GLSL, Go, Haskell, HTML, Java, JavaScript, JSON, JSON5, Julia, Kotlin, LaTeX, LLVM, LUA, Make, Markdown, MATLAB, Objective-C, OCaml, Pascal, Perl, PHP, Powershell, Python, R, Ruby, Rust, Scala, Scheme, SQL, Swift, Syntax010, TypeScript, XML, YAML, and Zig.
    • Supports injections where source code from one syntax is placed inside of source code from another syntax and both are highlighted (for example, HTML containing JavaScript or CSS code).
    • Select a syntax using 'View > Syntax' or by clicking the Syntax section of the Status Bar (both Tree-sitter and Binary Template syntaxes can be selected).
    • The 'View > Syntax' menu shows recently used syntaxes and use 'View > Syntax > All Syntaxes (Tree-sitter)' to view all available syntaxes.
    • Updating the Tree-sitter tree when editing is done using threads to preserve fast editing with large source code files.
    • Additional Tree-sitter syntaxes can be downloaded from the internet and installed.
    • Can print the current syntax tree to the Output panel using 'View > Syntax > Print Syntax Tree'. If bytes are selected only nodes that intersect those bytes and their parent nodes are displayed.
    • If a different syntax is chosen for a file, the syntax is remembered the next time the file is loaded (see Remember Last Syntax in the Opening Files Options dialog).
    • Large source code files are supported by dividing the file into multiple large blocks and each block is placed into a cache that can be cleared when too much memory is used.
    • The block sizes and cache sizes can be controlled with the Cache Options dialog.
    • When opening a file, the syntax is auto-detected using the file extension or a regular expression.
    • Can parse big and little endian unicode files.
    • New 'Syntax' page of the Options dialog to control the available Tree-sitter syntaxes.
    • Syntaxes can be assigned a default 'Edit As' using the Syntax Option dialog.
    • An option exists to turn off all Tree-sitter syntaxes in the Syntax Options dialog.
  • Syntax highlighting
    • More detailed syntax highlighting is available using Tree-sitter syntaxes including coloring for functions, custom data types, struct definitions, etc.
    • Renamed syntax style names to be consistent with Tree-sitter. For example 'code-comment' becomes 'comment' and 'tag-comment' becomes 'tag.comment'.
    • Syntax styles can now display text as bold. Struct and function definitions are marked as bold in Templates and Scripts.
    • Syntax highlighting works inside injections (one syntax inside another syntax).
    • In Templates, the HighlightFindStyle function can use either the old or new syntax style naming scheme to locate styles.
    • Better syntax highlighting of Binary Template .bt and Script .1sc files using Tree-sitter.
    • Added 'tag.error' style for coloring unmatched tags.
  • Creating and Editing Syntaxes
    • 010 Editor Tree-sitter syntaxes require two things: a dynamic link library (.dll/.so/.dylib) that parses the file into a set of symbols, and a .syntax010 file that maps from symbols to syntax styles.
    • Syntax010 files are text files that can be edited within 010 Editor to customize the syntax highlighting.
    • Use 'View > Syntax > Edit Syntax File' to edit the Syntax010 file for the current syntax.
    • A Syntax010 file contain a series of S-expressions that can match part of a syntax tree and then use the @ operator to map to a syntax style name.
    • Once a Syntax010 file has been edited, use 'View > Syntax > Refresh Syntax' to apply the changes or click the icon in the top-right corner of the editor.
    • A Syntax010 file is similar to Tree-sitter's 'highlights.scm' file but with some extensions using #section.
    • Use '#section match' to control how brace matching works for a syntax.
    • Use '#section injection' to control how other syntaxes are injected into the current syntax.
    • Use '#section fold' to specify which sections have fold lines drawn (code folding will be available in future versions).
    • Supports regular expression matching with the #match? keyword.
  • Matching Braces/Tags
    • When using a Tree-sitter syntax, placing the caret over a brace '(' or ')' will cause that brace and the matching brace in the syntax to be underlined.
    • Brace matching can be used for different types of symbols such as {}, [], ().
    • Underlining also works with tags such as HTML tags (e.g. <b>, </b>) or XML tags.
    • Use 'Find > Jump to Matching Brace/Tag' to jump the caret from one matching brace or tag to the other.
    • Click 'View > Syntax > Highlight Matching Braces/Tag' to toggle the display of the underlines.
    • The background color of the braces can also be changed using the Match Brace/Tag color in the Theme/Colors Options dialog.
    • Which braces or tags are matched can be controlled by editing the '#section match' area of the Syntax010 file (use 'View > Syntax > Edit Syntax File' to view the file).
  • Section Lines
    • Dotted lines are now drawn vertically between code sections as identified by a Tree-sitter syntax.
    • The lines can be turned off using 'View > Syntax > Show Section Lines'.
    • Use the '#section fold' area of the current Syntax010 file to control where the lines are drawn (use 'View > Syntax > Edit Syntax File' to view the file).
    • In the future these lines will indicate sections of code that can be folded.
    • Control the color of the section lines using the Section Lines color in the Theme/Colors Options dialog.
  • Auto-Highlight Selection
    • Double-clicking on a word in the text editor will select that word and also automatically highlight all other occurrences of the word in the file.
    • By default a rectangle is drawn around each matching word in the document.
    • The background color can also be set using the Auto-Highlight Selection color in the Theme/Colors Options dialog.
    • Turn off highlighting by clicking 'View > Highlighting > Auto-Highlight Selection'.
    • Auto-highlight is turned off by default for hex files but can be enabled using 'View > Highlighting > Auto-Highlight Selection'.
  • Selection
    • Added new 'Select' menu to the main menu.
    • Added 'Select Word' to select the word the caret is on. If the word is already selected, the next word in the file is selected.
    • Added 'Select Line' to select the whole line the caret is on or expand the selection to include the starting and end lines.
    • Added 'Expand Selection' to increase the current selection by stepping up the syntax tree (requires a Tree-sitter syntax to be active). Expand Selection also works when a Binary Template is active by selecting the parent variables in the hierarchy.
    • Added 'Reverse Selection' to move the caret from the start of the selection to the end of the selection, or from the end of the selection to the start of the selection.
    • Added 'Mark Selection Start' to mark the beginning of a selection at the current caret position and 'Mark Selection End' to mark the end. If both a start and end point are set then the bytes are selected.
    • Added 'Move Selection Back' and 'Move Selection Forward' to move the selection forward or back by the number of bytes that are selected (useful in hex editing).
    • Moved 'Select All', 'Select Range' and 'Column Mode' to the Select menu.
  • Tables
    • Using the mouse wheel to scroll in tables no longer selects a different row.
    • Re-enable selecting rows using the mouse wheel by right-clicking on a table and selecting 'Column Display Format > Select by > Mouse Wheel Changes Selection'.
  • Themes
    • Added new themes 'Sunset Sky' and 'Bright Sky' which adjust syntax highlighting colors.
    • Added the 'View > Themes' menu for easily changing the theme.
    • Adjustments and fixes for many theme colors.
    • Added separate color for text line numbers and tool bar handles.
  • Editor
    • Added animated scrolling when using page up/page down or jumping to positions in the file using Find, Goto, etc.
    • Animated scrolling can be turned off in the Editor Options dialog.
    • Changed the indicator when the editor is scrolled to the right from a shadow to a single line.
    • Added 'Clear Replace Results' toggle to the Editor right-click menu to remove coloring from the editor after doing a replace all operation.
    • Line numbers are now displayed by default.
    • Added an extra space before line numbers (use the Text Editor Options dialog to turn this off).
    • Breakpoints are displayed in the left-most column when line numbers are turned on.
    • Highlighting the current line in the text editor now uses alpha blending.
  • Find
    • Renamed the 'Search' menu to 'Find' on the main menu.
    • When searching for hex bytes using wildcards, ?? now indicates a single hex byte.
    • When scrolling through find results, the editor will favor the left side of the editor (turn this off by unchecking Minimize Horizontal Scrolling in the Editor Options dialog).
    • When searching for a Variable Name, search for a Variable Name and Value at the same time using the syntax <varname>=<varvalue>.
  • Workspace
    • The 'Path' column is now hidden by default.
    • Show the 'Path' column by right-clicking on the Workspace or the header and choosing 'Show Path Column'.
  • Inspector
    • Right click on a value and choose 'Goto Address <value>' or 'Goto Sector <value>'.
  • General
    • Added Full Screen mode using 'View > Enter Full Screen'. Exit Full Screen mode using 'View > Leave Full Screen'.
    • The default character set for text files is now UTF-8.
    • Updated the Welcome page with multiple pages. Added a new page for selecting the theme and line number visibility.
    • Auto-detect file type now tries to detect UTF-8 files.
  • Templates and Scripts
    • Added the SRand function to provide a seed value for Random.
    • Added the BitfieldGetCurrentShift function to return the number of bits already read when defining bitfields.
    • When searching for a Variable Name, search for a Variable Name and Value at the same time using the syntax <varname>=<varvalue>.
    • Increased the number of levels the Template Results can open from 32 to MAXINT.
    • Added default types int8, INT8, uint8 and UINT8.
    • Using the Tab key to select the Template Results no longer resets the current selection.
    • When editing a Template or Script, the syntax can now be chosen in the status bar (used to be hidden).
    • Adjusted template style colors.
  • Options
    • On the Editor page, New File Types can be set to use a Tree-sitter syntax or a Template syntax.
    • On the Editor page, added Animated Scrolling toggle.
    • On the Editor page, added Minimize Horizontal Scrolling toggle.
    • On the Editor page, Caret Animation can be set to 'None' to create a solid, non-blinking caret.
    • On the Text Editor page, added Show Spaces before Line Numbers.
    • On the Opening Files page, added Remember Last Syntax toggle.
    • On the Opening Files page, added Open Syntax Files drop-down list.
    • On the Theme/Colors page, added Tool Bar Handle, Auto-Highlight Selection, Address Highlight, Match Brace/Tag, Auto-Highlight Selection, Section Lines, Hex Editor Addresses.
    • On the Theme/Colors page, renamed a number of syntax styles.
    • On the Theme/Colors page, renamed Scroll Shadow to Scroll Indicator Line.
    • On the Directories page, added Syntax Directory and Syntax DLL Directory.
    • Added Syntax page with a list of all available Tree-sitter syntaxes.
    • On the Cache page, added Tree-sitter Block Size and Cache size.
  • Bugs
    • Fixed a crash on macOS using drag-and-drop from an empty space in a file tab.
    • Fixed a crash with regular expressions using look-behind when called from FindFirst/FindAll (possible in PDF.bt).
    • Fixed sizeof was not properly returning an int64 in some cases.
    • Fixed Find in Files was not remembering the Current Project setting when 010 Editor was restarted.
    • Fixed using Find in Files when no files are open should use the character set from the Text Edit As (as using ANSI).
    • Fixed in Find in Files, the 'in Files' field was not taking up the full width of the edit field.
    • Fixed a possible crash with SScanf if passing a string to the wrong parameter.
    • Fixed a crash in an unoptimized array inside an on-demand struct that was generated in a read function (possible in DEX.bt).
    • Fixed selected tabs in each group were not restored properly when restarting and the startup action was 'Restore Open Files'.
    • Fixed some issues using find whole word with numbers.
    • Fixed problems using auto-indent on unicode source code.
    • Fixed Move Lines Up/Down should not move a line that touches just the end of the selection.
    • Fixed the Run Template at Offset action could not be assigned a shortcut key.
    • Fixed when debugging, placing the mouse cursor over a string did not correctly show the value in certain cases.
    • Fixed the end of file marker was sometimes not displayed when scrolling if line numbers were turned off.
    • Fixed a bug using Select Range when the Template the Results panel was focused.
    • Fixed StringToUTF8 was not properly converting characters in the range 0x80..0x9F (was using latin1 instead of ANSI).
    • Fixed files having a BOM caused XML to not be detected correctly.
    • Fixed a possible crash with HighlightCheckSingleLineRule when using an invalid regular expression.
    • Fixed a problem displaying word wrap symbols on macOS.
    • Fixed on macOS, path information is now added to the .zshrc file.
    • Fixed issues with the end-of-file test when using unpadding bitfields.
    • Fixed some issues drawing the enum drop-down button in the Template Results.
    • Fixed a problem using fgcolor/bgcolor custom functions with big-endian data.

Version 14.0.1 - March 7th, 2024

  • Fixed a bug on the command line with -noui sometimes not running a script using -script properly.
  • Fixed a crash when opening file from the macOS Finder in some cases.
  • Fixed a crash clicking on status bar labels in certain cases.
  • Fixed a Replace Next problem when using regular expression look behinds.
  • Fixed a short pause when loading files into 010 Editor when an instance is already running.
  • Fixed a problem on Linux loading files that start with '.' from the command line in some cases.
  • Fixed the Random function would start with the same value on some platforms.
  • Fixed a problem with using 'Display Empty Interface' and loading files from Windows explorer.
  • Fixed the maintenance end date was not being displayed properly for some licenses.
  • In the Compare dialog Limit Comparison, leaving Size A or Size B blank will compute to the end of the file.

Version 14.0 - July 31st, 2023

The following is an overview of the new functionality in version 14.0 of 010 Editor:

  • The caret is now easier to see and displays as a flashing vertical line in insert mode and an underscore in overwrite mode.
  • Template Results has a new style and the Type information has been moved to a separate column.
  • Tables now display without grid lines and have better shortcut key support.
  • Templates can use styles to apply colors to variables using the syntax <style=???> after a variable.
  • Placing the mouse cursor over the hex editor now shows an outline around the struct the mouse is over (struct outlining).
  • Can set a custom application scale factor in the General Options dialog.
  • Auto-Indent is supported in the Text Editor.
  • Added a Support Forum link to the Help menu.

The following is a list of all new features in version 14.0 of 010 Editor:

  • Improved Caret
    • Caret has a different style and is easier to see.
    • A vertical line is shown in insert mode and an underscore line is shown in overwrite mode.
    • The Caret can be configured using the Editor Options dialog. Different thicknesses or a block cursor can be chosen.
    • Animation and height of the caret can be controlled.
    • When the editor is inactive the caret is now drawn transparent.
  • Template Results
    • New style for the Template Results.
    • Type information has been moved to a separate Type column.
    • See the Tables section below for a list of other changes to the Template Results.
    • The Color column now draws background colors in a box and if a foreground color exists it is drawn as the word Text.
    • Better keyboard shortcut keys as described in the Tables section below.
    • Reordered some items on the right-click menu.
    • On the right-click menu, Start Addresses menu is moved to Column Display Format > Start Column.
    • Can hide the Type column using Column Display Format > Type Column.
    • Open nodes in the Templates Results are drawn with a highlighted text color.
    • Using View > Font > Enlarge Font/Shrink Font will now affect the Template Results if the Template Results is focused.
    • The Variables tab now uses the same font as the Template Results font (was using the Inspector font).
    • The caret in the Hex Editor is now hidden when a row in the Template Results is selected.
    • Using View > Template Results while editing a Template now shows or hides the Template Results of the target edit file.
  • Tables
    • New style for all Tables including the Find Results, Template Results, Bookmarks, Compare Results, etc.
    • Grid lines have been removed and rows highlight on mouse-over.
    • Can right-click on the Table Header to access the Column Display Format menu for each column.
    • Tables now select by rows instead of by cells.
    • Pressing the Left or Right keys opens or closes nodes instead of moving the cell selector.
    • The Home/End keys can be used to select the first or last row in the table.
    • Use the Enter key to edit an item or toggle open/close status if the node cannot be edited.
    • The Copy menu on the right-click menu now lists each column that can be copied.
    • Copy Row is the now the default for Ctrl+C when selecting by rows.
    • Renamed Copy Table to Copy All.
    • The Column Display Format menu now lists each column that can be modified.
    • Can switch back to selecting by cells by right-clicking on a Table and selecting Column Display Format > Select by > Cells.
    • Grid lines can be added back using the Theme/Colors Options dialog.
  • Struct Outlining
    • Placing the mouse cursor over the hex editor now shows an outline around the struct the mouse is over.
    • The variable the cursor is over is now highlighted in a different background color.
    • Older system of showing brackets around variables has been removed but can be re-enabled using the Theme/Colors Options dialog.
    • The colors of the outlining and variable highlighting can be controlled using the Theme/Colors Options dialog.
    • The current struct is also highlighted in the MiniMap.
    • Outlining can be turned off with the Hex Editor Options dialog.
  • Mini Map
    • When the mouse cursor is over a struct in the hex editor, the struct is now shown as highlighted in the Mini Map.
    • Highlighting structs can be turned off using the Mini Map Options dialog.
    • The color of the highlighting can be adjusted using the Theme/Colors Options dialog.
  • Template Styles
    • Templates can apply colors to variables using the syntax <style=???> after a variable.
    • Styles provide a consistent set of colors that work on both light and dark themes.
    • Using style is preferable to fgcolor and bgcolor if the Template is to be shared with other people.
    • Default styles include sHeading1, sHeading2, sHeading3, sHeading4, sSection1, sSection2, sSection3, sSection4, sMarker, and sData.
    • Each style has an accent color (e.g. sHeading1Accent) that can be used to color important variables within a struct.
    • Template Style colors can be modified with the Theme/Colors Options dialog.
    • Added built-in functions GetStyle, SetStyle, GetStyleBackColor and GetStyleForeColor to Templates.
  • Text Editor
    • Can set the spacing between lines with View > Font > Set Line Spacing.
    • Changed the word wrap indicator from '-' to a blue down-arrow displayed in the left-most column.
    • Can adjust the word wrap symbol in Text Editor Options and the color in Theme/Colors Options.
    • Pressing left when a selection is made jumps to the beginning of the selection.
  • Hex Editor
    • Changed the style of the hex editor to be more simplified.
    • The hex editor can now show lowercase hex.
    • When left clicking on the hex editor, an improved algorithm is used to determine the character that was clicked.
    • The number of digits in addresses stays constant when scrolling through files.
    • Removed 'h' and ':' after addresses.
    • Added more control over how addresses are displayed using the Hex Editor Options dialog.
    • The current line is now highlighted by overlaying colors using blending.
    • The current line is only highlighted when no bytes are selected.
    • The line width of the hex editor can be set per file by unchecking View > Line Width > Use Default Line Width.
  • Application Scale Factor
    • Can now set a custom application scale factor in the General Options dialog.
    • If multiple monitors are connected then scaling can be set for each monitor.
    • Requires restarting the application when scale factors are changed.
  • Auto-Indent
    • Pressing Enter on a line in the text editor that is indented will automatically add spaces to the newly created line.
    • Auto-indent can be turned off by clicking View > Code Intelligence > Auto-Indent.
    • Pressing the Backspace key immediately after Enter will delete spaces by the Indent Size.
    • When editing C/C++ or an 010 Editor Template or Script, if a line ends with '{' or '(' then pressing Enter indents the line further.
    • When editing Python and a line ends with ':' then pressing Enter indents the line further.
    • The Auto-Indent setting is stored with the current Edit As.
  • Licensing
    • Renamed the Register dialog to the Licensing dialog.
    • Now access the Licensing dialog using Tools > Licensing.
    • In the Licensing dialog renamed 'Password' to 'License'.
    • In the Licensing dialog renamed 'Check License' to 'Activate License'.
  • General
    • Added Support Forum link to the Help menu.
    • The default color for highlighting is now set to light-blue text when using View > Highlighting.
    • Tweaked a number of colors for syntax highlighting, the text editor and the hex editor.
    • Tutorials have better support for dark themes.
    • Drag and drop works better from some other applications (e.g. WinRar).
    • On the View > Line Numbers menu, moved format options to a separate Display Format menu.
    • On the View > Ruler menu, moved format options to a separate Display Format menu.
    • On the View > Status Bar menu, renamed Units to Format.
    • The Bookmarks tab now shows "(bookmark)" in the Name column when the bookmark does not have a name.
  • Options Dialog
    • New style for the Options dialog.
    • On the General page added Application Scale Factor.
    • On the Editor page added Caret options.
    • Moved Highlight Current Line option to both the Text Editor and Hex Editor pages.
    • On the Text Editor page can set the whitespace symbol for the word wrap indicator.
    • On the Hex Editor page added option for lowercase hex.
    • On the Hex Editor page added option for Overlay Highlight Line.
    • On the Hex Editor page added some options for Addresses.
    • On the Fonts page can set the default line spacing.
    • On the Theme/Colors pages added Template Styles, Highlight Struct, Highlight Variable, Word Wrap Indicator, Node Open Text.
  • Bugs
    • Fixed crash with the Startup page when using Move to New Vertical Tab Group.
    • Fixed the MakeDir function was not using UTF-8 encoding properly.
    • Fixed changing Show Local Variables in one Template Results did not always propagate to all other editors.
    • Fixed rare bug with scrolling in the hex editor where the view was not updating properly.
    • Fixed was missing the --noexecstack flag on Linux.
    • Fixed hidden variables are now ignored when calculating variable highlights or hints in the hex editor.
    • Fixed the install program should not display any message boxes when run in silent mode.
    • Fixed the uninstall program should not display any message boxes when run in silent mode.

Version 13.0.2 - May 2nd, 2023

  • Fixed a crash switching tabs when a Custom Inspector had an unapplied edit.
  • Fixed a crash when tab tearing is turned off and a tab is dragged onto itself.
  • Fixed issues with Find and wholeword when the find target started or ended with a symbol.
  • Fixed could not create a watch for a variable that had <hidden=true>.
  • Fixed some fonts on macOS had some rendering issues.
  • Fixed the Help button on the Opening Files Options dialog did not open the correct help page.
  • Fixed a crash using column selection in hex mode when bytes per line was larger than 16.
  • Fixed regular expression ^ was not correctly matching the first line when a BOM was present.
  • Fixed on some Linux flavors sometimes pressing Ctrl when first focused could delete a selection.

Version 13.0.1 - October 25th, 2022

  • Fixed when using a Custom Inspector, sometimes Undo would not update the file modified status correctly.
  • Fixed the Options button in the Find Bar now uses Alt+N as a shortcut (Alt+P is now used for the Project menu).
  • Fixed a Workspace could load file tabs in the wrong order if certain Tab Locations were set under 'Tools > Options > Opening Files'.

Version 13.0 - September 7th, 2022

The following is an overview of the new functionality in version 13.0 of 010 Editor:

  • Added support for Project and Workspace files.
  • Tabs can be torn off to a new window and multiple Floating Tab Group windows can be created.
  • The Workspace now supports multi-select and drag and drop.
  • Processes now properly use process addresses within the editor.
  • Jump from a variable in the Template Results to the source code using 'Goto Definition' or 'Goto Type Definition'.
  • Added middle-click scroll mode. Middle-click and drag to scroll or middle-click once to enter scroll mode.
  • Merging after a comparison is now supported.
  • Set a custom starting address for a file using 'View > Addresses > Set Starting Address'.
  • Added 'Duplicate', 'Move Lines Up' and 'Move Lines Down' commands to the Format menu.
  • Added support for Motorola 68000 (m68k) disassembly.
  • Intel Hex and Motorola S-Record import now skips the blank area at the beginning of a file and sets a custom Starting Address.
  • Can now export, import or reset settings for the entire application using the General Options dialog.

The following is a list of all new features in version 13.0 of 010 Editor:

  • Projects and Workspaces
    • Added support for Projects, which can contain a list of files in a tree structure.
    • Can save the currently open files as a Workspace file which can be loaded later.
    • Projects can be created with or without an associated Workspace file.
    • Loading a project that has an associated Workspace file will close all files and load the files in the Workspace file.
    • Project files are saved to disk with extension ".1pj" and Workspace files are saved to disk with extension ".1wk".
    • Projects can be viewed in the 'Project' section of the Workspace tab or in the new Project tab.
    • Create projects using 'Project > New Project/Workspace' which displays the Project Options dialog.
    • In the Project Options, enable 'Store Workspace with Project' to create the project with an associated workspace.
    • Manage projects using the new 'Project' menu or by right-clicking on a project node in the Workspace tab or Project tab.
    • Open projects or workspaces using 'Project > Open Project/Workspace' or Ctrl+Shift+E.
    • To close projects use 'Project > Close Project' or mouse-over the top Project node and click the 'X' button.
    • Add files to a project using 'Project > Add to Project' or by right-clicking on a Project node and choosing 'Add to Project'.
    • Click 'Add to Project > Existing Files' to use a standard file dialog to add one or more files to the project.
    • Can also add 'Current File' or 'All Open Files' to the project using the Add to Project menu.
    • Use 'Add to Project > Existing Folder' to add a live folder to the project using a standard folder dialog box.
    • All files in the live folder are added to the project automatically.
    • A popup Folder Options dialog allows specifying a custom mask for the live folder and has a toggle for 'Include Subdirectories'.
    • Live folders are rescanned when a project is opened or can be rescanned with 'Project > Refresh Folders'.
    • Use 'Add to Project > New Folder' to create a project folder that does not exist on disk.
    • Other files or folders can be dragged inside a project folder, but not inside a live folder.
    • Project folders can be renamed by single-clicking or by right-clicking and selecting Rename.
    • Edit the options for a live folder by right-clicking on the folder and selecting 'Folder Options'.
    • Delete files from projects by right-clicking and selecting Remove from Project or by using the Delete key.
    • Use drag and drop to rearrange files or move files between folders.
    • Access the options for the project using 'Project > Project Options'.
    • Save the project using 'Project > Save Project' or 'Project > Save Project As'.
    • The project will be saved automatically when adding files if 'Auto-Save Project' is enabled in the Project Options.
    • Project and Workspace files are integrated with Windows Explorer, macOS Finder or Linux File Manager. Double-click or drag and drop onto 010 Editor to open.
    • Open or close projects in scripts using the ProjectOpen/ProjectClose functions.
    • Search across all files in a Project using Find in Files and selecting 'Current Project' as the search target.
    • Multi-select is supported when editing projects.
    • Save the current list of open files to disk using 'Project > Save Workspace'.
    • Opening a saved Workspace file will close all current files and open the files inside the Workspace file.
    • Projects may be saved to disk using absolute file paths or file paths relative to the project file (control with the Project Options dialog).
    • The application title bar shows [Project: <project_name>] when a project is loaded.
    • To view the full path for the current project, place the mouse over the top Project node.
    • Drag and drop from a project to the Open Files list or the editor to open files.
    • Open projects using -project on the command line.
    • The recent projects list can be sorted by access time or alphabetically.
    • The Workspace tab now shows 'Open Files: <project_name>' if using a project that has an associated workspace file.
    • Edit the source XML for a project by right-clicking on the project node and choosing 'Edit Project'.
    • If 010 Editor is closed when a project is active, the project is automatically reloaded when 010 Editor is restarted.
    • Turn off automatic reloading using the Opening Files Options dialog.
    • By default projects are saved in the 'Documents\SweetScape\010 Projects' directory.
  • Tabs
    • Tabs can now be torn off to a new window by dragging the tab up or down and releasing.
    • Multiple 'Floating Tab Group' windows can be created.
    • Use 'View > Floating Tab Groups' to show or hide the floating windows.
    • Better tab animation when dragging a tab to a different Tab Group.
    • Each Floating Tab Group window can have multiple Tab Groups laid out either horizontally or vertically.
    • Added new option 'Move to New Floating Tab Group' to the Tab right-click menu.
    • Added new option 'Move to Main Tab Group' to the Tab right-click menu for Tabs in a Floating Tab Group.
    • Each Floating Tab Group window now shows the name of the currently selected tab in its Title Bar.
    • All Floating Tab Groups are now hidden by pressing the Esc key.
    • Floating Tab Groups are no longer dockable with the main application.
    • Tab tear-off can be disabled in the Opening Files Options dialog.
    • Changed the background image for empty Tab Groups.
  • Workspace
    • Workspace now has 'Project' and 'Recent Projects' sections.
    • Multi-select is now supported with Shift and Ctrl (Cmd on macOS).
    • Drag and drop is supported between sections.
    • Drag from the workspace to the editor to open files.
    • Files can be added to the Favorites list using drag and drop.
    • Access options for the Workspace by right-clicking and selecting 'Workspace Options'.
    • Headers for the sections are now bold by default but can set to normal typeface using the Workspace Options.
    • Star icons are now shown for files in the Favorites list and this can be turned off using the Workspace Options.
    • The different sections of the Workspace can be hidden using the Workspace Options.
    • Controlling whether modified files in the Open Files list are shown as bold has been moved to the Workspace Options dialog.
    • The Workspace now shows 'Open Files: <project_name>' if using a project that has an associated workspace file.
  • Processes
    • Processes now properly use process addresses within the editor.
  • Set Starting Address
    • Set a custom starting address for a file using 'View > Addresses > Set Starting Address'.
    • The custom starting address is used in the Hex Editor, status bar, goto, find, etc.
    • 'OFFSET' label appears in the status bar when a Starting Address is set and click the label to change the address.
    • Can also set a custom starting address by right-clicking on the address column in the hex editor and selecting 'Addresses > Set Starting Address'.
    • Custom starting addresses are saved with the current workspace.
    • Starting addresses can be set on the command line using -startaddress.
    • In Scripts or Templates, the starting address can be set using the GetStartingAddress/SetStartingAddress functions.
  • Templates and Scripts
      Can jump from a variable in the Template Results to the source code by right-clicking on the Template Results and choosing 'Goto Definition'.
    • Can also locate the struct or type definition for a variable by right-clicking on a Template Results variable and choosing 'Goto Type Definition'.
    • A popup dialog now warns when an array of structures is encountered that may cause issues when being optimized.
    • Use <optimize=true> or <optimize=false> for the array or click the 'Do not show this message again' toggle to disable the message.
    • Arrays created with <optimize=false> are now collapsible in the Template Results like a normal array.
    • For backwards compatibility, the collapsible node can be turned off for all Templates using the Compiling Options dialog.
    • The collapsible node can also be turned off for individual Templates using the SetUnoptimizedArraysCollapsible function.
    • The active Script or Template chosen using a drop-down list will be remembered the next time 010 Editor is restarted or a workspace is loaded.
    • Turn off remembering the last Script or Template using the Opening Files Options dialog.
    • Formalized that all functions in Templates and Scripts use local coordinates where 0 is the first byte of the file and FileSize()-1 is the last byte.
    • Local coordinates are almost always the same as what is displayed in the editor except when editing a Process or a file with a custom Starting Address.
    • Use the AddressLocalToFile and AddressFileToLocal functions to transform between local coordinates and the displayed file coordinates.
    • Added SetFileCharSet function to change the character set of the current file.
    • Added IsCharPunct/IsCharPunctW functions to test if a character is punctuation.
    • Added EXPORT_PYTHONCODE constant to the ExportFile function.
    • Templates using 0x0D (Mac-style) linefeeds are now supported.
    • Can open or close projects in a script using the ProjectOpen/ProjectClose functions.
    • An error message is now shown when trying to call the MessageBox function inside a read/comment/name function.
  • Goto
    • Goto Line supports jumping to a column number using "line,column" or "line|column" (e.g. "5,3").
    • Goto Sector supports jumping to an offset number using "sector,offset" or "sector|offset" (e.g. "0x100,5").
    • Using Goto when seeking upwards in a file now jumps to the middle of the display.
  • Compare
    • Merging after a comparison is now supported.
    • Icons above the Compare Results Table can be used to jump to the next difference or copy and paste a difference to File A or B.
    • Use keyboard shortcuts Ctrl+Up/Down/Left/Right to merge when the Compare Results Table is focused.
    • Editing the files after a Compare will update the Compare Results Table as edits are made.
    • After a Compare, clicking on a byte in either editor selects the corresponding row in the Compare Results Table.
    • Changed the algorithm for initial choices for File A and File B when the Compare dialog is opened. File A is usually the current file.
    • In the drop-down list of current files for File A and File B, the list is now sorted alphabetically.
    • When switching between different files, the scroll state of the Compare Results Table is saved.
    • Control the maximum number of rows in the Compare Results Table with the 'Max Output Rows' field.
    • Shortcut keys for the Compare Results Table can be customized using the Shortcuts page of the Options dialog.
    • After a comparison, the Compare results can be cleared by right-clicking on the editor and selecting 'Clear Compare Results'.
  • Editor
    • Added middle-click scroll mode. Middle-click and drag to scroll or middle-click once to enter scroll mode.
    • In the Editor, Ctrl+Left behaviour now matches other editors (always jumps to the beginning of words).
    • Added 'Duplicate' command to the Format menu to duplicate the selection, or the current line if no selection is active.
    • Added 'Move Lines Up' and 'Move Lines Down' command to the Format menu to rearrange lines in the editor.
    • Right-click on the left-most column to access the Addresses/Line Numbers menu.
    • Right-click on the ruler to access the ruler menu. In hex mode line layout options are shown as well.
    • Keys for the editor can now be customized using the Shortcut Options dialog box.
    • Editor shortcuts are now displayed in the 'Help > View Shortcut List' dialog.
  • Hex Editor
      Removed colons after addresses by default (this can be turned back on in the Hex Editor Options dialog).
    • Added option to prevent the hex editor 'Char' column from automatically resizing when a wide character is encountered.
    • 'Char' column will automatically try to reduce size after expanding from wide characters.
    • Right-click on the address column and select 'Addresses > Set Starting Address' to set a custom starting address.
  • Disassembler
    • Added support for Motorola 68000 (m68k) disassembly.
    • Added to disassembler dialog plus flags for 68010, 68020, 68030, 68040 and 68060.
    • Can use in Template disasm with DISASM_M68K constant plus the flags DISASM_OPTION_M68K_010, DISASM_OPTION_M68K_020, etc.
  • Import/Export
    • Intel Hex and Motorola S-Record import now skips the blank area at the beginning of a file and sets a custom Starting Address.
    • This functionality can be turned off using the Importing Options dialog.
    • Added new export type 'Python Code'.
  • Find
    • New resize handles are shown in the Find Bars to resize the Find Bar sections.
    • After a Find All operation, right click on the Editor and select 'Clear Find Results' to clear coloring.
    • Fixed Find in Files can stop responding when scanning a large directory.
    • Fixed sometimes the selection would not be copied to the Find bar correctly when regular expressions were enabled.
  • Linux
    • Linux distribution is now provided as a .tar.gz archive with no installer.
    • Installation tasks such as creating icons and associations are performed the first time 010 Editor is run.
    • SHA256 hashes are available on the download website to verify archive integrity.
    • Can run '010editor -install' if the program is moved to update the installation paths.
    • Support wayland with '010editor -platform wayland' or 'export QT_QPA_PLATFORM=wayland'.
    • XCURSOR_SIZE environment variable can be used to adjust cursor size on some systems.
  • Portable Version
    • Portable version is now available as a .zip archive with no installer.
    • The EULA for 010 Editor must be accepted the first time 010 Editor is run.
    • SHA256 hashes are available on the download website to verify archive integrity.
  • General
    • Can now export, import or reset settings for the entire application using the General Options dialog.
    • For text files, renamed 'View > Addresses' to 'View > Line Numbers'.
    • Also renamed 'Show Addresses' to 'Show Line Numbers/Addresses'.
    • Reorganized the 'View' menu to put Line Numbers higher in the list.
    • Added 'Edit > Copy As > Copy as Python Code'.
    • Added 'Reset All Docking' option to the Window menu on the main menu.
    • Files restore their last selection when 010 Editor is restarted.
    • Can copy text from a message box.
    • 'Window > Window List' dialog now has buttons for Save and Close and supports multi-select.
    • When multiple files were deleted externally to 010 Editor, a new dialog shows all deleted files in one dialog instead of separate messages for each file.
    • When multiple files were modified externally to 010 Editor, a new dialog lists all modified files with options for Reload, Ignore, Always Reload or Always Ignore.
    • If Always Reload or Always Ignore is set for a file, an up/down arrow icon appears in the status bar. Click to manage reload settings.
    • When opening a file that is already loaded in the editor, a dialog gives the option to 'View' or 'Duplicate' the file.
    • The dialog has an 'Always use this option' toggle and can also be controlled using the Opening Files Options dialog.
    • When opening a file from the command line that does not exist, a dialog gives the option to create the file or ignore the request.
    • The default action can also be controlled with the Opening Files Options dialog.
    • Faster to close the application when a lot of files are loaded.
    • Links now use https instead of http whenever possible.
    • Allow 'Save All' to be clicked when the 'Startup' tab is active and files are opened.
    • Now using the user interface library Qt 5.15.2.
    • Added link to the Capstone license in the EULA.
    • Fixed missing tooltips for some icons.
  • Status Bar
    • The Status Bar now shows a clipboard icon instead of 'W'.
    • Copy the current cursor position to the clipboard by left-clicking on the position label and selecting 'Copy Position'.
    • Left click on the size label and choose 'Copy Size' to copy the current file size to the clipboard.
    • The 'OFFSET' label appears in the status bar when a custom Starting Address has been set. Click the label to manage.
    • An up/down arrow icon appears in the status bar when files in the editor are set to Always Reload or Always Ignore for file changes.
    • Click the up/down arrow to access the Manage Reloading Modified Files dialog, used to turn off Always Reload or Always Ignore.
  • Options
    • On the General page added 'Export' and 'Import' buttons to export or import all application settings to a .cfg file.
    • On the General page added a drop-down menu to the 'Reset' button that can be used to reset all pages or reset the entire application.
    • On the Hex Editor page added 'Show Colon After Addresses' toggle.
    • On the Hex Editor page added 'Automatically Resize Char Area for Wide Characters' toggle.
    • Added new 'Opening Files' page and moved the choice for the starting Edit As from the Editor Page to the new page.
    • Moved 'Remember Last Used Edit As', 'Remember Last Cursor Position', and Windows LNK options to the Opening Files page.
    • On the Opening Files page added 'Remember Last Selection' and 'Remember Last Project'.
    • Added 'Remember Last Script' and 'Remember Last Template' to remember the chosen Script or Template when a workspace is loaded.
    • Added a drop-down list to choose the default action when opening a file that is already loaded in the editor.
    • Added a drop-down list to choose the default action when opening a file from the command line that does not exist.
    • On the Opening Files page added drop-down lists to choose whether script and templates or regular files are loaded in the main interface or a Floating Tab Group.
    • Added drop-down to control whether Tabs are created at the end, start or before/after the current tab.
    • Added 'Allow Tab Tear-Off to New Window' toggle.
    • On Linux added 'Paste on Middle Click' option on the General page. If turned off then middle-click starts the middle-click scroll mode.
    • On the Shortcuts page Editor keys can now be customized using the 'Editor' section.
    • On the Shortcuts page the keys for the Compare Results Table can be customized in the Tools section.
    • Now a popup warning is displayed if a duplicate shortcut was found.
    • On the Toolbars page, when dragged a New File icon onto a Tool Bar, an icon is placed instead of text.
    • On the Importing page added a toggle for 'Automatically Set Starting Address for Intel Hex Files/Motorola Files'.
    • On the Theme/Colors page added color options for the middle-click scrolling icon.
    • On the Compiling page added 'Unoptimized Arrays are Collapsible' toggle.
    • On the Compiling page moved the option for controlling where Scripts and Templates are loaded to the Opening Files page.
    • On the File Dialogs page added 'Open Project' and 'Save Project' dialog options.
    • Added new 'Workspace' page with options to hide each section of the Workspace.
    • The Workspace page can be used to set bold states for headers and modified files, control favorite icons and set the sort order for recent lists.
  • Bugs
    • Fixed some processes on 64-bit machines were not being displayed properly.
    • Fixed a possible error popup using a Custom Inspector and disasm.
    • Fixed Find in Files can stop responding when scanning a large directory.
    • Fixed a crash switching an empty hex file into text mode.
    • Fixed possible crash using Find in Files and wildcards.
    • Fixed using 'parentof' inside of a custom size function.
    • Fixed during Find Next/Previous the numbering and wrap warning were not always consistently displayed.
    • Fixed Copy as Web Page (HTML) now properly transforms symbols such as > to &gt;.
    • Fixed the '&' symbol in file names was not being displayed properly in the file tabs.
    • Fixed landscape printing not working properly in some cases.
    • Fixed pressing Left at the beginning of a file incorrectly jumped to the end of the first line.
    • Fixed a crash with a very long enum value.
    • Fixed the custom Inspector was not being executing while debugging.
    • Fixed the sizeof operator can now work on a struct that is bigger than the current file.
    • Fixed the Assert function was displaying text as html and changed to plain text.
    • Fixed the TextWriteLine function should clear a line when passed an empty string.
    • Fixed sometimes the selection would not be copied to the Find bar correctly when regular expressions were enabled.
    • Fixed the ExportFile function was not exporting HTML, RTF, or text areas properly.
    • Fixed using %D when printing sometimes was not printing dates correctly.
    • Fixed problem updating the repository when the local repository is read only on Linux.
    • Fixed a crash if updating the repository on Linux and the config directory cannot be written.
    • Fixed was missing a few possible actions in the shortcuts list.
    • Fixed in the Page Setup margin fields, sometimes commas were being displayed instead of periods.
    • Fixed -resetdocks command line option was not working properly.
    • Fixed importing bookmarks with spaces in their names.
    • Fixed documentation of Highlight functions to accept colors in 0xBBGGRR format.
    • Fixed Templates using 0x0D (Mac-style) linefeeds are now supported.

Version 12.0.1 - Oct 7th, 2021

  • Fixed SHA512 and SHA384 reported the wrong value on files of a particular length.
  • Fixed a possible crash in scripts that write a large amount of data to a file.
  • Fixed a popup dialog asking about Inspector.bt was hard to read when upgrading to v12 with a light theme enabled.
  • Fixed the program version number was not being picked up by Winget.

Version 12.0 - September 17th, 2021

The following is an overview of the new functionality in version 12.0 of 010 Editor:

  • Added an overview diagram called the Mini Map to the right side of each editor.
  • The Dark theme can now be applied to scroll bars and dialogs.
  • Added disassembler for X86, ARM, MIPS, PowerPC, SPARC, SystemZ, and XCore.
  • Special attributes in Templates such as <read> and <write> can now be written inline instead of writing a separate function.
  • Tabs and headers are now rounded by default (this can be changed in the Options dialog).
  • New 'Opcode' data type for doing disassembly in Templates.
  • New 'Visualize' tab displays the same information as the Mini Map but can be undocked.

The following is a list of all new features in version 12.0 of 010 Editor:

  • Mini Map
    • Added an overview diagram called the Mini Map to the right side of each editor.
    • The Mini Map shows a zoomed out view of each file and works for both text and hex files.
    • The Mini Map can be hidden, resized, zoomed, or moved to either side of the editor.
    • Scrolling the editor automatically scrolls the Mini Map.
    • Bytes selected or highlighted in the Editor are highlighted in the Mini Map.
    • View options for the Mini Map by clicking 'View > Mini Map > Mini Map Options' or by right-clicking on the Mini Map.
    • The Mini Map can also be viewed in the new Visualize tab, located in the Inspector tab group.
    • Can click and drag on the line separating the Mini Map and Editor to resize the Mini Map.
    • The Hex Editor Mini Map takes each color of the file and lightens or darkens the color depending upon the byte value (byte values closer to zero darken the color and byte values closer to 255 lighten the color).
    • The amount of lightening or darkening can be controlled with the Contrast and Brightness sliders in the Mini Map Options dialog.
    • Colorize algorithms can be performed on the Hex Editor Mini Map to apply color maps to the data.
    • Choices for colorize include ASCII Sections, Rainbow, Heat, Ocean, Gray and Custom.
    • The number of bytes per line of the Mini Map can be controlled with the Hex Editor Mini Map Options dialog.
    • The Hex Editor Mini Map automatically changes the line width when the control is resized.
    • Line width of the Hex Editor Mini Map can be snapped to certain values with the Auto Snap setting (e.g. by default the width snaps to values of 16, 32, 48, 64, etc.).
    • Hovering the mouse over the Mini Map shows a highlighted rectangle, indicating the portion of the Mini Map that is visible in the Editor.
    • Clicking and dragging on the highlighted rectangle scrolls the Mini Map and Editor.
    • Clicking on a line of the Mini Map that is not in the highlighted rectangle centers the editor on that line.
    • After clicking on a line outside the highlighted rectangle, keep the mouse button down and move the mouse up or down to perform a velocity scroll (useful for large files).
    • Clicking the Reset button in the Mini Map Options dialog returns the Mini Map to its initial state.
    • The Mini Map supports high-DPI displays.
    • Some colors for the Mini Map can be controlled with 'Tools > Options > Theme/Colors'.
  • Style
    • The Dark theme can now be applied to scroll bars and dialogs.
    • Tabs and headers are now rounded by default (this can be turned off using 'Tools > Options > Theme/Colors' and under 'Options' uncheck 'Rounded Tabs').
    • Can customize the colors of scroll bars, main menu/right-click menus, tool tips, and dialogs using the 'Theme/Colors' page of the Options dialog.
    • Can change the color of the open/close children arrows in Tables.
    • Changed the drawing of splitter buttons in scroll bars.
    • The scroll bar for text files now hides the bottom splitter button by default.
    • The Mini Map is now integrated with the scroll bars.
  • Disassembler
    • Added disassembler for X86 (64-bit/32-bit/16-bit), ARM (64-bit/32-bit), MIPS (64-bit/32-bit), PowerPC (64-bit/32-bit), SPARC, SystemZ, and XCore.
    • New Disassembler Tool on the tools menu for disassembling a section of hex data.
    • Results are displayed in the Disassembler Output Window as a new tab in the Output panel.
    • Selecting an opcode in the Disassembler results selects the hex bytes for the opcode in the Hex Editor.
    • Uses Capstone disassembly framework for performing disassembly.
    • Disassembly can be done in Templates using the 'Opcode' data type.
    • Disassembly of single instructions added to the Inspector for X86 (64-bit/32-bit) and ARM (64-bit/32-bit).
    • Added an icon to the Tool Bar for running the disassembler.
    • Has disassembler options for ARM v8, ARM MClass, ARM Thumb Mode, MIPS Micro, MIPS 32r6, MIPS ii, MIPS iii, PowerPC QPX, SPARC v9.
    • Endianness is supported for ARM, MIPS, and PowerPC.
    • Define the architecture for an Opcode in a Template using DisasmSetMode or <disasm=<constant>> after an Opcode.
    • Can include options for disasm using '|', for example "<disasm=(DISASM_ARM_32|DISASM_OPTION_ARM_THUMB)>".
    • Opcode variables can be a variable number of bytes.
    • Use the 'sizeof' operator to query the size of an Opcode.
    • Can display disassembly results in Intel or AT&T syntax ('mov rbx, rcx' versus 'movq %rcx, %rbx').
    • Added new functions DisasmNumOps, DisasmOpString, DisasmGetMode, DisasmSetMode, DisasmOpSizeFromFile, and DisasmOpStringFromFile.
    • Special Opcode array can be used to perform disassembly on a large block of data at once.
    • When defining an Opcode array, place the number of bytes between the brackets '[' and ']' (the number of resulting Opcodes can be queried with DisasmNumOps).
    • Note local opcodes are not currently supported but the DisasmOpSizeFromFile and DisasmOpStringFromFile functions can be used to do disassembly in a script.
    • Can right-click on the Disassembly results and choose 'Clear' to clear the table.
  • Templates and Scripts
    • Special attributes such as <read> and <write> can now be written inline instead of writing a separate function.
    • Inline functions can be written by calling a function and then including arguments inside brackets '(' and ')' where each argument can be an expression. For example: <read=Str("%lg", this / 256.0)>
    • Inline functions can also be written by enclosing an expression inside brackets '(' and ')'. For example: <comment=("ID = " + id)>
    • New 'Str' function which works like Printf but returns a string instead of writing it to the Output Window.
    • fgcolor and bgcolor attributes can now be a function or expression.
    • When writing inline functions, use 'this' to refer to the current variable (or this[0], test[1], etc. if this is an array).
    • Inline functions are supported for read, write, comment, size, name, fgcolor, bgcolor and disasm attributes.
    • Inline write functions should assign to a variable and should use 'value' to refer to the input string.
    • New 'Opcode' type to support using the Disassembler in Templates and see the Disassembler section above for other changes to Templates.
    • New 'disasm' special attribute for setting the architecture to use when performing disassembly.
    • Added 'Log10' function.
  • Inspector
    • 'Opcode (X86-32)', 'Opcode (X86-64)', 'Opcode (ARM-32)' and 'Opcode (ARM-64)' have been added to the Inspector.
  • Options
    • Can now control colors for the Dialogs, Menu/Right Click Menu, Scroll Bars, and the Mini Map on the 'Theme/Colors' page.
    • Theming of dialogs or scroll bars can be turned on or off using the 'Native Dialogs' or 'Native Scroll Bars' toggle in the Options drop-down list.
    • Rounding for Tabs or Headers can be turned on or off using 'Rounded Tabs' or 'Rounded Headers' in the Options drop-down list.
  • General
    • Added SHA-384 to Checksum algorithms.
    • Updated app icon.
    • Updated EULA for libraries.
    • Changed style of Hex Operations dialog.
    • Selecting a row in the Find results table shows the index of the row in the status bar, for example "(3/9)" means the third out of 9 rows was selected.
    • Added 'Hide my license' option to the Register dialog.
    • Added section to the manual about Multi-Line Regular Expressions.
  • Linux
    • Some versions of Linux were crashing when copying large blocks of data from 010 Editor to other applications. A limit to the number of bytes that can be copied was added to the 'General' page of the Options dialog and this limit can be turned off on the same page.
    • Some versions of Linux were having issues with certain Input Method Editors (IMEs). As such, IMEs are turned off by default on Linux but can be re-enabled using the 'Allow Input Method Editors' toggle on the 'Editor' page of the Options dialog.
  • Bug Fixes
    • Fixed a bug with regular expressions possibly finding a double match when a find result was over a 64K barrier.
    • Fixed a problem editing some Template variables while a breakpoint is hit.
    • Fixed loading files on Unix containing backslash '\' characters.
    • Fixed issues with the ruler drawing on some high-DPI systems.
    • Fixed a crash with certain scripts that write to text files.
    • Fixed changes to fonts sometimes were not properly updated in the dialogs when pressing ok in the Options dialog.
    • Fixed some Scripts were not working properly when run with -noui.
    • Fixed the Open Process dialog was showing some heaps as having modules that did not belong to a module (Process tab was ok).
    • Fixed the Open Process dialog was not showing some 64-bit addresses correctly (Process tab was ok).
    • Fixed issues displaying Templates or Scripts that have been deleted from the Repository.
    • Fixed when importing Motorola S19/S27/S37, data after a S7/S8/S9 record is now properly read.
    • Fixed the printer dialog was not working on some Linux systems.
    • Fixed a typo in the recent files list.

Version 11.0.1 - Nov 9th, 2020

  • When opening a .LNK file, a dialog now asks whether to open the target of the LNK file or the LNK file itself. The LNK open action can also be controlled in the Editor Options dialog.
  • On the Bookmarks tab of the Inspector added Import... to the right-click menu to import a CSV file of bookmarks.
  • Fixed a string sometimes did not display properly in the Variables tab when debugging a script.
  • Fixed can get a crash setting a watch on a local struct.
  • Fixed sometimes a local struct in a script could not access other variables inside the local struct.
  • Fixed the opacity sliders were not saved properly in the Theme/Colors Dialog page on exiting 010 Editor.
  • Fixed ReadByte/ReadInt/ReadInt64/etc. did not properly take the file offset into account when called with no arguments.
  • Fixed a possible corruption of the 010 Editor cfg file when closing multiple instances of 010 Editor at the same time.
  • Fixed a possible crash running scripts which modify linefeeds in a text file.
  • Fixed a possible crash in SScanf using a string which is not null-terminated.
  • Fixed a possible crash calling ReplaceAll in a script.
  • Fixed some scripts were not properly updating the modified state after being run.
  • Fixed when a Template was modified, the Template icon disappeared from the file in the Workspace.
  • Fixed the Bookmarks panel was not displaying the type name properly on some systems.

Version 11.0 - September 30th, 2020

The following is an overview of the new functionality in version 11.0 of 010 Editor:

  • New default editor font "Droid Sans Mono" and new themes "Starry Sky" and "Morning Sky".
  • Simplified editor display and the bar above each editor has been hidden (Run Template and Run Script are moved to icons in the Tool Bar and Edit As and Syntax are moved to the Status Bar).
  • Run, Repository and Debug icons are now displayed in the top-right corner of a Script or Template as overlaid icons.
  • Can run a Template at the current cursor position or on a selection by right-clicking on a Hex Editor and choosing Run Template at Offset.
  • Improved Status Bar which includes a number of popup sections.
  • 'local' structs are now supported in Templates and Scripts.
  • Capture groups / backreferences can be used when replacing with Regular Expressions.
  • When selecting bytes, the selection color is now blended with the existing colors allowing information to show through the selection.

The following is a list of all new features in version 11.0 of 010 Editor:

  • Style
    • Added new dark and light application themes Starry Sky and Morning Sky (older themes are still available).
    • New style for a number of dialogs including an improved Welcome dialog, About dialog, Repository dialog, Options dialog and splash screen.
    • Fonts are now more consistently applied across the application on Windows.
    • Tool Buttons can be styled now and rendering is improved.
    • Clicking on a Tool Button when a popup is shown will hide the popup.
    • Table Headers can be styled and rendering is improved.
    • Tables have a solid focus indicator instead of a dotted indicator.
  • Editor
    • New default editor font "Droid Sans Mono".
    • Simplified style for the Text Editor and Hex Editor with a thinner ruler.
    • When selecting bytes, the selection color is now blended with the existing colors allowing information to show through the selection.
    • The amount of blending for the selection can be adjusted in the Theme/Colors page of the Options dialog.
    • In the Hex Editor, improved drawing of colored bytes so that gaps do not appear in the display.
    • The bar above each editor has been hidden by default.
    • When editing a Script or Template, buttons for Run and Repository are overlaid over the editor in the top right-hand corner.
    • Can right-click on the overlaid icons to hide them or use the 'View > File Bar' menu.
    • Run Template and Run Script sections are now moved to icons in the Tool Bar by default.
    • Edit As and Syntax sections are moved to the Status Bar.
    • When scrolled to the right, a Scroll Shadow is now drawn along the left side of the editor (can be turned off in the Options dialog).
    • The old-style File Bar can still be shown using 'View > File Bar > Show Old File Bar'.
    • When editing a Hex file, new options Run Template... and Run Template at Offset were added to the right-click menu.
    • The Ruler displays a thicker line at column 80.
    • Removed the cursor hourglass display on undo/redo for small operations.
    • Hid the Undo/Redo actions from the right-click menu if there is no operation to Undo/Redo.
    • Adjusted the wrap line indicator in the left-hand column.
    • Can apply a style to the splitter buttons in the editor scroll bar.
  • Templates and Scripts
    • The 'local' keyword can now be used with enums and structs.
    • 'GUID' is now built-in as a typedef for an array of 16 unsigned bytes with read/write support in the Template Results.
    • Templates can now be run at an offset (i.e. at the current cursor position on on a set of selected bytes).
    • In the Template Results header a refresh icon is now shown which can be clicked to re-run the Template.
    • The Template Results panel splitter renders better when resizing.
    • When running a Script or Template that is focused, the editor attempts to make the target data file visible (this can be turned off in the Compiling Options dialog).
    • Octal notation \nnn is now supported inside a string where n is from 0..7 (before just \0 was properly supported).
    • String assignment with '=' now copies the whole string including null characters.
    • Added GUID highlighting to 010.bt syntax highlighter.
  • Running Templates at an Offset
    • Can right-click on a Hex Editor and choose Run Template at Offset to execute a Template at the current cursor position.
    • If a selection is made, Run Template at Offset can be used to run a Template on the current selection.
    • Run Template at Offset shows a Run Template dialog with a Run at Offset toggle and field at the bottom.
    • Enter the offset to run the Template in the Run at Offset field. The field will automatically be filled with the cursor position or the start of the selection.
    • Optionally enable the Limit Size field and enter the number of bytes in the field. The Template will be able to access this number of bytes from the offset.
    • The dialog box keeps a history list of the offsets and size limits used.
    • The Run Template dialog shows the list of Open, Installed and Recent Templates similar to the Run Template drop-down in the Tool Bar.
    • A Template now uses virtual addresses that are relative from the offset. For example, address 0 in the Template corresponds to the file position offset.
    • All functions which access addresses use the virtual addressing scheme (e.g. FSeek, FTell, startof).
    • All functions which access the size of the file use the size limit (e.g. FEof, FileSize).
    • After running a Template at an offset the Template Results header reads 'Template Results - <filename> @ <offset> | <sizelimit>.
    • Clicking the down-arrow to the right of the Template Results header shows a popup menu for changing the offset or clearing the offset.
    • Addresses in the Template Results are shown relative to the start of the file by default but can be shown relative to the offset by right-clicking on the Start column and selecting Start Addresses > From Offset.
  • Templates and Scripts - Local structs
    • The 'local' keyword can be used with structs to declare a struct as in regular C.
    • Local structs can be used in Scripts as well as Templates but must be declared with the 'local' keyword.
    • All variables defined inside a local struct are automatically local but sub-structs must still be declared with the 'local' keyword.
  • Templates and Scripts - Functions
    • Added new functions for working with GUIDs: GUIDToString and StringToGUID.
    • Added new functions for display formats: GetDisplayFormat and SetDisplayFormat.
    • Added new functions for keep file time: GetKeepFileTime and SetKeepFileTime.
    • Added new functions for checking status: IsBitfieldLeftToRight, IsBitfieldPaddingEnabled and IsUndoEnabled.
    • Added new functions for running Templates at an offset: OffsetGetStart, OffsetSetStart, OffsetGetLimitSize, OffsetSetLimitSize, OffsetClear.
    • In the FindInFiles function added an option to follow symbolic links.
    • In the AddBookmark function changed arraysize to int64.
    • Function GetFileNum now returns -1 if it is called in a Script which has no file target instead of causing a runtime error.
  • Tool Bars
    • Added new Run Template and Run Script icons which display a drop-down list of Templates or Scripts to run.
    • The drop-down list from the Run Templates or Run Scripts icon shows a list of Open, Installed or Recent Templates or Scripts.
    • Hid the Change Font and Endian icons in the Tool Bar (can be shown by right-clicking on the Tool Bar and select Font or Endian, and note Endian is still visible in the Status Bar).
    • Improved rendering and changed style of some Tool buttons.
    • Tool Bars can now be docked to the left or right side of the application.
    • Reordered icons in the View tool bar.
    • Can change text and disabled text color of tool bar items with the Options dialog.
    • Added icons to the Run Template drop-down to open the Template Repository dialog or Run Template at Offset.
    • Added an icon to the Run Script drop-down to open the Script Repository dialog.
  • Status Bar
    • Reorganized the Status bar into 3 sections and changed the style on some operating systems.
    • Most Status Bar panels can now be clicked to show a popup menu or change status (clickable panels highlight and show an up-arrow).
    • The central section of the status bar shows different information depending if a Text or Hex file is shown.
    • For Text files, the central section shows Edit As, Syntax Highlighter, Character Set, Linefeeds, and Tabs (also shows Endian for Unicode character sets).
    • For Hex files, the central sections show Edit As, Character Set and Endian.
    • Clicking on the Position, Byte Value or Size panel shows a popup used to change units or open the Goto or Set File Size dialogs.
    • Binary is no longer shown in the Byte Value panel (moved to Inspector) but can be shown by clicking on the panel and selecting Byte Value Units.
    • Commas are shown by default in the File Size panel but can be turned off by left-clicking and selecting File Size Units.
    • Clicking on the Edit As panel shows a popup menu to choose a new Edit As (e.g. Text, Hex, Binary, etc.).
    • Clicking on the Syntax Highlighting panel shows a popup to choose a new Syntax Highlighter or turn off Syntax Highlighting.
    • Syntax Highlighting panel shows 'Plain' if no Syntax Highlighter has been chosen.
    • Clicking on the Character Set panels shows a popup to select a new character set or convert to a different character set.
    • Linefeeds panel now shows 'CRLF' for DOS linefeeds 0D0A, 'LF' for Unix linefeeds 0A, or 'CR' for Mac linefeeds 0D.
    • Clicking on the Linefeeds panels shows a popup menu to convert to a different type of linefeed.
    • Tabs panel now shows SPC if inserting spaces or TAB if inserting tabs.
    • Clicking on the Tabs panel shows a popup menu to change the tab settings.
    • Clicking on the Endian panel toggles the endian and no longer shows a popup menu.
    • Added more information to hints for the panels.
  • Repository
    • A Repository icon is displayed in the top-right corner of a Script or Template editor and clicking the icon displays the Repository menu.
    • The Repository icon changes depending upon the status of the file (gray means the file is not in the repository and blue means the file is in the repository).
    • On the Repository menu, renamed some menu items from 'Submit File...' to 'Submit to Repository...' and 'Update' to 'Update from Repository...'.
    • When editing a Script or Template, the Repository menu can also be accessed from the editor right-click menu.
    • On the Help menu added View Repository Status and View Repository History.
    • The Repository dialog shows tabs on the bottom and has a new style.
    • In the Repository history dialog, the Comment field now displays the description of the file for the initial version.
  • Capture Groups / Backreferences
    • When doing a Replace operation with Regular Expressions, backreferences (capture groups) can be used in the replace string.
    • Brackets ( and ) can be used in a Regular Expression to create a capture group.
    • Use \1 up to \9, or $1 up to $9 to reference capture groups 1 through 9.
    • Use \k<n> or ${n} where n is any integer to reference capture group 10 or higher.
    • Named capture groups can be created in a Regular Expression using (?<name>...)
    • A backreference to a named capture group can be created with \k<name> or ${name} in the replace string.
    • Used capture group \0 or $0 to reference the text matching the whole regular expression.
    • The codes \t, \n, \r, \a, \e, \f, \v, and \xHH can now be used in the replace string.
  • Debugging
    • When the debugger is active, the Continue, Stop, and Step icons are overlaid on the top-right corner of the Script or Template being debugged.
    • The Debug Tool Bar is now hidden by default but can be shown with 'View > Tool Bars > Debug'.
    • By default only a Pause button is displayed in the Tool Bar which can be used to pause or stop a running Script or Template.
    • The icon was changed to a double-arrow for Continue.
    • Breakpoint indicators were resized and fixed for drawing issues.
  • Workspace
    • Added a Table header with File and Path sections to the Workspace to be more consistent with other tabs.
    • Modified files are now shown as bold (can turn this off by right-clicking on the Workspace and selecting Options).
    • Only show icons now for Scripts, Templates, Drives and Processes (removed file icon for regular files).
    • Possible to display folders with bold text (right-click on the Workspace and select Options).
  • Inspector
    • 'Binary' and 'GUID' have been added to the Inspector.
    • The Inspector.bt file has been added to the Repository which can be used to customize the Inspector.
  • Find and Replace
    • Added new Find Next/Previous icons.
    • Tool buttons in Find Bars work better with popup issues fixed.
    • In Find in Files, added an option Follow Symbolic Links. Turning this off ignores directories that are symbolic links.
    • In the Find Bar, text is now not automatically converted to uppercase before being displayed in the bar.
    • Lines used to resize sections of the Find bar are now drawn as solid instead of dotted.
  • General
    • In the Calculator, when multiplying two integers the multiplication is now done as an int64 to prevent overflow.
    • Added 'View > Linefeeds > Show Wrap Line' to allow drawing a wrap line even when wrapping is turned off.
    • 'View > Character Set > Use Default Char Set' menu option now includes the name of Edit As to be more clear.
    • When a license for a previous version of 010 Editor is entered in the Register dialog, clicking the 'Check License' button displays the greatest version the license can run.
    • Renamed 'File Interface' to 'Edit As' in the interface and the documentation.
    • Each Dock Header now highlights when the mouse is placed over them when they are docked.
    • Added 'View > Status Bar > Byte Value Units' to control what is displayed in the Status Bar Byte Value panel.
    • Reordered the 'View > Font' menu.
    • Added the 'View > File Bar' menu.
    • Added Insert Tabs to the 'View > View Tabs/Whitespace' menu.
    • On macOS removed the 'View > Show Tab Bar' menu option.
    • The tear marker on File Tabs is easier to see.
    • Improved style and drawing in the Explorer tab.
    • Clear All Bookmarks action now asks for confirmation before proceeding.
    • Added scroll bars to the tutorial for long pages.
  • Options
    • New style for the Options dialog.
    • Scroll bars are automatically displayed now when resizing the dialog.
    • Renamed File Interface page to Edit As.
    • Renamed Keyboard page to Shortcuts.
    • On the Fonts page added Application Font and Dock Header Font.
    • On the Fonts page added Set Old Editor Fonts button to set editor fonts to fonts used in previous versions of 010 Editor.
    • On the Editor page added Show Shadow when Horizontally Scrolled option.
    • On the Edit As page the names of the linefeeds have changed.
    • On the Compiling page added Show Target File after Running Script/Template.
    • On the Theme/Colors page added new styles Starry Sky and Morning Sky.
    • On the Theme/Colors page older styles are listed in the -----Older Themes----- section.
    • On the Theme/Colors page added option for native drawing of Tool Buttons and Table Headers.
    • On the Theme/Colors page some colors have an opacity slider for blending with the background color (0% means transparent and 100% means fully opaque).
    • On the File Dialogs page the directory for Open File, Open Template and Open Script can be set to Current File Location / Last Used Directory or Current File Location / Last Used ??? Directory.
    • Added Application colors: Dock Header Highlighted.
    • Added Tool Bar colors: Button Highlighted, Button Selected, Button Down, Text and Disabled Text.
    • Added Status Bar colors: Status Bar Highlighted, Status Bar Line.
    • Added Dock Window colors: Explorer Fields.
    • Added Table colors: Header, Header Outline, Header Highlight, Grid Lines, and Selected Cell.
    • Added App Bar color: App Bar Splitter.
    • Added Editor colors: Wrap Line, Splitter Button and Scroll Shadow.
  • Manual
    • Changed help viewer style and icons to better match main application.
    • Reorganized Templates and Scripts manual section to include a Language Reference.
    • Fixed the help viewer now does a better job picking an initial size.
  • Bugs
    • Fixed casting uint64 to double was only casting the lower 32 bits (note that casting int64 to double works fine).
    • Fixed a memory leak in Templates with a lot of variables.
    • Fixed the FileSave function reported a problem reopening a file after saving to a different name.
    • Fixed a rendering problem with the Hex Editor when dragging the application between monitors with different DPI settings.
    • Fixed a possible crash in a script using Quick Watch to check the value of an item in an array.
    • Fixed the size of a string was not updating properly in the Template Results when the string was expanded while debugging.
    • Fixed on macOS some text could be hard to read in macOS dark mode.
    • Fixed on macOS the Find Options dialog in the Floating Tab Group could sometimes be displayed behind the window.
    • Fixed in the Quick Watch window some drop-downs for enums were not working properly.
    • Fixed some drawing issues with drawing breakpoints when scrolling.
    • Fixed certain cases where the text in a message dialog box could be cut off.
    • Fixed Copy as Java Code should not include the array size and changed datatype to byte.
    • Fixed the button to expand tool bars was too hard to see on a dark theme.
    • Fixed some issues drawing the ruler on high-DPI displays.
    • Fixed an issue with the width of the editor scroll bars on some systems.
    • Fixed deleting a single byte in the Text editor should not show a status bar message.
    • Fixed string assignment in a Script or Template was losing characters after a null was included in a string.
    • Fixed a file in the Floating Tab Group could lose focus when clicking some icons.
    • Fixed possible scrolling issue in the Hex Editor using PageUp/PageDown when Line Width Auto is used.
    • Fixed possible crash with unterminated strings in Scripts or Templates.
    • Fixed Copy as HTML should not copy line numbers if the line numbers are hidden.
    • Fixed hints for Tool Buttons were not displayed when the Floating Tab Group was focused.

Version 10.0.2 - May 1st, 2020

  • Fixed on Windows a DLL was missing from the installer for older versions of Windows.
  • Fixed on Linux the numlock key was not working properly.
  • Fixed on Linux copying large blocks of data from some applications to 010 Editor did not work properly.
  • Fixed on macOS the scroll bars in the Template Results were not updating properly in some cases.
  • Fixed on macOS the repository was not updating properly when 010 Editor was installed as an admin.
  • Fixed on macOS using Paste from Hex Text/Binary Text to paste data from certain applications to 010 Editor did not work properly.
  • Fixed a slowdown in displaying find results when results occurred on a very long text line.
  • Fixed some characters were incorrectly being combined when being rendered in the hex editor character area.

Version 10.0.1 - February 14th, 2020

  • On macOS the application is now notarized.
  • Upgraded to a new version of our user-interface library.
  • Removed support for Windows XP, 32-bit macOS, and Ubuntu 10.04 to 15.10.
  • Better support for high-DPI displays.
  • Fixed a possible crash changing the text editor or hex editor font using the Options dialog.
  • Fixed in the Find in Files results, sometimes the file names would be incorrectly truncated.
  • Fixed a redraw issue when working with very large hex files and pressing Ctrl+A.
  • Fixed Overwrite File was incorrectly removing bookmarks when data was modified.
  • Fixed the Bookmark dialog was incorrectly truncating array sizes that were more than 4 GB.
  • Fixed an incorrect status bar message displayed when hovering over the new file icon.
  • Fixed the Register dialog was missing a Taskbar Icon if displayed before the main application started.
  • Fixed the warning for running a template which generates a large number of variables was not being displayed.
  • Added more checks a for corrupt configuration file on macOS.

Version 10.0 - December 6th, 2019

The following is an overview of the new functionality in version 10.0 of 010 Editor:

  • A full debugger is now available for finding and fixing problems with Templates and Scripts.
  • The debugger can be accessed using the Debug menu and includes stepping, breakpoints, watches and a call stack.
  • Templates and Scripts are now threaded, meaning other editing operations can be done while a Template or Script is running.
  • When using the Text Editor, line numbers and ruler labels are now hidden by default (they can be shown with 'View > Addresses > Show Addresses' or 'View > Ruler > Show Labels').
  • When line numbers or ruler labels are hidden, hover the mouse over the address column or ruler for a second to display a hint popup with the hidden information.
  • 'View > Tabs/Whitespace > Show Whitespace' now can be used to visualize linefeed types for each line.

The following is a list of all new features in version 10.0 of 010 Editor:

  • Debugger
    • A full debugger is now included for finding and fixing problems with 010 Editor Templates and Scripts.
    • Added a new Debug menu for controlling the debugger.
    • Debugging can be turned on or off using the 'Debug > Debugging Enabled' menu option.
  • Debugger Program Flow
    • Scripts or Templates can be run the usual way (for example with 'Scripts > Run Script' or 'Templates > Run Template') or by selecting a Script or Template and clicking 'Debug > Start Debugging'.
    • If debugging is enabled and a breakpoint is hit in the Script or Template, program execution will pause (see the next section for information on breakpoints).
    • When paused a yellow arrow will indicate the current debug active line in the Text Editor.
    • Use 'Debug > Step Over' to step to the next line of the file, jumping over any functions or structs that are called.
    • Use 'Debug > Step Into' to step to the next line of the file and step into any functions or structs that are called.
    • Use 'Debug > Step Out' to execute the rest of the current function or struct and stop at the first statement outside the function or struct.
    • To continue running a paused Script or Template click 'Debug > Continue', 'Scripts > Continue Script or Template' or 'Templates > Continue Script or Template'.
    • To pause a running Script or Template click 'Debug > Pause'.
    • To stop a running or paused Script or Template click 'Debug > Stop' or press Shift+Esc (note this has changed from the Esc key in previous versions).
    • Scripts or Templates are now run threaded meaning other editing operations can take place when a Script or Template is running.
    • If stepping to a line in an include file, the include file is automatically opened in the editor.
    • Right-click on a Script or Template and choose Run to Cursor from the right-click menu. The Script or Template will run (or continue) and execution will stop at the chosen line or at the first breakpoint encountered.
    • When a Script or Template is stopped, click 'Debug > Step Into' to start the program and stop at the first executable line.
    • When stepping through a Template and the last line of the Template Results or Variables tab is selected, if any new variables are appended to the table then the selection will be moved to the last created variable.
  • Breakpoints
    • A breakpoint marks a line to stop in the Script or Template and is marked by a red arrow in the left-hand column of the Text Editor.
    • Set or clear a breakpoint for the current line using 'Debug > Toggle Breakpoint' or by left-clicking the left-hand column in the Text Editor.
    • If a breakpoint is set on a non-executable line then the breakpoint will be moved to the next line that is executable when the Script or Template executes.
    • Breakpoints are persistent (saved to disk) but this can be changed using the Compiling page of the Options dialog.
    • If debugging is disabled then no breakpoints will be hit and the breakpoints are displayed as red outlines in the Text Editor.
    • If the Script or Template is modified when program execution is paused then breakpoints will be disabled. The breakpoints will be displayed as outlines with a solid arrow head.
    • A list of all breakpoints can be found in the Breakpoints tab, which is found in the Inspector tab group or by clicking 'Debug > View Breakpoints'.
    • In the Breakpoints tab, right-click on the table and select Add Breakpoint to set a breakpoint by line number.
    • All breakpoints in all files can be deleted by clicking 'Debug > Delete All Breakpoints'.
    • The color of breakpoints or the active line marker can be controlled using the Theme/Colors page of the Options dialog.
    • Note that breakpoints are not hit when the application is starting up and any files are being reloaded.
  • Variable Hints
    • When program execution is paused and the mouse is placed over a variable name in the Script or Template, a hint popup will display the value of the variable.
    • When a selection is made in the Script or Template and the mouse is placed over the selection, the selection will be evaluated and the results displayed in a hint popup.
    • Currently only simple functions (sizeof, startof, exists, etc) can be evaluated in a selection and open the Quick Watch dialog to evaluate a selection which contains more complex functions.
    • Note that how variables are scoped can be affected by the Call Stack tab.
    • Variable hints can be turned off using the Compiling page of the Options dialog.
  • Watches
    • Watches can be set in the Watch tab found in the Inspector tab group or by clicking 'Debug > View Watches'.
    • Add a watch by double-clicking on the first empty line in the Name column or by right-clicking on the Watch tab and choosing Add Watch.
    • A watch can be almost any expression or variable name (for example, 'FileSize()-1000' or 'blocks[i].data[10]').
    • Watches are evaluated every time program execution is paused (e.g. a breakpoint is hit) or when the program is stepped to the next line.
    • If the result of a watch is a struct, the struct can be opened and explored similar to the Template Results.
    • To delete a watch use the Delete key or right-click on a watch and choose Remove Watch.
    • A single list of watches is kept for the entire application.
    • Note that how variables are scoped can be affected by the Call Stack tab.
  • Quick Watch
    • Expressions can also be evaluated without creating a watch using the Quick Watch dialog ('Debug > Quick Watch').
    • Enter an expression in the Expression field and click Evaluate.
    • The result of the expression or variable is displayed in the Value column.
    • A list of recent expressions is available by clicking the Down arrow in the dialog.
    • Click the Add Watch button to add the current expression to the Watch tab.
    • If a selection is made in the Text Editor before the Quick Watch dialog is opened, the selection is copied to the Expression field and evaluated.
  • Debugging Runtime Errors
    • If a runtime error occurs in a Template or Script a popup dialog box will be displayed asking to start the debugger.
    • When debugging errors the cursor is placed on the line that caused the error.
    • Variables can be investigated with Variable Hints in the Text Editor or with watches.
    • Clicking Continue or stepping to the next line will stop the Script or Template.
    • Select the Always use this action toggle in the popup dialog box to always start the debugger or never start the debugger.
    • Whether the debugger starts on an error can also be controlled with the Compiling page of the Options dialog.
  • Call Stack
    • The Call Stack is available in the Call Stack tab which can be found in the Inspector tab group or by clicking 'Debug > View Call Stack'.
    • When program execution is paused, the Call Stack lists the functions or structs that were called to reach the current execution point.
    • The current function or struct is listed at the top of the call stack and the function or struct which called that function or struct is listed below it.
    • If execution is not inside a function or struct then (Main Program) is listed in the call stack.
    • Double-clicking on a function or struct jumps to the last position inside that function or struct.
    • Double-clicking on a function or struct also makes any local variables inside the function or struct in local scope (this affects any watches or Variable hints in the Text Editor).
  • Debugger Limitations
    • Currently breakpoints are not hit inside custom read/write/name/comment functions that are called from the Template Results or Variables tab. To debug these functions call them directly inside the Template.
    • Currently breakpoints in on-demand structures are not hit when the structure is created by opening it in the Template Results. To debug these functions trigger creation of the struct directly in the Template by accessing a variable inside the struct.
    • Currently breakpoints are not hit inside the HighlightLineRealtime or HighlightBytesRealtime functions. To debug these functions see the Using the Debugger help topic in the manual for sample code to call.
  • Templates and Scripts
    • A full debugger including breakpoints, watches and call stack is now available for Templates and Scripts.
    • Templates and Scripts are now threaded, meaning other editing operations can be done while a Template or Script is running.
    • When a Template is running click 'Templates > Stop Template' or press Shift+Esc to cancel the Template.
    • When a Script is running click 'Scripts > Stop Script' or press Shift+Esc to cancel the Script.
    • On-demand Structures which have arguments are now supported.
    • Custom read functions can now be called on structs with zero size.
    • Custom name/comment functions now work for local variables.
    • After selecting a Script or a Template that has been run, the Variables tab now shows the list of variables created by that Script or Template.
    • If an included file is opened and modified in the editor, the modified version is used when compiling instead of the disk version.
    • Which warnings are displayed in the Output panel can be configured using the Compiling page of the Options dialog.
    • When the application is starting up and files are being reloaded, the Output panel shows the results from all Templates that were run.
    • The Template Results panel only shows the results from a syntax highlighting template if the Template was run directly (not as the result of opening a file).
    • Can right-click on the Variables tab and select Clear to clear the results from a Script or Template.
    • The InputString function now returns a UTF-8 string.
    • Jump to Template Variable is now only shown on the Editor right-click menu when editing a hex file.
  • Editor
    • In the Text Editor, line numbers are now hidden by default and can be displayed by clicking 'View > Addresses > Show Addresses'.
    • When addresses are hidden, place the mouse cursor over the address column for a second to see the line number in a hint popup.
    • When addresses are hidden, a triangle marker indicates the last line in a file (this can be turned off by setting the Address End Marker to None in the Theme/Colors Options dialog).
    • When addresses are hidden, a '-' marker indicates lines that are created by word-wrap.
    • In the Text Editor, ruler labels are now hidden by default and can be shown using 'View > Ruler > Show Labels'.
    • When ruler labels are hidden, place the mouse cursor over the ruler for a second to view the mouse and cursor position in a hint popup.
    • In the Hex Editor, small arrows in the ruler show the current cursor position and can be turned off using 'View > Ruler > Show Arrows'.
    • 'View > Tabs/Whitespace > Show Whitespace' now can be used to visualize linefeed types for each line.
    • The different symbols drawn for Show Whitespace can be configured using the Text Editor page of the Options dialog.
    • Breakpoints can be toggled by clicking the left-most column when editing a Script or Template.
    • When right-clicking on the editor, the cursor is now moved before the right-click menu is shown.
  • General
    • The shortcut for opening the Base Converter was changed to Ctrl+F11.
    • Updated the visual style of the Windows installer.
    • Using Import Hex with Hex Text or Paste from Hex Text now supports data with more types of formatting.
  • Options
    • On the Text Editor page added the Show Whitespace section to control how linefeeds are drawn.
    • On the Text Editor page added the Change Whitespace Symbols button to control which symbols are drawn for the different types of whitespace.
    • On the Theme/Colors page added an option to control colors of breakpoints and the debug active line.
    • On the Theme/Colors page added an option to control colors of the Address Hover Marker and Address End Marker (a triangle marker displayed on the last line when Show Addresses is turned off).
    • On the Compiling page added the Configure button to control which warnings are displayed in the Output panel.
    • On the Compiling page added the Breakpoints are Persistent toggle to control whether breakpoints are automatically saved to disk.
    • On the Compiling page added the Show Variable Hints when Debugging option to display the value of variables when the mouse is placed over a variable name in the Text Editor.
    • On the Compiling page added the When errors occur drop-down menu to control what action is taken when an error occurs in a Script or Template.
    • On the Inspector page added the default date format 'dd/MM/yyyy'.
  • Bugs
    • Fixed scripts were not given permission to execute functions in DLLs in some cases.
    • Fixed incorrect error message 'Incorrect function' when trying to load a file that does not exist on some machines.
    • Fixed a crash replacing certain empty regular expressions with nothing.
    • Fixed a possible crash editing a text file which contains a very long line (as reported by Kexu Wang of Fortinet's FortiGuard Labs).
    • Fixed incorrect size of tabs in the Preferences dialog of the Help application.
    • Fixed Save All does not try to save text in the Calculator to a file.
    • Fixed the Inspector would sometimes not update properly after clicking a Floating Tab Group file and then a Template Results panel in the main window.
    • Fixed possible crash with the Memset function (as reported by Kexu Wang of Fortinet's FortiGuard Labs).
    • Fixed possible crash with ReadWLine/ReadLine/ReadWString/ReadString functions and very large files (as reported by Kexu Wang of Fortinet's FortiGuard Labs).
    • Fixed 'Format > Comment Selection' now works with Python commenting.
    • Fixed permission issue with the FileSaveRange function.
    • Fixed up some inaccurate error messages when using invalid name/comment functions.
    • Fixed a text color issue with the Output pane after calling the OutputPaneClear function.
    • Fixed when replacing with nothing, sometimes not all replacements were listed in the Replace Results when 2 or more occurrences were found together.
    • Fixed an empty struct could be executed twice in some cases.

Version 9.0.2 - April 26th, 2019

  • Fixed icon transparency for the Windows Explorer shell extension.
  • Fixed syntax highlighting for keywords (HighlightMatchKeyword) now finds the longest matching keyword instead of the shortest (e.g. 'background-repeat' vs 'background').
  • Fixed when 010 Editor is run as administrator on Windows, files could no longer be opened from the Windows Explorer shell extension. Now a new non-admin copy of 010 Editor is opened before the files are opened.
  • Fixed on Linux the IBus IME can now be used.
  • Fixed possible crash in Memcpy, StrCat and SubStr when using very large arrays.
  • Fixed possible memory overrun when downloading news.
  • Fixed when opening a text file from the command line containing a BOM, sometimes bytes were improperly selected at the beginning of the file.

Version 9.0.1 - December 5th, 2018

  • Fixed a number of cases when a Syntax Highlighter was not properly applied when a file was opened.
  • Fixed an error running a Syntax Highlighter when the first line of a file was blank.
  • Fixed using 'return' inside a struct which was declared in a function would cause an error in the function.
  • Fixed bookmarks created while the Bookmarks panel was hidden were not properly shown when the Boomkarks panel was displayed.
  • Fixed on Linux when using a dark theme, the category headings in the Repository dialog could not be read.
  • Fixed the 'Hide Characters over 127' toggle should always be turned off when a custom character set is created.
  • Fixed passing a very long line to a Syntax Highlighter could cause the software to slow down. Syntax Highlighters now only color up to the Maximum Line Length as set in the Text Editor Options.
  • Fixed a problem running a template on a template, or a script on a script using the File Bar (right-click on the File Bar to enable this).
  • Fixed the Sleep function on Linux/macOS was using microseconds instead of milliseconds.
  • Fixed the Variables tab was not always showing the results after running a script.
  • Added a warning when a very long line was encountered (over 100,000 bytes) and word wrap was turned on. These lines cannot currently be fully wrapped and this will be improved in the future.

Version 9.0 - October 10th, 2018

The following is an overview of the new functionality in version 9.0 of 010 Editor:

  • Syntax Highlighters can now be shared via our online template repository.
  • Syntax Highlighters are implemented as a function inside a Binary Template .bt file.
  • Syntax Highlighters can be run by clicking the Syntax: section in the File Bar just above each text editor or by clicking 'Templates > Syntax' on the main menu.
  • Added a number of new character sets and simple character sets can be customized, imported, or exported.
  • Scripts and Templates can now call functions in an external library (*.dll on Windows, *.so on Linux, *.dylib on macOS) using #link.
  • Now the last cursor position and scroll position for files are restored when 010 Editor is restarted.
  • Added Delete Line (Ctrl+Shift+Backspace) and Delete Blank Lines commands to the Format menu.
  • Triple-click to select by line and drag to select multiple lines.

The following is a list of all new features in version 9.0 of 010 Editor:

  • Syntax Highlighting
    • Syntax Highlighters can now be shared via our online template .
    • Syntax Highlighters are written in a different format than before and are implemented as a function inside a Binary Template bt file.
    • New Binary Templates XML.bt, CPP.bt, PHP.bt and HTML.bt are automatically installed to perform syntax highlighting for those formats and other Binary Templates will be added to the online repository soon.
    • Highlighting for 010 Editor Templates and Scripts is now performed with the 010.bt Binary Template.
    • Removed the 'View > Highlighting > Syntax Highlighting' menu.
    • Syntax Highlighters are now run by clicking the Syntax: section in the File Bar just above each text editor or by clicking 'Templates > Syntax' on the main menu.
    • Clear Syntax Highlighters from a file by clicking on the Syntax: section in the File Bar above a text editor and select '(none)'.
    • If a Syntax Highlighter is found in the repository to highlight the current file, a dialog will popup asking to install or ignore the file, similar to installing regular Binary Templates.
    • The Syntax page has been removed from the Options dialog.
    • When 010 Editor v9 is first run, any old custom Syntax Highlighters created with the Syntax page of the Options dialog are exported to XML files in the 'Documents\SweetScape\Old Syntax Highlighters' directory.
    • Old Syntax Highlighters must be converted manually to the new format and there is not yet an automated tool to do the conversion.
    • The new Syntax Highlighting method can handle a huge range of other text formats but requires some programming to implement.
    • SweetScape Software will be available to help with conversion of Syntax Highlighters for common text formats time permitting.
    • If Old Syntax Highlighters were exported, they can be exported again later by clicking the Export Old Syntax Highlighter button on the Highlights page of the Options dialog. If this button is not displayed then there are no Syntax Highlighters to export.
    • Syntax Highlighters are written by implementing the function HighlightLineRealtime inside a Binary Template. This function applies colors to a single line of text.
    • Highlighting can also be applied to binary files instead of text files by implementing the function HighlightBytesRealtime in a Binary Template.
    • Added new functions to help in the creation of Syntax Highlighters: HighlightFindStyle, HighlightGetStyleForeColor, HighlightGetStyleBackColor, HighlightAllowInstanceSharing, HighlightApplyStyle, HighlightApplyColor, HighlightGetNextToken, HighlightBuildKeywordList, HighlightMatchKeyword, HighlightMatchString, HighlightFindKeyword, HighlightFindString, HighlightCheckMultiLineRule, HighlightCheckCommentRule, HighlightCheckSingleLineRule, HighlightCheckKeywordRule, HighlightCheckTagRule, HighlightCheckTagTokenRule, HighlightColorPattern.
    • Some highlighting functions can do case insensitive matching by using the HIGHLIGHT_IGNORECASE constant.
    • Some highlighting functions can do regular expression matching by using the HIGHLIGHT_REGEX constant.
    • The HighlightFindStyle function has an option to create custom Syntax Styles if they do not yet exist.
    • Custom Syntax Styles now store separate colors for light and dark themes.
    • If instance sharing is turned on using the HighlightAllowInstanceSharing function then only one copy of the Syntax Highlighter is kept in memory and used for all open files of the target text format.
    • By default the Template Results panel is not shown when running a Binary Template that does syntax highlighting.
  • File Interfaces
    • Syntax Highlighting is no longer controlled via the current File Interface (View > Edit As).
    • Combined the old file interfaces XML and HTML into a single Tagged interface.
    • Combined the old file interfaces C/C++ and PHP into a single Code interface.
    • 'File > New' menu now controlled by clicking Manage New File Types... on the Editor page of the Options dialog.
    • Possible to show or hide different sections (e.g. Run Script, Run Template, Repository...) of the File Bar above each text or hex editor by right-clicking on the File Bar.
  • Character Sets
    • Added support for more character sets as well as custom character sets.
    • The 'View > Character Set' menu has been reorganized to show a list of common character sets, followed by a list of recently used characters, followed by the character sets sorted into Standard, International, and Custom categories.
    • Character sets can be viewed, customized, imported and exported using the new Character Sets page of the Options dialog.
    • Now per-file character sets can be set by turning off the 'View > Character Set > Use Default' toggle. If the Use Default toggle is on then the character set comes from the current File Interface.
    • When opening a file and a different character set is detected than the current File Interface has, the Use Default toggle will be turned off automatically (an example of this is opening a Unicode XML file).
    • If a different character set is chosen when the Use Default toggle is off, that character set will be remembered when the file is closed and opened again.
    • Added the following character sets:
      • Arabic (ISO) - ISO 8859-6
      • Baltic (ISO) - ISO 8859-13
      • Cyrillic (KOI8-R) - KOI8-R
      • Cyrillic (KOI8-U) - KOI8-U
      • Cyrillic (ISO) - ISO 8859-5
      • Eastern Europe (ISO) - ISO 8859-2
      • Greek (ISO) - ISO 8859-7
      • Hebrew (ISO) - ISO 8859-8
      • Japanese (EUC-JP) - EUC-JP
      • Japanese (ISO-2022-JP) - ISO 2022-JP
      • Turkish (ISO) - ISO 8859-9
    • Existing character sets Arabic, Baltic, Cyrillic, Eastern Europe, Greek, and Hebrew now have "(Windows)" appended to their name to show they are using the Windows code pages.
    • Japanese character set is now named 'Japanese (Shift_JIS)'.
    • Now just a single Korean character set EUC-KR is supported.
    • The Character Sets page of the Options dialog allows viewing character sets and creating custom character sets.
    • Character sets are displayed in a 16x16 table for easy visualization.
    • Information about different symbols is displayed in a tool tip when moving the mouse cursor over the character set table.
    • When viewing a complex (multi-byte) character set a horizontal scroll bar will appear to allow scrolling through the different pages.
    • The font of the character set table can be controlled by right-clicking on the table.
    • Simple character sets can be modified by clicking on a symbol in the character set table and selecting a different symbol using the Change Symbol dialog that pops up.
    • If attempting to modify a built-in characters set, the character set will be copied to a new custom character set before the modification is made.
    • Simple character sets can be exporting to a CSV file by clicking on the Export... button.
    • A simple character set can be imported by clicking the Import... button. The import format should be 256 numbers separated by commas, spaces, or tabs and the number -1 designates no change.
    • In the Change Symbol dialog click the Reset button to reset the character to the original value or enter a new Unicode code point U+XXXX in the edit field at the top right corner.
    • In the Character Sets page of the Options dialog enable the Show at Top Level toggle to display the character set at the top of the 'View > Character Sets' menu.
    • For custom character sets, the Encoding can be chosen to select which internal encoding this character set uses to convert bytes to characters.
    • Enable the Hide Characters over 127 toggle to hide the display of any character with Unicode code points over 127 (for example, this is used for the ASCII character set).
    • The text displayed in the status bar when a character set is active can be controlled using the Status Bar Indicator edit box.
    • An integer ID Number can be specified for custom character sets for use in scripting functions such as ConvertString.
    • New constants are available for the ConvertString function for the newly available build-in character sets.
    • Created character sets are available for conversion when using the 'Tools > Convert...' tool.
    • The Convert tool shows the character sets marked as Show at Top Level and recently used character sets at the top of the Target Character Set list.
    • After the Convert tool is run, the file may be assigned a per-file character set (i.e. the 'View > Character Set > Use Default' toggle is turned off and a different character set is assigned).
  • External Functions in DLLs
    • Templates and Scripts can now call functions in an external dynamic library.
    • Works with Windows DLLs (*.dll), Linux shared objects (*.so), or macOS DYLIB files (*.dylib).
    • All functions defined inside of a #link "<filename>" and #endlink directive are assumed to be located in an external library (note that no body can be defined for these functions).
    • The 32-bit version of 010 Editor should be used when linking to 32-bit external libraries and the 64-bit version of 010 Editor should be used when linking to 64-bit external libraries.
    • Supports passing regular integer variables, floats and doubles and arrays of these types to external functions.
    • Support passing strings or wstrings to external functions.
    • Supports return types of any regular integer variables, float, double, string or wstring.
    • Use & to pass variables as references (pointers are not currently allowed in scripts and templates).
    • Structs cannot currently be passed to external functions.
    • Templates must be granted ExecuteDLL permission before being allowed to call functions in an external library. See the Permissions page of the Options dialog.
  • Templates and Scripts
    • Templates and Scripts can now use functions in an external library (see External Functions in DLLs above).
    • Added support for time64_t including new functions StringToTime64T and Time64TToString.
    • The ImportFile function can now import Motorola with word-based addressing.
    • The default character set for Templates and Scripts for new installs of 010 Editor is now UTF-8 (the character set of existing installations of 010 Editor is not changed).
    • Syntax Highlighting is now done through Binary Templates.
    • Implement the HighlightLineRealtime function in a Template to provide syntax highlighting for a text file, or HighlightBytesRealtime function to provide highlighting for a binary file.
    • Added a variety of HighlightXXX functions to help with writing syntax highlighters.
    • Added new functions for testing the type of different characters: IsCharAlpha, IsCharAlphaW, IsCharNum, IsCharNumW, IsCharAlphaNum, IsCharAlphaNumW, IsCharSymbol, IsCharSymbolW, IsCharWhitespace, IsCharWhitespaceW.
  • General
    • Now the last cursor position and scroll position for files are restored when 010 Editor is restarted (this can be turned off using the Editor page of the Options dialog).
    • Added 'Format > Delete Line' command (Ctrl+Shift+Backspace shortcut by default).
    • Added Ctrl+Shift+N shortcut key to create a Hex file.
    • Triple-click the mouse to select a whole line in the text or hex editor.
    • Triple-click the mouse and drag to select by lines.
    • Added the 'Format > Delete Blank Lines' command to delete empty lines in a file or selection.
    • Added 'Format > Delete Left Word/Delete Right Word' to the format menu with shortcuts Ctrl+Backspace and Ctrl+Del.
    • Can export Motorola S19/S28/S37 hex data using word-based addressing (added Motorola Hex Address Format toggle to the Export Hex dialog).
    • Can import Motorola S19/S28/S37 hex data using word-based addressing (added Motorola Hex Address Format toggle to the Importing section of the Options dialog).
    • Added new 64-bit type time64_t to the Inspector (the new type has also been added to the Inspector.bt file).
    • Hid Unicode line in the Inspector as it could cause rare crashes when browsing large binary files. This can be re-enabled by choosing Use Custom Inspector in the Inspector Options and then editing the Inspector.bt file.
  • Options
    • Add new Character Sets page for organizing and customizing character sets.
    • Remove Syntax page as Syntax Highlighting is now done through Binary Templates.
    • Added Export Old Syntax Highlighter button on the Highlights page if old custom syntax highlighters are found.
    • On the Editor page added Show Startup Page when All Files are Closed toggle.
    • On the Editor page added Remember Last Cursor Position toggle.
    • 'File > New' menu is now controlled by clicking Manage New File Types... on the Editor page of the Options dialog.
    • Added ExecuteDLL permission to the Permissions page to allow Templates to execute functions in an external library.
    • On the Importing page added Motorola Hex Address Format radio buttons.
  • macOS
    • Fixed a problem on macOS opening files from the command line that contain spaces.
    • Fixed a problem using the Esc key to cancel certain operations on macOS.
    • Fixed a problem with the hex editor Auto-line width calculation on macOS.
    • Fixed an issue with the version number display in the macOS Finder on some versions of macOS.
    • Fixed on macOS the undo stack was being lost after saving a file in some cases.
  • Bugs
    • Fixed preprocessor symbol expansion was improperly expanding constants inside strings.
    • Fixed the Input Method Editor (IME) was not being displayed properly after certain operations.
    • Fixed a problem using the color picker in the Custom Colors section of the Find Bar Options dialog.
    • Fixed opening a file when a different character set is detected than is assigned in the current File Interface, then that file is assigned a per-file character set (for example if opening a Unicode XML file).
    • Fixed a crash with Copy As Text Area operation in certain cases.
    • Fixed an issue with the Portable version loading files from the command line when the application was already open.
    • Fixed an issue displaying non-printable characters in the text editor on some machines.
    • Fixed newly created Tool Bars where not being themed properly.
    • Fixed a crash assigning to structs in certain cases (should generate an error instead of crashing).
    • Fixing pressing Backspace when a selection was made and the cursor was at the beginning of the file was not deleting the selection.
    • Fixed clicking 'View > Template Results' may not properly show a hidden Template Results panel when moved to the right side.
    • Fixed an issue using Ctrl+C to copy text from the Output panel when text was selected in the main editor window.
    • Fixed name and password are now being encoded before being sent to our online server for license checks.
    • Fixed a problem using the FindAll and ReplaceAll functions using UTF-8.
    • Fixed in the Template Repository, clicking the View button does not properly focus the displayed file.
    • Fixed the Inspector when using a custom Template was not updating properly after FileNew was called in a script.
    • Fixed using unpadded bitfields could result in a zero sized variable in some cases.
    • Fixed a problem loading a custom theme that was imported.
    • Fixed a bug on Linux with unreadable white text in the help file when using a dark OS theme.
    • Fixed Copy Table command in the Checksum Results panel was only copying one column.
    • Fixed Copy as Rich Text Format now creates background colors in a format compatible with WordPad.

Version 8.0.1 - September 29th, 2017

  • Fixed crash on macOS using Printf and %Lx or %Ld in certain cases.
  • Fixed templates with a file mask but no ID bytes were not being executed when a data file was opened.
  • Fixed possible crashes in Find and Replace with Regular Expressions that use ^ or $.
  • Fixed when installing on Mac, path info is added to .profile if it exists and .bash_profile does not.
  • Fixed crash passing variables of the wrong type to user functions in certain cases.
  • Fixed crash using Ctrl+Enter when certain panels were displayed.
  • Fixed crash using ++ or -- operators on a struct (should be a syntax error).
  • Fixed bug with FileSave and FileSaveRange properly converting UTF8 file names.
  • Fixed crash in FileNameSetExtension function when passing an empty extension.
  • Find/Goto/Select Bar Options button hotkey changed to Alt+P (Alt+O was not working).

Version 8.0 - May 3rd, 2017

The following is an overview of the new functionality in version 8.0 of 010 Editor:

  • Different application themes are now available including dark and light themes.
  • Themes can be customized, created, exported and imported using the Theme/Colors page of the Options dialog.
  • A Portable version of 010 Editor is now available on Windows for running 010 Editor from USB keys.
  • New visual style for the Text Editor, Hex Editor and File/Docking Tabs.
  • Better support for high-DPI displays including new higher-resolution icons.
  • Tabs in the Workspace, Inspector and Output windows can now be rearranged and undocked separately.
  • Workspace, Startup page, plus other dialogs now show a list of files split into Name/Path.

The following is a list of all new features in version 8.0 of 010 Editor:

  • Themes
    • 010 Editor now has themes which control the colors used for the application and how certain elements are drawn.
    • The default theme is a dark theme (Evening Sky) but a light theme is available (Blue Sky) plus others.
    • Themes can be chosen in the Welcome dialog when the application is first run or on the Theme/Colors page of the Options dialog.
    • A 'Classic' theme is available which is similar to previous versions of 010 Editor.
    • The individual colors of the themes can all be customized using the Theme/Colors page of the Options dialog.
    • New themes can be created, exported and imported using the Theme/Colors page.
    • Themes now control the colors of the Menu Bar, Tool Bars, File Tabs, Dock Window Tabs, Dock Windows, Tables, Graphs, Editors, etc.
    • Syntax Styles (for example for C/C++ or XML highlighting) are now controlled with the Theme.
    • Syntax Styles can be created, modified or deleted using the Theme/Colors page.
    • Background colors from templates are automatically darkened when using dark themes (see the new ThemeAutoScaleColors function to control this).
    • Bookmark colors are now controlled using the theme unless the Use Custom Color toggle is enabled in the Add Bookmark dialog.
    • New style for Find/Replace/Goto/Select bars and bars are now themeable.
    • Some UI elements can either be drawn using the OS standard method (called Native drawing) or with a custom themed drawing.
    • Native drawing of elements can be turned on or off using the Options drop-down menu on the Theme/Colors page of the Options dialog.
    • On macOS some UI elements are always drawn using Native rendering (for example the Menu bar and the Status bar).
    • The Startup page colors are now controlled using Themes.
  • Portable Version
    • A Portable version of 010 Editor is now available for Windows 32 and 64-bit as a separate installer.
    • The Portable version can be placed on a USB key and moved between different computers.
    • Run the '010EditorPortable.exe' program to start 010 Editor (or the '010Editor.exe' program in the 'AppData' directory).
    • Licensing information is stored in the portable directory structure under 'AppData\Config' instead of the registry.
    • The program asks to copy a license from the registry to the portable directory structure the first time the portable version is run.
    • Scripts and Templates are automatically installed to the '010 Scripts' and '010 Templates' directories in the portable directory structure.
    • All directories in the Directories panel of the Options dialog are listed as being offset the '($BASEDIR)' constant.
    • No desktop icon is created and no extension to the Windows Explorer is installed.
    • To uninstall just delete the installed directory structure (no uninstaller is necessary).
  • High-DPI Displays
    • Better support for high-DPI displays on Windows and Linux and Mac.
    • Includes new higher-resolution icons.
  • Docking Windows
    • Individual tabs of the Workspace, Inspector and Output Windows can now be rearranged and torn off.
    • Tabs for the Docking Windows are drawn in a new style which is themeable.
    • A new docking menu can be accessed by clicking the down arrow in the Dock Header when the window is docked (not floating).
    • The docking menu can be used to Hide or Float the currently displayed Dock Window.
    • When docked, clicking the X button in the Dock Header hides all Tabs in the group.
    • The View menu now allows showing or hiding the individual tabs of the Dock Windows.
    • Commands were added to the View menu to show or hide all tabs in a Dock Window at the same time (for example see 'View > Workspace Windows > Show/Hide All Workspace Windows').
    • Allow Docking option on the right-click menu of a Dock Window now applies to that particular tab, not the whole tab group.
    • The position of Docking Windows can be reset by clicking the down arrow in a custom Dock Header and choosing 'Reset All Docking' from the drop-down menu or by using the -resetdocks command line option.
  • File Tabs
    • New animated reorder when dragging File Tabs to new positions.
    • Can use the mouse scroll wheel to scroll through tabs if many tabs are open.
    • If a tab is dragged far enough, it will be torn off and can be moved to other tab groups (an arrow shows the insert position).
    • New visual style that is themeable.
    • Better support for dragging tabs when many tabs are opened.
    • Hint text for the tab now shows the size of the file.
  • Editor
    • Double-click and drag on a text file to select by words.
    • In a text file Ctrl+Backspace deletes the previous word and Ctrl+Del deletes the next word.
  • Explorer
    • Can use the Root field to set the root directory for the Explorer (only files and directories below that directory are shown).
    • Hide files that do not match the filter instead of just disabling them.
    • Removed the Refresh button as refreshes are done automatically.
  • Command Line
    • Can use -safe command line option to start 010 Editor without running any scripts or templates on startup.
    • Renamed -reset to -resetdocks for resetting the Dock Window positions.
    • Can use -install on macOS to perform installation checks (check if 010 Editor has been added to the system path).
  • Templates/Scripts
    • Background colors from templates are automatically darkened when using dark themes (see the new ThemeAutoScaleColors function to control this).
    • New function ThemeIsDark returns true if a dark theme is currently being used.
    • Date formats in the Template Results can now be set to different formats (see the Inspector page of the Options dialog).
    • New functions GetDefaultDateFormat, GetDefaultTimeFormat, and GetDefaultDateTimeFormat can be used to query the chosen date/time formats in the Inspector page of the Options dialog.
    • Can enabled synchronized scrolling of the Template Results using 'Window > Synchronize Template Results Scrolling' (can also be turned on in the Compare dialog).
    • Added function SetBytesPerLine to override the number of bytes per line of a hex editor.
    • Fixed when using on-demand structs the endian setting was not being properly read from the parent.
  • General
    • Workspace, Startup page, Window List, plus other dialogs now show a list of files split into Name/Path.
    • Can resize the columns of the Workspace and the Startup page Recent Files list.
    • Windows Installer is smaller and faster and does not require restarting the computer.
    • The current Find Results scroll position is saved and restored when switching files.
    • Can set a different date or time format for the Inspector/Template Results on the Inspector page of the Options dialog.
    • Add Bookmark dialog has been rearranged and Bookmark colors are controlled by the theme unless the Use Custom Color toggle is enabled.
    • Can clear the search history for the Find Bar or Replace Bar by clicking '(clear find history)' from the Find Bar history list.
    • When performing a Compare, the Floating Tab Group is hidden if files are moved to the main window as a result of tiling.
    • Save All command now skips over read-only files instead of showing an error that they could not be saved.
  • Options
    • Can set a different date or time format for the Inspector/Template Results on the Inspector page of the Options dialog.
    • Colors page of the Options dialog renamed to Themes/Colors and can be used to control the current theme.
    • Individual colors are marked as bold when modified and can be reset individually.
    • Color changes are applied immediately in most cases so changes can be seen without having to press the OK button.
    • Removed the Style Options page (styles are now controlled on the Theme/Colors page).
    • Renamed Shadow Cursor to Inactive Caret on the Editor page.
    • Added a Separator Spacing option on the Hex Editor page.
  • macOS
    • Added Minimize command on the Window menu (Ctrl+M).
    • Shortcut key for Compare changed to Ctrl+Shift+M.
    • Changed shortcut keys for Show and Hide Workspace/Inspector/Output/Floating panels from Alt+(number) to Alt+Shift+(number).
    • Added -install command line option to perform installation tasks again (check if the program is added to the system path).
    • When installing and the program is added to the system path, a copy of .bash_profile is made before overwriting.
    • Fixed issue running 010 Editor from the command line on some macOS systems.
    • Fixed crash on macOS with QAccessibleEvent::uniqueId function.
  • Linux
    • Removed dependency on libpng12.so library.
    • Fixed some application focus issues on Ubuntu 16 when using Alt+Tab.
  • Bugs
    • Fixed issue with local variables sometimes being placed in the wrong scope when allocating structs inside functions.
    • Fixed underscores were not being printed correctly.
    • Fixed some typos with the Writing Binary Templates tutorial.
    • Fixed a problem using parentof in a custom read function.
    • Fixed Atoi/Atof would work incorrectly when using a non-null-terminated string.
    • Fixed the Floating Tab Group was sometimes not focused correctly after showing it using the View menu.
    • Fixed when reloading a file that is in the repository, the repository icons in the File Bar were not updated correctly.
    • Fixed issue with the dialog size being too small when using the InputRadioButtonBox or InputString functions.
    • Fixed a Base64 import which was not divisible by 4 bytes could sometimes result in extra 00 padding bytes being imported.
    • Fixed some files were being incorrectly identified as Intel-Hex or Motorola on drag-and-drop.
    • Fixed a crash deleting a script or template from the Options dialog when none were installed.
    • Fixed a problem accessing the characters of a non-local string when the string is passed to a function inside a template.
    • Fixed updating the repository on machines using a proxy.
    • Fixed updating the repository on some machines when a directory was not being created properly.

Version 7.0.2 - June 6th, 2016

  • Fixed newly downloaded repository records could be incorrectly duplicated on some systems.
  • Fixed problem on some Linux systems copying data from other applications to 010 Editor.
  • Fixed problem with Mac OS X certificate on OS X 10.9+.
  • Fixed problem where a long script which opens files could steal focus from other applications.
  • ID Bytes can now match the first 2048 bytes of a file (was 1024 bytes).
  • Synchronized Scrolling can now work between text and hex files.

Version 7.0.1 - May 13th, 2016

  • Fixed Find in Files would crash on some Windows 8/10 64-bit machines.
  • Fixed ID Bytes detection may fail on some files or drives over 2 GB in length.
  • Mac application is now properly signed.
  • Fixed help viewer crash on Windows XP.
  • Fixed output from Printf inside an on-demand struct or read function was not being properly displayed in the Output area.
  • Fixed problem displaying the Print dialog on some machines.
  • Fixed problem saving files on Windows with no extension.
  • Fixed issue loading bookmarks containing non-ASCII character names.
  • Fixed crash on some Mac machines rendering certain fonts.
  • Now show a warning that the Print dialog cannot be displayed if no printers are installed.

Version 7.0 - March 23rd, 2016

The following is an overview of the new functionality in version 7.0 of 010 Editor:

  • New 010 Editor Repository holds an online collection of Binary Templates and Scripts that have been submitted by users of the software.
  • Files from the Repository can be downloaded and installed or uninstalled in 010 Editor with the click of a button.
  • Templates or Scripts can be submitted to the Repository directly from 010 Editor.
  • Can handle multiple versions of files in the Repository including updates, diffs, merges, etc.
  • Updated the style of a number of dialogs including the Startup page and Welcome page.
  • Added 'Using the Repository' tutorial to teach the basics of the repository.
  • Major upgrade to UI library resulting in a number of minor bug fixes and visual fixes.
  • New webpage 'http://www.sweetscape.com/010editor/repository/' shows the Repository in real time.
  • New 'Repository' menu displayed in the File Bar above a Template or Script.

The following is a list of all new features in version 7.0 of 010 Editor:

  • Repository
    • New Repository Dialog accessed by clicking 'Templates > Template Repository' or 'Scripts > Script Repository'.
    • Repository dialog lists all files in the repository and can sort by Category, Alphabetic, or Newest.
    • Install or Uninstall files from the Repository Dialog with the click of a button.
    • Can search for Scripts or Templates in the Repository Dialog with the search field.
    • Licenses for 010 Editor now include free Support, Upgrades, and Repository Updates for 1 year from the date of purchase.
    • When opening a file a dialog pops up if a Template is found in the Repository that can parse the file (can install the Template or ignore).
    • Repository can check for 'ID Bytes' for data files before asking to install.
    • New webpage 'http://www.sweetscape.com/010editor/repository/' shows the Repository in real time.
    • Download package includes a number of files from the Repository (called the Local Repository) so files can be installed even on computers not connected to the internet.
    • Online Repository checked for new updates every 3 days (can be changed or turned off).
    • Renamed a number of files in the repository (e.g. "BMPTemplate.bt" => "BMP.bt").
    • Recent repository updates are listed on the Startup page (double-click on an item to view) or on the History tab of the Repository Dialog.
    • Can submit files to the Repository directly from 010 Editor (see 'Submit File' in the 'Repository' menu above a Script or Template).
    • Submission dialog checks the header for errors and provides an easier way to add Category or History information to the submission.
    • Note that all submissions are reviewed by SweetScape Software before being allowed in the repository.
    • New 'Repository' menu in the File Bar above each Template or Script in the editor.
    • Icon in the File Bar shows the file repository status (Installed from Repository, Modified, Update Available, Conflict).
    • Use the Repository Menu to Update, Check for Modifications, Diff, Revert, Delete, or View Repository.
    • Full update engine including powerful 3-way merge algorithm and showing conflicts.
    • 'Available Versions' table in the Repository Dialog can show multiple versions of files in the Repository. The different versions can be viewed, installed or compared.
    • Display a special warning if a template installed from the Repository asks for permissions to read or write to other files.
    • History tab of the Repository Dialog is displayed when new updates downloaded (can be turned off).
    • Included new tutorial 'Help > Tutorials > Using the Repository'.
    • Default Templates and Scripts (e.g. 'BMP.bt', 'IsASCII.1sc', etc) are now installed from the Repository.
  • Templates/Scripts
    • New Template and Script repository allows installing and submitting Templates and Scripts easily.
    • Templates and Scripts can be listed by Category in the Templates and Scripts menu.
    • Standard templates have been renamed (e.g. "BMPTemplate.bt" => "BMP.bt").
    • Templates can now have 'ID Bytes' which provide an extra check that a template can parse a data file. For example, the 'ZIP.bt' file has ID Bytes '50 4B //PK'.
    • Renamed 'Templates > Online Template Repository' to 'Template Repository' which now shows the Repository Dialog.
    • Renamed 'Scripts > Online Script Repository' to 'Script Repository' which now shows the Repository Dialog.
    • Renamed 'Templates > Edit Template List' to 'View Installed Templates'.
    • Renamed 'Scripts > Edit Script List' to 'View Installed Scripts'.
    • The Output panel is no longer shown by default when Printf is called in a template (this can be controlled using the Compiling Options page).
    • New standard comment header at the beginning of Templates or Scripts created with 'Templates > New Template' or 'Scripts > New Script'. New header includes History, Category, File Mask, and ID Bytes.
    • Local strings are now displayed using the character set from the current file (used to always be ANSI).
    • #include now searches the Template and Script Repository Directories.
  • General
    • Updated style for a number of dialog boxes.
    • Inspector and Workspace are now docked to the right side by default (just drag-and-drop to move to the left side).
    • Updated Welcome Page with information about the repository.
    • Changed default selection background color.
    • A dialog now pops up when Support, Free Upgrade, and Free Repository Updates are about to expire (about 30 days left) and when expired.
    • Updated Startup page with modified style and Repository news.
    • License information is now displayed on the lower-right corner of the Startup page (click to display the Register dialog).
    • Downloading application news/updates is now done in the background instead of when the application was shut down.
    • Small modifications to the default colors for the editor.
    • Read-only state of files is saved with the workspace.
    • When a new license is entered a dialog displays the end dates for Support, Free Upgrades and Free Repository Updates.
    • About page now displays current license info and has a button to show the Register dialog.
    • Major upgrade to UI library resulting in a number of minor bug fixes and visual fixes.
  • Options
    • Template Options and Script Options now display the list of installed files, including files that have been installed from the Repository.
    • Include the category name in the list of installed templates and scripts.
    • Easier way to add local Templates and Scripts to the list. Clicking the 'Add...' button displays a multi-select file dialog box.
    • When adding local Templates or Scripts information such as File Mask, ID Bytes, and Category can be extracted from the comments at the beginning of the file.
    • Templates and Scripts now have an 'Edit...' button to load the file in the editor.
    • Added 'ID Bytes' for Templates as an extra way to check that data files can be parsed by a Template (ID Bytes can be turned off by unchecking the 'Require' toggle).
    • Added 'Status' info for Templates and Scripts and click the 'Show...' button to display the Repository dialog if installed from the Repository.
    • Added 'Set Shortcut' button on Scripts and Templates Options for an easy way to set a shortcut for these items.
    • New Repository Options page displays options for the Repository (some options are duplicated in the Repository Dialog).
    • Directory Options now allows setting the default Template and Script directory (moved from the Compiling Options).
    • Directory Options can set the directory where Scripts and Templates are installed from the Repository.
    • Moved File Dialog settings to a separate File Dialog Options page.
    • Added an option on the Compiling page to control whether the Output panel is displayed automatically when Printf is called in a Script or Template.
    • List of options on the left side of the Options Dialog is now resizable (you may need to enlarge the dialog first).
    • Options Dialog remembers its size when 010 Editor is shutdown and restarted.
    • New constants $TEMPLATE_REPOS_DIR and $SCRIPT_REPOS_DIR can be used in file names in the Options dialog.
  • Mac
    • New installation method. Just drag-and-drop to install.
    • Now support OS X 10.7 and higher (sorry 10.6 users, we tried).
    • Help viewer now renders fonts better on retina displays.
    • Fixed some font spacing issues on dialogs on the Mac.
    • For OS X 10.7 and 10.8 the default hex editor font is now Andale Mono (there is a rendering bug using Courier New on these systems).
  • Bugs
    • Fixed a crash in the Help Viewer when doing a search for certain keywords.
    • Fixed problem on Linux using Save As to save a large file in certain cases.
    • Fixed issue with multiple warnings when running scripts or templates are split onto separate lines.
    • Fixed bug in dialog asking to save a file which is marked as read-only was not displaying the file name correctly.
    • Fixed issue using the regular expression anchor '$' on files with DOS linefeeds.
    • Fixed using increment or decrement on a variable inside a variable accessor could sometime be called multiple times.
    • Fixed issue where the Addresses for the last line of a large text file were not displayed correctly using 'Byte Number (Decimal)'.
    • Fixed issue with wrong the background color sometimes being set when defining structs within structs.
    • Fixed bug with the FindFirst function incorrectly wrapping when starting the search from the end of the file.
    • Fixed crash when using an invalid regular expression in the FindFirst function.
    • Fixed using ReadByte/ReadInt/etc with no arguments and positions greater than 0xFFFFFFFF.
    • Fixed possible crash in FindOpenFile function after using FileClose.
    • Fixed when a custom name function had an error an empty string was being displayed for the name.
    • Fixed problem allocating a local variable after a struct definition sometimes having the improper scope.
    • Fixed FindInFiles and FindFiles now return strings in UTF-8 format.
    • Fixed possible crash assessing types defining by a call to RunTemplate.
    • Fixed FindFirst and FindAll would incorrectly search the whole file when size was zero.
    • Fixed crash using more than 15 parameters to SScanf.
    • Increased the maximum parameters for SScanf from 15 to 30.
    • Fixed bug with WMemSet function when the value to set was more than 255.
    • Fixed a problem viewing process names that contained non-ASCII characters.
    • Fixed a memory leak in user functions in certain cases.
    • Fixed a crash when a script or template ends with an unmatched '*/'.
    • Fixed an error message when trying to allocate an array more than 4 GB.
    • Fixed a bug using the '+' operator to add strings and single characters in certain cases.
    • Fixed some focus issues on Windows when opening a file and 010 Editor was minimized to the task bar.
    • Fixed restoring the application to the correct monitor when 010 Editor was maximized and then closed.
    • Fixed typing a backslash character when using the Japanese character set on Mac OS X.
    • Fixed issue when FileOpen failed and afterwards an incorrect file was selected.

Version 6.0.3 - Sept 25th, 2015

  • Fixed a crash when a find occurrence was found on a line containing more than 65535 characters.
  • Fixed the line number was not being properly displayed in the Find in Files results for text files.
  • Fixed a problem opening file names on Mac OS X containing certain characters.
  • Fixed a bug using the number constant 0xffffffffffffffff in a script or template;
  • Fixed a crash when starting 010 Editor during the 30-day trial period and the system clock was set back (an error is now displayed).
  • Fixed a crash when using an invalid regular expression in a syntax highlighting rule.
  • Fixed the wrong number of pages being printing in certain cases when printing a hex file.
  • Fixed Export CSV of the Find results for Hex Bytes sometimes improperly included an extra linefeed.
  • Fixed the AddBookmark function was not properly using the UTF-8 character set for the 'name' parameter.

Version 6.0.2 - April 13th, 2015

  • Fixed problem opening physical drives on Linux.
  • Fixed error using 'Copy As > Copy as Base64' and 'Copy As > Copy as Uuencoding'.
  • Now display an error when an invalid character constant is encountered in a script or template.
  • Fixed FILETIME error in the Inspector on Linux/Mac 64-bit.
  • Fixed error in the first result using Find Strings on a custom range.
  • Updated color for the Welcome and New Version dialogs.
  • Fixed error in the documentation for the Exec function about the function's return value.
  • Fixed error message in the footer of the Manual on the Mac.

Version 6.0.1 - January 28th, 2015

  • Fixed crash on exit on some Mac OS X machines.
  • Fixed problem opening processes on 64-bit Windows.
  • Made the color of the Startup page darker (was too bright on some monitors).
  • Can now change or reset the color of the Startup page by clicking the 'Options' button on the Startup page.
  • Fixed some issues using some IME's with the hex editor.
  • Fixed bytes not being swapped correctly when printing and swap by group is enabled.

Version 6.0 - December 16th, 2014

The following is an overview of the new functionality in version 6.0 of 010 Editor:

  • 010 Editor is now available as a 64-bit program on Windows, Mac and Linux.
  • Searching with Regular Expressions.
  • Improved Find speed, up to 10 times faster in some cases.
  • Changed the style of the Startup page, Welcome page, and File Bar.
  • Added new 'Writing Binary Templates' tutorial to teach the basics of creating Binary Templates.
  • Can export the Template Results in XML format.
  • Can import Find results.

The following is a list of all new features in version 6.0 of 010 Editor:

  • General
    • 010 Editor is now available as a 64-bit program on Windows, Mac and Linux.
    • Redesigned Startup page which is automatically shown on startup (this can be changed with the Startup Action section on the Startup page).
    • The Startup page is automatically shown when all files are closed (this can be turned off with the Options button on the Startup page).
    • Redesigned Welcome page with a link to the new Writing Binary Templates tutorial.
    • When asking to save changes to multiple files (for example, when closing 010 Editor), all the files to save will be listed in a single dialog.
    • Redesigned style for the File Bar/Ruler at the top of each Editor Window.
    • When a file is modified by an external program, the dialog asking to reload changes has two new options: Always Reload and Always Ignore. Always Reload will continually reload the file if changes are detected and Always Ignore will not prompt for reloading any more.
    • The Floating Tab Group is automatically hidden when all tabs in it are closed (this can be turned off in the Editor Options dialog).
    • Moved Save Selection command to the File menu.
    • A popup message is shown when a new version of 010 Editor is available (this can be turned off with the General Options dialog).
    • Added 'Help > Check for Updates' to check if a new version of 010 Editor is available.
    • When created new files, the default linefeeds to use are now specified in the File Interface (see the File Interfaces page of the Options dialog).
    • When editing a word-wrapped line in the Text Editor, pressing the Home key twice goes to the very beginning of the line and pressing the End key twice goes to the very end of the line.
    • Exporting CSV from tables now exports strings as UTF-8.
    • When using Import Hex, the directory where the file was imported is remembered when using Save As to save the file.
    • 'Highlighting > Control Characters' now includes ASCII 127 by default (will need to reset the Highlighting options to take effect).
    • Clicking 'Help > Support by Email' now opens a web form which allows sending a message on all platforms instead of trying to use a local email client.
    • The current version number is now displayed in the Register dialog.
    • Increased maximum line width in the Hex Editor from 1024 to 16384 bytes.
    • Syntax Highlighting can now apply rules based on Regular Expressions.
    • Made text in the About dialog easier to read.
  • Mac OS X
    • Better support for fonts on Mac Retina displays.
  • Linux
    • Linux can now use Gtk styles if available.
  • Find
    • Can search with Regular Expressions (click Search with Regular Expressions on the Options panel of the Find Bar).
    • Improved Find speed, up to 10 times faster in some cases.
    • Default Find type for text files is now Text which searches for strings in the current character set of the file, whether that be ASCII, Unicode, UTF-8, etc.
    • The Find type ASCII is now just used for finding ASCII+ANSI strings (use the Find type Text to search for other character sets).
    • Can Import find results that were exported from the Find or Find in Files tabs (Import and Export can be done from the right-click menu of the results table).
    • Added a toggle to the Find Bar Options to prevent the Find Bar from disappearing after search.
    • Display a warning when more than 10000000 find occurrences are found (this limit can be changed or turned off using the Find Bar Options).
    • In the Find Bar Options, use the Use Custom Color toggle to apply a custom color for any search.
    • Fixed issues searching for very long arrays of hex bytes (more than 16384 bytes).
    • Now display an error when a read-error is encountered when searching on a Windows hard drive.
    • Increase the maximum line length in the Find results from 4096 to 65535.
  • Tutorials
    • Added new 'Writing Binary Templates' tutorial to teach the basics of creating Binary Templates.
    • Moved Tutorials to the Help menu.
  • Templates/Scripts
    • Can export the Template Results in XML format.
    • Can layout Template Results to the right of the Hex Editor Window by right-clicking the Template Results and choosing Template Results Position.
    • Exporting Template Results as CSV or XML exports strings in UTF-8 format.
    • Default file name for exporting Template Results now includes the file name.
    • Preprocessor #define now works with symbols that have previously been defined.
    • Added note to the manual about preprocessor constant _010_LINUX being defined on Linux.
    • New Functions
      • Added RegExMatch, RegExMatchW, RegExSearch, and RegExSearchW functions for searching within strings for regular expressions.
      • Added ExportXML function to export Template Results as XML.
      • Added FindStrings function to perform a string search similar to 'Search > Find Strings'.
      • New functions GetBackColor and GetForeColor can be used to query the currently active color.
      • Added GetMouseWheelScrollSpeed and SetMouseWheelScrollSpeed to get or set the current mouse wheel speed.
    • Function Updates
      • Can use regular expressions in the FindAll, FindFirst, FindInFiles or ReplaceAll functions with the 'method=FINDMETHOD_REGEX' parameter.
      • Memcpy/WMemcpy functions now have extra parameters 'int destOffset=0, int srcOffset=0' that can be used to read or write from the middle of an array.
      • Functions ReadLine, TextReadLine, TextWriteLine, TextReadLineW, TextWriteLineW, TextGetLineSize all have an option 'int includeLinefeed=true'. When this parameter is false, linefeeds are not included in the read, write, or size operation.
      • ReadByte/ReadInt/ReadShort/etc. now default to the position 'FTell()'.
      • Can retrieve the error code from a process called using the Exec function with the errorCode parameter.
  • Command Line
    • Use -line: to jump to a specific line in a text file.
    • Use -goto: to jump to a byte address, sector, line or short in a file.
    • -goto: supports the syntax from the Goto Bar (for example, use '-goto:+10,s' to skip ahead 10 sectors).
    • Set a selection from the command line using -select:<start>:<size> or -select::<size>.
    • Old syntax of using @ after a file name to set the cursor or selection is still supported but will be deprecated in the future.
  • Options
    • New option on General page: Show Popup when a New Version is Available.
    • Can set default linefeeds when creating new files on the File Interface page instead of the Text Editor page.
    • New Directories page used to control the initial directory when opening a file dialog box (open file, save file, import, export, open template, save template, open script, save script).
    • New option on Editor page: Auto-hide Floating Tab Group when All Files are Closed.
    • Moved options for the cache into a separate Cache page.
    • Ruler Color now effects the File Bar color as well.
  • Bugs
    • Fixed problem on Mac using the %Lx format specifier in Printfs.
    • Fixed some drives on Windows were not correctly displaying the last few sectors.
    • Fixed Find on some Windows drives would stop before reaching the end of the drive.
    • Fixed crash exporting a very large Find results from a text file.
    • Fixed Histogram percentages not always totaling 100% with some types of histograms.
    • Fixed problem displaying histogram for int64's.
    • Fixed crash calling a function in a script when the first character in the argument list was a comma.
    • Fixed issue where focus could be incorrectly grabbed from other applications in some cases.
    • Fixed cannot delete bookmarks that exist beyond the end of the file.
    • On Windows, fixed using file masks '.*' and '.' should match files with no extension.
    • Fixed crash using bookmarks on files with file names longer than 128 characters (no limit now).
    • Fixed a case where it was possible to cancel a Find in Files directory scan and get an incorrect progress state.
    • Fixed Replacing text with nothing did not show any text in the Find tab of the Output panel.
    • Fixed replace two spaces with nothing can cause a crash in certain cases.
    • Fixed right-click and Mark Selection End on an existing selection sometimes did not work as expected.
    • Fixed highlighting issue using Lock to Selection on the Find Bar with selections greater than 2 GB.
    • Fixed ensuring Inspector.bt is called when the selection size is changed.
    • Fixed opening a single file from the Windows Explorer right-click menu would sometimes not correctly restore previously open files.
    • Fixed crash with long Comparisons when sorting set to the Result column.
    • Fixed some address issues using Copy as Text Area.
    • Fixed bug writing 0x0d0a to a text file from a script when two linefeeds would be displayed instead of one.
    • Fixed bug with the FindFirst function searching up when a match occurs at the very top of the file.
    • Fixed some progress issues when doing a long Replace operation.

Version 5.0.2 - July 28th, 2014

  • Fixed problem writing to drives on Windows 7 and later versions. Windows now requires that all open file handles be closed before changes can be saved.
  • If all file handles are not closed when a drive is opened, a warning is displayed and the drive is marked as read-only (Windows only).
  • In the Open Drive dialog each physical drive shows a list of logical drives it contains (Windows only).
  • Added 010 Editor to Mac Finder 'Open With' right-click menu for most file types.
  • Changed Chinese Simplified encoding from GB2312 to GB18030 (GB18030 is a superset of GB2312).
  • Fixed using Printf/FPrintf and %s with strings more than 4096 characters long.
  • Fixed error message on some machines about regsvr32 in the Windows installer.
  • Fixed crash with sizeof operator on certain structs declared with a size attribute.
  • Fixed not being able to cancel a script after the RunTemplate function was called.
  • Fixed Find in Files was not properly releasing some file handles.
  • Functions InputNumber/InputFloat/InputString properly resize the dialog before it is displayed.
  • Fixed problem using Exec function on Linux and Mac with file names than contain spaces.
  • Using %f parameter in External Programs now auto-adds quotes for file names containing spaces.
  • Now show a warning when attempting to open Template Results hierarchies deeper than 31 levels.
  • Fixed 010 Editor unable to run on some Linux machines due to a Qt library issue.
  • Fixed crash on Mac with duplicate enums.

Version 5.0.1 - June 19th, 2014

  • Fixed Copy As Hex Text crash when the hex editor Line Width is set to Auto Width.
  • Fixed possible text corruption in Linux when deleting.
  • Fixed crash using SHA-512 on certain large files.
  • Fixed setting a shortcut key for a script starting with a lowercase letter.
  • Fixed possible crash with Allow Multiple Find Ranges and large files.
  • Fixed Hex Operation dialog becoming uneditable after first operation on the Mac.
  • Fixed crash with certain non-terminated strings in scripts or templates.
  • Fixed problems opening files larger than 4 GB on Linux.
  • Fixed clicking the upgrade link in the Register dialog when the licensee name contains certain non-ASCII characters.
  • Added instructions on running 010 Editor on Ubuntu 14.04 64-bit.

Version 5.0 - June 24th, 2013

The following is an overview of the new functionality in version 5.0 of 010 Editor:

  • Syntax highlighting for HTML, XML and PHP.
  • Customizable syntax highlighting.
  • Column mode (hold Ctrl while dragging the mouse to select columns).
  • Customizable toolbars and right-click menu.
  • Available for Linux, Windows and Mac OS X.
  • New format menu with options for Uppercase, Lowercase, Capitalize, Tabify, Untabify, Comment Selection, Uncomment Selection, Increase Line Indent, Decrease Line Indent, and Trim Trailing Whitespace.
  • Show whitespace.
  • Better interface for customizing shortcut keys.
  • Added SHA-512 algorithm.
  • Added 16-bit half-float data type (hfloat).
  • Support for importing and exporting binary text.
  • 19 new functions for Scripts and Templates.

The following is a list of all new features in version 5.0 of 010 Editor:

  • Syntax Highlighting
    • Added syntax highlighting for HTML, XML and PHP.
    • New Syntax Highlights can be created or existing Highlights modified using the Syntax page of the Options dialog.
    • Support styles for Syntax Highlights so multiple rules can share a single color.
    • Edit styles using the Styles page of the Options dialog.
    • Easily modify the list of highlighted keywords for a Syntax Highlight.
    • Support multiple rule types including Multi-Line Block, Single-Line Comment, Keywords, Single-Line Block, C-Style String, Tag Name, and Tag Attribute.
    • Rules can be applied with Ignore Case for case insensitivity.
    • Support multi-line C-style strings with '\'.
    • Import or export the list of Syntax Highlights including styles using the Import List or Export List buttons.
    • Support sub-rules so that different types of syntax highlighting can be applied to the same file.
  • Column Mode
    • Support Column Mode for editing the columns of text or hex data.
    • Easily make a column selection with the mouse by holding down Ctrl while dragging.
    • Enter column mode using Alt+C or click the Column Mode icon in the Toolbar.
    • Make column selections and copy or paste them using the clipboard.
    • Make a column selection and start typing to insert text on each line at the same time.
    • Column selections supported in Hex mode as well.
    • Click and drag straight down to create a special column insert line.
    • When the clipboard contains just a single line of data, pasting the data with a column selection pastes the data on each line of the selection.
  • Linux Version
    • Added Linux version with installer.
    • Officially support Ubuntu 10.04 and later.
    • Available as a 32-bit program (can be installed on 64-bit OS as well).
    • Can load scripts and templates by double-clicking them in the Ubuntu File Manager.
    • Support Unix-style middle-click clipboard.
  • Toolbar Customization
    • Can customize Toolbars by using the Toolbars page of the Options dialog.
    • Access the Toolbars page by right-clicking on a Toolbar and selecting 'Customize...'.
    • Drag-and-drop actions to the Toolbar list to insert items into the Toolbars.
    • Insertion point marked with red line.
    • Drag icons out of the Toolbar list to delete items from the Toolbars.
    • Create, delete and rename custom Toolbars.
  • Menu Customization
    • Customize the Editor Right-Click menu using the Menus page of the Options dialog.
    • Can also access the Menus page by right-clicking on an Editor Window and choosing 'Customize...'.
    • Drag-and-drop actions from the Actions tree to the menu to insert actions.
    • A red line marks the action insertion point.
    • Drag items out of the menu to delete actions from the menu.
    • Add separators to the menu using the special Separator action.
    • Add sub-menus to the menu with the Submenu action.
    • Double-click on a sub-menu name to rename the sub-menu.
  • Format Menu
    • Added new Format menu for working with text data.
    • Can convert text to Uppercase, Lowercase, or Capitalize (e.g. APPLE, apple, Apple).
    • Converts spaces to tabs using Tabify or tabs to spaces using Untabify.
    • Can add or remove comments from the selection using Comment Selection and Uncomment Selection.
    • Commenting supports line comments (e.g. '//') and multi-line comments (e.g. '/*' and '*/') based off the current Syntax Highlighting scheme.
    • Format menu supports Increase Line Indent to add tabs or Decrease Line Indent to remove tabs (similar to using Tab or Shift+Tab in the editor).
    • Trim Trailing Whitespace removes any spaces or tabs from the end of each line.
    • Tabify, Untabify and Trim Trailing Whitespace operate on the whole file if no selection is made.
  • Show Whitespace
    • Use 'View > Tabs/Whitespace > Show Whitespace' or the icon in Toolbar to display whitespace.
    • Shows symbols in a text file where spaces and tabs exist.
    • The color of the symbols can be controlled in the Colors page of the Options dialog.
    • The Show Whitespace setting is remembered with the current File Interface.
  • Shortcut Keys
    • New, easier-to-use interface for changing Shortcut keys in the Options dialog.
    • Better support for Shortcut keys on the Mac.
    • Enter a Shortcut key by pressing the key on your keyboard instead of having to type out 'Ctrl+M'.
    • Use 'Help > View Shortcut List' or click the List Shortcuts button in the Options dialog to view a list of all shortcuts sorted by shortcut name.
    • The list of shortcuts shows any customized shortcuts as bold.
    • Allow multiple shortcut keys to be assigned to a single action.
    • Better interface for removing shortcut keys from actions.
    • Can see any conflicting actions when assigning shortcut keys.
  • New Functions
    • Converts a set of hex bytes to a double, float, or hfloat with ConvertBytesToDouble, ConvertBytesToFloat, or ConvertBytesToHFloat.
    • Support copying an array of hex bytes to or from the clipboard with CopyBytesToClipboard and GetClipboardBytes.
    • Save a portion of a file with the FileSaveRange function.
    • Access the custom clipboards with the GetClipboardIndex and SetClipboardIndex functions.
    • Access other properties of bookmarks with the GetBookmarkArraySize, GetBookmarkBackColor, GetBookmarkForeColor, GetBookmarkMoveWithCursor, and GetBookmarkType functions.
    • Added a radio button box input dialog using the function InputRadioButtonBox.
    • Ask the user for a directory with the InputDirectory function.
    • Can overwrite a block of bytes using the OverwriteBytes function.
    • Added ReadHFloat and WriteHFloat for working with half-floats.
    • Set environment variables within the working process with the SetEnv function.
  • Functions Updates
    • FileClose was improperly asking to save changes on a modified file.
    • GetClipboardString, CopyStringToClipboard, and ClearClipboard uses the current clipboard (see GetClipboardIndex and SetClipboardIndex).
    • CopyStringToClipboard has a charset parameter to inform the clipboard of the type of data being copied.
    • Can specify a custom polynomial or initial value with the Checksum functions.
    • Added an optional number of bytes to read to the ReadWString, ReadString, ReadLine, and ReadWLine functions.
    • FileNew has a new makeActive parameter to control if the created file is set as the active file.
    • Added an optional fill character to the InsertBytes function.
    • InputOpenFileName, InputOpenFileNames, and InputSaveFileName functions now use UTF-8 strings.
    • The Sleep function now refreshes the screen before long sleeps (more than 1000 milliseconds).
    • Added SHA512 algorithm to the checksum functions.
    • Added Binary Text format to the Import/Export functions.
    • TextGetNumLines now returns -1 if the current file is a hex file.
    • Update help that Strlen returns the number of bytes instead of the number of characters.
  • Templates/Scripts
    • Added 16-bit Half-float (hfloat) data type.
    • Automatically cast between hfloat, float and double data types.
    • Tooltips now properly use any custom <name=> functions.
  • General
    • Updated visual style of the interface and updated some icons.
    • Added new File Interfaces HTML, PHP, and XML.
    • When selecting more than one line in a text editor, the number of selected lines is now shown by default in the status bar.
    • Added SHA-512 hash algorithm.
    • Able to delete individual recent files or clear the list of recent files by right-clicking on the Recent Files list in the Workspace or the Startup page.
    • Added Goto button to the Goto Bar.
    • Added new File Interfaces to the New list.
    • Auto-detect XML files.
    • Added -readonlyall command line option to mark all files as read only.
    • Added 'Selection > Goto Selection Start' and 'Selection > Goto Selection End' for jumping to the beginning or the end of a selection from the right-click menu.
    • Synchronized scrolling now only works between all hex files or all text files.
    • Faster Undo/Redo for operations which contain a large number of small operations.
    • Renamed 'Toggle Word Wrap' action to 'Word Wrap'.
    • Renamed configuration file to '010Editor50.cfg'.
    • Removed 3-computer limit in the End-User License Agreement.
  • Import/Export
    • Added Import/Export option for the Binary Text format (e.g. 10100010 11110000).
    • Added Copy As Binary Text and Paste From Binary Text to the Edit menu.
    • 'Copy as <format>' now uses the displayed number of bytes per line (it was using the number of bytes from the last export).
  • Options
    • Can disable the auto-import of Intel Hex or Motorola files when dragging and dropping from the system File Manager (see the Importing page).
    • Added option to disable the Backspace/Delete key in Overwrite mode for hex files (see the Hex Editor page).
    • Can control the color of the Show Whitespace characters on the Colors page.
  • Bugs
    • Fixed bug with Save Selection on a newly created file.
    • Fixed crash with -compare command line option when the file names were the same.
    • Fixed issue with updating the Recent Files list when scripts or templates were opened.
    • Deleting a file from the Workspace Recent Files list did not update the Startup Page Recent Files list.
    • Fixed up Insert Date/Insert Color on big endian unicode files.
    • Fixed up 'Move to New Vertical Tab Group' missing after a Compare.
    • Fixed warning dialog for optimized structs cannot be dismissed on Mac.
    • Fixed crash when an improper argument was passed to a function inside a script in certain cases.
    • Fixed error message in the Windows installer about Regsvr32.
    • Possible to delete part of a DOS linefeed in certain cases.

Version 4.0.4 - March 20th, 2013

  • Fixed Find Strings finding unicode strings on odd byte boundaries.
  • Fixed crash assigning to a non-existent variable from a script.
  • Fixed crash in find hex bytes when using ',a'.
  • Fixed crash when checksum functions are used inside custom read/comment functions.

Version 4.0.3 - November 8th, 2012

  • Fixed crash with Printf when using certain combinations of parameters.
  • Fixed problem using Goto on the Mac.
  • Fixed using on-demand structs within custom read functions in certain cases.
  • Fixed printing multiple copies of files.
  • Disabled redirection of files within the main Windows directory.
  • Fixed some progress issues when using Find functions inside of scripts.
  • Show error instead of crashing when trying to copy huge blocks of data to other applications.
  • Fixed order of some items in the View menu in 'Tools > Options > Keyboard'.

Version 4.0.2 - July 24th, 2012

  • Fixed a crash using Find on certain long text files.
  • Fixed a bug with using Export Hex and more than 256 bytes per line.
  • Fixed issues using on-demand structs inside arrays.
  • Fixed color picker issues on the Mac.
  • Fixed last two lines of a customized Inspector disappearing in certain cases.
  • Fixed background colors not being cleared properly when a template was cleared.
  • Fixed a notification during installation about an expired license.
  • Now signing the installer using SHA-1.

Version 4.0.1 - June 6th, 2012

  • Fixed crash with a custom Auto-Inspector and certain long operations.
  • Fixed crash with wordwrap on very long lines.
  • Fixed Paste from Hex Text on Mac OS X.
  • Fixed clicking on a bookmark, variable, or find result will always select bytes in the editor.
  • Fixed editing bookmarks that contain arrays.
  • Fixed issues with the Find results when searching for text containing linefeeds.
  • Fixed enums and different numeric formats when displaying local variables.
  • Fixed adding or removing 010 Editor from the Windows Explorer right-click menu using the Options dialog.
  • Fixed the Output tab automatically scrolling down as text is added.
  • Fixed the FindNext function should not be selecting data.
  • Fixed the FindNext function when used with DeleteBytes in a loop.
  • Fixed crash with the HexOperation function on a new file.
  • Fixed the Short type specifier in the Goto Bar.
  • Fixed allowing hotkeys to be set for Mark Selection Start/End.
  • Fixed misplaced cursor when changing the endian of a Unicode file.
  • The Goto and Select Range Bars now accept extra whitespace.

Version 4.0 - May 14th, 2012

The following is an overview of the new functionality in version 4.0 of 010 Editor:

  • Streamlined interface with a simplified tool bar.
  • Easier, more intuitive way to run Templates or Scripts using the File Bar above each editor.
  • Added support for word wrap and text files with a huge number of lines.
  • Tools such as Find, Replace, Find in Files, Goto, Select Range are now displayed in a bar below each editor for a better workflow.
  • Can customize the Auto Inspector using a custom Template.
  • Revamped Find tool allows searching for variables in the Template Results.
  • When a Find All or Find in Files is done on a text file, all text lines that contain a match are listed.
  • Added 'Search > Find Strings' dialog for listing all strings in a hex file.
  • Can visually swap bytes in the hex editor without modifying the underlying data.
  • Can restore all open files when 010 Editor is restarted (select 'Restore all open files' on the Startup page).
  • Comments can now specify a custom function using '<comment=<function_name>>'.
  • Printf function now does type checking and automatically casts parameters.
  • Templates can now read from or write to other files when granted special permission.
  • Over 45 new functions for Scripts and Templates.

The following is a list of all new features in version 4.0 of 010 Editor:

  • General
    • Simplified the tool bars and updated some icons.
    • File Bar above each editor provides a more intuitive way to run Templates or Scripts.
    • Can restore all open files when 010 Editor is restarted (select 'Restore all open files' on the Startup page).
    • View menu now shows different options when using a text-based interface or hex-based interface.
    • In the Workspace, can sort the list of recent files by Name or by Time using the right-click menu (sort by Time is the default now).
    • Startup page has been redesigned with resizable sections.
    • Can customize the polynomial and initial value for CRC checksums.
    • Added more options to the 'View > Addresses' menu.
    • Use 'View > Addresses > Shorts' for displaying addresses as words (all addresses are divided by 2).
    • Can switch File Interfaces using the Edit As section of the File Bar.
    • Right-click on the Output panel to Copy All, Export Text, or Clear.
    • Can apply Highlighting rules by Shorts.
    • The Welcome dialog allows inputting a license when 010 Editor is in trial mode.
    • Added '-saveall' command line option.
    • Added 'Copy File Path' command to the File Tab right-click menu.
    • Synchronize Scrolling now only scrolls files that are visible.
    • Cannot change a hex-based interface to a text-based interface or vice versa.
    • When opening a file that is already opened, the file is selected before being asked to create a duplicate.
    • Right-click on the application when all tabs are closed for an option to show the Startup Page.
    • Removed comment column for bookmarks (currently unused).
    • 010 Editor configuration file is saved more often.
    • Configuration file now stored in 'Users\<Username>\AppData\Roaming\SweetScape\010 Editor\010Editor.cfg' on Windows.
    • Windows Explorer right-click menu now lists '010 Editor' instead of '010 Editor v3'.
    • Updated help viewer.
  • Text Editor
    • Added support for text files with huge numbers of lines.
    • Any long text lines over the maximum line length will be split into multiple lines and marked by '-' in the address column.
    • The maximum line length can be set using the Text Editor Options dialog.
    • Clicking after the last line always moves the cursor to the last byte.
    • Hide the Group By, Division Lines, Left Area, Right Area, Line Width options in the View menu for text files.
    • Word Wrap
      • Can automatically wrap lines that are longer than the text editor window with 'View > Linefeeds > Word Wrap' or Ctrl+;.
      • Word Wrap can be turned on automatically using 'View > Linefeeds > Initial Wrap State > Auto-detect'.
      • '/wrap' is displayed in the Edit As section of the File Bar above each editor when Word Wrap is turned on.
      • Can wrap on the window edge or a custom column using 'View > Linefeeds > Wrap Width'.
      • Can wrap on letters instead of words using 'View > Linefeeds > Wrap Method'.
      • Word Wrap is supported for files with a large number of lines.
    • Byte-Order Marks
      • Added better support for working with Byte-Order Marks (BOMs).
      • Auto-detect UTF-8 BOMs.
      • Status Bar displays '+B' when a BOM is present.
      • Add or remove BOMs using 'Tools > Convert'.
      • Can auto-add BOMs to new files using the File Interface Options dialog.
  • Hex Editor
    • Can visually swap bytes in the hex editor without modifying the underlying data.
    • Bytes can be swapped in groups of 2, 4, 8, etc. (use 'View > Group By' menu to enable).
    • Display 'LIT<>' in the status bar when swapping bytes is enabled.
    • Set the number of bytes per line in a hex editor using 'View > Line Width'.
    • Hide the Linefeeds and Tabs/Whitespace options in the View menu for hex files.
  • Find
    • Find/Replace/Find in Files/Replace in Files now performed from a bar at the bottom of the editor.
    • When a Find All or Find in Files is done on a text file, all text lines that contain a match are listed.
    • Revamped Find/Replace tools with icons for Find/Replace Next/Previous.
    • Added 'Search > Find Strings' dialog for listing all strings in a hex file.
    • Can search for Variables in the Template Results using the Find Bar.
    • Selecting a Find occurrence in the editor highlights that occurrence in the Find results.
    • Can list all replacements after doing a Replace All (see 'Show All Replacements' in the Find Bar Options).
    • Lock Find/Replace to a selection using 'Lock Selection' in the Find Bar Options.
    • The locked selection will be colored brown and used for Find/Replace until unlocked.
    • Can display the address in the Find results in more formats.
    • Show or hide the size column in the Find results (hidden by default).
    • Ignoring case and match whole word work better when finding extended unicode characters.
    • Find in Files list updates automatically when the files are edited.
    • Can turn off wrapping for find (see Find Bar Advanced Options).
    • Can list all files when doing a Find in Files operation.
    • Can turn off the use of Find Specifiers using the Find Bar Advanced Options.
    • When searching for Unicode, selected Unicode text is automatically copied to the Find Bar when it is opened.
    • Default to Unicode Find type when finding in a Unicode file.
  • Scripts/Templates
    • Use 'Run Script', 'Run Template' or 'Run on File' sections above each editor for running scripts and templates.
    • Comments can now specify a custom function using '<comment=<function_name>>'.
    • Templates can now read from or write to other files when granted special permission.
    • Permissions can be controlled using the Permissions section of the Options dialog and can be turned off for all files.
    • Support searching in the Template Results (use 'Variable Name'/'Variable Value' in the Find Bar).
    • From the Template Results right-click menu, can either expand all nodes of the selected node (Expand all Children of Node) or expand all nodes in the tree (Expand All Nodes).
    • Right-click on a numeric template variable and choose 'Goto > Goto Address' or 'Goto > Goto Sector'.
    • Can override the string displayed in the Name column of the Template Results using '<name="<string>">' or '<name=<function_name>>'.
    • On Windows can right click on a script or template in the Scripts or Templates menu and select 'Edit Script' or 'Edit Template'.
    • Updated included scripts to using RequiresFile and GetScriptName functions.
    • Can run a script on no file by selecting '(none)' in the Run on File section of the File Bar.
    • When doing a CSV export or Copy of the Template Results, the Color field will be converted to a hex color instead of being left blank.
    • An integer with <format=binary> will now show all bytes if zero instead of just the first byte.
    • 'L' string constants now support UTF-8.
    • Prevent running a template on a template.
    • Generate a warning if defining a large number of template variables.
    • Removed variable mouse-over brackets on a text file (was being displayed incorrectly).
  • New Functions
    • Can convert between a binary string and an integer (BinaryStrToInt, IntToBinaryStr).
    • Added functions to perform checksums on arrays (ChecksumAlgArrayStr, ChecksumAlgArrayBytes).
    • Can convert strings between various encodings (ConvertString).
    • Added functions to extract path, extension, or base name from a file name (FileNameGetBase, FileNameGetBaseW, FileNameGetExtension, FileNameGetExtensionW, FileNameGetPath, FileNameGetPathW, FileNameSetExtension, FileNameSetExtensionW).
    • Can search for an open file in the editor (FindOpenFile, FindOpenFileW).
    • Can retrieve environment variables (GetEnv).
    • File attributes for Windows or Unix files can be retrieved or changed (GetFileAttributesUnix, GetFileAttributesWin, SetFileAttributesUnix, SetFileAttributesWin).
    • Retrieve the character set of the current file (GetFileCharSet).
    • Get or set which file interface is being used for the current file (GetFileInterface, SetFileInterface).
    • Retrieve the name of the current script or template being run (GetScriptName, GetScriptNameW, GetScriptFileName, GetScriptFileNameW, GetTemplateName, GetTemplateNameW, GetTemplateFileName, GetTemplateFileNameW).
    • Provided function to get a temporary file name (GetTempFileName).
    • Can get or set the current working directory (GetWorkingDirectory, GetWorkingDirectoryW, SetWorkingDirectory, SetWorkingDirectoryW).
    • Provided function to perform any of the Hex Operations in the Tools menu (HexOperation).
    • Can calculate the length of a null-terminated string in a file (ReadStringLength, ReadWStringLength).
    • Provided function to ensure that a script is being run on a target file (RequiresFile).
    • Can write a message to the status bar (StatusMessage).
    • Convert strings easily to UTF-8 format (StringToUTF8, WStringToUTF8).
    • Can convert characters to upper or lower case (ToLower, ToLowerW, ToUpper, ToUpperW).
    • Can convert from a text column to an address (TextColumnToAddress).
  • Function Updates
    • Printf function now does type checking and automatically casts parameters.
    • Interface type can be specified for the FileOpen and FileNew functions.
    • GetFileName returns a UTF-8 string.
    • FileOpen will now accept a UTF-8 string.
    • FileOpen no longer pops up an error message if the file could not be found.
    • Better handling of opening duplicate files with the FileOpen function.
    • Can specify a different character set in the StringToWString and WStringToString functions.
    • MessageBox supports UTF-8 encoding.
    • RunTemplate can be run with no arguments to rerun the Template associated with the current file.
    • Added argument to the RunTemplate function to prevent clearing the Output panel.
    • SubStr/WSubStr now default to -1 instead of 0.
    • Can specify a custom date format in the functions GetCurrentTime, GetCurrentDate, GetCurrentDateTime, StringToDosDate, StringToDosTime, StringToFileTime, StringToOleTime, StringToTimeT, DosDateToString, DosTimeToString, FileTimeToString, OleTimeToString, and TimeTToString.
    • Can set the maximum wildcard length in the FindAll, FindFirst, FindInFiles, and ReplaceAll functions.
    • Removed HTML tag processing from Printf.
  • Selections
    • 'Edit > Select Range' tool now displays a Select Bar at the bottom of the editor.
    • When selecting bytes while the Select Bar is open, the Select Bar will update to display the selection.
    • Right click on an editor and choose 'Select > Mark Selection Start' or 'Select > Mark Selection End' to set the selection.
    • Added Save Selection to the editor right-click menu.
    • Save Selection automatically appends the start/size of the selection to the file name.
  • Inspector
    • Can customize the Auto Inspector (right-click the Inspector and choose 'Customize...').
    • Auto Inspector can be set to use a custom template (by default the 'Inspector.bt' file is included with 010 Editor).
    • Data types can be reordered or deleted from the Auto Inspector using the custom template.
    • Any data type (including Custom Variables) can be added to the Auto Inspector using the custom template.
  • Goto
    • 'Search > Goto' tool now displays the Goto Bar below the editor.
    • Use the Goto Bar to jump to a byte, line, sector or short in a file.
  • Options
    • Can set the maximum line length for text files.
    • Can set the auto-hide time for bars in the application (Find Bar/Replace Bar/Goto Bar/Select Bar/etc.).
    • Added option to remember the last used File Interface, Endian, and Word Wrap for a file.
    • Allow setting the color for the Find Selection Lock.
    • Must specify whether a File Interface is text-based or hex-based when the interface is created.
  • Mac OS X
    • Now use Ctrl+G for Find Next and Ctrl+Shift+G for Find Previous on the Mac.
    • Now use Ctrl+L for Goto and Ctrl+Shift+G for Goto Again on the Mac.
    • Add File Proxy icons to the Application Window (drag to other Windows to open).
    • Removed icons on the menu for Mac.
    • Removed icons on sub-windows for Mac.
    • Fixed order of some OK/Cancel buttons on the Mac.
    • Fixed Windows Clipboard should be called Macintosh Clipboard on the Mac.
  • Hotkeys
    • Ctrl+E now toggles between Big and Little Endian.
    • Word Wrap can be toggled on or off using Ctrl+;.
    • Can access Options dialog using Ctrl+, on Windows.
    • Changed close window hotkey to Ctrl+W.
    • Changed close all window hotkey to Ctrl+Alt+W.
    • Fixed issue with Previous Tab shortcut.
    • Can show or hide the File Bar above each editor using Ctrl+/.
  • Bugs
    • Fixed bug copying large blocks of data to other applications.
    • Fixed issues with editing UTF-8 characters.
    • Fixed crash when a startup script was missing.
    • Fixed constants in the form 0B?h.
    • Fixed crash in certain invalid assignments to a struct.
    • Fixed bug with extra character when casting from a string to a wstring.
    • Fixed bug with switch statement when default was the first statement.
    • Fixed a case where a non-terminated string could potentially cause a crash.
    • Fixed case where the Close All icon enabled state was not correctly set.
    • Fixed case when Close All could cause the Floating Tab Group to be displayed.
    • Fixed case where Close All Except This could close the wrong files.
    • Fixed bug with assigning to a negative float or double.
    • Fixed issue with using return in a function with no return value.
    • Fixed OutputPaneCopy/OutputPaneSave missing the last row if no linefeed.
    • Fixed case where commented lines were colored incorrectly when jumping through a file.
    • Fixed crash in the Inspector with certain rare Unicode strings.
    • Fixed bug with FindFirst/FindAll when size=0 and start>0.
    • Fixed bug with FindFirst/FindAll and finding Unicode values.
    • Fixed bug with FindNext/FindAll using dir=-1.
    • Fixed FPrintf(newFile,"%c",0) now works properly.
    • Fixed issue with all red text in the Output panel.
    • Fixed case when a Hex file is split and then scroll down, the ruler would not be displayed correctly.
    • Fixed InputOpenFileName/InputOpenFileNames not using the default file name.
    • Fixed AddBookmark can add bookmarks in any of the base types without first running a template.
    • Fixed bug with '//' after #define.
    • Fixed constants COMPARE_SYNCHRONIZE and COMPARE_SIMPLE were switched.
    • Fixed rare crash when running templates and progress issues.
    • Fixed crash calling TextReadLine with an empty string.
    • Fixed possible crash with MessageBox function when using only two parameters.
    • Fixed issues with Copy/Paste from Hex Bytes with Unicode files.
    • Fixed DOS linefeeds being transformed to Unix linefeeds when copying to the Find Bar.
    • Fixed running a comparison can cause empty an Floating Tab Group to be displayed.
    • Fixed a possible crash with an infinite recursion script.
    • Fixed issues with character sets in the Find results window.
    • Fixed correctly detecting when a file read-only flag is changed outside 010 Editor.
    • Fixed Export CSV automatically adds quotes around items containing commas.
    • Fixed in split-view mode, the selection could move after editing.
    • Increased amount of memory the undo stack is allowed to use.

Version 3.2.2 - August 8th, 2011

  • Added support for Mac OS X Lion.
  • Fixed losing registration problem on Mac OS X Lion.
  • Fixed problem with loading the help file on the Mac.
  • Now generate an error when accessing member variables inside a 'size' function.

Version 3.2.1 - July 13th, 2011

  • Mac OS X version is now a 32-bit program instead of 64-bit.
  • Changed close window hotkey on the Mac to Command+W.
  • Fixed Windows context menu in 3rd party applications including Directory Opus.
  • Fixed problem with Unicode searches and wildcards.
  • Fixed showing the help file when minimized and then a topic is loaded.
  • Fixed showing 010 Editor when minimized and the Windows context menu is clicked.
  • Fixed inputting certain floats or doubles in the Inspector on Windows.
  • Fixed Copy As and then paste to other applications with big-endian Unicode text.
  • Fixed date in release notes.

Version 3.2 - June 17th, 2011

The following is an overview of the new functionality in version 3.2 of 010 Editor:

  • 010 Editor is now available for Mac OS X.
  • On-demand parsing of templates using <size=...> for lower memory usage.
  • Can set fonts for the Template Results, Inspector, etc in the Options dialog.
  • 'New' on the file menu now lists all types of files available for creation.
  • Can pass arguments into scripts or templates from the command line.
  • New functions for accessing process information in scripts or templates.
  • New functions for easier reading and writing of text files.
  • Can export or import a list of scripts or templates from the Options dialog.
  • New help viewer with tabs.

The following is a list of all new features in version 3.2 of 010 Editor:

  • General
    • 010 Editor is now available for Mac OS X.
    • Can set fonts for the Template Results, Inspector, etc in the Options dialog.
    • 'New' on the File menu now lists all types of files available for creation.
    • Each file interface can either use the default text or hex font or a custom font.
    • Separate insert/overwrite state for text and hex files.
    • Can click INS/OVR in the status bar to toggle insert state.
    • Histogram hotkey changed to Ctrl+Shift+T.
    • Added option on the Help Menu to view the Release Notes.
    • 010 Editor does a better job converting text data between formats when copying text between files with different character sets.
    • Can set a custom color format for 'Edit > Insert Color' in the Options dialog.
    • Non-ANSI characters now supported in Bookmark names.
    • Release notes added to the manual instead of separate text file.
  • Command Line
    • Can pass arguments to a script or template using the form: -script:File.1sc:(arg1,arg2)
    • Added ',a' specifier to the '-replace' command to replace in all open files.
    • '-h' now displays the manual command line page instead of a separate dialog.
  • Templates and Scripts
    • On-demand parsing of templates using <size=number> or <size=function_name> for lower memory usage.
    • Can export or import a list of scripts or templates from the Options dialog.
    • Added ifdef constant for Windows (_010_WIN) and Mac OS X (_010_MAC).
    • Added ifdef constant for 64-bit versions (_010_64BIT).
    • Non-ANSI characters now supported in comments (use UTF-8).
  • Functions
    • Added GetFileNameW function to get the wide-string version of the current file name.
    • FileSave function can accept a wide-string or no string at all to save to the current file name.
    • Added ExpandAll function to open all nodes in the Template Results.
    • Added ExportCSV to save the Template Results to a comma-delimited file.
    • GetNumArgs, GetArg, and GetArgW functions can be used to retrieve special arguments passed from the command line.
    • IsNoUIMode function returns true if 010 Editor is being run in '-noui' mode.
    • RunTemplate function now returns the return value from the template that was executed.
    • FileOpen now returns the file index of the file that was opened.
    • Process information can be returned using the functions ProcessGetHeapLocalAddress, ProcessGetHeapModule, ProcessGetHeapSize, ProcessGetHeapStartAddress, ProcessGetNumHeaps, ProcessHeapToLocalAddress, and ProcessLocalToHeapAddress.
    • Added functions to read or write text data in the editor including TextAddressToLine, TextAddressToColumn, TextGetNumLines, TextGetLineSize, TextLineToAddress, TextReadLine, TextReadLineW, TextWriteLine, TextWriteLineW.
  • Bug Fixes
    • Fixed some foreign characters in names not working in the Register dialog.
    • Fixed the temp directory displaying a short path name.
    • The documentation listed the incorrect return value for the StringToDosDate, StringToDosTime, StringToFileTime, StringToOleTime, and StringToTimeT functions.
    • Fixed bug with multi-line defines and dos-style linefeeds.
    • Fixed bug resetting shortcuts where the interface was not updating properly.
    • Insert Date/Color should work now for Unicode files.
    • Fixed issues with certain input method editors that caused them to not work properly.
    • Now display error message when trying to set linefeeds to 'Auto Detect' while in binary mode.
    • Fixed bug where the Close All icon should be available when the startup tab is selected.
    • Fixed InputSaveFileName function not properly using the default file name.
    • Fixed an undefined variable in a script could be displayed as an error in an associated template.
    • Fixed redraw bug in the Base Converter.
    • Fixed some code examples in the help file.
    • Fixed occasional problem drawing underscores.
    • Fixed template variables sometimes not accessible after calling RunTemplate.
    • Fixed open icon in the tutorial on Windows 7.
    • Fixed Histogram panel initial size on Windows 7.
    • Fixed the size of the Hex Operations dialog on Windows 7.
    • Fixed accessing new file created during a call to RunTemplate.

Version 3.1.3 - November 10th, 2010

  • Fixed possible Windows DLL exploit (see https://www.microsoft.com/technet/security/advisory/2269637.mspx).
  • Fixed crash using Export CSV with very large datasets.
  • Fixed compile errors using DOS style linefeeds after preprocessor statements.
  • Fixed crash on comparing large files.
  • Fixed occasional problems with button labels in message boxes.
  • Fixed some button sizes on Windows 7.
  • Now opening .lnk and .url files will load those files directly, not the files to which they link.
  • Updates for installing from a CD.

Version 3.1.2 - May 21st, 2010

  • Fixed crash with 'Run as administrator' on Windows 7 x64 machines.
  • Fixed some constants being incorrectly identified as 'int64' instead of 'int'.

Version 3.1.1 - May 5th, 2010

  • Fixed Windows Explorer shell extension on Windows 7 x64 machines.
  • Template results now display ASCII strings in the current file character set.
  • Fixed error if a script or template included more than 16 files.
  • Fixed error using sizeof operator to calculate the size of a struct.
  • Fixed error message with -replace command line option when no values found.
  • Fixed behavior comparing int -1 to 0xffffffff to be consistent with 3.0.

Version 3.1 - February 16th, 2010

The following is an overview of the new functionality in version 3.1 of 010 Editor:

  • Support for the UTF-8 character set.
  • Support preprocessor directives #define, #ifdef, #ifndef, #else, etc.
  • Support for wstring and wchar_t in Scripts/Templates (unicode strings).
  • Use -noui to run 010 Editor without a user interface for batch files.
  • Template variables can now have comments (e.g. <comment=""> after a variable).
  • New options when defining template variables: <fgcolor=???>, <bgcolor=???>, <open=true|false|suppress>, <hidden=true|false>.
  • Can pass arguments into structures.

The following is a list of all new features in version 3.1 of 010 Editor:

  • Editor
    • Support the UTF-8 character set.
    • Added 'UTF-8' and 'Binary' to the 'Edit As' drop-down list.
    • Added support for Ctrl+Ins(Copy), Shift+Ins(Paste), and Shift+Del(Cut).
    • Shows a current column position arrow in the text editor ruler.
    • Soft hyphen (0xAD) displayed as hyphen instead of space.
  • Command Line
    • Use -noui to run 010 Editor without a user interface for batch files.
    • Added -nowarnings to disable display of message boxes when using -noui.
    • Can run comparisons from the command line with -compare.
    • Added -exitnoerrors to close 010 Editor only if there are no script or template errors.
  • Histogram
    • Char column in histogram displays the current file character set.
  • Bookmarks
    • Toggle Bookmark (Ctrl+F2) makes a bookmark for the whole selection, not just the selected byte.
  • Compare
    • If exactly two files are open, they will automatically be filled in the Compare dialog when opened.
    • Can run comparisons from the command line.
    • Increased number of internal allowed differences in comparison algorithm.
  • Options
    • Can hide the splash screen on startup (only when the software is registered).
    • Control the color of the caret.
    • Can change the input-method editor (IME) color.
    • Can control the ruler column marker arrow color.
  • Templates and Scripts
    • Can display comments for variables using <comment=""> syntax after a variable.
    • Can set the color of a variable using <fgcolor=???> or <bgcolor=???> after a variable (for example, <fgcolor=cBlack, bgcolor=0x803020>).
    • Can use <open=true|false> after a variable to have a variable open by default.
    • Can use <hidden=true|false> after a variable to hide variables.
    • Can use <open=suppress> after a variable to prevent it opening during Expand All.
    • Can pass arguments into structures.
    • Support #ifdef, #ifndef, #define, #undef, #endif, #else, #warning, #error preprocessor directives.
    • Added support for unicode strings (wstring/wchar_t).
    • Can use L to indicate wide-string constants (e.g. L"dog").
    • Bitfields and enums can now work together.
    • Can now call functions in templates from scripts.
    • Enum values can now be any expression.
    • Better handling of int64 constants (auto-detect).
    • Added current template directory to include path search.
    • Use Ctrl+Left/Right/Enter for better navigation in the template results tree.
    • Double-click on an error or warning takes you to the source code line.
    • Enum list items can be selected on single-click instead of double-click.
    • Support showing local variables inside a struct.
    • Correctly update focus highlight in Variables tab when switching files.
    • Can cast time types to ints or floats.
    • Updating variable coloring rule so colors are properly propagated from parents to children.
    • Exec function is no longer allowed in a template.
  • New Functions
    • Can run a template from a script (RunTemplate).
    • Can set bookmarks from a script or template (AddBookmark, GetBookmarkName, GetBookmarkPos, GetNumBookmarks, RemoveBookmark).
    • Added new clipboard functions (ClearClipboard, CopyStringToClipboard, GetClipboardString).
    • Get the current time (GetCurrentTime, GetCurrentDate, GetCurrentDateTime).
    • Added an Assert function.
    • Convert a variable such as int or float to bytes (ConvertDataToBytes).
    • Retrieve the current temporary directory (GetTempDirectory).
    • Control the output panel where Printf data is displayed (OutputPaneClear, OutputPaneSave, OutputPaneCopy).
    • Can wait for a certain number of milliseconds (Sleep).
    • New wstring (unicode string) functions: InputWString, ReadWLine, ReadWString, StringToWString, WMemcmp, WMemcpy, WMemset, WriteWString, WStrcat, WStrchr, WStrcmp WStrcpy, WStrDel, WStricmp WStringToString, WStrlen, WStrncmp WStrncpy, WStrnicmp, WStrstr, WSubStr.
    • Can determine if a function exists with 'function_exists' keyword.
    • Exec function has a parameter to wait until execution is finished before returning.
    • FileOpen can execute the template associated with a file.
    • Can access the current structure variable with 'this' keyword.
    • Can access the parent of a structure variable with 'parentof' keyword.
  • General
    • Installer can warn user if installing a version that will require an upgrade.
    • Register dialog button displays 'Cancel' instead of 'Continue' to prevent confusion.
    • Temp directory can pick up the TEMP system variable.
    • Add Ctrl+Enter shortcut in Find in File results (keeps focus on Output Window).
    • Better handling of multiple versions of the configuration file.
    • Configuration file should be less prone to corruption.
  • Bug Fixes
    • Fixed templates variable arrays if the size of the array is greater than 2 GB.
    • Fixed bug where a file could display no data after canceling a script or template.
    • Fixed bug drawing the ruler when certain fonts are chosen.
    • Now correctly report physical disk size on Windows XP or higher.
    • Improved error message when using shift operators.
    • Improved error message when defining a structure twice with typedef.
    • Fixed empty structure warning when using bitfields and no padding.
    • Fixed bug with drawing Fg: in the template results.
    • Fixed bug selecting bytes in Unicode.
    • Fixed bug extending a selection with Shift+click.
    • Fixed reading bookmarks containing enums.
    • Fixed opening files containing '@'.
    • Fixed importing a hex text containing very long lines.
    • Fixed using bitfields mixing named and unnamed variable.
    • Fixed auto-detect of decimal import text.
    • Fixed bug using post increment during array access.
    • Fixed printfs sometimes being colored red after an error.
    • Fixed syntax highlighting issue with quotes.
    • Fixed possible crash with the FileClose function.
    • Fixed error message when defining struct variables incorrectly.
    • Fixed a typo in the welcome dialog.
    • Fixed issue with the syntax highlighting menu.
    • Fixed an issue with double-clicking on find-in-file results.
    • Fixed Variables Tab not being updated correctly after running a script.
    • Fixed issue working with files that are deleted.
    • Fixed issue passing strings to functions which are then passed to other functions.
    • Fixed selecting issue by dragging over the last line in the text editor.
    • Fixed negative enums.
    • Fix for optimizing warning on struct that just contains a 'string' variable.

Version 3.0.6 - October 26th, 2009

  • Fixed importing hex text with very long lines.
  • Fixed templates which mixed bitfields and regular variables.
  • Fixed Printf with '%%'.
  • Fixed issues on Windows 7.

Version 3.0.5 - April 13th, 2009

  • Now support Input Method Editors (IMEs) for multi-byte character sets.
  • Fixed bug with Find dialog and multi-byte character sets.
  • Fixed problem with backspace and multi-byte character sets.
  • Fixed possible buffer overruns running templates and scripts (as reported by Bach Khoa Internetwork Security (Bkis) - http://security.bkis.vn/).
  • Fixed problems with the FindFirst and ReplaceAll functions.
  • Scripts and templates now support '0h' as well as '00h'.
  • Fixed bug in displaying warning message about optimized arrays.
  • Fixed crash using Overwrite Bytes on a large drive.
  • Fixed possible crash when closing a file after a comparison.
  • Fixed not being able to open certain logical and physical drives.
  • Fixed bookmarks being deleted when overwriting a block of data.
  • Fixed being able to open Unicode filenames from the Windows Explorer right-click menu.

Version 3.0.4 - February 6th, 2009

  • Fixed issues with displaying Japanese and Chinese character sets.
  • Updated character handling engine for non-ASCII character sets.
  • Fixed restoring the maximized state of 010 Editor on restart.
  • Fixed possible crash when opening files from Windows Explorer right-click menu.
  • Fixed issues with properly refreshing the Inspector values.
  • Fixed crash in Replace dialog.
  • Fixed crash when setting certain Group By values.
  • Fixed issue with certain foreign characters in the Register dialog.
  • Fixed typo in the calculator.

Version 3.0.3 - October 17th, 2008

  • Improved memory handling for running very large templates.
  • Fixed possible crash with syntax highlighting.
  • Fixed possible crash running a script with a long line.
  • Fixed some Unicode rendering issues in the hex editor.
  • Fixed crash with exporting a text area from a Script in certain cases.
  • Fixed the find in selection not working properly in certain cases.
  • Fixed disabled/enabled problems with buttons in the find dialog.
  • Fixed a problem with the ',' constant in scripts.
  • Fixed error message for attempting incorrect operations on structs.
  • Fixed possible crash using the StrDel function.
  • Fixed typo in script cancelled error message.
  • Can now copying Unicode data to the clipboard correctly.

Version 3.0.2 - August 28th, 2008

  • Automatically hide empty floating tab group on startup.
  • Fixed crash with inspector when displaying certain characters.
  • Fixed focus issues when loading files via the Windows explorer right-click menu.
  • Fixed potential crash with -exit command line option.
  • Bug fix for Keep File Time functionality.
  • Fixed crash closing deleted files in certain cases.
  • Allow custom read/write functions to work with equivalent types.

Version 3.0.1 - July 16th, 2008

  • Bug Fixes
    • Fixed periodic hangs when using the Explorer tab to browse a network drive.
    • Fixed international character set issues.
    • Fixed some keyboard keys not working on international keyboards.
    • Fixed possible crash with Copy As Hex Bytes.
    • Fixed replace up missing some occurrences in certain cases.
    • Fixed visual issues editing Unicode hex data.
    • Fixed using the clipboard when some specialized clipboard managers were installed.
    • Fixed progress update on running some scripts.
    • Fixed issues with the scope of local variables between functions and structs.
    • Fixed problem with empty statements inside a switch statement.
    • Fixed a reporting issue with Byte by Byte comparisons.
    • Fixed being able to run the Calculator on other files in the interface.
    • Fixed occasional crash when opening files when all windows were closed.
    • Fixed display glitch with Output tab showing red text.
    • Fixed tool bar undocking issues.
  • General
    • Each Tool Bar can now be resized to be smaller than its contents.
    • Visual changes on Vista machines for more consistency.

Version 3.0 - May 19th, 2008

The following is an overview of the new functionality in version 3.0 of 010 Editor:

  • Includes a text editor with syntax highlighting.
  • Improved interface with new icons.
  • Improved file tabs with close buttons that can be dragged to new positions.
  • Can have multiple scripts/templates open at the same time.
  • Find/replace, goto, etc. can be applied to templates or scripts.
  • Full support for Unicode file names and strings in the application.
  • Scripts and Templates now stored in "My Documents\SweetScape" directory.
  • Official support for Windows 98/Me/NT has been dropped.
  • A whole range of other improvements.

The following is a list of all new features in version 3.0 of 010 Editor:

  • Text Editor
    • Can now edit text, Unicode, or EBCDIC files.
    • Basic support for syntax highlighting for C/C++ files.
    • Support indenting or unindenting text with Tab or Shift+Tab.
    • Added insert date/time and insert color commands.
  • Hex Editor
    • Improved visual style for hex editing.
    • Can display addresses in sectors.
  • File Tabs
    • Improved tab-based interface with close buttons.
    • Added a floating tab group.
    • Can drag and drop file tabs (even between the floating tab group).
    • Able to have multiple tab groups laid out horizontally or vertically.
  • Startup Page
    • Optional startup page shows recent files, latest application news, and tips.
  • File Interfaces
    • Added 'Edit As' combo box to switch between editing text, hex, C++, etc. files.
    • Added Ctrl+H shortcut to toggle between text and hex files.
    • Use Ctrl++ or Ctrl+- to enlarge or shrink fonts.
    • Can set status bar and ruler display formats for different file interfaces.
  • Find/Replace
    • Added Replace in Files command.
    • Find dialog automatically copies selected bytes to the Value field.
    • Improved status bar for doing long replace operations.
    • Find results update when bytes inserted/deleted.
  • Goto
    • Can use goto dialog to jump to an address, line or a sector.
    • Use ',a', ',l' or ',s' options in Goto combo box for address, line or sector.
  • Bookmarks
    • Added a Toggle Bookmark command (can be used to add quick bookmarks).
    • Bookmark positions properly update when bytes inserted/deleted.
  • Printing
    • Enhanced Print Preview dialog.
    • Printing now works with text files (including Templates and Scripts).
  • Tools
    • Improved calculator with input buttons for performing quick calculations using the mouse.
    • Improved conversion utility can be used to convert character sets and/or linefeeds.
    • Improved checksum tool can treat data as ushorts, uints, or uint64s.
    • Improved histogram tool can treat data as other data types.
  • Workspace
    • Enhanced the 'Explorer' tab of the Workspace.
  • Inspector
    • Added Unicode string to the Inspector.
    • Moved list of available functions to the 'Functions' tab of the Inspector.
  • Scripts and Templates
    • Can have more than one script or template open at a time.
    • Find, print, other operations can all be applied to a script or template.
    • Select which script or template to run using drop-down list in the Tool Bar.
    • Results from Printf now displayed in 'Output' tab in the Output panel.
    • Code Editor has been removed and replaced with a Floating Tab Group.
    • Can display local variables in the template results.
    • Add RequiresVersion, ReadInt64, ReadUInt64, WriteInt64, WriteUInt64 functions.
    • Variables defined in script are now displayed in the 'Variables' tab of the Inspector.
    • List of functions now displayed in the 'Functions' tab of the Inspector.
    • Removed size limitation for scripts and templates.
    • Scripts now stored in "My Documents\SweetScape\010 Scripts" directory.
    • Templates now stored in "My Documents\SweetScape\010 Templates" directory.
    • Added default import byte to 'ImportFile' function.
  • Register Dialog
    • Improved register dialog lists when Support/Maintenance expires.
    • Can look up forgotten passwords.
    • Can remove license from the current machine.
  • General
    • Added tutorial for using Binary Templates.
    • Updated some hotkeys for various tasks.
    • Show current character set, linefeeds, and tabs in the status bar.
    • Synchronized Scrolling now synchronizes scrolling horizontally and vertically.
    • Added Overwrite File and Overwrite Bytes commands.
    • Many dialogs have an expandable 'Options' section.
    • Improved New and Open tool buttons with drop-down list.
    • Full support for Unicode file names and strings in the application.
    • Can use 'File > Revert/Refresh' to update processes or drives.
    • Added -reset and -resetall command line options to reset the interface.
    • Official support for Windows 98/Me/NT has been dropped.
  • Options
    • Can control the mouse wheel scroll rate.
    • Can control the directories where Scripts and Templates are stored.
  • Bug Fixes
    • Fixed problems with different DPI settings.
    • Fixed problem imported certain base64 files.
    • Fixed occasional crash on shutdown.
    • Fixed disappearing columns on some multi-monitor systems.
    • Fixed crash when deleting multiple files that were open in 010 Editor.

Version 2.1.4 - February 22nd, 2008

  • Bug fix with assigning to dates in a script.
  • Bug fix with importing long lines.
  • Bug fix with memory leak in FPrintf.
  • Updated licensing to support version 3 licenses.

Version 2.1.3 - April 5th, 2007

  • Workaround for startup problems caused by faulty Microsoft hotfix.

Version 2.1.2 - March 10th, 2007

  • Bug fix for 'FindAll' function.

Version 2.1.1 - March 9th, 2007

  • Added support for Windows Vista.
  • Fixed bug with string compare in scripts and templates.

Version 2.1 - March 5th, 2007

  • General
    • Improved right-click menu in Windows explorer.
    • Updated some icons.
  • Import/Export
    • Added ability to export as HTML, RTF, or a text area.
    • Can import or export Base64 and uuencoded data.
    • Can use 'Copy As' or 'Paste from' for many different types of data.
  • Tab Menu
    • Added right-click menu to file Tabs.
    • Can middle-click on a tab to close a file.
  • Command Line
    • Can Replace a string or set of bytes from the command line.
    • Added ability to save or close a file from the command line.
  • Scripts and Templates
    • Improved bitfield mode without padding (see BitfieldDisablePadding).
    • Added 'Always on Top' toggle for the Code Editor (from right-click menu).
    • Check to reload script/template if modified by an external program.
  • Editor
    • Now able to input characters more than 0x80 into the character area.
    • Added option to remove ':' separators in file addresses.
  • New Functions
    • BitfieldEnablePadding/BitfieldDisablePadding for bit streaming.
    • Function for locating files in a directory (FindFiles).
    • Added directory manipulation functions (DirectoryExists, MakeDir).
    • Added function to convert an enum to a string (EnumToString).
    • Functions to convert Dates to strings and vise versa.
    • Exit function can be used to return errorlevel to a batch file.
  • Bug Fixes
    • Fixed problem exporting Intel-Hex 16-bit files with custom addresses.
    • Fixed printf functions occasionally detecting the wrong number of arguments.
    • Importing files now properly imports last line if it does not have a carriage return.
    • Fixed sign of variables when doing divisions.
    • Fixed template hints occasionally not displaying correctly.
    • Fixed bug in FileSave function saving to a different filename.

Version 2.0.3 - November 28th, 2006

  • Fixed bug with FileSave function.
  • Fixed bug with allowing more than one instance.
  • Fixed problem with exporting hex text and long lines.
  • Now use Exit function to set global errorlevel return value.
  • Allow bookmarks on consecutive bytes.
  • Fixed bug exporting data from disk or process.

Version 2.0.2 - June 9th, 2005

  • Fixed problem in help index with function names not jumping directly to function help.
  • Fixed using copy and paste when editing a template variable.
  • Fixed problems using Printf on some strings.
  • Fixed bugs with custom read functions and forward structs.
  • Added uninstall survey.

Version 2.0.1 - April 28th, 2005

  • Fixed issues with custom read/write functions.
  • Fixed issues with minimize/maximize behaviour.
  • Fixed issues with time data formats.
  • Bug fixes with canceling operations, resizing, window order, and divisions.

Version 2.0 - March 30th, 2005

The following is an overview of the new functionality in version 2.0 of 010 Editor:

  • Added hard drive editing for logical and physical drives.
  • Added editing of system processes.
  • More powerful interface for viewing template results (results displayed in panel below each hex editor, mouse-over hints, reverse lookup for template variables).
  • More powerful scripts/templates syntax (custom functions, custom data types, more standard keywords supported, union support, include support, 44 new functions).
  • New Windows XP style.
  • Many improvements in tools (new Find in Files tool).
  • A whole range of other improvements.

The following is a list of all new features in version 2.0 of 010 Editor:

  • Hard Drive Editing
    • Open entire logical or physical hard drives using 'File > Open Drive'.
    • Make disk images for drive using 'File > Save As'.
    • Jump to next or previous drive sector with Alt+Down, Alt+Up.
    • Get properties of the drive using 'Edit > Properties'.
    • Open hard drives from the command line.
  • Process Editing
    • Open processes using 'File > Open Process'.
    • Select which heaps or modules to open.
    • Make image of process using 'File > Save As'.
    • Get properties of the process using 'Edit > Properties'.
    • Open processes from the command line.
    • List of current heaps displayed in 'Process' tab of the Output Window.
  • Templates/Scripts
    • Templates/Scripts Interface
      • Templates results can now be displayed in the 'Template Results' panel below each hex editor.
      • Application contains links to an online repository for scripts and templates.
      • Display hint for template variable when the cursor is over bytes in the hex editor.
      • New 'Jump to Template Variable' command to lookup a template variable from a file address.
      • Scripts and templates can be opened by double-clicking them in Windows Explorer.
      • Scripts and templates can be run from the command line.
      • Can mark scripts to be run on startup, shutdown, or when certain files are opened.
      • Speed improvements for scripts and templates.
      • Added default shortcut for saving a script or template.
      • Context sensitive help in the Code Editor.
    • Templates/Scripts Syntax
      • Define your own custom functions.
      • Use '#include' keyword to include files.
      • Support for switch, case, break, and continue keywords.
      • Support for unions.
      • Default custom variables using the syntax <read=[functionname], write=[functionname]>.
      • Control whether arrays of structures are optimized with <optimize=true|false>.
      • Specify display format for variable using the syntax <format=hex|decimal|octal|binary>.
      • sizeof now works properly on simple structures.
      • Special new keywords 'exists' and 'startof' for template variables.
      • Array initializers work properly (e.g. int a[3] = {1, 2, 3};).
      • No need to use 'return' when doing simple expressions in the calculator.
      • Changed how scoping works in structs - automatically look up a level.
      • 44 new functions: Checksum, ChecksumAlgStr, ChecksumAlgBytes, Compare, ConvertASCIIToUNICODE, ConvertASCIIToUNICODEW, ConvertUNICODEToASCII, ConvertUNICODEToASCIIW, DeleteFile, Exit, ExportFile, FindAll, FindFirst, FindInFiles, FindNext, FPrintf, GetBytesPerLine, GetReadOnly, GetSectorSize, Histogram, ImportFile, InputOpenFileName, InputOpenFileNames, InputSaveFileName, InsertFile, IsBigEndian, IsDrive, IsEditorFocused, IsLittleEndian, IsLogicalDrive, IsModified, IsPhysicalDrive, IsProcess, OpenLogicalDrive, OpenPhysicalDrive, OpenProcessById, OpenProcessByName, RenameFile, ReplaceAll, SetReadOnly, SScanf, StrDel, SubStr, Terminate.
    • New Templates/Scripts
      • New default scripts for splitting or joining binary files.
      • New default template for parsing a WAV sound file.
  • General
    • New Windows XP Style.
    • New 'File > Special > Save Selection' command to save selected bytes.
    • Show selection start and size in the status bar.
    • Click on position or size in status bar brings up an edit dialog.
    • Many tables have an 'Export CSV' option on right-click menu to write a comma-delimited file.
    • Can change read-only plus other flags in file properties.
  • Hex Editor
    • Cursor size changes in Insert/Overwrite mode.
    • UNICODE character set support.
    • International character sets support.
    • Can split the hex editor into two parts using 'Window > Split Window' or button above scroll bar.
    • Scrolling can be synchronized between windows with 'Window > Synchronize Scrolling'.
    • Division lines can be used to indicate blocks of data.
    • Sector lines are drawn to indicate sectors on a hard drive.
    • Addresses can be displayed as octal format or as a line number.
  • Tools
    • Find in Files tool
      • Can recursively search a directory or all open files for a set of bytes.
      • Display find in files results in 'Find in Files' tab of Output Window.
      • Can expand or hide results for each file.
    • Find
      • Can search with wildcards '*' and '?'.
      • Allow multiple find ranges to color the same file.
      • Find works with UNICODE.
    • Highlights
      • Allow multiple highlights to be applied at the same time.
      • Assign different colors to highlights.
    • Comparison
      • Can limit which bytes are compared in a file (use to compare two regions in the same file).
      • Comparison results are sortable by clicking on the table headings.
      • Add color indicator box to the type column.
      • Can enable synchronized scrolling after running a comparison.
    • Base Converter
      • Support for Float, Double, ASCII strings, EBCDIC strings, UNICODE strings in base converter.
    • Checksum
      • Can exclude a set of bytes in the file from the checksum.
      • Can display the checksum results in decimal format.
  • Inspector
    • String type in inspector.
    • Display start address as local (offset from parent) from right-click menu.
    • Template variable name can be 'Type + Name' or just 'Name' (use Column Display Format).
  • Bookmarks
    • Bookmarks can now use custom data types defined in Templates.
    • Bookmarks can be set to move when the cursor changes position.
  • Importing
    • Do checksum when importing an Intel-hex file.
    • In import file dialog box, can set file type as 'All Supported Import Types'.
    • Can import multiple files at the same time.
    • Support for reading and writing Intel Hex files that use word-based addresses.
  • Options
    • Specify color of right area, separator lines, sector lines, and variable highlight.
    • Specify additional include directories.
    • Specify minimum number of digits in address.
    • Option for turning on/off mouse over and hints.
    • Option for adding 010 Editor to the Windows Explorer right-click menu.
  • Command line
    • Can open a drive or process from the command line using '-drive:' or '-process:'.
    • Run a script or a template from the command line using '-script:' or '-template:'.
    • Mark a file as readonly using '-readonly'.
    • Exit the application using '-exit'.
    • Can use wildcards when opening files or importing files on the command line.
  • Help
    • New improved help file.
  • Bugs
    • Bug with window opening at zero height (in special cases).
    • Bug with a slow-down when defining large arrays in scripts.
    • Bug with divisions and the resulting types in scripts (in special cases).
    • Bug with replace all never finishing on certain replaces.
    • Other minor bug fixes.

Version 1.3.2 - April 19th, 2004

  • Added functions ConvertASCIIToEBCDIC, ConvertEBCDICToASCII
  • Added functions BitfieldLeftToRight, BitfieldRightToLeft
  • Bug fixes with Printf, Operations, and local arrays in Templates

Version 1.3.1 - April 6th, 2004

  • Changed header for templates and scripts
  • Bug fixes for the system path, and the Inspector

Version 1.3 - April 1st, 2004

  • Templates
    • Added bitfield support to templates.
    • Added DisplayFormatBinary and DisplayFormatOctal functions.
    • Can disable warnings under 'Tools > Options > Code Editor'.
  • General
    • Now use the new XP file dialog boxes.
  • Clipboard
    • Can use 'Paste Special' command to paste in different formats.
  • Bug fixes
    • Fixed problems with workspace, filling bytes, running templates, pasting large blocks, and selecting bytes on NT machines.

Version 1.2 - Jan 24th, 2004

  • Inspector and Output Windows
    • Added 'Copy Column', 'Copy Row', and 'Copy Table' to right-click menu.
    • Added 'Column Display Format' to right-click menu - set the format to hex or decimal.
  • Scripts
    • Fixed scripts to work better when writing out large files.
    • Any of the 'Write' functions now automatically expand the file size when writing past the end of the file .
    • A single variable (i.e int x) defined in a template can be accessed as x[0].
    • Added 'DisableUndo' and 'EnableUndo' to turn on or off undo - speeds up script when writing large files.
    • The 'FileNew' function now returns the file number of the created file.
  • Import/Export
    • Added the ability to import or export 'Decimal Text'.
  • Bug Fixes
    • Fixed 'Invalid Pointer Operation' bug in the Code Editor.
    • Fixed a bug with the 'GetFileNum' function.
    • A few other minor bug fixes with hotkeys and Templates.

Version 1.1.1 - Dec 19th, 2003

  • Minor bug fixes with bookmarks and the inspector.
  • Added Expand All option to template right-click menu.

Version 1.1 - Nov 1st, 2003

  • Templates
    • Support for enums (e.g. 'enum <ushort> MYENUM { COMP_1, COMP_2=5, COMP_3 } var1;').
    • Enums variables are displayed with a drop-down list in the Inspector.
    • Forward declared and recursive structs work properly.
    • Defining local variables inside structs works better (proper scope).
    • Zero-length arrays generate no variable (but do generate a warning).
    • Can specify hex or decimal display in Inspector with DisplayFormatHex() or DisplayFormatDecimal() functions.
    • Zip template now contains an example of enums.
  • Installer
    • 010 Editor can be added to the system path automatically.
    • Can automatically associate with Intel Hex or Motorola S-Record files.
  • Explorer
    • Can drag-and-drop files from Windows Explorer to open them.
    • Drag-and-drop for Intel Hex or Motorola S-Record files will automatically import them.
  • Importing
    • Added default import byte under General Options (used for Intel Hex files).
  • Comparison
    • Improved comparison algorithm.
  • Bug fixes
    • Minor bug fixes with the Code Editor.

Version 1.0.1 - Sept 26th, 2003

  • Minor bug fixes with printing and inspector

Version 1.0 - Sept 16th, 2003

  • Initial Release


Related Topics:

This is the manual for 010 Editor, a professional hex editor and text editor. Use 010 Editor to edit the individual bytes of any binary file, hard drive, or process on your machine. 010 Editor contains a whole host of powerful analysis and editing tools, plus Binary Templates technology that allows any binary format to be understood.




Newsletter - Receive special offers, tips, tricks and news. Join now

010 Editor v15.0.1 is here!
What's new?



E-mail: info@sweetscape.com