Saadaval on GNU Guile 3.0.10 programmeerimiskeel.

Välja on antud GNU Guile 3.0.10, avatud lähtekoodiga funktsionaalne programmeerimiskeel Scheme, mis toetab koodi manustamist rakendustes, mis on kirjutatud teistes programmeerimiskeeltes. Guile'i saab kasutada rakenduste laienduste arendamiseks, konfiguratsiooni määratlemiseks või erinevate rakenduse pakutavate primitiivide ühendamiseks mõeldud komponentide loomiseks. Guile on ametlik laienduste arendamise keel GNU operatsioonisüsteemis.

Guile'i aluseks on virtuaalne masin, mis kasutab spetsiaalse optimeeriva kompilaatori genereeritud ülekantavate käskude kogumit. Guile'i virtuaalne masin integreerub hõlpsasti rakenduste koodiga C ja C++ keeltes. Lisaks Scheme keelele, mille jaoks on ellu viidud R5RS, R6RS ja R7RS spetsifikatsioonide tugi, on Guile'i projektis arendatud kompilaatoreid ka teistele keeltele nagu ECMAScript, Emacs Lisp ja Lua (arendamine on käimas). Paketi koosseisu kuulub modulisüsteem, mis rakendab tüüpilisi teenusefunktsioone, nagu HTTP protokolli töötlus, XML-i püsimine ja objektorienteeritud programmeerimise meetodite kasutamine.

Uue väljaande muudatused:

  • On rakendatud katsemeetod väliste tagaplaanide kasutamiseks. Arendajatele on antud võimalus kasutada olemasolevat front-end'i, mis muundab lähtekoodi sisemisse vormi, ja Guile'i optimeerijat koos teiste tagaplaanide, mis teostavad koodi genereerimist.
  • Esitleti välist tagaplaani hoot, et genereerida vahepealne kood WebAssembly jaoks, mida saab käitada brauseris. Tulevikus ei ole välistatud WebAssembly lisamine Guile'i toetatavate põhieesmärkide hulka.
  • Mõisted 'define' on lubatud kasutada väljendite 'when', 'unless', 'cond', 'case', 'and-let*' ja 'with-fluids' kontekstis.
  • Lisatud on toetust custom portide mehhanismile, mis on kirjeldatud Scheme R6RS keelde ja mis võimaldab ühendata töötlejaid andmete töötlemiseks (nt tihendamine/mahu taastamine või tähemärkide kodeeringu muutmine), mida kasutatakse sellistes funktsioonides nagu
    read, write ja display. Guile'is on ka pakutud moodulit '(ice-9 soft-ports)', mis pakub 'soft port' liidest, mille eesmärk on olla lihtsam analoog 'custom ports' jaoks.
  • Lisatud on toetust lihtsustatud wisp süntaksile, mis võimaldab kirjutada loetavamat koodi, näiteks:

    define : factorial n
    if : zero? n
    . 1
    * n : factorial (- n 1)
    display : factorial 5
    newline

    asetatakse

    (define (factorial n)
    (if (zero? n)
    1
    (* n (factorial (- n 1)))))

    (display (factorial 5))
    (newline)

  • Kompilaatoris on rakendatud uus hoiatuse süsteem, mis annab teateid juhul, kui imporditakse mooduleid, mille funktsioone ei kasutata.
  • Lisatud on uus annotatsioon 'maybe-unused', mis vähendab hoiatusi kasutamata protseduuride kohta.
  • Kutsesteki jälgimise väljund lõigatakse nüüd 500 sümbolini, mitte 80 (seda saab muuta parameetri default-frame-width kaudu).
  • Protseduurile «copy-file» on lisatud parameeter «#:copy-on-write», mis võimaldab kasutada copy-on-write mehhanismi toetavates failisüsteemides.
  • Lisatud on optimeerimine, mis tagab inline-näidete kuvamise keyword-argumendiga protseduurikutsungitel.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster