summary refs log tree commit diff stats
path: root/web/news.txt
Commit message (Expand)AuthorAgeFilesLines
* added encodings stdlibAraq2011-06-161-0/+1
* tuple unpacking is not enforced in for loops anymoreAraq2011-06-151-0/+1
* bugfix: endless loop in parser; added sphinx wrapperAraq2011-06-141-0/+1
* intsets are now a proper module and part of the stdlibAraq2011-06-141-0/+1
* basic generic collections implemented and testedAraq2011-06-071-0/+3
* threads clean up their heapAraq2011-06-041-0/+2
* first steps to thread local heapsAraq2011-06-021-1/+3
* further steps for thread support; bootstrapping should require unzip C source...Araq2011-05-161-0/+1
* deprecated system.copy: use system.substr insteadAraq2011-05-141-0/+1
* newStringOfCap implemented and used to optimize some procsAraq2011-05-081-1/+2
* C source regeneratedAraq2011-04-241-0/+2
* hashtables: 1st version; parseutils additionsAraq2011-04-181-0/+1
* p[] instead of p^Araq2011-04-111-0/+4
* added another system.open; bugfix: koch clean may not break .git dirs anymoreAraq2011-04-031-1/+2
* added 'reset' news entry; fixed #23Araq2011-03-251-0/+1
* bugfixes; field discriminant checks; linearScanEnd, unroll, shallow pragmasAraq2011-03-231-1/+1
* linearScanEnd pragma; string case statement optimizationAraq2011-03-141-1/+5
* distinction between re.replace and re.replacef; speed improvements for re moduleAraq2011-03-061-1/+2
* tests themselves contain the expected resultAraq2011-02-201-0/+2
* REPL improvementsAraq2011-02-131-4/+4
* non-nil AST; continue after errors for IDE supportAraq2011-02-121-0/+1
* changed handling of generalized string literalsAraq2011-02-071-0/+2
* nimgrep --ext supportAraq2011-02-021-0/+4
* nimgrep: first working versionAraq2011-02-021-0/+1
* unary <; countup two type parameters; --recursivePath should work nowAraq2011-01-291-2/+3
* changes to threads; --recursivePath supportAraq2011-01-291-1/+3
* basic thread support; still broken on Windows; untested on Mac OS XAraq2011-01-181-0/+1
* explicit indices in array literalsAraq2011-01-161-0/+2
* Feature: explicit string representation for enum fieldsAraq2011-01-111-0/+11
* bugfix: floating point precision; added strutils.formatFloatAraq2011-01-091-0/+3
* additions to complex moduleAraq2011-01-071-0/+1
* implemented 'emit' pragmaAraq2011-01-071-1/+2
* added test tmultim4.nimAraq2011-01-061-0/+1
* better tester; yet another iterator bugfixAraq2011-01-061-0/+2
* bugfix: multiple yield statements and loop body varsAraq2010-12-131-1/+3
* added strutils.alignAraq2010-12-071-0/+1
* docgen understands and ignores *when false*Araq2010-11-181-4/+5
* pegs: captured search loopAraq2010-11-071-0/+1
* Bugfix: niminst: nimrod is not default dir for *every* projectAraq2010-11-021-0/+1
* bugfix: dialogs.ChooseFilesToOpenAraq2010-11-011-0/+2
* added os.findExeAraq2010-10-311-0/+1
* pegs: bugfixes and extensionsAraq2010-10-311-1/+2
* bugfixes: htmlparser moduleAraq2010-10-301-0/+16
* version 0.8.10Araq2010-10-211-2/+5
* proper parameter order for os.copyFile/os.moveFileAraq2010-09-211-0/+1
* bugfix: overflow checking for small ints; bugfix: tiny C works againAraq2010-09-201-0/+1
* fixes for exception handling; added system.compileOptionAraq2010-09-131-1/+3
* c2nim: new features & bugfixesAndreas Rumpf2010-08-111-0/+1
* DLL generation of the stdlib for unixAndreas Rumpf2010-08-041-0/+2
* before stack init changeAndreas Rumpf2010-08-011-0/+4
'alt'>











                                                                            








                                                                               


                                                                            
































                                                                              
 
 
===========================================
         Questions and Answers
===========================================


General
=======

What is Nimrod?
---------------

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 does not sacrifice
flexibility for speed. You get both.

..
  Don't give me that marketing crap. What is Nimrod?
  --------------------------------------------------

  Nimrod = Mutable value based datatypes + static binding + sugar to make 
    this programming modell as convenient as possible


Why is it named Nimrod?
-----------------------
You have to find out for yourself. If you don't find a tongue-in-cheek 
interpretation you will have to look harder.


How is Nimrod licensed?
-----------------------

The Nimrod compiler is GPL licensed, the runtime library is LGPL licensed.
This means that you can use any license for your own programs developed with
Nimrod. If I receive enough requests with good arguments, I may change the
license of Nimrod to the BSD license.

How stable is Nimrod?
---------------------

The compiler is in development and some important features are still missing. 
However, the compiler is quite stable already: It is able to compile itself 
and a substantial body of other code. Until version 1.0.0 is released, 
incompatibilities with older versions of the compiler will be introduced. The 
semantic details of overloading, macros/templates/generics and iterators 
and their interactions are subject to change.


How fast is Nimrod?
-------------------
Benchmarks have not been ported yet and support for threads is missing. But in
the worst case, you can get the same performance as in C if you decide 
to write as low-level Nimrod code as C requires you to do. That said the only
overhead Nimrod has over C is the GC which has been tuned for years.


What about JVM/CLR backends?
----------------------------

A JVM backend is almost impossible. The JVM is not expressive enough. It has
never been designed as a general purpose VM anyway. A CLR backend is possible
but would require much work. 


Compilation
===========

Which option to use for the fastest executable?
-----------------------------------------------

For the standard configuration file, ``-d:release`` does the trick.


Which option to use for the smallest executable?
------------------------------------------------

For the standard configuration file, ``-d:quick --opt:size`` does the trick.


Execution of GCC fails (Windows)
--------------------------------

On Windows the configuration file ``config\nimrod.cfg`` assumes that GCC is in 
``$nimrod\dist\mingw\bin``: This is where the Windows installer puts GCC.  
If you delete the line ``gcc.path = r"$nimrod\dist\mingw\bin"``, Nimrod uses 
the GCC from your ``PATH`` environment variable. 

If you cannot modify ``$nimrod\config\nimrod.cfg``, copy 
``$nimrod\config\nimrod.cfg`` to ``%APPDATA%\nimrod.cfg`` and modify 
``%APPDATA%\nimrod.cfg`` instead. To determine what ``%APPDATA%`` means for 
your Windows account, use the shell command::

  echo %APPDATA%



How do I use a different C compiler than the default one?
---------------------------------------------------------

Edit the ``config/nimrod.cfg`` file.
Change the value of the ``cc`` variable to one of the following:

==============  ============================================
Abbreviation    C/C++ Compiler
==============  ============================================
``dmc``         Digital Mars C++
``wcc``         Watcom C++ (now unsupported!)
``bcc``         Borland C++ (now unsupported!)
``vcc``         Microsoft's Visual C++
``gcc``         Gnu C
``pcc``         Pelles C (now unsupported!)
``lcc``         Lcc-win32 (now unsupported!)
``tcc``         Tiny C
``llvm_gcc``    LLVM-GCC compiler
``icc``         Intel C++ compiler
``ucc``         Generic UNIX C compiler
==============  ============================================

If your C compiler is not in the above list, try using the
*generic UNIX C compiler* (``ucc``). If the C compiler needs
different command line arguments try the ``--passc`` and ``--passl`` switches.
Unsupported compilers contain serious bugs that keep them from bootstrapping
Nimrod.