Scheme2Js

Tela Software:
Scheme2Js
Detalhes de Software:
Versão: 20101114
Data de upload: 11 May 15
Revelador: Florian Loitsch
Licença: Livre
Popularidade: 6

Rating: nan/5 (Total Votes: 0)

Scheme2Js é um esquema para compilador Javascript. Embora algum esforço tem sido gasto em ser o mais próximo possível para R5rs, nós nos concentramos principalmente na eficiência.
Normalmente Scheme2Js produz o código Javascript, que é comparável ao código escrito à mão. A fim de alcançar este desempenho, Scheme2Js não é completamente compatível R5rs. Em particular, não tem suporte para continuações, números exatos e trata cauda recursão apenas parcialmente.
Scheme2Js fornece várias bandeiras, que permitem modificar o resultado:
ย ท --no-js-notação de ponto não permite o acesso a campos de JavaScript com a notação de ponto. Este sinalizador desativa acessos da forma como xy em document.getElementById. No entanto, é ainda possível acessar a é uma expressão válida utilizando a função js-campo.
ย ท --mutable-cordas: a fim de melhorar o desempenho de corda-operações e facilitar a interface entre esquema e código JavaScript, a implementação padrão cordas Esquema de mapas para cordas de JavaScript. Ao contrário do Esquema de cordas, cordas JavaScript são no entanto imutável. Isso mapeia bandeira cordas a uma classe JavaScript, que representa cordas regime, que são mutáveis. O código resultante pode ser um pouco mais lenta e é mais difícil fazer a interface com o código Javascript.
ย ท --encapsulate-peças encapsula o programa em uma função anônima. Apenas variáveis ​​globais estão fora desta função anônima. Por um lado, ela introduz uma chamada de função para a função anônima. Mas por outro lado, a maioria das implementações de JavaScript deve correr mais rápido com essa otimização: geralmente hashtables são usados ​​para representar os escopos em JavaScript. Ao usar uma função anônima os programas variáveis ​​são separados em sua própria hashtable menor que (em teoria) acelera os acessos a essas variáveis. Mais importante que as variáveis ​​são armazenadas em sua própria hashtable, e não no hashtable global, que é acessível pela variável global. É extremamente fácil de modificar indirectamente o conteúdo de variáveis ​​globais. Inlining ou outras otimizações comuns são, portanto, impossível de se fazer em variáveis ​​globais. Ao armazenar variáveis ​​do programa em uma função anônima essas otimizações se tornar novamente possível.
ย ท --optimize-var-número reduz o número de variáveis ​​utilizadas no código JavaScript resultante. O código pode correr mais rápido, mas é mais difícil para depurar, como os nomes das variáveis ​​são perdidas ea mesma variável pode ser usado várias vezes.
ย ท --optimize-while: com esta bandeira Scheme2Js otimiza comum, enquanto loops. O unoptimized while são muitas vezes da forma:
 while (true) {
   se (teste)
     resVar = res;
   else {
     modify_loop_variable;
     continuar;
   }
   break;
 }
 
Essa otimização procura por esses padrões e move o teste para o loop while:
 enquanto (teste!) {
   modify_loop_variable;
 }
 resVar = res;
 
Essa otimização foi implementado apenas recentemente e é, portanto, ainda não ativado por padrão.
ย ท --verbose imprime algumas informações.
ย ท --no-inlining desativa todos inlining função (constantes ainda pode ser embutido).
ย ท --inline-globals permite Scheme2Js embutidos funções globais e constantes. Isso pode ter dois efeitos colaterais indesejados: por um lado, as variáveis ​​globais são muitas vezes utilizados para transferir dados entre diferentes módulos. Algumas funções sequenciais são perdidos se não houver nenhuma referência a eles anymore. Se as funções globais devem ser usadas fora de um módulo, não se deve utilizar esta bandeira. (Este comportamento é provável mudar em futuras versões do Scheme2Js.)
ย ท --unresolved-js é: se uma variável é não associada, o compilador irá assumir a variável vem de outro módulo, ou a partir de JavaScript. Ver Esquema Seção - Javascript para uma discussão mais detalhada da interface Esquema JavaScript.
ย ท --js-isto fornece a esta variável dentro de funções Scheme. Desta forma, procedimentos de esquema pode ser usado como métodos de objetos JavaScript.
ย ท --no-tailrec desativa o tailrec para otimização while-loop. Se você suspeitar de um bug no caminho do compilador de traduzir cauda-CER, você pode tentar esta bandeira.
ย ท --no-otimizar-chamadas desativa Scheme2Js inlining de operações binárias ou unários. Por exemplo sci_plus (3, 5) é optimizado para a (3 + 5). Essa otimização é muito importante, e geralmente não há razão para desativá-lo.
ย ท --no-optimize-consts desativa o cálculo pré-constante. A não ser desativada (com esta bandeira), as constantes compostos são pré-calculados e suas ocorrências substituída por uma referência a uma variável que contém a constante. Isso faz com que repetidas de acessos a estas constantes mais rápido, mas introduz novas variáveis.
ย ท --no-optimize-boolify desativa a otimização boolify. Boolify do Esquema de JavaScript e não são equivalentes: JavaScript considera falsa, 0, null e undefined ser falsa, enquanto Scheme só tem #f. O boolify unoptimized, portanto, sempre adiciona o teste contra a falsa: if (teste == false!) ... Se Scheme2Js pode ver, que o teste em si é um booleano, pode remover o desnecessário == teste falso!. Este sinalizador desativa esta otimização.
ย ท --d STAGE imprime um arquivo de ponto (ver graphviz) da AST após Palco. Estágios possíveis são: expandir, árvore, símbolo, nó-elim1, cauda, ​​inline, constante de propagação, rm-unused-Vars, captura, nó-elim2, enquanto, (tt "declarações"), nó-elim3. Normalmente não é necessário esta bandeira, a não ser para fins de depuração.
ย ท impressões --print-locs os locais originais como comentários no arquivo JavaScript. Esses locais são atualmente a partir do início do arquivo compensar personagem-

O que é novo nesta versão:.

  • Minor mudanças e correções de bugs foram portados desde Hop para Scheme2Js.

O que é novo na versão 20100816:.

  • runtime-reader 'Scheme2Js agora reconhece palavras-chave
  • Vários bugs foram corrigidos.

O que é novo na versão 20081219:.

  • O compilador foi otimizado
  • Agora, é muito mais rápido e consome menos memória.
  • Muitos bugs foram corrigidos.
  • A cláusula módulo padrão de Scheme2Js agora é semelhante ao de Bigloo.
  • Esta versão suporta nomes qualificados.

Programas semelhantes

gears-handlebars
gears-handlebars

20 Feb 15

CodeViz
CodeViz

3 Jun 15

clig
clig

3 Jun 15

Comentário para Scheme2Js

Comentários não encontrado
Adicionar comentário
Ligue imagens!