Scheme2Js

Software skärmdump:
Scheme2Js
Mjukvaruinformation:
Version: 20101114
Ladda upp dagen: 11 May 15
Utvecklare: Florian Loitsch
Licens: Gratis
Popularitet: 6

Rating: nan/5 (Total Votes: 0)

Scheme2Js är ett system för att Javascript kompilator. Medan vissa ansträngningar har lagts ned på att vara så nära som möjligt till R5rs koncentrerade vi oss främst på effektivitet.
Vanligtvis Scheme2Js producerar Javascript-kod, är det jämförbart med handskrivna koden. För att uppnå detta resultat, är Scheme2Js inte fullständigt R5rs kompatibel. I synnerhet saknar stöd för fortsättningar, exakta siffror och det bara delvis behandlar svans rekursion.
Scheme2Js erbjuder flera flaggor, som gör det möjligt att ändra resultatet:
ย ท --no-js-dot-notation tillåter inte tillgång till JavaScript fält med dot-notation. Denna flagga inaktiverar åtkomster av formen xy som i document.getElementById. Det är dock fortfarande möjligt att komma åt är ett giltigt uttryck med hjälp av JS-fältsfunktionen.
ย ท --mutable-strängar: för att förbättra prestandan hos sträng verksamheten och för att underlätta samspelet mellan schema och JavaScript-kod, standardimplementeringen kartor Scheme strängar till JavaScript strängar. I motsats till Scheme strängar JavaScript strängar är dock oföränderliga. Denna flagga kartor strängar till en JavaScript klass, som representerar Scheme strängar, som är föränderlig. Den resulterande koden kan vara något långsammare, och det är svårare att samverka med Java-kod.
ย ท --encapsulate-delar sammanfattar programmet i en anonym funktion. Endast globala variabler ligger utanför denna anonym funktion. Å ena sidan är detta introducerar ett funktionsanrop till den anonyma funktionen. Men å andra sidan de flesta Javascript implementationer bör köra snabbare med denna optimering: vanligtvis hashtables används för att representera omfattningar i JavaScript. Genom att använda en anonym funktion programmen variablerna separeras i sina egna mindre hashtable som (i teorin) accelererar åtkomst till dessa variabler. Ännu viktigare variablerna lagras i sitt eget hashtabell, och inte i den globala hashtable, som är tillgänglig med den globala variabeln. Det är oerhört enkelt att indirekt ändra innehållet i globala variabler. Inlining eller andra vanliga optimeringar är därför omöjligt att göra på globala variabler. Genom att lagra programmets variabler i en anonym funktion dessa optimeringar blir åter möjligt.
ย ท --optimize-var-nummer minskar antalet variabler som används i den resulterande JavaScript-kod. Koden kan köras snabbare, men är svårare att felsöka, såsom variabelnamnen går förlorade och samma variabel kan användas flera gånger.
ย ท --optimize-stund: med denna flagga Scheme2Js optimerar vanligt medan slingor. Den unoptimized medan slingorna är ofta på formen:
 while (true) {
   if (test)
     resVar = res;
   else {
     modify_loop_variable;
     fortsätta;
   }
   break;
 }
 
Denna optimering söker efter dessa mönster och flyttar testet i while-slingan:
 medan (! test) {
   modify_loop_variable;
 }
 resVar = res;
 
Denna optimering har genomförts helt nyligen och därför ännu inte aktiverad som standard.
ย ท --verbose skriver viss information.
ย ท --no-inlining avaktiverar alla funktioner inlining (konstanter kan fortfarande infogade).
ย ท --inline-globals låter Scheme2Js inline globala funktioner och konstanter. Detta kan ha två oönskade biverkningar: en, är globala variabler som ofta används för att överföra data mellan olika moduler. Vissa infogade funktioner går förlorade om det inte finns någon hänvisning till dem längre. Om globala funktioner ska användas utanför en modul, bör man inte använda denna flagga. (Detta beteende är sannolikt att ändras i framtida versioner av Scheme2Js.)
ย ท --unresolved-är-js: Om en variabel är obunden, kommer kompilatorn antar variabeln kommer från en annan modul, eller från JavaScript. Se Avsnitt Scheme - Javascript för en utförligare diskussion om JavaScript Scheme gränssnittet.
ย ท --js-detta ger denna variabel i Scheme funktioner. På så sätt kan Scheme förfaranden användas som metoder för JavaScript-objekt.
ย ท --no-tailrec inaktiverar tailrec till while-slinga optimering. Om du misstänker att en bugg i kompilatorn sätt att översätta stjärt recs, kan du prova den här flaggan.
ย ท --no-optimera-samtal inaktiverar Scheme2Js inlining av binära eller unära verksamhet. Exempelvis sci_plus (3, 5) är optimerad för att (3 + 5). Denna optimering är ganska viktigt, och det finns oftast ingen anledning att stänga av den.
ย ท --no-optimera-consts inaktiverar pre-konstant beräkning. Om funktionshindrade (med flagga), är sammansatta konstanter förberäknas och deras förekomster ersättas med en hänvisning till en variabel håller konstant. Detta gör upprepade åtkomster till dessa konstanter snabbare, men introducerar nya variabler.
ย ท --no-optimera-boolify inaktiverar boolify optimering. JavaScript: s och systemets boolify inte är likvärdiga: JavaScript anser falskt, 0, null och undefined sig vara falsk, medan schema har bara #F. Den unoptimized boolify därför alltid lägger testet mot falsk: if (prov == falskt!) ... Om Scheme2Js kan se, att testet i sig är ett booleskt, kan det ta bort onödiga == falska test!. Denna flagga inaktiverar denna optimering.
ย ท --d STAGE skriver en dot-fil (se graphviz) av AST efter scenen scenen. Möjliga stegen är: expandera, träd, Symbol, nod-elim1, svans, inline, konstant förökning, RM-oanvänd-Vars, fånga, nod-elim2, medan (tt "statements"), nod-elim3. Vanligtvis behöver man inte denna flagga, utom för felsökning.
ย ท --print-Locs skriver de ursprungliga platser som kommentarer till JavaScript-filen. Dessa platser är för närvarande tecken förskjutning från början av filen

Vad är nytt i den här versionen.

  • Minor förändringar och buggfixar har portats från Hop till Scheme2Js.

Vad är nytt i version 20100816:.

  • Scheme2Js "runtime-läsare känner igen nu nyckelord
  • Flera buggar har åtgärdats.

Vad är nytt i version 20081219:.

  • Kompilatorn har optimerats
  • Det är nu mycket snabbare och förbrukar mindre minne.
  • Många buggar har åtgärdats.
  • Standardmodulen klausul Scheme2Js är nu liknar den av bigloo.
  • Den här versionen stöder kvalificerade namn.

Liknande mjukvara

pyPEG
pyPEG

14 Apr 15

Pre Make Kit
Pre Make Kit

3 Jun 15

daot
daot

11 May 15

Jikes
Jikes

3 Jun 15

Kommentarer till Scheme2Js

Kommentarer hittades inte
Kommentar
Slå på bilder!