FreeBASIC: Multi-platform BASIC compiler

FreeBASIC is a completely free, open-source, 32-bit BASIC compiler, with syntax similar to MS-QuickBASIC, that adds new features such as pointers, unsigned data types, inline assembly, object orientation, and many others.

Specifically, the FreeBASIC project is a set of cross-platform development tools initially created by Andre Victor, consisting of a compiler, GNU-based assembler, linker and archiver, and supporting runtime libraries, including a software-based graphics library. The compiler, fbc, currently supports building for i386-based architectures. The project also contains thin bindings (header files) to some popular 3rd party libraries such as the C runtime library, Allegro, SDL, OpenGL, GTK, and many others, as well as example programs for many of these libraries.

FreeBASIC is a high-level programming language supporting procedural, object-orientated and meta-programming paradigms, with a syntax compatible to Microsoft QuickBasic.

FreeBASIC is a self-hosting compiler, being roughly 120,000 lines of code (compiler core only, not including libraries).

It makes use of the GNU binutils programming tools as backends and can produce console and graphical/GUI executables, besides dynamic and static libraries. FreeBASIC fully supports the use of C libraries and partial C++ library support. This lets programmers use and create libraries for C and many other languages.

Features include:

  • A large number of variable types available.
  • Arrays.
  • BASIC Compatibility.
  • Built-in gfx library.
  • Clean Syntax.
  • Create OBJ’s.
  • Debugging support.
  • Enumerations (ENUM’s).
  • Escape characters inside literal strings.
  • Function overloading.
  • Inline Assembly.
  • Most of the known C libraries can be used directly, without wrappers.
  • Multi-platform.
  • Multi-threading.
  • Name spaces.
  • Optimized code generation.
  • Optional function arguments.
  • Pointers.
  • Preprocessor.
  • Typedefs.
  • Unicode support.
  • Unlimited number of symbols.
  • User-defined Types (UDT’s).
  • Variable initializers (including arrays and UDT’s).

Support: Forums
Developer: Andre Victor, Angelo Mottola, Daniel R. Verkamp, Jeff Marshall, Mark Junker and many others
License: GNU GPL v2