Nimrod

Software screenshot:
Nimrod
Dettagli del software:
Versione: 0.9.2
Data di caricamento: 20 Feb 15
Sviluppatore: Andreas Rumpf
Licenza: Libero
Popolarità: 16

Rating: nan/5 (Total Votes: 0)

Nimrod è un open source, staticamente tipizzato linguaggio libero,, imperativo di programmazione progettato per supportare procedurale, object-oriented, stili di programmazione generici e funzionali, pur rimanendo semplice ed efficiente.
Nimrod è in grado di albero di sintassi astratta (AST) come parte di una specifica, consentendo un potente sistema di macro che può essere utilizzato per creare linguaggi specifici del dominio. Un caratteristiche ereditate da Lisp.
Il software dispone di generazione di codice nativo, raccolta dei rifiuti, iteratori zero aeree, operatori definibili dall'utente, tipi di dati di alto livello, compilazione valutazione del tempo, compability avanti, GTK2, API di Windows, POSIX attacchi API, un sistema di parser plugable, un generatore di documentazione, e un Pascal a Nimrod utilità di conversione.
Nimrod è portatile, il che significa che può essere eseguito su Linux, BSD, Mac OS & nbsp; X & nbsp; i sistemi operativi e Windows

Cosa c'è di nuovo in questa versione:.

  • Bugfix:
  • Il vecchio GC mai cicli raccolti correttamente. Fisso ma può causare regressioni prestazioni. Tuttavia è possibile disattivare il collettore ciclo con GC_disableMarkAndSweep ed eseguirlo in modo esplicito al momento opportuno o non del tutto. C'è anche un nuovo GC è possibile attivare con --gc:. MarkAndSweep che non hanno questo problema, ma è più lento, in generale, e non ha tempo reale garanzia
  • Cast per i tipi in virgola mobile ora fa il bitcast come specificato nel manuale. Questo rompe codice che utilizza erroneamente fusione per convertire i diversi valori in virgola mobile.
  • le prestazioni del modulo SCGI è stato migliorato notevolmente, non sarà più bloccare su molte richieste simultanee.
  • In totale fissato oltre 70 temi GitHub e unito più di 60 richieste di trazione.
  • Biblioteca Aggiunte:
  • Vi è un nuovo marchio e spazzata sperimentale GC, che può essere più veloce (o molto più lento) rispetto al GC di default. Attiva con --gc:. MarkAndSweep
  • Aggiunto system.onRaise per sostenere un sistema di condizioni.
  • system.locals aggiunto che fornisce l'accesso ai locali di un proc.
  • Aggiunto macros.quote per AST quasi-citazione.
  • Aggiunto system.unsafeNew sostenere hacky oggetti di lunghezza variabile.
  • system.fields e oggetto di sostegno system.fieldPairs troppo; hanno usato solo tuple di supporto.
  • Aggiunto system.CurrentSourcePath restituire il percorso del file-system completo del file sorgente corrente.
  • Il modulo macro ora contiene un sacco di aiutanti utili per la costruzione di alberi di sintassi astratta.
  • Le modifiche che riguardano la compatibilità all'indietro:
  • condivisa è una parola chiave ora.
  • Deprecated sockets.recvLine e asyncio.recvLine, ha aggiunto readLine invece.
  • Il modo rientro viene gestito nel parser cambiato in modo significativo. Tuttavia, questo influenza molto poco (se del caso) Codice mondo reale.
  • L'unificazione espressione / dichiarazione è stata attuata. Anche in questo caso riguarda solo i casi limite e dei codici del mondo reale conosciuto.
  • Cambiato l'interfaccia asincrona del modulo scgi.
  • WideStrings ora sono immondizia raccolti come altri tipi di stringa.
  • Compiler Aggiunte:
  • Il comando doc2 non genera in uscita per l'intero progetto più. Utilizzare il nuovo switch --project per abilitare questo comportamento.
  • Il compilatore può ora mettere in guardia sulle variabili locali in ombra. Tuttavia, questo deve essere acceso esplicitamente via --warning [ShadowIdent]:. On
  • Il compilatore supporta ora quasi ogni pragma in una spinta pragma.
  • convertitori generici sono state attuate.
  • Aggiunto un noforward pragma altamente sperimentale che consente una speciale modalità di compilazione che elimina in gran parte la necessità di dichiarazioni previsionali.
  • Aggiunte Lingua:
  • espressioni casi sono ora supportati.

  • Costruttori
  • Tabella ora imitare più da vicino la sintassi dell'istruzione caso.
  • Nimrod possono ora dedurre il tipo di ritorno di un proc dal suo corpo.
  • Aggiunta una dichiarazione mixin incidere su norme vincolanti in farmaci generici simbolo.
  • tracciamento eccezione è stato aggiunto e il comando doc2 annota possibili eccezioni per voi.
  • definiti dall'utente effetti (& quot; tags & quot;). Tracciamento è stato aggiunto e il comando doc2 annota possibili tag per voi
  • Tipi possono essere annotate con la nuova sintassi non zero a dichiarare esplicitamente che nil non è permesso. Tuttavia attualmente il compilatore non esegue alcuna verifica di questo avanzato statica; per ora è solo a scopo di documentazione.
  • Una dichiarazione di esportazione è stata aggiunta al linguaggio: può essere utilizzato per l'inoltro simbolo così moduli client non devono importare le dipendenze di un modulo esplicitamente
  • .
  • Il sovraccarico sulla base di AST è stato attuato.
  • I generici sono ora supportati per i metodi multipli.
  • Oggetti può essere inizializzato tramite un'espressione costruttore dell'oggetto.
  • C'è un nuovo costrutto sintattico (;) espressioni unificanti e le dichiarazioni
  • .
  • È ora possibile utilizzare from module import nullo se si desidera importare il modulo, ma desidera applicare l'accesso completo a ogni simbolo nel modulo.

Cosa c'è di nuovo nella versione 0.8.14:.

  • Risolto un grave danneggiamento della memoria relativa messaggio che passa
  • Corretto un serio bug riguardante diverse istanze di un proc generico.
  • Risolto un bug di nuova introduzione in cui è stata sollevata un'eccezione EIO sbagliato per la fine del file per i file di testo che non terminano con un ritorno a capo.
  • c2nim Bugfix, c2pas: l'opzione --out non ha mai funzionato correttamente
  • .
  • Bugfix:. Inoltro di procs generici mai lavorato
  • Alcune altre correzioni di bug per le macro e al momento della compilazione della valutazione.
  • Il GC ora prende in considerazione i puntatori interni nello stack che possono essere introdotte da ottimizzatori C aggressivi.
  • allocatore nativo di Nimrod / GC ora funziona su PowerPC.
  • Un sacco di altre correzioni:. Troppi per elencarli tutti

Cosa c'è di nuovo nella versione 0.8.6:

  • Bugfix:
  • I pragma suggeriscono [X]: off e di allarme [X]: fuori ora funziona
  • .
  • Metodo sintassi CALL per iteratori funziona di nuovo (per x in lines.split ()).
  • Risolto un errore di battitura in RemoveDir per POSIX che portano ad una ricorsione infinita.
  • Il compilatore ora controlla che i nomi dei file dei moduli sono identificatori validi.
  • modelli vuoti per il pragma dynlib sono ora possibili.
  • os.parseCmdLine restituito risultati errati per spazi finali.
  • uso tuple incoerente (utilizzando la stessa tupla con e senza campi chiamati) non bloccare più il generatore di codice.
  • Il messaggio di errore migliore è fornito quando il caricamento di un proc di un lib dinamica fallisce.
  • Aggiunte:
  • system.contains Aggiunto per gli array aperte.
  • Il modulo PEG supporta ora l'operatore di ricerca ciclo @.
  • Grammatica / parser: SAD | IND è consentito prima di qualsiasi tipo di chiusura staffa. Questo permette di codice sorgente formattazione più flessibile.
  • Il compilatore utilizza ora un tavolo bind per il simbolo di ricerca all'interno di un contesto di associazione. (Vedere modelli Manual.html # per i dettagli.)
  • scarto & quot; & quot; & quot; il mio lungo commento & quot; & quot; & quot; è ora ottimizzato via.
  • Nuovi --floatChecks: on | off switch e pragma per una migliore messa a punto di operazioni in virgola mobile. (Vedere Manual.html # pre-definito-point-tipo floating per i dettagli).
  • Il manuale è stato migliorato. (Molte grazie a Philippe Lhoste!)
  • Le modifiche che riguardano la compatibilità all'indietro:
  • Il compilatore non saltare il passaggio che collega più, anche se nessun file è stato modificato.
  • os.splitFile (& quot; xyz & quot;) restituisce ora (& quot; & quot ;, & quot; xyz & quot ;, & quot; & quot;) invece di (& quot; & quot ;, & quot; & quot ;, & quot; xyz & quot; ). Nomi di file che iniziano con un punto sono gestiti in modo diverso.
  • strutils.split (s: string, SEPS: impostare [char]) non produce più la stringa vuota. Questo comportamento è probabilmente più adatto per dividere gli spazi.
  • Il compilatore si ferma ora, dopo l'opzione di riga di comando --version.
  • Supporto rimosso per enum eredità nel parser; enum eredità non è mai stata documentata in ogni caso.
  • Il campo msg di system.E_base ha ora la stringa tipo, invece di CString. Questo migliora la sicurezza di memoria.

Cosa c'è di nuovo nella versione 0.8.2:

  • Bugfix:
  • Passando --hint [X]: off o --warning [X]:. Off come argomenti della riga di comando per il compilatore ora funziona
  • I parametri predefiniti per i modelli ora funzionano.
  • Risolto problema di sicurezza in system.copy.
  • caso String senza un parte altro generato codice errato.
  • Varie correzioni per il modulo osproc; ora funziona su Windows.
  • Aggiunte:
  • multi-metodi implementati.
  • Il compilatore rileva ora il numero di processori disponibili ed esegue il compilatore C contemporaneamente. Questo può essere regolato dal --parallel_build:. Interruttore number_of_processors riga di comando
  • modello a base di PEG corrispondenza tramite il modulo pioli.
  • Aggiunto system.definedInScope.
  • Aggiunto system.accumulateResult.
  • Aggiunto os.walkDirRec.
  • osproc.countProcessors aggiunti.
  • Aggiunto osproc.execProcesses.
  • Il sistema di configurazione supporta ora $ cc.options.linker.
  • unite espr e typeDesc nella grammatica / parser:. Questo consentirà procs anonimi senza lambda
  • Molti script non hanno bisogno di un GC: Il nuovo --gc: nessuna riga di comando può essere utilizzato per escludere il GC dall'eseguibile
  • .
  • Le modifiche che riguardano indietro Compability:
  • Prendendo l'indirizzo di un discriminante oggetto è ora valido.
  • Passare un proc di un var proc è consentito solo per procs contrassegnati procvar o una convenzione di chiamata! = Nimcall. Per ora questo provoca solo un avvertimento, ma questo si trasformerà in un errore al più presto.
  • sistema. & E system.add ora ricevere OPENARRAY invece di parametri ss.
  • Rimosso strutils.findSubStr e strutils.findChars. Essi sono stati deprecati per 3 versioni.
  • Il modulo unicode utilizza un tipo distinto per TRune.
  • Deprecated strutils.toString: utilizzare $ invece
  • .
  • Deprecated os.splitPath:. Uso os.splitPath che restituisce una tupla invece
  • Deprecated os.extractDir:. Utilizzare SplitFile (percorso) .dir invece
  • Deprecated os.splitFilename: utilizzare SplitFile invece
  • .
  • Deprecated os.extractFileExt: utilizzare SplitFile invece
  • .
  • Deprecated os.extractFileTrunk: utilizzare SplitFile invece
  • .
  • Deprecated os.appendFileExt: utilizzare os.addFileExt invece
  • .
  • Deprecated os.executeShellCommand: utilizzare os.execShellCmd invece
  • .
  • Deprecated os.iterOverEnvironment:. Uso os.envPairs invece
  • parseopt.init Obsoleto: utilizzare parseopt.initOptParser invece
  • .
  • Deprecated parseopt.getRestOfCommandLine: utilizzare parseopt.cmdLineRest invece
  • .
  • Deprecated os.pcDirectory: utilizzare os.pcDir invece
  • .
  • Deprecated os.pcLinkToDirectory: utilizzare os.pcLinkToDir invece
  • .
  • Deprecated osproc.executeProcess: utilizzare osproc.execProcess invece
  • .
  • Deprecated osproc.executeCommand: utilizzare osproc.execCmd invece
  • .

Cosa c'è di nuovo nella versione 0.8.0:

  • Bugfix:
  • fissato un piccolo bug che causava il compilatore a non segnalare simboli overload inutilizzati
  • fissato un piccolo bug relativo simbolo sovraccarico
  • corretto un errore di battitura: è & quot; ambiguo & quot ;, non & quot; ambigua & quot; ; -)
  • il compilatore ora rileva ricorsiva file include
  • system.card dovrebbe funzionare di nuovo
  • articoli per set [char] e array [char, T] devono lavorare ora
  • Aggiunte:
  • attuate tipi generici e due fasi Ricerca codice in routine generiche
  • parametri del modello possono essere di tipo reale
  • implementato generalizzate letterali stringa raw: ident & quot; abc & quot; è una scorciatoia per ident (r & quot; abc & quot;)
  • in sovraccarico iteratori risoluzione sono separati da procs; iteratori ora possono avere lo stesso nome + firma come proc
  • Ricerca codice in modelli può essere influenzata dalla nuova parola chiave bind
  • il compilatore ora accetta un interruttore --no_main per una migliore interoperabilità legame con altri linguaggi compilati
  • tuple implementato disimballaggio in sezioni var
  • il generatore di codice emette default: __assume (0); per Visual C ++ (per l'ottimizzazione)
  • il compilatore ora controlla se un proc ha effetti collaterali; procs che sono dichiarati non avere effetti collaterali vengono respinte se il compilatore non può verificare questo
  • le strutils operatore formato.% Ora supporta $ # per il conteggio automatico argomento
  • strutils.join implementato
  • Le modifiche che riguardano indietro Compability:
  • due simboli fase di ricerca viene eseguita in routine generiche
  • bind è ormai una parola riservata; Un'eccezione è più alcuna parola riservata
  • tipi astratti sono stati rinominati a tipi distinti; così distinti è ora una parola riservata; astratta è più alcuna parola riservata
  • system.openFile deprecata: uso system.open invece
  • system.closeFile deprecato: uso system.close invece
  • strutils.replaceStr deprecato: uso strutils.replace invece
  • strutils.deleteStr deprecato: uso strutils.delete invece
  • strutils.splitSeq deprecato: uso strutils.split invece
  • strutils.splitLinesSeq deprecato: uso strutils.splitLines invece
  • strutils.parseFloat non accetta più un parametro di avvio aggiuntiva
  • Documentazione:
  • il manuale è stato migliorato

Cosa c'è di nuovo nella versione 0.7.6:

  • Bugfix:
  • l'installazione su Windows Vista possono ora lavorare fuori dalla scatola; riprova!
  • risolto un bug che ha mantenuto i & quot; ricorsive moduli & quot; esempio dal lavoro
  • miscelazione parametri denominati e senza nome in una chiamata di procedura ora funziona
  • numeri ottali con 0c prefisso sono ora correttamente supportati
  • enumerazioni ora possono iniziare con valori negativi
  • parseInt, ParseBiggestInt ora un'eccezione se la stringa non finisce dopo il numero analizzato
  • il compilatore ora gestisce correttamente le dichiarazioni di livello superiore
  • directory nimcache generato non finisce mai in una barra
  • createDir ora lavora per le directory globali sotto UNIX (& quot; / somepath / qui & quot;)
  • il compilatore ora esegue il file eseguibile con un leader & quot; ./& quot; sotto UNIX
  • il compilatore ora supporta array costanti di puntatori procedura
  • elif in istruzioni case ora funziona
  • iteratori utilizzando un parametro open array ora funzionano
  • Corretto un bug che in alcuni contesti $ MyEnum non ha funzionato

Cosa c'è di nuovo nella versione 0.7.4:

  • installazione in Windows dovrebbe funzionare ora, se la directory contiene spazi
  • il generatore di documentazione ora rendering solo commenti di documentazione
  • `` `` è consentito per gli operatori, come il manuale dice
  • in rari casi, il controllo dell'indice è stato ottimizzato via, anche se sarebbe stato necessario
  • diverse correzioni di bug per i tipi di tuple
  • ha aggiunto un modulo `` unicode`` per UTF-8 manipolazione
  • aggiunto Hostos e hostCPU magie al modulo `system```
  • system.echo ora accetta più argomenti
  • aggiunto ottimizzazione: in alcuni casi, inlining di iteratori ora produce codice sostanzialmente migliore
  • aggiunto tutto il programma di eliminazione del codice morto
  • la magia `` `operatore lavora adesso per enumerazioni
  • in `` sezioni const`` avanzata fase di compilazione che la valutazione viene effettuata
  • ribattezzata `` in_Operator`` a `` contains``: `` in`` è ora un modello che traduce in `` contains``
  • cambiato `` strutils.quoteIfSpaceExists`` a `` strutils.quoteIfContainsWhite``
  • il parser è ora molto più esigenti in fatto di missings virgole, ecc Se questo riguarda il codice troppo, provare a eseguire il codice attraverso la bella stampante.
  • il `` API macros`` non fa più parte del modulo `` system``, per usare questa API è ora di importare il `` macros`` modulo
  • aggiunto un tutorial

Cosa c'è di nuovo nella versione 0.7.2:

  • Questa è una versione bugfix. Questa correzione più importante è che Nimrod ora lavora ancora su processori (x86_64) AMD64.
  • Non ci sono nuove funzionalità sono state implementate.

Cosa c'è di nuovo nella versione 0.7.0:

  • varie correzioni di bug, troppi per elencarli qui
  • l'installazione per i sistemi basati su UNIX non dipende Python più
  • il `` script koch.py`` ora funziona con le versioni più vecchie di Python (compresi 1.5.2)
  • operazioni cambiato interi e regole conversioni
  • aggiunto `` GC_ref`` e `` procs GC_unref``
  • sequenze devono ora essere costruito con il `@` `` operatore. Questo porta a meno ambiguità.
  • il compilatore ora utilizza meno memoria ed è molto più veloce
  • il GC è ora molto più veloce
  • nuove associazioni: zlib, SDL, Xlib, OpenGL, ODBC, Lua
  • il codice C generato è molto più veloce di ottimizzare con GCC
  • nuove librerie: flussi, file zip
  • il compilatore Nimrod è stato portato su FreeBSD: dovrebbe funzionare troppo
  • di altri BSD

Requisiti :

  • Python

Programmi simili

Ruby
Ruby

17 Aug 18

g95
g95

2 Jun 15

Cython
Cython

27 Sep 15

Commenti a Nimrod

I commenti non trovato
Aggiungi commento
Accendere le immagini!