GNU Guile 3.0 is uitgebracht

vond plaats релиз GNU Guile 3.0, een gratis implementatie van een functionele programmeertaal schema, dat de mogelijkheid ondersteunt om code in toepassingen in andere programmeertalen in te sluiten. Guile kan worden gebruikt als taal om applicatie-uitbreidingen te ontwikkelen, configuraties te definiëren of componenten te ontwikkelen om de verschillende primitieven die door de applicatie worden geleverd met elkaar te verbinden. Guile is de officiële extensie-ontwikkeltaal voor het GNU-besturingssysteem.

De kern van Guile is een efficiënte virtuele machine die een draagbare set instructies uitvoert die is gegenereerd door een speciale optimaliserende compiler. De virtuele machine van Guile kan eenvoudig worden geïntegreerd met applicatiecode in C en C++. Naast de Scheme-taal, waarvoor specificatieondersteuning is geïmplementeerd R5RS, R6RS и R7RS, heeft het Guile-project compilers ontwikkeld voor andere talen, zoals ECMAScript, Emacs Lisp en Lua (in ontwikkeling). Het pakket bevat een bibliotheek met modules die standaard servicefuncties implementeren, zoals het werken met het HTTP-protocol, XML-parsing en het gebruik van objectgeoriënteerde programmeermethoden.

De belangrijkste innovatie in GNU Guile 3.0 was de introductie van een JIT-compiler, naast de eerder aangeboden interpreter en bytecode-compiler, uitgevoerd in een speciale virtuele machine die aan de applicatie was gekoppeld in de vorm van een bibliotheek. Met JIT kunt u on-the-fly machinecode genereren en wordt de uitvoering van Guile-applicaties aanzienlijk versneld (tests laten een snelheid tot 4 keer zien). De JIT-compiler ondersteunt x86-64-, i686-, ARMv7- en AArch64-architecturen.

Enkele andere verbeteringen:

  • Ondersteuning voor de nieuwe Scheme-taalspecificatie R7RS en bibliotheekmodules die daarin zijn gedefinieerd;
  • De virtuele machine van Guile biedt ondersteuning voor bytecode op een lager niveau, waardoor geavanceerde optimalisaties mogelijk zijn;
  • Ondersteuning voor het combineren van interne definities en expressies (bijvoorbeeld "(define _ (begin (foo) #f))");
  • Er wordt een uniforme implementatie van een gestructureerd gegevenstype (“records”) voorgesteld;
  • Primitieven voor het omgaan met uitzonderingen (gooien en vangen) zijn herwerkt;
  • Gedefinieerde bindingen voor uitgebreide syntaxis "else", "=>", "..." en "_";
  • In http-request, http-get en andere procedures gerelateerd aan de webclient is de mogelijkheid toegevoegd om inhoud te downloaden via een gecodeerd communicatiekanaal met behulp van TLS met correcte certificaatverificatie.

Bron: opennet.ru

Voeg een reactie