Nimrod

Logiciel capture d'écran:
Nimrod
Détails logiciels:
Version: 0.9.2
Date de transfert: 20 Feb 15
Développeur: Andreas Rumpf
Licence: Gratuit
Popularité: 16

Rating: nan/5 (Total Votes: 0)

Nimrod est un open source, statiquement typé, langage de programmation libre, impératif conçu pour soutenir procédural, orienté objet, styles de programmation génériques et fonctionnels, tout en restant simple et efficace.
Nimrod est capable de l'arbre de syntaxe abstraite (AST) dans le cadre d'un cahier des charges, ce qui permet un système macro puissant qui peut être utilisé pour créer domaine des langues spécifiques. A caractéristiques héritées de Lisp.
Le logiciel dispose génération native de code, la collecte des ordures, itérateurs zéro aériennes, opérateurs définissable par l'utilisateur, les types de données de haut niveau, compiler évaluation en temps, compability avant, GTK2, API Windows, POSIX fixations de l'API, un système d'analyseur enfichable, un générateur de documentation, et un utilitaire Pascal à Nimrod de conversion.
Nimrod est portable, ce qui signifie qu'il peut fonctionner sur Linux, BSD, Mac OS & nbsp; X & nbsp; et systèmes d'exploitation Windows

Ce qui est nouveau dans cette version:.

  • Correction de bugs:
  • Le vieux GC ne recueille cycles correctement. Fixe mais elle peut provoquer des régressions de performance. Cependant, vous pouvez désactiver le collecteur de cycle avec GC_disableMarkAndSweep et l'exécuter explicitement à un moment approprié ou pas du tout. Il ya aussi un nouveau GC vous pouvez activer avec --gc:. MarkAndSweep qui ne ont pas ce problème, mais est plus lent en général et n'a pas de garanties en temps réel
  • Casting pour flotter types de points fait maintenant l'bitcast tel que spécifié dans le manuel. Cela rompt le code qui utilise à tort fonte de convertir différentes valeurs en virgule flottante.
  • le rendement de module SCGI a été grandement améliorée, il ne sera plus bloquer de nombreuses demandes simultanées.
  • Au total fixé plus de 70 questions de github et a fusionné plus de 60 demandes de traction.
  • Bibliothèque Ajouts:
  • Il est une nouvelle marque et balayage GC expérimental qui peut être plus rapide (ou beaucoup plus lent) que le GC par défaut. Activer avec --gc:. MarkAndSweep
  • Ajouté system.onRaise pour soutenir un système de condition.
  • system.locals ajouté que fournit l'accès aux habitants d'un proc.
  • macros.quote ajoutée pour AST quasi-citation.
  • Ajouté system.unsafeNew pour soutenir des objets de longueur variable aki.
  • system.fields et objet support de system.fieldPairs trop; ils utilisés pour seulement tuples de soutien.
  • Ajouté system.CurrentSourcePath retourner le chemin du système de fichiers complet du fichier de source de courant.
  • Le module contient des macros maintenant beaucoup de aides utiles pour construire des arbres de syntaxe abstraite.
  • Modifications touchant la compatibilité ascendante:
  • partagé est un mot-clé maintenant.
  • Obsolète sockets.recvLine et asyncio.recvLine, a ajouté readLine place.
  • La façon indentation est gérée dans l'analyseur changé de manière significative. Cependant, cela affecte très peu (le cas échéant) Code monde réel.
  • L'unification expression / déclaration a été mis en œuvre. Encore une fois cela ne affecte cas de pointe et aucun code de monde réel connu.
  • Changement de l'interface asynchrone du module de scgi.
  • WideStrings sont maintenant des ordures collectées comme les autres types de chaînes.
  • compilateur Ajouts:
  • La commande doc2 ne plus générer pas de sortie pour l'ensemble du projet. Utilisez le nouveau commutateur --project pour permettre ce comportement.
  • Le compilateur peut maintenant avertir variables locales ombragées. Cependant, cela doit être activée explicitement via --warning [ShadowIdent]:. Sur
  • Le compilateur prend désormais en charge presque tous les pragma dans un pragma-poussoir.
  • convertisseurs génériques ont été mis en œuvre.
  • Ajout d'un noforward pragma très expérimental permettant un mode de compilation spéciale qui élimine en grande partie la nécessité pour les déclarations à terme.
  • Additions Langue:
  • cas expressions sont maintenant supportés.
  • Tableau constructeurs imitent maintenant de plus près la syntaxe de la déclaration de cas.
  • Nimrod peut maintenant déduire le type d'un proc de retour de son corps.
  • Ajout d'une déclaration mixin d'affecter des règles contraignantes dans les génériques symbole.
  • Suivi d'exception a été ajoutée et la commande doc2 annote exceptions possibles pour vous.
  • effets définis par l'utilisateur (& quot; & quot; balises). Suivi a été ajoutée et la commande doc2 annote étiquettes possibles pour vous
  • Les types peuvent être annotés avec la nouvelle syntaxe non nul de dire explicitement que nul ne est pas autorisé. Cependant actuellement le compilateur effectue pas de vérification pour cette avancée statique; pour l'instant ce est uniquement à des fins de documentation.
  • Une déclaration d'exportation a été ajouté à la langue: Il peut être utilisé pour le transfert de symbole afin modules clients ne ont pas à importer les dépendances d'un module explicitement
  • .
  • La surcharge basée sur AST a été mis en œuvre.
  • génériques sont désormais pris en charge pour les méthodes multiples.
  • Objets peut être initialisé par une expression de constructeur de l'objet.
  • Il ya une nouvelle construction syntaxique (;) expressions et déclarations unificateurs
  • .
  • Vous pouvez maintenant utiliser from module import nul si vous voulez importer le module mais que vous voulez appliquer l'accès pleinement qualifié pour chaque symbole dans le module.

Quoi de neuf dans la version 0.8.14:.

  • Correction d'une corruption de mémoire graves concernant le passage de message
  • Correction d'un bogue sérieux concernant les différentes instanciations d'un proc générique.
  • Correction d'un bug où nouvellement introduit une exception EIO tort a été soulevé pour la fin du fichier pour les fichiers de texte qui ne se terminent pas par un saut de ligne.
  • Correction c2nim, c2pas: l'option --out n'a jamais fonctionné correctement
  • .
  • Correction:. Transmission des procs génériques jamais travaillé
  • Quelques corrections de bugs pour plus de macros et de compilation évaluation.
  • Le GC prend désormais en compte pointeurs intérieur sur la pile qui peuvent être introduits par des optimiseurs agressifs C.
  • allocateur natif de Nimrod / GC fonctionne désormais sur PowerPC.
  • Beaucoup d'autres corrections de bugs:. Trop nombreux pour les énumérer tous

Ce qui est nouveau dans la version 0.8.6:

  • Correction de bugs:
  • Les pragmas allusion [X]: off et d'avertissement [X]: hors travaillent maintenant
  • .
  • Appel de méthode syntaxe pour itérateurs fonctionne à nouveau (pour x dans lines.split ()).
  • Correction d'une faute dans RemoveDir pour POSIX qui conduisent à une récursion infinie.
  • Le compilateur vérifie maintenant que les noms de fichiers des modules sont des identifiants valides.
  • modèles vides pour le pragma dynlib sont maintenant possibles.
  • os.parseCmdLine retourné des résultats erronés pour les espaces de fin.
  • l'utilisation de tuple inconséquente (en utilisant le même tuple avec et sans champs nommés) ne plante plus le générateur de code.
  • Un message d'erreur plus est fournie lorsque le chargement d'un proc dans un lib dynamique échoue.
  • Ajouts:
  • system.contains supplémentaires pour tableaux ouverts.
  • Le module PEG prend désormais en charge la recherche opérateur de boucle @.
  • Grammaire / parser: SAD | IND est autorisée avant tout type de fermeture support. Cela permet plus de souplesse code source formatage.
  • Le compilateur utilise maintenant une table de liaison pour le symbole recherche dans un contexte de liaison. (Voir # manual.html modèles pour plus de détails.)
  • défausse & quot; & quot; & quot; ma longue commentaire & quot; & quot; & quot; est maintenant optimisé loin.
  • Nouveaux --floatChecks: on | off commutateurs et pragmas pour une meilleure mise au point des opérations en virgule flottante. (Voir manual.html # prédéfinis-Point-types flottante pour plus de détails.)
  • Le manuel a été amélioré. (Un grand merci à Philippe Lhoste!)
  • Modifications touchant la compatibilité ascendante:
  • Le compilateur ne saute pas plus l'étape de liaison même si aucun fichier a changé.
  • os.splitFile (& quot; .xyz & quot;) retourne maintenant (& quot; & quot ;, & quot; .xyz & quot ;, & quot; & quot;) au lieu de (& quot; & quot ;, & quot; & quot ;, & quot; .xyz & quot; ). Les noms de fichiers commençant par un point sont traités différemment.
  • strutils.split (s: string, SEPS: réglez [Char]) ne cède jamais la chaîne vide plus. Ce comportement est probablement plus approprié pour diviser les espaces.
  • Le compilateur se arrête maintenant, après le commutateur de ligne de commande --version.
  • Prise en charge supprimée pour l'héritage d'énumération dans l'analyseur; énumération héritage n'a jamais été documentée de toute façon.
  • Le champ de system.E_base msg a maintenant la chaîne de type, au lieu de cstring. Cela améliore la sécurité de mémoire.

Ce qui est nouveau dans la version 0.8.2:

  • Correction de bugs:
  • Passage --hint [X]: off ou --warning [X]:. Off comme arguments de ligne de commande pour le compilateur fonctionne maintenant
  • Les paramètres par défaut pour les modèles fonctionnent maintenant.
  • problème de sécurité fixe dans system.copy.
  • la chaîne de caractères sans partie else généré mauvais code.
  • Divers correctifs pour le module de osproc; il fonctionne maintenant sous Windows.
  • Ajouts:
  • multi-méthodes mises en œuvre.
  • Le compilateur détecte maintenant le nombre de processeurs disponibles et exécute le compilateur C simultanément. Ceci peut être ajusté par le --parallel_build:. Nombre_de_processeurs commutateur de ligne de commande
  • modèle à base de PEG correspondant via le module de chevilles.
  • Ajouté system.definedInScope.
  • Ajouté system.accumulateResult.
  • Ajouté os.walkDirRec.
  • osproc.countProcessors Added.
  • Ajouté osproc.execProcesses.
  • Le système de configuration prend en charge maintenant $ cc.options.linker.
  • fusionné expr et typeDesc dans la grammaire / parser:. Cela permettra de procs anonymes sans lambda
  • Beaucoup de scripts ne ont pas besoin d'un GC: Le nouveau --gc: commutateur de ligne de commande ne peut être utilisé pour exclure la GC de l'exécutable
  • .
  • Modifications touchant compatibilité descendante:
  • Prendre l'adresse d'un discriminante de l'objet est maintenant invalide.
  • Le passage d'un proc à un proc var est autorisé que pour procs marqués procvar ou d'une convention d'appel! = Nimcall. Pour l'instant cela ne provoque un avertissement, mais cela va se transformer en une erreur bientôt.
  • système. & De system.add maintenant recevoir OPENARRAY lieu de paramètres seq.
  • Retiré strutils.findSubStr et strutils.findChars. Ils ont été dépréciées pour trois versions.
  • Le module unicode utilise un type distinct pour TRune.
  • Obsolète strutils.toString: utiliser $ au lieu
  • .
  • Obsolète os.splitPath:. Os.splitPath utilisation qui retourne un tuple à la place
  • Obsolète os.extractDir:. Utiliser SplitFile (chemin) .dir place
  • Obsolète os.splitFilename: utiliser SplitFile place
  • .
  • Obsolète os.extractFileExt: utiliser SplitFile place
  • .
  • Obsolète os.extractFileTrunk: utiliser SplitFile place
  • .
  • Obsolète os.appendFileExt: utiliser os.addFileExt place
  • .
  • Obsolète os.executeShellCommand: utiliser os.execShellCmd place
  • .
  • Obsolète os.iterOverEnvironment:. Utilisation os.envPairs place
  • parseopt.init Obsolète: utiliser parseopt.initOptParser place
  • .
  • Obsolète parseopt.getRestOfCommandLine: utiliser parseopt.cmdLineRest place
  • .
  • Obsolète os.pcDirectory: utiliser os.pcDir place
  • .
  • Obsolète os.pcLinkToDirectory: utiliser os.pcLinkToDir place
  • .
  • Obsolète osproc.executeProcess: utiliser osproc.execProcess place
  • .
  • Obsolète osproc.executeCommand: utiliser osproc.execCmd place
  • .

Ce qui est nouveau dans la version 0.8.0:

  • Correction de bugs:
  • fixe un petit bug qui faisait que le compilateur de ne pas signaler symboles surchargés inutilisés
  • fixe un petit bug concernant la surcharge symbole
  • Correction d'une faute: ce est & quot; & quot ;, ambiguë pas & quot; & quot ambiguë; ; -)
  • le compilateur détecte maintenant récursive inclure des fichiers
  • system.card devrait fonctionner à nouveau
  • articles pour l'ensemble [Char] et array [char, T] doivent maintenant travailler
  • Ajouts:
  • types génériques mises en œuvre et à deux phases symbole recherche dans les routines génériques
  • paramètres de modèle peuvent maintenant être de vrais types
  • mise en œuvre généralisée des littéraux de chaîne brute: ident & quot; abc & quot; est un raccourci pour ident (r & quot; abc & quot;)
  • une surcharge itérateurs de résolution sont séparés de procs; itérateurs peuvent maintenant avoir le même nom + signature comme procs
  • Recherche de symbole dans les modèles peut être affectée par le nouveau mot-clé de liaison
  • le compilateur accepte désormais un commutateur --no_main pour une meilleure interopérabilité de lien avec d'autres langages compilés
  • vecteur œuvre déballage dans les sections var
  • le générateur de code émet défaut: __assume (0); pour Visual C ++ (pour optimisation)
  • le compilateur vérifie maintenant si un proc a des effets secondaires; procs qui sont déclarés avoir pas d'effets secondaires sont rejetées si le compilateur ne peut pas vérifier cette
  • les strutils opérateur de format.% Prend désormais en charge # $ pour argument de comptage automatique
  • strutils.join œuvre
  • Modifications touchant compatibilité descendante:
  • deux symboles recherche de phase est effectuée dans les routines génériques
  • bind est maintenant un mot réservé; exception est pas mot réservé plus
  • types abstraits ont été renommés à des types distincts; donc distinct est maintenant un mot réservé; abstraite a pas de mot réservé plus
  • system.openFile obsolète: utilisation system.open place
  • system.closeFile obsolète: utilisation system.close place
  • strutils.replaceStr obsolète: utilisation strutils.replace place
  • strutils.deleteStr obsolète: utilisation strutils.delete place
  • strutils.splitSeq obsolète: utilisation strutils.split place
  • strutils.splitLinesSeq obsolète: utilisation strutils.splitLines place
  • strutils.parseFloat ne accepte plus un paramètre de démarrage supplémentaire
  • Documentation:
  • le manuel a été amélioré

Ce qui est nouveau dans la version 0.7.6:

  • Correction de bugs:
  • l'installation sur Windows Vista peut maintenant travailler hors de la boîte; se il vous plaît essayer!
  • corrigé un bug qui a gardé les & quot; & quot modules récursifs; exemple de travailler
  • les paramètres de mixage nommés ou non dans un appel de procédure travaille maintenant
  • nombres octaux avec le préfixe 0c sont maintenant correctement pris en charge
  • énumérations peuvent maintenant commencer avec des valeurs négatives
  • parseInt, ParseBiggestInt maintenant lancer une exception si la chaîne ne se arrête pas après le numéro analysé
  • le compilateur gère maintenant des déclarations de haut niveau correctement
  • Répertoire nimcache généré ne se termine jamais par un slash
  • createDir travaille maintenant pour répertoires globaux sous UNIX (& quot; / somepath / ici & quot;)
  • le compilateur exécute maintenant l'exécutable avec un leader & quot; ./& quot; sous UNIX
  • le compilateur prend désormais en charge des tableaux constants de procédure pointeurs
  • Elif dans les états de cas travaille maintenant
  • itérateurs l'aide d'un paramètre tableau ouvert travaillent maintenant
  • Correction d'un bogue où, dans certains contextes $ MyEnum ne fonctionne pas

Ce qui est nouveau dans la version 0.7.4:

  • l'installation sur Windows devrait maintenant fonctionner si le répertoire contient espaces
  • le générateur de documentation maintenant seulement rend les commentaires de documentation
  • `` `` est autorisé pour les opérateurs comme le manuel dit
  • dans de rares cas, la vérification de l'indice a été optimisé de suite, même se il aurait été nécessaire
  • plusieurs corrections de bugs pour les types de tuple
  • a ajouté un module `` unicode`` UTF-8 manipulation
  • ajouté HOSTOS et hostCPU magies pour le module `` system``
  • system.echo accepte maintenant plusieurs arguments
  • l'optimisation ajouté: dans certains cas des itérateurs inline produit maintenant nettement mieux code
  • ajouté l'ensemble du programme d'élimination du code mort
  • la magie `` `opérateur travaille maintenant pour les énumérations
  • dans `` sections const`` avancé compilation évaluation est faite
  • rebaptisé `` `` in_Operator`` à contains``: `` in`` est maintenant un modèle qui se traduit par `` contains``
  • changé `` `` strutils.quoteIfSpaceExists`` à strutils.quoteIfContainsWhite``
  • l'analyseur est maintenant beaucoup plus pointilleux sur Disparitions virgules, etc. Si cela affecte votre code trop, essayez d'exécuter votre code grâce à la jolie imprimante.
  • l'`` API macros`` ne fait plus partie du module `` system``, d'utiliser cette API, vous avez maintenant d'importer le `` macros`` le module
  • ajouté un tutoriel

Quoi de neuf dans la version 0.7.2:

  • Ce est une version de maintenance. Ce correctif le plus important est que Nimrod travaille maintenant à nouveau sur AMD64 (x86_64).
  • Pas de nouvelles fonctionnalités ont été mis en œuvre.

Quoi de neuf dans la version 0.7.0:

  • diverses corrections de bugs, trop nombreux pour les énumérer ici
  • l'installation pour les systèmes UNIX ne dépend pas de Python plus longtemps
  • l'`` script koch.py`` travaille maintenant avec les anciennes versions de Python (y compris 1.5.2)
  • opérations changé entiers et les règles de conversions
  • ajouté `` et `` GC_ref`` procs GC_unref``
  • séquences doivent maintenant être construit avec le `` @ opérateur ``. Cela conduit à moins ambiguïtés.
  • le compilateur utilise désormais moins de mémoire et est beaucoup plus rapide
  • GC est maintenant beaucoup plus rapide
  • nouvelles liaisons: zlib, SDL, Xlib, OpenGL, ODBC, Lua
  • le code C généré est beaucoup plus rapide pour optimiser avec GCC
  • nouvelles bibliothèques: ruisseaux, zipfiles
  • le compilateur Nimrod a été porté sur FreeBSD: il devrait fonctionner trop
  • des autres BSD

Exigences :

  • Python

Logiciel similaire

Arcueid
Arcueid

20 Feb 15

ncc
ncc

3 Jun 15

gears-less
gears-less

20 Feb 15

Commentaires à Nimrod

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!