Scheme2Js

Sagteware kiekie:
Scheme2Js
Sagteware besonderhede:
Weergawe: 20101114
Upload datum: 11 May 15
Ontwikkelaar: Florian Loitsch
Lisensie: Gratis
Populariteit: 106

Rating: 3.5/5 (Total Votes: 2)

Scheme2Js is 'n skema om Javascript samesteller. Terwyl sommige poging is spandeer op om so na as moontlik aan R5rs ons hoofsaaklik op doeltreffendheid.
Gewoonlik Scheme2Js produseer Javascript kode, wat vergelykbaar is met die hand geskryf code. Ten einde hierdie prestasie te bereik, Scheme2Js is nie heeltemal R5rs voldoen. In die besonder dit ontbreek ondersteuning vir voortsettings, presiese getalle en dit behandel stert rekursie slegs gedeeltelik.
Scheme2Js bied verskeie vlae, wat toelaat dat die resultaat verander:
ย ท --no-js-dot-notasie verbied toegang tot JavaScript velde met die dot-notasie. Hierdie vlag versper besoeke van die vorm xy soos in document.getElementById. Dit is egter nog steeds moontlik om toegang tot die is 'n geldige uitdrukking gebruik van die JS-veld funksie.
ย ท --mutable-snare: om die prestasie van string-bedrywighede te verbeter en om die wisselwerking tussen die Skema en JavaScript-kode, die standaard implementering kaarte Skema snare JavaScript snare te verlig. In teenstelling met die Skema snare, JavaScript snare is egter onveranderlik. Hierdie vlag kaarte snare om 'n JavaScript-klas, wat Skema snare verteenwoordig, wat wispelturig is. Die gevolglike kode dalk effens stadiger wees, en dit is moeilik om saam met Javascript-kode.
ย ท --encapsulate-dele omvat die program in 'n anonieme funksie. Slegs globale veranderlikes is buite hierdie anonieme funksie. Aan die een kant van hierdie stel een funksie oproep na die anonieme funksie. Maar aan die ander kant die meeste Javascript implementering moet vinniger met hierdie optimization hardloop: gewoonlik hashtables gebruik word om bestek verteenwoordig in JavaScript. Deur die gebruik van 'n anonieme funksie van die programme veranderlikes word verdeel in hul eie kleiner hashtable wat (in teorie) versnel toegang tot hierdie veranderlikes. Meer belangrik die veranderlikes word gestoor in hul eie hashtable, en nie in die globale hashtable, wat toeganklik is deur die globale veranderlike. Dit is baie maklik om die inhoud van die globale veranderlikes indirek te verander. Inlining of ander gemeenskaplike optimalisaties is dus onmoontlik om te doen op globale veranderlikes. Deur die stoor veranderlikes die program se in 'n anonieme funksie hierdie optimalisaties word weer moontlik.
ย ท --optimize-var-nommer verminder die aantal veranderlikes wat in die gevolglike JavaScript-kode. Die kode kan vinniger hardloop, maar is moeilik om te ontfout, as die veranderlike name verlore en dieselfde veranderlike kan 'n paar keer gebruik word.
ย ท --optimize-terwyl: met hierdie vlag Scheme2Js optimaliseert algemene terwyl loops. Die unoptimized terwyl loops is dikwels van die vorm:
 terwyl (true) {
   As (toets)
     resVar = res;
   anders {
     modify_loop_variable;
     voort te sit;
   }
   breek;
 }
 
Dit lyk vir optimization hierdie patrone en beweeg die toets in die while lus:
 terwyl (! toets) {
   modify_loop_variable;
 }
 resVar = res;
 
Dit optimization is eers onlangs geïmplementeer en is dus nog nie by verstek geaktiveer.
ย ท --verbose druk inligting.
ย ท --no-inlining versper alle funksie inlining (konstantes dalk steeds inlined).
ย ท --inline-globals kan Scheme2Js inline globale funksies en konstantes. Dit kan twee ongewenste newe-effekte het, want een is globale veranderlikes dikwels gebruik om data oor te dra tussen verskillende modules. Sommige inlined funksies verloor as daar is geen verwysing na hulle nie. As globale funksies buite 'n module gebruik word, moet 'n mens nie hierdie vlag. (Hierdie gedrag is geneig om te verander in die toekoms weergawes van Scheme2Js.)
ย ท --unresolved-is-js: as 'n veranderlike is ongebonde, sal die samesteller aanvaar die veranderlike is afkomstig van 'n ander module, of van JavaScript. Sien Afdeling Skema - Javascript vir 'n meer gedetailleerde bespreking van die JavaScript Skema koppelvlak.
ย ท --js-dit bied die hierdie veranderlike binne Skema funksies. Op hierdie manier kan Skema prosedures gebruik word as metodes van JavaScript voorwerpe.
ย ท --no-tailrec versper die tailrec om terwyl-lus optimalisering. As jy 'n fout in die samesteller se manier van die vertaling van die stert-RECs vermoed, kan jy hierdie vlag probeer.
ย ท --no-optimaliseer-oproepe versper Scheme2Js inlining van binêre of unêre bedrywighede. Byvoorbeeld sci_plus (3, 5) is geskik om (3 + 5). Dit optimization is baie belangrik, en daar is gewoonlik geen rede om dit uit te skakel.
ย ท --no-optimaliseer-consts versper die pre-konstante berekening. Tensy gestremde (met hierdie vlag), is saamgestelde konstantes precalculated en hul voorkoms vervang deur 'n verwysing na 'n veranderlike wat die konstante. Dit maak herhaalde toegang tot hierdie konstantes vinniger, maar stel nuwe veranderlikes.
ย ท --no-optimaliseer-boolify versper die boolify optimalisering. JavaScript en boolify Skema se is nie ekwivalent: JavaScript mening valse, 0, nul en ongedefinieerde vals te wees, terwyl die Skema het #f net. Die unoptimized boolify voeg dus altyd die toets teen valse: if (toets == valse!) ... As Scheme2Js kan sien, dat die toets self is 'n boolean, kan dit verwyder die onnodige == valse toets!. Hierdie vlag deaktiveer hierdie optimalisering.
ย ท --d STAGE druk 'n dot-lêer (sien graphviz) van die AST ná stadium STAGE. Moontlike stadiums is: uit te brei, boom, simbool, node-elim1, stert, inline, konstante vermeerdering, rm-ongebruikte-VARs, vang, node-elim2, terwyl, (tt "state"), node-elim3. Gewoonlik een nie hierdie vlag nodig het, tensy vir ontfouting doeleindes.
ย ท --print-locs afdrukke van die oorspronklike plekke as kommentaar op die JavaScript-lêer. Hierdie plekke is tans die karakter geneutraliseer van die begin van die lêer

Wat is nuut in hierdie release:.

  • Minor veranderinge en bugfixes is oorgedra van Hop te Scheme2Js.

Wat is nuut in die weergawe 20100816:.

  • runtime-leser Scheme2Js 'erken nou sleutelwoorde
  • Verskeie foute is vasgestel.

Wat is nuut in die weergawe 20081219:.

  • Die samesteller het is geskik
  • Dit is nou baie vinniger en verbruik minder geheue.
  • Baie foute is vasgestel.
  • Die standaard module klousule van Scheme2Js nou soortgelyk aan die een van Bigloo.
  • Dit release ondersteun gekwalifiseerde name.

Soortgelyke sagteware

HGL Suite
HGL Suite

17 Feb 15

Intel C++ Compiler
Intel C++ Compiler

20 Feb 15

Smake
Smake

20 Feb 15

Kommentaar te Scheme2Js

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!