Gambas 3.12 (aflevering 1/2)
Uitzending do 18:00 ** April 2nd, 2020 by wim.webgang **Gambas 2019 overzicht
Al een paar weken aangekondigd, de Gambas 2019 special. We installeren tijdens de tune van het programma de versie Gambas 3.9 op een iets oudere Linux distributie, zodat we een beetje kunnen vergelijken met de hier besproken recentere versie. Dat installeren duurde maar een paar minuutjes (vanuit het softwarebeheer “Yast” op openSUSE).
In januari 2019 kon je een artikel vinden van Benoit Minisini op de Franse linuxfr.org website. Het artikel sijpelde door naar hier omdat er naar verwezen wordt op de documentatiewebsite van Gambas op gambas.sourceforge.net. Het kan beschouwd worden als een vervolg voor een stukje dat hij schreef in 2012 naar aanleiding van het verschijnen van Gambas 3.3, en dat ook op die site te vinden is. Ps: Sinds eind 2019 is Gambas aan versie 3.14.x., de zogenaamde versie “Pi”.
Gambas 3.12
Gambas is een programmeertaal die object oriented werkt en gebaseerd is op een basic-achtige interpreteerder. En het is ook een volledige IDE of programmeeromgeving met ondermeer een compiler, een interpreteerder, een verzameling van modules die complementair gebruikt kunnen worden, en een geïntegreerde programmeeromgeving. Het geheel wordt verspreid onder de GNU GPL v2 licentie.
Een nieuwe compiler
De grootste verandering bij de stap naar versie 3.12 is het afscheid van de oude compiler, die gebaseerd was op LLVM.
De API van LLVM voor het maken van code is een aantal jaar geleden veranderd van versie LLVM 3.5 naar LLVM 3.6. Hoewel het cijfer een kleine versiesprong aangeeft, blijkt LLVM 3.6 niet compatibel met de vorige versie, wat mogelijk de programmeur van Gambas ooit frustreerde, een probleem waar hij nu definitief van verlost wil zijn.
De nieuwe compiler is van het type “in vliegende vlucht” of in het Engels “on the fly” of ook wel “Just In Time”, met de bekende JIT afkorting.
De compiler vertaalt de bytcode van Gambas (in C) tijdens het uitvoeren, en gebruikt vervolgens de compiler van het systeem (meestal gcc of clang) om verder te vertalen naar de uiteindelijke machinetaal. Vladimir Makarov van de programmeertaal Ruby moet ongeveer dezelfde ideeën gehad hebben, en die zijn toegepast in versie 2.6.0 van de programmeertaal Ruby. (www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-released/).
Deze methode heeft een nadeel: ze is trager dan de vroegere compiler. Maar ze heeft het grote voordeel niet afhankelijk te zijn van de API van de soms minder betrouwbare aanwezige C compilers. In tegenstelling tot de vroegere compiler neemt de programmeertaal nu de zaak helemaal in eigen handen. Meer nog, er kunnen nu bepaalde testen uitgeschakeld worden om aan snelheid te winnen. Maar daarbij stijgt dan het risico op het crashen van het programma, bijvoorbeeld door een onmogelijke deling door nul.
Door het gebruik van de nieuwe compiler doken er kleine probleempjes op na het verschijnen van 3.12, maar die werden de daaropvolgende weken snel gerepareerd in versies 2.12.1 en 3.12.2.
Webapplicatie met grafische interface
Een andere grote ontwikkeling van Gambas 3 is de mogelijkheid om web-applicaties te maken vanuit de programmeeromgeving, alsof je een klassiek desktop programma maakt.
Nieuwe component en gebruik van de programmeeromgeving
Die nieuwe mogelijkheid is gebaseerd op een nieuwe component “gb.web.form”, die kan omgaan met javascript notering, JSON formaten en URL methodes. Met “gb.web.form” krijg je een extra form, de WebForm. Dit type van Forms dient om de grafische schermen te definiëren die in je webapplicatie gebruikt gaan worden. Ze kunnen overeen komen met klassieke html pagina’s of dialoogvensters. De component biedt dan verschillende grafische controle-elementen om te gebruiken op je Form.
(hier een voorbeeld van zo’n form: op linuxfr.org)
Werking
Het principe van een webapplicatie verschilt grondig van een typische “Modale” toepassing. De webapplicatie wordt gecompileerd tot een cgi script dat daarna draait op de server, en niet op de desktop van de gebruiker.
De browser van de gebruiker dient als interface, een soort grafische terminal. Html wordt de beschrijvig van de interface.
Er wordt zo weinig mogelijk javascript gebruikt. De handelingen van de gebruiker worden onder de vorm van http/xml requests naar het programma op de server gestuurd. Die antwoordt met de nodige javascript code om de pagina te verversen. De toestand van de grafische interface van de gebruiker wordt bewaard in de sessie van de browser. Dat is natuurlijk veel trager dan webapps die voornamelijk in de browser draaien, en het biedt minder mogelijkheden, maar het werkt toch vrij goed.
(een voorbeeld van zo’n form op linuxfr.org)
Voor gambas ontwikkelaars heeft dat bovendien het voordeel dat ze kunnen werken voor een platform dat verschilt van hun eigen Linux computer, denk aan collega unix-achtige Mac, waar spijtig genoeg geen gambas op draait.
Welkom, Git
Er zijn ook wijzigingen in de ontwikkeling, het programmeren van gambas zelf. De programmeurs van gambas zijn overgeschakeld van het subversion systeem van Sourceforge op het Git broncodebeheer systeem. De referentieversie van de ontwikkelaars vind je nu op gitlab.com.
De hoofdontwikkelaar gebruikte een jaar en een half git om het te proberen, en hij vindt het krachtiger, sneller, gemakkelijker, en betrouwbaarder. Er is letterlijk niets tegen in te brengen.
Ook de mailinglist is overgebracht van SourceForge naar een prive-server die door een gambas gebruiker beheerd wordt.
Het systeem om foutmelding te beheren, de bug-list, wordt al langer beheerd met een eigen programma dat in gambas geschreven is, en draait op de server van de werkgever van de hoofdprogrammeur.
Nu zit enkel de hoofdwebsite nog op SourceForge, maar ook daar zal verandering in komen.
Nieuwe systemen
Er zijn naast GNU/Linux op x86 steeds meer andere systemen waarop gambas compileren al lukt :
FreeBSD
NetBSD
GNU/kFreeBSD
Cygwin
(maar dat betekent niet dat de hele IDE daarop draait zoals op Linux)
En de hardware breidt uit naar ARM, ARM64, PowerPC64. (Raspberry pi!)
Er werden ook aanpassingen gedaan voor Hurd.
Software platform
Gambas heeft ook een eigen platform om programma’s te publiceren die in gambas zijn geprogrammeerd. Je kan er gambas programma’s op publiceren en van afhalen. Dat kan van in de programmeeromgeving; je kan er de lijst van programma’s zien, filteren op categorie, en de programma’s installeren en de-installeren in je werkomgeving. En natuurlijk kan je je eigen project er aan toevoegen. Ook de voorbeeldprogramma’s die vroeger bij de IDE zaten, zitten nu in dat online systeem. De ontwikkelaar noemt het de “Logithèque Gambas”.
Programmeeromgeving
De IDE of geïntegreerde programmeeromgeving, het programma waarin je werkt om gambas programma’s te schrijven, is ook verbeterd, meer bepaald de beeldbewerkingsmodule. Die liet toe zeer eenvoudige pixelbewerkingen te doen, maar is nu volledig herschreven en kan nu veel meer:
Er is nu
- mogelijkheid voor meervoudige selectie.
- booleaanse operaties op verschillende selecties, dank zij een nieuwe component, gb.clipper (waarover later meer).
- rotatie en uitrekken en verdubbelen van selecties.
- selecteren via een toverstaf
- kleurbalans, helderheid, doorzichtigheid.
- kleurenpallet, kleurverzadiging, een kleur omzetten naar transparant
Kortom, het is een kleine gimp geworden.
Intrede van gitlab
De ingebruikname van Git heeft ook gevolgen voor de grafische interface, die vroeger enkel mogelijkheden had voor Subversion. De interface is dus aangepast om ook Git te kunnen gebruiken, tot en met de git branches. Maar niets gaat boven het gebruiken van de commandolijn voor het gebruik van git, want het programma heeft zoveel mogelijkheden die je niet allemaal kan uitwerken in de grafische interface.
Er is een Git menu bijgekomen met onder het menu Publier, Synchroniser, Annuler tous les changements, Tout ajouter au référentiel, en Branche, wat de andere takken toont. Je kan het je als programmeur niet beter wensen! Bij het gebruik van de commando’s via het menu krijg je een venster met de output van git, zoals je die normaal zou zien op de commandolijn.
Apart bestand openen
De programmeeromgeving kan nu gebruikt worden om een apart bestand te wijzigen, zonder dat je er een project voor moet openen. Je kan dus snel een beeldbestandje openen, of een SQLite database aanpassen. (ps Ik zie niet direct veel verschil met vroeger, want in Gambas 3.9.2 kon dat ook al)
Bij het starten van Gambas3 kan je kiezen voor Open Bestand, en dan krijg je bv alleen het tekenprogramma als je een pixel bestand hebt gekozen. Het lijkt op de File, Open file (Bestand, Open bestand…) die je kan doen als je in een project staat, maar dan komt dat bestand in de lijst bij de bestanden van je project te staan onder “File”, en je krijgt hem er niet zo snel weer weg (tip: delete verwijdert effectief het oorspronkelijke bestand!)
Modellen
Het venster om een project te openen is herzien: het baseert zich nu op een lijst van modelprojecten. Die lijst is naar hartelust uitbreidbaar. Het volstaat een nieuw project te maken in de verborgen map ~/.local/share/gambas3/template/ en dat zal mee opgenomen worden als nieuw modelproject. Standaard lijkt die leeg te zijn.
Gambas Lettertype
Er is nu een eigen lettertype voor Gambas beschikbaar. Als je wil kan je het installeren vanuit Gereedschap, voorkeuren, Letterypen (Tools/Preferences/Fonts). Met een knop wordt dan dat lettertype geinstalleerd in je persoonlijke map. Het bestaat uit Gambas9 en Gambas10, en van beiden een vet (bold) versie. Het zijn dus bitmap lettertypes met 9 en 10 punt groote. Het lettertype bevat heel wat unicode tekens, en hoewel niet helemaal volledig, toch bruikbaarder dan heel wat andere bestaande bitmap lettertypes.
Het standaard lettertype voordien hangt af van bv je distributie; bij Ubuntu zal dat bv “Ubuntu,11″ zijn, in KDE “NotoSans,10″, enz (of ik zou ze daarnaartoe veranderd kunnen hebben).
Meer op gambas.copyleft.be