Utgivelse av programmeringsspråkoversetteren Vala 0.54.0

En ny versjon av programmeringsspråkoversetteren Vala 0.54.0 har blitt utgitt. Vala-språket er et objektorientert programmeringsspråk som gir en syntaks som ligner på C# eller Java. Vala-kode er oversatt til et C-program, som igjen kompileres av en standard C-kompilator til en binær fil og kjøres med hastigheten til en applikasjon kompilert til objektkoden til målplattformen. Det er mulig å kjøre programmer i skriptmodus. Språket utvikles i regi av GNOME-prosjektet. Gobject (Glib Object System) brukes som en objektmodell. Kompilatorkoden distribueres under LGPLv2.1-lisensen.

Språket har støtte for introspeksjon, lambda-funksjoner, grensesnitt, delegater og lukkinger, signaler og spor, unntak, egenskaper, ikke-nulltyper, typeslutning for lokale variabler (var). Minnehåndtering utføres basert på referansetelling. Et generalisert programmeringsbibliotek libgee er utviklet for språket, som gir muligheten til å lage samlinger for tilpassede datatyper. Oppregning av samlingselementer ved hjelp av foreach-setningen støttes. Programmering av grafikkprogrammer utføres ved hjelp av GTK-grafikkbiblioteket.

Settet kommer med et stort antall bindinger til biblioteker i språket C. Vala-oversetteren gir støtte for Genie-språket, som gir lignende muligheter, men med en syntaks inspirert av programmeringsspråket Python. Slike programmer som Geary e-postklient, Budgie grafiske skall, Shotwell foto- og videofilorganiseringsprogram og andre er skrevet på Vala-språket. Språket brukes aktivt i utviklingen av Elementary OS-distribusjonen.

Hovedinnovasjoner:

  • Lagt til støtte for delegater med et variabelt antall parametere;
  • Lagt til LIBC-profil, som er synonymt med POSIX-profil;
  • Forbedret generering i POSIX-profilmodus;
  • Lagt til muligheten til å deklarere variabler som kan ha en nullverdi med typen inferens (var?);
  • Lagt til muligheten til å erklære klasser forbudt for arv (forseglet);
  • Lagt til operatør for sikker tilgang til klassefelt som kan være null (a.?b.?c);
  • Tillatt initialisering av strukturinnhold til null (const Foo[] BARS = { { "bar", 42 }, null };);
  • Operasjonen resize() er forbudt for konstante matriser;
  • Lagt til advarselsutgang når du prøver å kaste et funksjonskall til void ((void)not_void_func();
  • Fjernet begrensning på GLib.Array-elementtyper;
  • Rettet "ueid var" eierskapsarv i foreach()-setningen;
  • Binding til webkit2gtk-4.0 har blitt oppdatert til versjon 2.33.3;
  • Binding til gstreamer har blitt oppdatert til versjon 1.19.0+ git master;
  • Binding til gtk4 har blitt oppdatert til versjon 4.5.0~e681fdd9;
  • Binding for gtk+-3.0 har blitt oppdatert til versjon 3.24.29+f9fe28ce
  • Binding til gio-2.0,glib-2.0 har blitt oppdatert til versjon 2.69.0;
  • For linux er bindinger til SocketCAN lagt til;
  • Rettelser i bindinger for glib-2.0, gio-2.0, gstreamer-rtp-1.0, javascriptcoregtk-4.0, gobject-2.0, pango, linux, gsl, rest-0.7, libusb, libusb-1.0, pixman-1, webkit2gtk-web- extension-4.0, x11, zlib, gnutls;
  • Fjernet gedit-2.20 og webkit-1.0 bindinger;
  • Oppdaterte bindinger basert på GIR;
  • Evnen til å sjekke generert C-kode er lagt til testsystemet;
  • Forbedret girparser, girwriter, valadoc, libvaladoc/girimporter;
  • De akkumulerte feilene og manglene til ulike kompilatorkomponenter er fikset.

Kilde: opennet.ru

Legg til en kommentar