ĂshtĂ« publikuar versioni GNU Guile 3.0.10, njĂ« implementim tĂ« lirĂ« tĂ« gjuhĂ«s funksionale tĂ« programimit Scheme, i cili mbĂ«shtet mundĂ«sinĂ« e integrimit tĂ« kodit nĂ« aplikacione tĂ« tjera programimi. Guile mund tĂ« pĂ«rdoret si njĂ« gjuhĂ« pĂ«r zhvillimin e shtesave pĂ«r aplikacione, pĂ«r pĂ«rcaktimin e konfigurimeve, ose pĂ«r zhvillimin e komponentĂ«ve pĂ«r lidhjen e primitivave tĂ« ndryshĂ«m, qĂ« ofrohen nga aplikacioni. Guile Ă«shtĂ« gjuhĂ« zyrtare pĂ«r zhvillimin e shtesave pĂ«r sistemin operativ GNU.
Baza e Guile Ă«shtĂ« ĐČĐžŃŃŃалŃĐœĐ°Ń ĐŒĐ°ŃĐžĐœĐ°, e cila ekzekuton njĂ« grup udhĂ«zimesh tĂ« pĂ«rcjellshme, tĂ« gjeneruara nga njĂ« kompjuter optimizues tĂ« specializuar. Makina virtuale Guile lehtĂ« integrohet me kodin e aplikacioneve nĂ« gjuhĂ«t C dhe C++. PĂ«rveç gjuhĂ«s Scheme, pĂ«r tĂ« cilĂ«n Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r specifikimet R5RS, R6RS dhe R7RS, nĂ« kuadĂ«r tĂ« projektit Guile janĂ« zhvilluar kompajlerĂ« edhe pĂ«r gjuhĂ« tĂ« tjera, si ECMAScript, Emacs Lisp dhe Lua (nĂ« proces zhvillimi). Paketimi pĂ«rmban njĂ« bibliotekĂ« modulash, nĂ« tĂ« cilĂ«t janĂ« implementuar funksione tipike shĂ«rbimi, si puna me protokollin HTTP, analizimi i XML dhe pĂ«rdorimi i metodave tĂ« programimit me objekt.
Ndryshimet në publikimin e ri përfshijnë:
- ĂshtĂ« zbatuar njĂ« ndĂ«rfaqe eksperimentale pĂ«r pĂ«rdorimin e backend-eve tĂ« jashtme. ĂshtĂ« dhĂ«nĂ« mundĂ«sia pĂ«r zhvilluesit tĂ« pĂ«rdorin frontend-in ekzistues, i cili transformon kodin burim nĂ« njĂ« pĂ«rfaqĂ«sim tĂ« brendshĂ«m dhe optimizuesin Guile, sĂ« bashku me backend-e tĂ« tjera qĂ« kryejnĂ« gjenerimin e kodit.
- ĂshtĂ« prezantuar backend-i i jashtĂ«m hoot pĂ«r gjenerimin e kodit ndĂ«rmjetĂ«s WebAssembly, i cili mund tĂ« ekzekutohet nĂ« shfletues. NĂ« tĂ« ardhmen, nuk pĂ«rjashtohet pĂ«rfshirja e WebAssembly nĂ« listĂ«n e qĂ«llimeve kryesore tĂ« mbĂ«shtetjes sĂ« kompilimit nĂ« Guile.
- ĂshtĂ« lejuar pĂ«rdorimi i definicioneve "define" nĂ« kontekstin e shprehjeve "when", "unless", "cond", "case", "and-let*" dhe "with-fluids".
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r mekanizmin e porta tĂ« personalizuara, i cili Ă«shtĂ« pĂ«rshkruar nĂ« dialektin e gjuhĂ«s Scheme R6RS dhe lejon lidhjen e trajtuesve pĂ«r transformimin e tĂ« dhĂ«nave (p.sh., kompresim/zhvishje ose ndryshim i kodimit tĂ« simboleve), tĂ« pĂ«rpunuara nĂ« funksione tĂ« tilla si
read, write dhe display. NĂ« Guile Ă«shtĂ« ofruar gjithashtu moduli "(ice-9 soft-ports)", i cili ofron njĂ« ndĂ«rfaqe "soft port", e cila pozicionohet si njĂ« analog mĂ« i thjeshtĂ« i "custom ports". - ĂshtĂ« shtuar mbĂ«shtetje pĂ«r sintaksĂ«n e thjeshtĂ«zuar wisp, e cila lejon shkruarjen e kodit mĂ« tĂ« lexueshĂ«m, pĂ«r shembull:
defino : faktoriel n
nëse : zero? n
. 1
* n : faktoriel (- n 1)
shfaq : faktoriel 5
newlinenë vend të
(defino (faktoriel n)
(nëse (zero? n)
1
(* n (faktoriel (- n 1)))))(shfaq (faktoriel 5))
(newline) - Në kompilator është realizuar një paralajmërim të ri, i cili jepet në rastin e importimit të moduleve në kodin, të cilat funksionet e tij nuk përdoren.
- ĂshtĂ« shtuar njĂ« annotim i ri «maybe-unused», i cili shtyp paralajmĂ«rimet mbi mos pĂ«rdorim tĂ« procedurave.
- Shfaqja e gjurmëve të stack-ut tani pritet në kufirin 500 karaktere, e jo 80 (mund të ndryshohet përmes parametrave default-frame-width).
- Në procedurën «kopjo-skedarin» është shtuar parametri «#:copy-on-write», që lejon përdorimin e mekanizmit copy-on-write në sistemet e skedarëve që e mbështesin atë.
- ĂshtĂ« shtuar njĂ« optimizim, qĂ« siguron zhvillimin inline tĂ« thirrjeve tĂ« procedurave me argumente keyword.
Burimi: opennet.ru
