Scheme2Js

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

Rating: 3.0/5 (Total Votes: 3)

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

daot
daot

11 May 15

purepy
purepy

14 Apr 15

PyInstaller
PyInstaller

18 Feb 15

Comentário para Scheme2Js

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