Nimrod

Nimrod is a new statically typed, imperative programming language.
Download

Nimrod Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • Andreas Rumpf
  • Publisher web site:
  • http://nimrod.ethexor.com/

Nimrod Tags


Nimrod Description

Nimrod is a new statically typed, imperative programming language. Nimrod is a new statically typed, imperative programming language, that supports procedural, functional, object oriented and generic programming styles while remaining simple and efficient. A special feature that Nimrod inherited from Lisp is that Nimrod's abstract syntax tree (AST) is part of the specification - this allows a powerful macro system which can be used to create domain specific languages.Nimrod is a compiled, garbage-collected systems programming language which has an excellent productivity/performance ratio. Its design focuses on the 3E: efficiency, expressiveness, elegance (in the order of priority).Installation:Note: A C compiler is required - knowledge of C is not!The GNU C Compiler is fully supported, other compilers may work. The C compiler should be in your $PATH (most likely the case). Note that some Linux distributions do not ship with a GCC compiler preinstalled - then you have to install it.After you have made sure that a C compiler is available, install Nimrod by downloading the appropriate .zip file and extracting it to a directory of your choice. The Nimrod Compiler will stay in this directory; do not use a temporary one! Good choices are /opt/nimrod or - if you don't have root access - ~/programs/nimrod. Then run the following command:python koch.py installUnlike other software, Nimrod does not distribute its files over the whole file hierarchy. This has the advantage that you can deinstall it by just deleting its folder. The disadvantage is that you have to add it to your PATH manually. An alternative is to create a symbolic link in /usr/bin: ln -s $your_install_dir/bin/nimrod /usr/bin/nimrod Here are some key features of "Nimrod": · Native code generation (currently via compilation to C). · Garbage collection, but not dependant on a Virtual Machine. · Portable: The Nimrod Compiler runs on Windows, Linux and Mac OS X. Porting to other platforms is easy. · System programming features: Ability to manage your own memory and access the hardware directly. You will never have to use C/C++ for that again! · Zero-overhead iterators. · Modern type system with local type inference, tuples, variants, etc. · User-defineable operators; new operators often easier to read than overloaded ones. · High level datatypes: strings, sets, sequences, etc. · Compile time evaluation without resorting to meta-programming facilities. · Forward compability: If later versions of the language introduce new keywords old code won't break! · Bindings to GTK2, the Windows API, the POSIX API. New bindings are easily generated in a semi-atomatic way. · A plugable parser system: If you don't like Nimrod's syntax, you can plug in a parser and a source renderer for your own syntax! · A documentation generator with an internal reStructuredText parser: This can also be used to write documentation that is not embedded into the source code. This makes documentation writing a joy (well, almost). · A Pascal to Nimrod conversion utility: This is particularly useful for generating bindings to any library which has a Pascal binding (these are many!). Requirements: · Python What's New in This Release: Bugfixes: · Passing --hint:off or --warning:off as command line arguments to the compiler now works. · Default parameters for templates now work. · Fixed security issue in system.copy. · String case without an else part generated wrong code. · Various fixes for the osproc module; it now works on Windows. Additions: · Implemented multi-methods. · The compiler now detects the number of available processors and executes the C compiler concurrently. This can be adjusted by the --parallel_build: number_of_processors command line switch. · PEG-based pattern matching via the pegs module. · Added system.definedInScope. · Added system.accumulateResult. · Added os.walkDirRec. · Added osproc.countProcessors. · Added osproc.execProcesses. · The configuration system now supports $cc.options.linker. · Merged expr and typeDesc in the grammar/parser: this will allow for anonymous procs without lambda. · Many scripts have no need for a GC: The new --gc:none command line switch can be used to exclude the GC from the executable. Changes affecting backwards compability: · Taking the address of an object discriminant is now invalid. · Passing a proc to a proc var is only allowed for procs marked with procvar or a calling convention != nimcall. For now this only causes a warning, but this will turn into an error soon. · system.& and system.add now receive openArray instead of seq parameters. · Removed strutils.findSubStr and strutils.findChars. They have been deprecated for 3 versions. · The unicode module uses a distinct type for TRune. · Deprecated strutils.toString: use $ instead. · Deprecated os.splitPath: use os.splitPath that returns a tuple instead. · Deprecated os.extractDir: use splitFile(path).dir instead. · Deprecated os.splitFilename: use splitFile instead. · Deprecated os.extractFileExt: use splitFile instead. · Deprecated os.extractFileTrunk: use splitFile instead. · Deprecated os.appendFileExt: use os.addFileExt instead. · Deprecated os.executeShellCommand: use os.execShellCmd instead. · Deprecated os.iterOverEnvironment: use os.envPairs instead. · Deprecated parseopt.init: use parseopt.initOptParser instead. · Deprecated parseopt.getRestOfCommandLine: use parseopt.cmdLineRest instead. · Deprecated os.pcDirectory: use os.pcDir instead. · Deprecated os.pcLinkToDirectory: use os.pcLinkToDir instead. · Deprecated osproc.executeProcess: use osproc.execProcess instead. · Deprecated osproc.executeCommand: use osproc.execCmd instead.


Nimrod Related Software