Skip to content

Version 1.1

Compare
Choose a tag to compare
@FellippeHeitor FellippeHeitor released this 02 Mar 15:47

The QB64 team proudly presents QB64 V1.1


To install, simply extract to a new directory (and for Linux/Mac, run the setup script). Extracting on top of a previous version is not supported, and you risk ending up with a broken compiler.

This version of QB64 no longer has any components under the GPL. Most components are under suitably permissive licenses to produce closed source programs, with the exception of the sound subsystem. See the LICENSE folder for more detail.

This release contains changes across the board, fixing bugs, adding useful new features, and even improving QB45 compatibility in some minor corner cases. Below is a (almost) complete changelog, as well as a list of all new commands.

Have fun!


IDE/Compiler frontend:

  • A new configuration system, with settings stored in internal/config.txt. This also comes with lots of new things for you to twiddle and customise the IDE just the way you like (take a look under the Options menu).
  • Resizing the window is handled more gracefully.
  • Several code-eating bugs (where chunks of code would disappear while being edited) have been fixed.
  • Mouse buttons can be swapped, for those who like to use left-handed mice.
  • SUBs/FUNCTIONs can be indented.
  • Current SUB/FUNCTION name and * (for unsaved changes) is shown in the program name bar.
  • Right-clicking in the source gives a menu with useful options.
  • Double-clicking in the source selects a word.
  • New shortcuts: Ctrl-S Save; Ctrl-G Goto line; Ctrl-F3 Find.
  • Pressing tab with selected code increases indentation (disable the auto-formatter to see it).
  • Typing _RGB( or associated function prompts you to press Shift-Enter to open a colour picker.
  • If enabled, executables will be saved in the same directory as the source file.
  • Add an option to pass command-line arguments when lauching via F5.
  • Add -o (output file), -s (settings), -h/-help command line options (see help output for more info).
  • Ctrl-Backspace erases an entire word, on platforms where such a key combination can be detected.

Compiler:

  • Some convenience substitutions (ENDIF -> END IF), auto-adding ; between PRINT items improve compatibility with old source, especially GW-BASIC programs.
  • Tightened syntax checking in several places to prevent more mysterious errors, such as internal compiler error or C++ compilation failed.
  • Allow variable names such as data.db for compatibility with QB45.
  • Add a precompiler for selective compilation: $LET, $IF, $ELSE, $ELSEIF, $END IF. Great for surrounding DECLARE LIBRARY blocks that are platform dependent.
  • Add _INCLERRORFILE$ and _INCLERRORLINE to return error information when it occurs in an include file.
  • Add _COMMANDCOUNT for number of commandline arguments and allow passing an integer argument to COMMAND$() to get a particular commandline argument.
  • Add SELECT EVERYCASE, which executes every CASE that matches, not just the first.
  • Add OPTION _EXPLICIT to give an error on implicitly declared variable names.
  • _PI now takes an optional multiplier as an argument.
  • Add $EXEICON to build an icon into the program itself (applicable to Windows only).
  • _ICON with no parameters now uses the one built in with $EXEICON.

Runtime:

  • Fix scrollwheel on Linux.
  • OPEN "SCRN:" FOR OUTPUT AS #1 now causes output to #1 to be printed onscreen.
  • Fix SHELL() to return correct exit codes on Linux.
  • VAL() can now parse binary numbers with &B.
  • VAL() handles very large numbers better.
  • Fix _EXIT on Linux.
  • PLAY correctly defaults to T = 120 on invalid value.
  • Fix loading of some PNG files that previously gave an error.
  • Make EOF read ahead one byte as per QB45.
  • Fix play speed of some audio files.
  • Fix TCP/IP on Linux.
  • Reimplement _MOUSEMOVE

New commands:

  • _SCALEDWIDTH
  • _SCALEDHEIGHT
  • _SCREENHIDE
  • _INCLERRORLINE
  • _INCLERRORFILE$
  • _MOUSEPIPEOPEN
  • _MOUSEINPUTPIPE
  • _MOUSEPIPECLOSE
  • _COMMANDCOUNT
  • _CWD
  • _STARTDIR
  • _DIR$
  • _ARCSEC
  • _ARCCSC
  • _ARCCOT
  • _SECH
  • _CSCH
  • _COTH
  • _SEC
  • _CSC
  • _COT
  • _SCREENICON

As well as a whole host of small corrections, regression fixes, fixed memory leaks, minor tweaks and under-the-hood changes.