Repository navigation
BazzBasic 1.6
Direct download: https://github.com/EkBass/BazzBasic/releases/download/BazzBasic_1.6/BazzBasic_win_x64_1.6.zip
The headline of this release: the IDE and the interpreter are now two separate programs.
Until now, everything shipped inside one BazzBasic.exe: the interpreter, the code editor, the Windows Forms UI, the Scintilla editor component and everything they dragged along. In 1.6, the editor has been split out into its own program, BazzBasic-IDE.exe, and the interpreter is a lean console program.
The biggest visible gain is the size of compiled programs. A program compiled with -exe (or Compile as Exe in the IDE) is a copy of the interpreter with your code inside. Since the IDE and the dependencies it required are no longer bundled into that executable, compiled programs went from roughly 125 MB in version 1.5 to about 16 MB in version 1.6 — about an eighth of the size, with no changes needed in your source code.
Two programs, one folder
| File | What it is | Size |
|---|---|---|
BazzBasic.exe |
The interpreter. A console program that runs and compiles .bas files. |
about 16 MB |
BazzBasic-IDE.exe |
The code editor. A Windows program with no console window behind it. | about 111 MB |
BazzBasic.exeis the part that matters to your programs. It runs.basfiles, compiles them into standalone executables and libraries, and is what ends up inside every compiled program. It needs only the SDL2 dll files next to it.BazzBasic-IDE.exeis the editor: syntax highlighting, tabs, Tree View, printing and the menus. It never runs your code by itself — Run (F5), Compile as Exe and Compile as Library all hand the job toBazzBasic.exe.
Both files come in the same folder in the release, and they find each other automatically.
What stays the same
- The interpreter is still called
BazzBasic.exe, so the command line,.batfiles, editor settings (Notepad++, Geany, VS Code), the PATH setting and.basfile associations work exactly as before. - Double-clicking
BazzBasic.exe, or running it without arguments, still opens the IDE: it startsBazzBasic-IDE.exefrom the same folder. If the IDE is not there, it prints the command line usage instead. - In the IDE, Run (F5), Compile as Exe and Compile as Library work as before. The IDE finds
BazzBasic.exein its own folder, in PATH, or where the new Run → Path to BazzBasic.exe... dialog points. - If you use only the interpreter, for example with another editor, you can leave out
BazzBasic-IDE.exeand theruntimesfolder.
Compiled programs are ~8x smaller
A compiled .exe used to carry the whole IDE inside it — Windows Forms, Scintilla and the rest — even though a compiled program never shows an editor. In 1.6 the interpreter is published trimmed, without any of that, so:
- Source compiled with version 1.5: roughly 125 MB
- The same source compiled with version 1.6: about 16 MB
Nothing changes on your side: the same source, the same -exe command, the same Compile as Exe in the IDE.
IDE improvements
The editor got a long list of new features this cycle:
- View → Tree View — a panel on the left that lists every function (with its parameters) and every
[label]in the file of the active tab. Clicking an item moves the cursor to that line. Helpful for moving around in long files. - Session restore — File → Restore Session on Startup (off by default) reopens the files that were open when the IDE was closed, and selects the tab that was active. Files that no longer exist are skipped.
- Edit → Comment Selection / Uncomment Selection (Ctrl+Q / Ctrl+Shift+Q) — comments out or uncomments every selected line in one go, as a single Undo step. BazzBasic has no multi-line comments, so this is the easy way to disable a block of code.
- File → Save All and File → Close All — save or close every tab at once.
- View → Zoom In / Zoom Out (Ctrl++ / Ctrl+-) — makes the editor text larger or smaller. Works with both the numeric keypad and the main +/- keys.
- File → Print (Ctrl+P) — prints the file with syntax colors on a white background, also in Dark Mode. Choose Microsoft Print to PDF to get a PDF.
- View → Syntax Coloring — new checkbox for turning the code colors on or off. Unchecked, the editor shows plain monochrome text; printing follows the setting. Remembered between sessions.
- Window size and position — the IDE now remembers its size, position and maximized state between sessions.
- View → Take Screenshot to Clipboard — copies an image of the IDE window, ready to paste into Discord, a forum post or an image editor.
- View → Open Console / Open File Browser — opens a command prompt or File Explorer in the folder of the file in the active tab.
- Help → Homepage — opens the BazzBasic homepage in the browser.
- Run → Path to BazzBasic.exe... — a small dialog for choosing which
BazzBasic.exethe IDE uses for Run (F5) and compiling. It shows live where the interpreter was found (IDE folder, PATH, or the path you set), and the choice is remembered. Mostly useful if you keep several BazzBasic versions side by side.
A few long-standing annoyances were fixed too: the IDE now asks to save changes when the window is closed, opening a file no longer marks the previous tab as modified, cancelling Save As when closing a tab keeps the tab open instead of losing the changes, and the IDE window shows its proper icon again. The update check (Help → Check for Updates) also no longer reports an older or equal version as new.
New in the language: EXIT WHILE and EXIT FOR
Leave a loop early without GOTO. EXIT WHILE continues after WEND, EXIT FOR after NEXT:
WHILE TRUE
IF INKEY = KEY_ESC# THEN EXIT WHILE
' game logic here
WEND
FOR i$ = 1 TO 100
IF i$ * i$ > 50 THEN EXIT FOR
NEXT
PRINT i$ ' 8Both work from a one-line IF, inside IF blocks and inside nested loops. Use them instead of jumping out of a loop with GOTO.
Bug fixes and smaller improvements
A source audit made the interpreter much harder to trip up: a typo or a mistake in a BASIC program now stops with a clear error message instead of hanging until it ran out of memory, crashing the whole interpreter, or being silently ignored. DEF FN recursion now reaches hundreds of thousands of levels instead of killing the process, and a program that stops on an error keeps the console window open so the message can be read (compiled executables also exit with code 1, so .bat files can detect the failure).
Check your old programs for two changes: a constant must now be declared with LET (LET MAX# = 5; plain MAX# = 5 is an error), and SHELL("command") on a line of its own now really runs the command — before, it was silently skipped.
The full list, with details and implementation notes, is in changes.md.
Linux compatibility
I have been asked several times whether BazzBasic works on Linux.
The answer is both yes and no.
C#, .NET 10 and SDL2 are all compatible with Linux, so there are no major technical obstacles to compiling the interpreter for Linux platforms. However, the source code contains a few Windows-specific parts, such as some file and HTTP operations, that would need attention. Guarding them with platform checks (#if directives or OperatingSystem.IsWindows()) would not be a major undertaking. After that, running the interpreter from bash would work with all the features BazzBasic includes.
That said, I'm still not promising a Linux version — at least not for the time being.
The IDE is a different story. It is deeply tied to Windows and its various interfaces: it is built on WinForms, and its editor component, the Scintilla5.NET binding, is Windows-only.
So, while the interpreter itself could be compiled for Linux with relative ease, the IDE is not — and will not be — compatible.
EkBass