HexIDE Alpha

News

What's new in HexIDE.

A new release every Monday, and a post here for each one: what changed, what to watch for before you upgrade, and what is still missing.

HexIDE 0.4.0: the common controls run, and unsaved work survives a crash

0.4.0 is the first weekly release: about 300 changes in the week since 0.3.0.

Running

Most of Windows' common controls run now. ListView draws its four views, though not their images yet, with columns, sorting, mouse and keyboard selection, and label editing. TreeView builds, walks and edits a tree. TabStrip, SSTab, Toolbar, StatusBar and UpDown draw, raise their events and load what the designer saved, and ImageList holds the Toolbar's images. RichTextBox, DTPicker and MaskedEdBox have begun. Controls.Add and Controls.Remove run, and a control held in a WithEvents variable raises its handlers.

CallByName, Shell, CVErr, FormatDateTime, Partition, ObjPtr, StrPtr and VarPtr run, and so do the loan and depreciation functions, from Pmt to SYD, each matching vb6.exe's results. 85 of the language's names still stop a program, down from 143, and nothing stops a module loading any more.

Safety

Unsaved work survives a crash. While the IDE runs it keeps a private copy of every unsaved document, and after a crash, a kill or a power cut the next start offers it back, leaving the files on disk untouched. Saves are written to a staging file and flushed before they replace anything, so a save interrupted half way can't damage the file it was replacing.

Everything else

  • The code window takes colours from a language server's semantic tokens, colours brackets by depth, and has indent guides, sticky scroll, Recent Edits, Paste as Comment, and greyed inactive #If branches.
  • The designer previews a form without running the project, shows tab order, dims invisible controls and designs controls on SSTab pages. The Components dialog adds Windows' common control libraries to a project.
  • Windows you close can be reopened from the Window menu, or with Ctrl+Shift+T.
  • Find searches the whole project by default.
  • Language servers can import the project through a command they declare, ask for generated workspace files, and hear about files you create.
Before you upgrade
  • A new project's first save asks where each form and module goes, rather than leaving them in a temporary folder.
  • Make asks before replacing an existing project archive, and declining leaves both the archive and the program untouched.

Still missing

Third-party controls at run time, COM and Declare calls, MDI forms, printing, and autosave. The Scope page has the whole list.

Download 0.4.0 Release notes on GitHub

HexIDE 0.3.0: every template form saves, and F5 runs real programs

0.3.0 is a month of work: about 460 changes since 0.2.0, none of which was in a download until now. From here there is a release every Monday, so they reach you within a week rather than when somebody remembers.

Saving

All 22 of the designer files VB6 itself ships now survive a save byte for byte, up from 21, and VB6's own .vbp files round-trip with their line order and description kept. Sources are read in your machine's ANSI code page and keep their encoding, and an edit that code page can't hold is refused before anything is written.

Running

A form is a real object now. Several forms work with Load, Show, vbModal and Unload, and mouse, double-click, focus and Activate events fire. Text, Random and Binary files work, and so do Collection, Static, ReDim Preserve, named arguments, DefType, #If, Like and GetSetting. Something the interpreter can't run now stops with a message that names it, instead of carrying on. 143 of the language's names still stop a program, down from 261.

Everything else

  • Make EXE builds a program that runs on a machine with neither .NET nor HexIDE installed: one runner, with the project packed beside it, running every form and module.
  • The designer gives new controls VB6's sizes, names and tab order. A control HexIDE doesn't model, such as an ImageList, shows as a labelled box where VB6 draws it. The ProgressBar is the first in-box OCX that runs.
  • The debugger breaks on the statement when you press Debug on an unhandled error, and Debug.Assert breaks. Run, Start External Debug Session drives an outside debug adapter.
  • Language servers can connect over WebSocket, take argument lists and environment variables, and show their progress in the status bar.
  • A Windows installer for x64, optional. Like everything here, it isn't signed yet.
  • 860 strings in 30 languages, and the IDE now starts in your system's language.
Before you upgrade
  • Programs made with 0.2.0 don't start. Make them again with 0.3.0.
  • Line numbers now count from the top of the file, header included, so they agree everywhere. Add-ins and automation that use line numbers will see different ones.
  • Bookmarks and breakpoints are moved to a new place as a project opens, one way: open it in 0.2.0 again and 0.2.0 deletes them the next time it saves.
  • The downloads that need .NET installed are bigger than 0.2.0's, because the runner they carry for Make EXE now has its own copy of .NET.

Still missing

Third-party controls at run time, COM and Declare calls, MDI forms, printing, and autosave. The Scope page has the whole list.

Download 0.3.0 Release notes on GitHub

HexIDE 0.2.0: forms saved the way VB6 writes them

The designer writer stopped rebuilding forms in its own shape and started reproducing VB6's: 21 of the 22 template forms round-trip byte for byte, and a form HexIDE can't reproduce opens read-only rather than being rewritten.

  • Frames and PictureBoxes hold controls, and the Image control arrives.
  • Any language server can be attached through lsp-servers.json, and the Protocol Inspector shows what crossed the wire.
  • Go to Declaration, workspace symbols and code actions.
Release notes on GitHub

HexIDE 0.1.0: the first public build

The workbench, the interpreter, and a debugger with stepping, Locals, Watches and the Call Stack, on Windows, macOS and Linux.

Release notes on GitHub