Nimrod

Tela Software:
Nimrod
Detalhes de Software:
Versão: 0.9.2
Data de upload: 20 Feb 15
Revelador: Andreas Rumpf
Licença: Livre
Popularidade: 16

Rating: nan/5 (Total Votes: 0)

Nimrod é uma fonte aberta, tipagem estática, linguagem de programação livre, imperativo concebido para apoiar estilos de programação genéricos e funcionais processual, orientada a objeto, mantendo-se eficiente e simples.
Nimrod é capaz de árvore de sintaxe abstrata (AST), como parte de uma especificação, permitindo um poderoso sistema de macro que pode ser usado para criar linguagens específicas de domínio. Uma característica herdada do Lisp.
O software apresenta geração de código nativo, coleta de lixo, iterators zero aéreas, operadores defineable pelo usuário, tipos de dados de alto nível, compilar avaliação de tempos, compability frente, GTK2, API do Windows, POSIX ligações API, um sistema analisador plugable, um gerador de documentação, e uma Pascal para Nimrod utilitário de conversão.
Nimrod é portátil, o que significa que ele pode rodar em Linux, BSD, Mac OS & nbsp; X & nbsp; e sistemas operacionais Windows

O que é novo nesta versão:.

  • Bugfixes:
  • O antigo GC nunca recebidos ciclos corretamente. Corrigido mas pode causar regressões de performance. No entanto, você pode desativar o coletor ciclo com GC_disableMarkAndSweep e executá-lo explicitamente em momento oportuno ou não em todos. Há também um novo GC você pode ativar com --gc:. MarkAndSweep que não tem esse problema, mas é mais lento, em geral, e não tem garantias em tempo real
  • elenco para tipos de ponto flutuante agora faz o bitcast conforme especificado no manual. Isso quebra o código que utiliza erroneamente elenco para converter diferentes valores de ponto flutuante.
  • desempenho do módulo SCGI foi melhorado muito, ele deixará de bloquear em muitas solicitações simultâneas.
  • No total fixo mais de 70 questões github e se fundiu com mais de 60 solicitações de tração.
  • Biblioteca Adições:
  • Não é uma nova marca e varredura GC experimental que pode ser mais rápido (ou muito mais lenta) do que o GC padrão. Ativar com --gc:. MarkAndSweep
  • Adicionado system.onRaise para suportar um sistema estado.
  • system.locals acrescentou que permite o acesso a moradores de um proc.
  • macros.quote Adicionado para AST quase citando.
  • Adicionado system.unsafeNew para apoiar objetos de comprimento variável hacky.
  • system.fields e apoio system.fieldPairs objeto também; eles costumavam apenas tuplas de apoio.
  • Adicionado system.CurrentSourcePath retornar o caminho do sistema de arquivo completo do arquivo de origem atual.
  • O módulo de macros agora contém grande quantidade de ajudantes úteis para a construção de árvores de sintaxe abstrata.
  • Alterações que afetam compatibilidade com versões anteriores:
  • compartilhada é uma palavra-chave agora.
  • Deprecated sockets.recvLine e asyncio.recvLine, acrescentou readLine vez.
  • A maneira recuo é tratado no parser mudou significativamente. No entanto, isso afeta muito pouco (se houver) código mundo real.
  • A unificação expressão / declaração foi implementado. Mais uma vez isso afeta somente casos de ponta e não sabido código mundo real.
  • Alterada a interface assíncrona do módulo scgi.
  • widestrings agora são lixo coletado como outros tipos de cadeia.
  • As adições do compilador:
  • O comando doc2 não gera resultados para todo o projeto mais. Use o novo interruptor --project para permitir esse comportamento.
  • O compilador pode agora alertar sobre variáveis ​​locais sombreados. No entanto, isso precisa ser ligado explicitamente via --warning [ShadowIdent]:. On
  • O compilador agora suporta quase todos os pragma em um impulso pragma.
  • conversores genéricos foram implementadas.
  • Adicionado um pragma noforward altamente experimental que permite um modo de compilação especial que elimina grande parte da necessidade de declarações para a frente.
  • Adições da língua:
  • expressões de caso são agora suportadas.

  • Construtores
  • Tabela agora imitar mais de perto a sintaxe da instrução caso.
  • Nimrod agora pode inferir o tipo de retorno de um proc de seu corpo.
  • Adicionado uma declaração mixin para afetar símbolo regras vinculativas em genéricos.
  • rastreamento exceção foi adicionado e o comando doc2 anota exceções possíveis para você.
  • efeitos definido pelo usuário (& quot; tags & quot;). Rastreamento foi adicionado eo comando doc2 anota tags possíveis para você
  • Tipos podem ser anotados com a nova sintaxe não nil afirmar explicitamente que nil não é permitido. No entanto atualmente o compilador não executa nenhuma verificação para este estática avançado; por enquanto é apenas para fins de documentação.
  • Uma declaração de exportação tenha sido adicionado à linguagem: Ele pode ser usado para o encaminhamento de símbolo tão módulos de cliente não tem que importar dependências de um módulo explicitamente
  • .
  • Sobrecarga baseado em ASTs foi implementado.
  • Os genéricos são agora suportadas para multi métodos.
  • Os objetos podem ser inicializado através de uma expressão construtor do objeto.
  • Não é uma nova construção sintática (;) expressões unificadores e declarações
  • .
  • Você pode agora usar a partir de módulo de importação nulo se você deseja importar o módulo, mas deseja impor acesso totalmente qualificado para cada símbolo no módulo.

O que é novo na versão 0.8.14:.

  • Corrigido um corrupção de memória séria sobre a passagem de mensagens
  • Corrigido um erro grave relativos a diferentes instâncias de um proc genérico.
  • Corrigido um bug recém-introduzido onde uma exceção errado EIO foi levantada para o final de arquivo para arquivos de texto que não terminam com uma nova linha.
  • c2nim Bugfix, c2pas: a opção --out nunca funcionou corretamente
  • .
  • Correção:. Envio de procs genéricos nunca trabalhou
  • Alguns mais correções de bugs para macros e em tempo de compilação de avaliação.
  • O GC agora leva em conta os ponteiros interiores na pilha que podem ser introduzidas por otimizadores C agressivos.
  • alocador nativo do Nimrod / GC agora trabalha em PowerPC.
  • Lotes de outras correções de bugs:. Muitos para enumerá-los todos

O que é novo na versão 0.8.6:

  • Bugfixes:
  • Os pragmas dica [X]: off e alerta [X]: off agora trabalhar
  • .
  • sintaxe de chamada Método para iterators funciona novamente (para x em lines.split ()).
  • Corrigido um erro de digitação no RemoveDir para POSIX que levam a uma recursão infinita.
  • O compilador agora verifica que nomes de arquivos de módulo são identificadores válidos.
  • padrões vazios para o pragma dynlib são agora possíveis.
  • os.parseCmdLine retornou resultados errados para espaços em branco.
  • uso tupla inconseqüente (usando a mesma tupla com e sem campos denominados) não falha o gerador de código mais.
  • A melhor mensagem de erro é fornecida quando o carregamento de um proc dentro de uma lib dinâmico falha.
  • Adições:
  • system.contains Adicionado para matrizes abertas.
  • O módulo PEG agora suporta a busca operador de loop @.
  • Gramática / parser: SAD | IND é permitido antes de qualquer tipo de fechar suporte. Isso permite mais flexível código-fonte formatação.
  • O compilador agora usa uma tabela de ligação para o símbolo de pesquisa dentro de um contexto de ligação. (Veja modelos manual.html # para mais detalhes).
  • descarte & quot; & quot; & quot; o meu comentário longo & quot; & quot; & quot; agora é otimizado de distância.
  • Novos --floatChecks: on | off switches e pragmas para uma melhor depuração de operações de ponto flutuante. (Veja manual.html # pré-definida pelo-Point-tipos flutuante para detalhes).
  • O manual foi melhorada. (Muito obrigado a Philippe Lhoste!)
  • Alterações que afetam compatibilidade com versões anteriores:
  • O compilador não pular a etapa que liga mais, mesmo se nenhum arquivo foi alterado.
  • os.splitFile (& quot; .xyz & quot;) agora retorna (& quot; & quot ;, & quot; .xyz & quot ;, & quot; & quot;) em vez de (& quot; & quot ;, & quot; & quot ;, & quot; .xyz & quot; ). Os nomes de arquivos começam com um ponto são tratados de forma diferente.
  • strutils.split (s: string, seps: set [CAR]) nunca produz a cadeia vazia anymore. Este comportamento é provavelmente mais apropriado para dividir espaços em branco.
  • O compilador agora pára após a opção de linha de comando --version.
  • eliminou o apoio a herança enum no analisador; herança enum nunca foi documentada de qualquer maneira.
  • O campo msg de system.E_base tem agora o tipo string, em vez de cstring. Isso melhora a segurança de memória.

O que é novo na versão 0.8.2:

  • Bugfixes:
  • Passando --hint [X]: off ou --warning [X]:. Off como argumentos de linha de comando para o compilador agora trabalha
  • parâmetros padrão para modelos agora trabalhar.
  • problema de segurança fixo em system.copy.
  • caso de Cordas sem uma parte else gerado código errado.
  • Várias correções para o módulo osproc; agora funciona no Windows.
  • Adições:
  • multi-métodos implementados.
  • O compilador agora detecta o número de processadores disponíveis e executa o compilador C simultaneamente. Isto pode ser ajustado pelo --parallel_build:. Opção de linha de comando number_of_processors
  • padrão com base em PEG correspondentes através do módulo de pinos.
  • Adicionado system.definedInScope.
  • Adicionado system.accumulateResult.
  • Adicionado os.walkDirRec.
  • osproc.countProcessors Adicionado.
  • Adicionado osproc.execProcesses.
  • O sistema de configuração agora suporta $ cc.options.linker.
  • Incorporada expr e TYPEDESC na gramática / parser.: Isto irá permitir procs anônimos sem lambda
  • Muitos scripts não têm necessidade de um GC: O novo --gc: opção de linha de comando, ninguém pode ser usada para excluir o GC do executável
  • .
  • Alterações que afetam trás compability:
  • Tomar o endereço de uma discriminante objeto agora é inválido.
  • Passar um proc a um proc var só é permitida para procs marcados com procvar ou uma convenção de chamada! = Nimcall. Por agora isso só faz com que um aviso, mas isso vai se transformar em um erro em breve.
  • sistema. & E system.add agora receber openArray em vez de parâmetros seguintes.
  • Removido strutils.findSubStr e strutils.findChars. Eles foram reprovados por 3 versões.
  • O módulo unicode usa um tipo distinto para TRune.
  • Deprecated strutils.toString: use $ em vez
  • .
  • Deprecated os.splitPath:. Uso os.splitPath que retorna uma tupla em vez
  • Deprecated os.extractDir:. Usar SplitFile (path) .dir vez
  • Deprecated os.splitFilename: usar SplitFile vez
  • .
  • Deprecated os.extractFileExt: usar SplitFile vez
  • .
  • Deprecated os.extractFileTrunk: usar SplitFile vez
  • .
  • Deprecated os.appendFileExt: usar os.addFileExt vez
  • .
  • Deprecated os.executeShellCommand: usar os.execShellCmd vez
  • .
  • Deprecated os.iterOverEnvironment:. Uso os.envPairs vez
  • parseopt.init reprovados: usar parseopt.initOptParser vez
  • .
  • Deprecated parseopt.getRestOfCommandLine: usar parseopt.cmdLineRest vez
  • .
  • Deprecated os.pcDirectory: usar os.pcDir vez
  • .
  • Deprecated os.pcLinkToDirectory: usar os.pcLinkToDir vez
  • .
  • Deprecated osproc.executeProcess: usar osproc.execProcess vez
  • .
  • Deprecated osproc.executeCommand: usar osproc.execCmd vez
  • .

O que é novo na versão 0.8.0:

  • Bugfixes:
  • fixado um pequeno bug que fazia com que o compilador não denunciar símbolos sobrecarregados não utilizados
  • fixado um pequeno bug relativo símbolo sobrecarga
  • fixa um erro de digitação: é & quot; ambígua & quot ;, não & quot; ambigious & quot; ; -)
  • o compilador detecta agora recursiva incluir arquivos
  • system.card deve trabalhar novamente
  • itens para o jogo [CAR] e array [char, T] deve funcionar agora
  • Adições:
  • tipos genéricos implementadas e lookup símbolo duas fases, no rotinas genéricas
  • parâmetros do modelo agora pode ser tipos reais
  • implementado generalizadas strings literais cru: ident & quot; abc & quot; é um atalho para ident (r & quot; abc & quot;)
  • em sobrecarga iterators resolução são separadas de procs; iterators agora pode ter o mesmo nome + assinatura como procs
  • lookup símbolo em modelos podem ser afetados pela nova palavra-chave de ligação
  • o compilador agora aceita um interruptor --no_main para uma melhor ligação a interoperabilidade com outras linguagens compiladas
  • tupla implementados desempacotar em seções var
  • o gerador de código emite padrão: __assume (0); para o Visual C ++ (para otimização)
  • o compilador agora verifica se um proc tem efeitos colaterais; procs que são declaradas não ter efeitos colaterais são rejeitados se o compilador não pode verificar este
  • os strutils operador formato.% Agora suporta $ # argumento para contagem automática
  • strutils.join implementado
  • Alterações que afetam trás compability:
  • dois símbolo lookup fase é realizada em rotinas genéricas
  • bind é agora uma palavra reservada; exceção é nenhuma palavra reservada mais
  • tipos abstratos foram renomeados para tipos distintos; portanto, distinta agora é uma palavra reservada; abstrato não é palavra reservada mais
  • system.openFile reprovados: uso system.open vez
  • system.closeFile reprovados: uso system.close vez
  • strutils.replaceStr reprovados: uso strutils.replace vez
  • strutils.deleteStr reprovados: uso strutils.delete vez
  • strutils.splitSeq reprovados: uso strutils.split vez
  • strutils.splitLinesSeq reprovados: uso strutils.splitLines vez
  • strutils.parseFloat não aceita um parâmetro de início adicional mais
  • Documentação:
  • o manual foi melhorado

O que é novo na versão 0.7.6:

  • Bugfixes:
  • instalação no Windows Vista agora pode trabalhar fora da caixa; por favor tente!
  • reparado um bug que impedia os & quot; módulos recursiva & quot; exemplo de trabalho
  • mistura de parâmetros nomeados e não nomeados em uma chamada de procedimento agora trabalha
  • números octais com a 0C prefixo estão agora devidamente apoiada
  • enumerações agora podem começar com valores negativos
  • parseInt, ParseBiggestInt agora lançar uma exceção se a cadeia não termina após o número analisado
  • o compilador agora lida com declarações de nível superior corretamente
  • diretório nimcache gerado nunca termina em uma barra
  • CreateDir agora trabalha para diretórios globais em UNIX (& quot; / somepath / aqui & quot;)
  • o compilador agora executa o executável com uma das principais & quot; ./& quot; sob UNIX
  • o compilador agora suporta matrizes constantes de ponteiros Regimento
  • elif em declarações de caso agora trabalha
  • iterators usando um parâmetro de matriz aberta agora trabalhar
  • Corrigido um bug onde em alguns contextos $ myEnum não funcionou

O que é novo na versão 0.7.4:

  • instalação no Windows deve funcionar agora, se o diretório contém espaços
  • o gerador de documentação agora só presta comentários de documentação
  • `` `` é permitido para os operadores como diz o manual
  • em casos raros, a verificação de índice foi otimizado para longe, mesmo que teria sido necessário
  • várias correções de bugs para os tipos de tupla
  • adicionado um módulo `` unicode`` para UTF-8 manipulação
  • acrescentou Hostos e hostCPU magias para o módulo `` system``
  • system.echo agora aceita vários argumentos
  • otimização acrescentou: em alguns casos inlining de iterators agora produz substancialmente melhor do código
  • acrescentou programa inteiro morto eliminação código
  • a magia `` `operador agora trabalha para enumerações
  • em `` seções const`` avançou compilar tempo de avaliação é feito
  • renomeado `` in_Operator`` para `` contains``: `` in`` agora é um modelo que se traduz em `` contains``
  • mudou `` strutils.quoteIfSpaceExists`` para `` strutils.quoteIfContainsWhite``
  • o analisador é agora muito mais exigente sobre desfalques vírgulas, etc. Se isso afeta o seu código muito, tenta executar o código através da impressora bonita.
  • o `` API macros`` não faz mais parte do módulo `` system``, para usar esta API agora você tem que importar o `` macros`` módulo
  • acrescentou um tutorial

O que é novo na versão 0.7.2:

  • Esta é uma versão de correções. Essa correção mais importante é que Nimrod agora trabalha novamente em AMD64 (x86_64) processadores.
  • Não há novas funcionalidades foram implementadas.

O que é novo na versão 0.7.0:

  • várias correções de bugs, muitos para enumerá-los aqui
  • a instalação para sistemas baseados em UNIX não depende Python por mais tempo
  • o script `` koch.py`` agora funciona com versões mais antigas do Python (incluindo 1.5.2)
  • operações mudou inteiros e regras conversões
  • adicionado `` e `` GC_ref`` procs GC_unref``
  • sequências agora precisam ser construídas com o @ `` operador ``. Isto leva a menos ambiguidades.
  • o compilador agora usa menos memória e é muito mais rápido
  • o GC é agora muito mais rápido
  • novas ligações: zlib, SDL, Xlib, OpenGL, ODBC, Lua
  • o código C gerado é muito mais rápido para otimizar com GCC
  • novas bibliotecas: córregos, zipfiles
  • o compilador Nimrod foi portado para o FreeBSD: ele deve trabalhar em outro do BSD demais

Requisitos :

  • Python

Programas semelhantes

DashO Pro
DashO Pro

11 May 15

cons
cons

3 Jun 15

JRuby
JRuby

17 Feb 15

GNU Smalltalk
GNU Smalltalk

11 May 15

Comentário para Nimrod

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