Scheme2Js

Skjermbilde programvare:
Scheme2Js
Prog.varedetaljer:
Versjon: 20101114
Last opp dato: 11 May 15
Utvikler: Florian Loitsch
Lisens: Gratis
Popularitet: 106

Rating: 3.5/5 (Total Votes: 2)

Scheme2Js er en ordning for å Javascript-kompilatoren. Mens noen innsats har blitt brukt på å være så nært som mulig til R5rs, konsentrerte vi hovedsakelig på effektivitet.
Vanligvis Scheme2Js produserer Javascript-kode, som kan sammenlignes håndskrevet kode. For å oppnå denne ytelsen, er Scheme2Js ikke helt R5rs kompatibel. Spesielt mangler det støtte for fortsettelser, eksakte tall, og det behandler hale rekursjon bare delvis.
Scheme2Js gir flere flagg, som gjør det mulig å endre resultatet:
ย ท --no-js-dot-notasjon forbyr tilgang til Javascript-felt med dot-notasjon. Dette flagget deaktiverer tilganger på formen xy som i document.getElementById. Det er imidlertid fortsatt mulig å få tilgang til er et gyldig uttrykk ved hjelp av js-feltet funksjon.
ย ท --mutable-strenger: for å forbedre ytelsen til streng-operasjoner og for å lette overgangen mellom Scheme og Javascript-kode, standard gjennomførings kartene Scheme strenger til Javascript-strenger. I motsetning til Scheme strenger, Javascript strenger er imidlertid uforanderlig. Dette flagget kart strenger til en Javascript-klasse, som representerer Scheme strenger, som er foranderlig. Den resulterende kode kan være litt tregere, og det er vanskeligere å kommunisere med Javascript-kode.
ย ท --encapsulate-deler innkapsler programmet inn i en anonym funksjon. Bare globale variabler er utenfor denne anonym funksjon. På den ene siden av denne innfører en funksjonskallet til den anonyme funksjon. Men på den annen side de fleste Javascript-implementeringer bør kjøre raskere med denne optimaliseringen: vanligvis hashtables brukes til å representere scopes i Javascript. Ved å bruke en anonym funksjon programmene variablene er delt opp i sin egen mindre hashtabellen som (i teorien) akselererer tilganger til disse variablene. Enda viktigere variablene er lagret i sin egen hashtabellen, og ikke i den globale hashtabellen, som er tilgjengelig med den globale variabelen. Det er svært lett å indirekte endre innholdet i globale variabler. Fletting eller andre vanlige optimaliseringer er dermed umulig å gjøre på globale variabler. Ved å lagre programmets variabler i en anonym funksjon disse optimaliseringene blir igjen mulig.
ย ท --optimize-var-nummer reduserer antall variabler som brukes i den resulterende Javascript-kode. Koden kan løpe fortere, men er vanskeligere å feilsøke, som variabelnavn er tapt og samme variabel kan brukes flere ganger.
ย ท --optimize-stund: med dette flagget Scheme2Js optimaliserer vanlig mens sløyfer. Den unoptimized mens sløyfer er ofte på formen:
 while (true) {
   if (test)
     resVar = res;
   else {
     modify_loop_variable;
     fortsetter;
   }
   break;
 }
 
Denne optimalisering ser for disse mønstrene og flytter test inn mens loop:
 while (! test) {
   modify_loop_variable;
 }
 resVar = res;
 
Dette optimalisering har blitt gjennomført nylig, og er derfor ennå ikke aktivert som standard.
ย ท --verbose skriver litt informasjon.
ย ท --no-inlining deaktiverer alle funksjoner inlining (konstanter kan fortsatt bli inlined).
ย ท --inline-globals lar Scheme2Js inline globale funksjoner og konstanter. Dette kan ha to uønskede side-effekter: For det første blir globale variabler ofte brukes til å overføre data mellom forskjellige moduler. Enkelte inlined funksjoner går tapt hvis det ikke er noen referanse til dem lenger. Hvis globale funksjoner som skal brukes utenfor en modul, bør man ikke bruke dette flagget. (Dette problemet vil sannsynligvis endres i fremtidige versjoner av Scheme2Js.)
ย ท --unresolved-er-JS: Hvis en variabel er ubundet, vil kompilatoren anta variabelen kommer fra en annen modul, eller fra Script. Se del Scheme - Javascript for en nærmere omtale av Java Scheme grensesnittet.
ย ท --js-dette gir denne variabelen innenfor ordningen fungerer. På denne måten kan Scheme prosedyrer brukes som metoder for Javascript objekter.
ย ท --no-tailrec deaktiverer tailrec til mens sløyfe optimalisering. Hvis du mistenker en feil i kompilatoren måte å oversette hale-RECS, kan du prøve dette flagget.
ย ท --no-optimalisere-samtaler deaktiverer Scheme2Js inlining av binære eller enhetlige operasjoner. For eksempel sci_plus (3, 5) blir optimalisert for å (3 + 5). Dette optimalisering er ganske viktig, og det er vanligvis ingen grunn til å deaktivere den.
ย ท --no-optimalisere-consts deaktiverer pre-konstant beregning. Med mindre deaktivert (med dette flagget), er sammensatte konstanter forhåndsberegnede og deres forekomster erstattes med en henvisning til en variabel som holder konstant. Dette gjør gjentatte tilganger til disse konstanter raskere, men introduserer nye variabler.
ย ท --no-optimalisere-boolify deaktiverer boolify optimalisering. Java og Ordningens boolify ikke er tilsvarende: Java anser falske, 0, null og udefinert å være falsk, mens bare Scheme har #f. Den unoptimized boolify derfor alltid legger testen mot falsk: if (test == false!) ... Hvis Scheme2Js kan se, at selve testen er en boolsk, kan det fjerne den unødvendige == false test!. Dette flagget deaktiverer denne optimaliseringen.
ย ท --d STAGE skriver en dot-fil (se Graphviz) av AST etter scenen STAGE. Mulige stadiene er: utvide, tre, symbol, node-elim1, hale, inline, konstant-formering, RM-ubrukt-vars, fangst, node-elim2, mens, (tt "uttalelser"), node-elim3. Vanligvis man ikke trenger dette flagget, med mindre for debugging formål.
ย ท --print-LOCS utskrifter de opprinnelige stedene som kommentarer til Javascript-fil. Disse stedene er nå tegnet-forskjøvet fra begynnelsen av filen

Hva er nytt i denne utgaven.

  • Minor endringer og feilrettinger har blitt portet fra Hop til Scheme2Js.

Hva er nytt i versjon 20100816:.

  • Scheme2Js 'runtime-leseren gjenkjenner nå søkeord
  • Flere bugs har blitt fikset.

Hva er nytt i versjon 20081219:.

  • Kompilatoren er optimalisert
  • Det er nå mye raskere og bruker mindre minne.
  • Mange bugs har blitt fikset.
  • Standardmodulen paragrafen Scheme2Js er nå ligner på en av Bigloo.
  • Denne versjonen støtter kvalifiserte navn.

Lignende programvare

CeGCC
CeGCC

3 Jun 15

gears-coffeescript
gears-coffeescript

20 Feb 15

Box
Box

19 Feb 15

Pyastra
Pyastra

3 Jun 15

Kommentarer til Scheme2Js

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!