Gambas Documentation
Application Repository
Code Snippets
Compilation & Installation
Components
Controls pictures
Deprecated components
Developer Documentation
Development Environment Documentation
Documents
About The Best Formula In The World
Architecture details
Benchmarks
Books
By Reference Argument Passing
Compatibility between versions
Creating And Using Libraries
Database Datatype Mapping
Database Request Quoting
Date & time management
Dates and calendars
DBus and Gambas
Differences Between Shell And Exec
Differences From Visual Basic
Distributions & Operating Systems
Drag & Drop
DrawingArea Internal Behaviour
External functions datatype mapping
Frequently Asked Questions
Gambas Farm Server Protocol
Gambas Mailing List Netiquette
Gambas Markdown Syntax
Gambas Naming Conventions
Gambas Object Model
Gambas Scripting
Gambas Server Pages
Gambas Unit Testing
Gambas Wiki Markup Syntax
Getting Started With Gambas
Hall Of Fame
Image Management In Gambas
Including Help Comments in Source Code
Interpreter limits
Introduction
Just In Time Compiler
Just In Time Compiler (old version)
License
Localisation and Internationalization
Mailing Lists & Forums
Naming Conventions
Network Programming
ODBC Component Documentation
PCRE Pattern Syntax
Porting from Gambas 2 to Gambas 3
Previous News
Project Directory Structure
Release Notes
Reporting a problem, a bug or a crash
Rich Text Syntax
Screenshots
Text highlighting definition file syntax
The Program has stopped unexpectedly by raising signal #11
Variable Naming Convention
WebPage Syntax
Web site home page
What Is Gambas?
Window & Form Management
Window Activation & Deactivation
Window Life Cycle
XML APIs
Error Messages
Gambas Playground
How To's
Language Index
Language Overviews
Last Changes
Lexicon
README
Search the wiki
To Do
Topics
Tutorials
Wiki License
Wiki Manual

Frequently Asked Questions

Why did you name this project "Gambas"?

It seems that free projects are often named after animals, especially programming languages: Python, Camel, Bonobo, etc. And I wanted to have a recursive acronym with the word "Basic" in it. So, Gambas Almost Means BASic!

Is Gambas compatible with Visual Basic™?

No, and it will never be! Fortunately, there are many similarities, but do not expect to take your old Visual Basic code and run it on Gambas without any change. You can go the troubleshooting page to find some examples of the differences between the two languages.

See also: Differences From Visual Basic

Will Gambas be compatible with Java or .Net?

Never, I'm afraid. There are many reasons, good and bad:
  • I'm not Sun Oracle, Microsoft or Sauron. I do not want to impose one sole language for everything everywhere. A stupid thing, isn't it? :-)

  • I want a simple but powerful language, not necessarily intended for professionals or nerds.

  • I did it for fun too! I do like writing compilers, interpreters, virtual machines... So I did not use the spec of Java nor .Net. The Gambas IDE is written in Gambas.

Is Gambas multi-platform?

In the future, I hope there will be a simple answer: "yes!". :) Right now, there are reports of people compiling Gambas under BSD and Win32/Cygwin.

Why don't you merge your project with HBasic, MonoBasic, Parrot...?

There are too many technical differences between these projects and mine to think about a merge.

Another problem is that the Gambas interpreter is very tight to the features of the language I needed. .Net/Parrot features are very different from the Gambas ones. It is not just a matter of interpreting bytecode. For example, there is the reference counting against garbage collector problem. What will happen to the components management system? To the class inheritance management? To the interpreter hooks? And so on...

How do I compile, make and install Gambas?

See Compilation & Installation

How do I uninstall Gambas?

If you have installed Gambas using the packaging mechanism of your operating system, it should be easy to use the normal uninstallation procedure. If you have installed from source as root, just remove the installation directory. For example, if you have installed Gambas under /opt/gambas3, just enter the following as root:

$ rm -rf /opt/gambas3

If the installation prefix is /usr, or /usr/local (which is the default) then you have to remove each directory one by one.

$ rm -f /usr/local/bin/gbx3 /usr/local/bin/gbc3 /usr/local/bin/gba3 /usr/local/bin/gbi3
$ rm -rf /usr/local/lib/gambas3
$ rm -rf /usr/local/share/gambas3

Can I access my PostgreSQL, MySQL, etc. database with Gambas?

You can currently access PostgreSQL, MySQL, SQLite and ODBC databases. If you want to develop a driver for another database system, tell me. You are welcome!

I'm a C/C++ programmer. How can I help you?

You are welcome to help!
  • First you can subscribe to the developer mailing-list and introduce yourself.

  • Then, you must try to understand the Gambas architecture: the compiler, the interpreter, the development environment, the components, and how they live together.

  • Then, you can read the developer documentation on the Wiki, it will explain you how to program components.

You will find component example named gb.example that is full of comments. By reading the source of this example, you will understand how to write a component.

If you want to write a database driver for the database component, the PostgreSQL driver is commented, so that you can more easily know how to do that.

Of course, I will answer any question and help you as much as I can, provided that you have spent more than a school year to learn C/C++ :-)

I'm not a C/C++ programmer. How can I help you?

Any help on the following tasks is welcome. No C/C++ programming skill is required!
  • Playing with Gambas and reporting bugs.

  • Making example programs for beginners, and send them to me so that I put them in the source package.

  • Making a tutorial to show beginners how to write their first Gambas program. It would be a great idea! :-)

  • Translating Gambas into your own language, if it has not been done yet. See How To Translate The Gambas IDE for more information.

Can I develop proprietary software with Gambas?

Yes, you can.

The General Public License says that Gambas itself is free (as in freedom). There is no requirement on programs written with Gambas, unless some libraries explicitly require something different.

E.g. the following Gambas components require your distributed software to be released under GPL:

Will you port Gambas to Windows™ ?

I won't, but I will help any people trying to do that.

Gambas already runs under Cygwin and WSL2. Note that there is a lot of things to port, if you want to do a native port: process management, gb.qt4 component, and so on... This is a huge job. The most promising compiler target would be Mingw-w64, which also allows cross compilation on a unix-like system.

Will Gambas work on Wayland systems?

Yes, but Wayland lacks a few x11 features that a gambas GUI application may or may not rely on.
Mostly in relation to top-level From positioning on the Screen. waylands philosophy is that the compositor knows where to put your window and do not support any way for us to be able to. So things like Form.Move() will not work and Form.X and Y coordinates will appear wrong. also Form_Move() event will not fire as expected.

Waylands response to our complaints about this issue only prompted them to issue a statement that programmers need to re-design their programs to fit their philosophy and never try to position windows but let the desktop handle it ! (so no-wayland)

There are other issues with the wayland interface that are just because of how wayland works differently to x11 and currently there are no workarounds.
Desktop.Screenshot() for example with wayland does not allow (for security reasons) to arbitrarily take a screenshot at all but opens up the desktops screenshot dialog, there is no workaround for this.

System tray icons gb.gui.trayicon are also currently not working.

We Pray wayland address these problems as soon as possible.

Non-GUI applications will work as expected.