Motivation
Programming is difficult.
Our squishy human brains struggle to simulate what the computer will do when it runs our code. As a result we make lots of errors, many of them small, requiring us to divert our attention from the main problem we're working on to fix minor implementation details. This both takes up time and makes us lose focus on the high-level design.
The computer is going to run our code anyway, so why not do so immediately to check what it does?
Tool Overview
WhiteBox runs the code as it is written, capturing details about the execution. It can then give you live feedback about the run, showing you how variables change over time and other details.
This is intended to improve the developer experience by helping you to understand your code faster, and consequently:
- catch and fix bugs earlier, before they cause major issues
- iterate more often over your design, giving more opportunity for refinement
Tool Internals
WhiteBox is written in C and C++ with few external libraries:
- Clang/LLVM is used for lazily JIT compiling code
- Dear ImGui is used for creating the UI
- A few single-header libraries are used for various utilities (STB, Mattias Gustavsson, Randy Gaul's cute_headers)
Just about everything else is written from scratch, including:
- the hash table implementation
- DWARF debug info parsing
- plugins for code editors
- ...
Project Details
WhiteBox has most of the initial set of features implemented and is nearly ready for alpha release.
Supported languages: C (and a small subset of C++) Supported platforms: Windows x64, Linux x64 (tested on Ubuntu 20.04) Supported code editors: 4coder, Emacs, Notepad++, Sublime Text, Vim/Neovim, Visual Studio, VSCode, (plus workarounds that should work for most other editors)
Support for more of each of these is planned or currently in-development.
Project Links
- Discussion at https://chat.whitebox.systems (Discord)
- Development (and Discord voice chat) streamed live at https://www.twitch.tv/azmreece
- Preorder at https://azmr.itch.io/whitebox
- More information and a mailing list at http://whitebox.systems