diff options
Diffstat (limited to 'web')
-rwxr-xr-x | web/community.txt | 8 | ||||
-rwxr-xr-x | web/documentation.txt | 1 | ||||
-rwxr-xr-x | web/download.txt | 17 | ||||
-rwxr-xr-x | web/index.txt | 123 | ||||
-rwxr-xr-x | web/links.txt | 0 | ||||
-rwxr-xr-x | web/news.txt | 677 | ||||
-rw-r--r-- | web/nimrod.ini | 51 | ||||
-rwxr-xr-x | web/question.txt | 130 | ||||
-rwxr-xr-x | web/snippets/snippet1.nim | 4 | ||||
-rwxr-xr-x | web/ticker.txt | 43 |
10 files changed, 0 insertions, 1054 deletions
diff --git a/web/community.txt b/web/community.txt deleted file mode 100755 index fa1255afe..000000000 --- a/web/community.txt +++ /dev/null @@ -1,8 +0,0 @@ -Discuss Nimrod in our `forum <http://force7.de/heimdall>`_. - -Visit our project page at GitHub: http://github.com/Araq/Nimrod. - -Wiki: http://github.com/Araq/Nimrod/wiki. - -Bug reports: http://github.com/Araq/Nimrod/issues. - diff --git a/web/documentation.txt b/web/documentation.txt deleted file mode 100755 index da0313c32..000000000 --- a/web/documentation.txt +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../doc/docs.txt diff --git a/web/download.txt b/web/download.txt deleted file mode 100755 index 67de502b8..000000000 --- a/web/download.txt +++ /dev/null @@ -1,17 +0,0 @@ - There are two major products that come out of Berkeley: LSD and UNIX. - We don't believe this to be a coincidence. -- Jeremy S. Anderson. - -Here you can download the latest version of the Nimrod Compiler. -Please choose your platform: -* source-based installation: `<download/nimrod_0.8.10.zip>`_ -* installer for Windows XP/Vista (i386): `<download/nimrod_0.8.10.exe>`_ - (includes GCC and everything else you need) - -The source-based installation has been tested on these systems: -* Linux: i386, AMD64 -* Mac OS X: i386 - -Other UNIX-based operating systems may work. An older version was tested on -FreeBSD (i386). - -.. include:: ../install.txt diff --git a/web/index.txt b/web/index.txt deleted file mode 100755 index 09e18c5aa..000000000 --- a/web/index.txt +++ /dev/null @@ -1,123 +0,0 @@ -==== -Home -==== - - The most important thing in the programming language is the name. A language - will not succeed without a good name. I have recently invented a very good - name and now I am looking for a suitable language. - -- D. E. Knuth - - -**This page is about the Nimrod programming language, which combines Lisp's -power with Python's readability and C's performance.** - -Welcome to Nimrod ------------------ - -.. container:: snippet - *Nimrod looks like this:* - - .. code-block:: nimrod - # Filter key=value pairs - import re - - for x in lines("myfile.txt"): - if x =~ re"(\w+)=(.*)": - echo "Key: ", matches[0], - " Value: ", matches[1] - -**Nimrod** is a new statically typed, imperative -programming language, that supports procedural, object oriented, functional -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 allows domain specific languages. - -Nimrod is a compiled, garbage-collected systems programming language -which has an excellent productivity/performance ratio. Nimrod's design -focuses on the 3E: efficiency, expressiveness, elegance (in the order of -priority). - - -Nimrod is efficient -=================== - -* Native code generation (currently via compilation to C), not dependant on a - virtual machine: **Nimrod produces small executables without dependencies - for easy redistribution.** -* A fast non-recursive incremental and generational garbage collector that - should be well suited for soft real-time systems (like games). -* System programming features: Ability to manage your own memory and access the - hardware directly. Pointers to garbage collected memory are distinguished - from pointers to manually managed memory. -* Zero-overhead iterators. -* Cross-module inlining. -* Dynamic method binding with inlining and without virtual method table. -* Compile time evaluation of user-defined functions. -* Whole program dead code elimination: Only *used functions* are included in - the executable. -* Value-based datatypes: For instance, objects and arrays can be allocated on - the stack. - - -Nimrod is expressive -==================== - -* **The Nimrod compiler and all of the standard library are implemented in - Nimrod.** -* Built-in high level datatypes: strings, sets, sequences, etc. -* Modern type system with local type inference, tuples, variants, - generics, etc. -* User-defineable operators; code with new operators is often easier to read - than code which overloads built-in operators. In the code snippet, the - ``=~`` operator is defined in the ``re`` module. -* Macros can modify the abstract syntax tree at compile time. - - -Nimrod is elegant -================= - -* Macros can use the imperative paradigm to construct parse trees. Nimrod - does not require a different coding style for meta programming. -* Macros cannot change Nimrod's syntax because there is no need for it. - Nimrod's syntax is flexible enough. -* Statements are grouped by indentation but can span multiple lines. - Indentation must not contain tabulators so the compiler always sees - the code the same way as you do. - - -Nimrod plays nice with others -============================= - -* The Nimrod Compiler runs on Windows, Linux, BSD and Mac OS X. - Porting to other platforms is easy. -* **There are bindings to GTK2, the Windows API, the POSIX API, OpenGL, SDL, - Cario, Python, Lua, TCL, X11, libzip, PRCE, ODBC, libcurl, mySQL and SQLite.** -* A C to Nimrod conversion utility: New bindings to C libraries are easily - generated by ``c2nim``. -* A Pascal to Nimrod conversion utility: A large subset of Object Pascal - can be translated to Nimrod automatically! - - -Roadmap to 1.0 -============== - -Version 0.8.x - * general expressions as generic parameters - -Version 0.9.0 - * closures and anonymous procs - * provide an API for object serialization - -Version 1.0.0 - * stress testing with a better test suite - * fix symbol files to make the compiler incremental - - -Planned features beyond 1.0 -=========================== - -* Threading with a transactional memory modell (the type system may be - enhanced to support extensive compile-time checks for this). -* Recursive iterators/coroutines. -* Other code generators: LLVM, EcmaScript. diff --git a/web/links.txt b/web/links.txt deleted file mode 100755 index e69de29bb..000000000 --- a/web/links.txt +++ /dev/null diff --git a/web/news.txt b/web/news.txt deleted file mode 100755 index f421f0f70..000000000 --- a/web/news.txt +++ /dev/null @@ -1,677 +0,0 @@ -==== -News -==== - - -2011-XX-XX Version 0.8.12 released -================================== - -Version 0.8.12 has been released! Get it `here <download.html>`_. - -Bugfixes --------- - -- Bugfix: ``httpclient`` correct passes the path starting with ``/``. -- Bugfixes for the ``htmlparser`` module. -- Bugfix: ``pegs.find`` did not respect ``start`` parameter. -- Bugfix: ``dialogs.ChooseFilesToOpen`` did not work if only one file is - selected. -- Bugfix: niminst: ``nimrod`` is not default dir for *every* project. -- Bugfix: Multiple yield statements in iterators did not cause local vars to be - copied. -- Bugfix: The compiler does not emit very inaccurate floating point literals - anymore. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Operators starting with ``^`` are now right-associative and have the highest - priority. - - -Additions ---------- - -- Added ``re.findAll``, ``pegs.findAll``. -- Added ``os.findExe``. -- Added ``strutils.align``, ``strutils.tokenize``, ``strutils.wordWrap``. -- Pegs support a *captured search loop operator* ``{@}``. -- Pegs support new built-ins: ``\letter``, ``\upper``, ``\lower``, - ``\title``, ``\white``. -- Pegs support the new built-in ``\skip`` operation. -- Source code filters are now properly documented. -- Added ``emit`` pragma for direct code generator control. -- Additional operations were added to the ``complex`` module. -- Added ``strutils.formatFloat``, ``strutils.formatBiggestFloat``. -- A field in an ``enum`` may be given an explicit string representation. - This yields more maintainable code than using a constant - ``array[TMyEnum, string]`` mapping. - - - -2010-10-20 Version 0.8.10 released -================================== - -Bugfixes --------- - -- Bugfix: Command line parsing on Windows and ``os.parseCmdLine`` now adheres - to the same parsing rules as Microsoft's C/C++ startup code. -- Bugfix: Passing a ``ref`` pointer to the untyped ``pointer`` type is invalid. -- Bugfix: Updated ``keyval`` example. -- Bugfix: ``system.splitChunk`` still contained code for debug output. -- Bugfix: ``dialogs.ChooseFileToSave`` uses ``STOCK_SAVE`` instead of - ``STOCK_OPEN`` for the GTK backend. -- Bugfix: Various bugs concerning exception handling fixed. -- Bugfix: ``low(somestring)`` crashed the compiler. -- Bugfix: ``strutils.endsWith`` lacked range checking. -- Bugfix: Better detection for AMD64 on Mac OS X. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Reversed parameter order for ``os.copyFile`` and ``os.moveFile``!!! -- Procs not marked as ``procvar`` cannot only be passed to a procvar anymore, - unless they are used in the same module. -- Deprecated ``times.getStartMilsecs``: Use ``epochTime`` or ``cpuTime`` - instead. -- Removed ``system.OpenFile``. -- Removed ``system.CloseFile``. -- Removed ``strutils.replaceStr``. -- Removed ``strutils.deleteStr``. -- Removed ``strutils.splitLinesSeq``. -- Removed ``strutils.splitSeq``. -- Removed ``strutils.toString``. -- If a DLL cannot be loaded (via the ``dynlib`` pragma) ``EInvalidLibrary`` - is not raised anymore. Instead ``system.quit()`` is called. This is because - raising an exception requires heap allocations. However the memory manager - might be contained in the DLL that failed to load. -- The ``re`` module (and the ``pcre`` wrapper) now depend on the pcre dll. - - -Additions ---------- - -- The ``{.compile: "file.c".}`` pragma uses a CRC check to see if the file - needs to be recompiled. -- Added ``system.reopen``. -- Added ``system.getCurrentException``. -- Added ``system.appType``. -- Added ``system.compileOption``. -- Added ``times.epochTime`` and ``times.cpuTime``. -- Implemented explicit type arguments for generics. -- Implemented ``{.size: sizeof(cint).}`` pragma for enum types. This is useful - for interfacing with C. -- Implemented ``{.pragma.}`` pragma for user defined pragmas. -- Implemented ``{.extern.}`` pragma for better control of name mangling. -- The ``importc`` and ``exportc`` pragmas support format strings: - ``proc p{.exportc: "nim_$1".}`` exports ``p`` as ``nim_p``. This is useful - for user defined pragmas. -- The standard library can be built as a DLL. Generating DLLs has been - improved. -- Added ``expat`` module. -- Added ``json`` module. -- Added support for a *Tiny C* backend. Currently this only works on Linux. - You need to bootstrap with ``-d:tinyc`` to enable Tiny C support. Nimrod - can then execute code directly via ``nimrod run myfile``. - - -2010-03-14 Version 0.8.8 released -================================= - -Bugfixes --------- -- The Posix version of ``os.copyFile`` has better error handling. -- Fixed bug #502670 (underscores in identifiers). -- Fixed a bug in the ``parsexml`` module concerning the parsing of - ``<tag attr="value" />``. -- Fixed a bug in the ``parsexml`` module concerning the parsing of - enities like ``<XX``. -- ``system.write(f: TFile, s: string)`` now works even if ``s`` contains binary - zeros. -- Fixed a bug in ``os.setFilePermissions`` for Windows. -- An overloadable symbol can now have the same name as an imported module. -- Fixed a serious bug in ``strutils.cmpIgnoreCase``. -- Fixed ``unicode.toUTF8``. -- The compiler now rejects ``'\n'`` (use ``"\n"`` instead). -- ``times.getStartMilsecs()`` now works on Mac OS X. -- Fixed a bug in ``pegs.match`` concerning start offsets. -- Lots of other little bugfixes. - - -Additions ---------- -- Added ``system.cstringArrayToSeq``. -- Added ``system.lines(f: TFile)`` iterator. -- Added ``system.delete``, ``system.del`` and ``system.insert`` for sequences. -- Added ``system./`` for int. -- Exported ``system.newException`` template. -- Added ``cgi.decodeData(data: string): tuple[key, value: string]``. -- Added ``strutils.insertSep``. -- Added ``math.trunc``. -- Added ``ropes`` module. -- Added ``sockets`` module. -- Added ``browsers`` module. -- Added ``httpserver`` module. -- Added ``httpclient`` module. -- Added ``parseutils`` module. -- Added ``unidecode`` module. -- Added ``xmldom`` module. -- Added ``xmldomparser`` module. -- Added ``xmltree`` module. -- Added ``xmlparser`` module. -- Added ``htmlparser`` module. -- Added ``re`` module. -- Added ``graphics`` module. -- Added ``colors`` module. -- Many wrappers now do not contain redundant name prefixes (like ``GTK_``, - ``lua``). The old wrappers are still available in ``lib/oldwrappers``. - You can change your configuration file to use these. -- Triple quoted strings allow for ``"`` in more contexts. -- ``""`` within raw string literals stands for a single quotation mark. -- Arguments to ``openArray`` parameters can be left out. -- More extensive subscript operator overloading. (To be documented.) -- The documentation generator supports the ``.. raw:: html`` directive. -- The Pegs module supports back references via the notation ``$capture_index``. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Overloading of the subscript operator only works if the type does not provide - a built-in one. -- The search order for libraries which is affected by the ``path`` option - has been reversed, so that the project's path is searched before - the standard library's path. -- The compiler does not include a Pascal parser for bootstrapping purposes any - more. Instead there is a ``pas2nim`` tool that contains the old functionality. -- The procs ``os.copyFile`` and ``os.moveFile`` have been deprecated - temporarily, so that the compiler warns about their usage. Use them with - named arguments only, because the parameter order will change the next - version! -- ``atomic`` and ``let`` are now keywords. -- The ``\w`` character class for pegs now includes the digits ``'0'..'9'``. -- Many wrappers now do not contain redundant name prefixes (like ``GTK_``, - ``lua``) anymore. -- Arguments to ``openArray`` parameters can be left out. - - -2009-12-21 Version 0.8.6 released -================================= - -The version jump from 0.8.2 to 0.8.6 acknowledges the fact that all development -of the compiler is now done in Nimrod. - - -Bugfixes --------- -- The pragmas ``hint[X]:off`` and ``warning[X]:off`` now work. -- Method call syntax for iterators works again (``for x in lines.split()``). -- Fixed a typo in ``removeDir`` for POSIX that lead to an infinite recursion. -- The compiler now checks that module filenames are valid identifiers. -- Empty patterns for the ``dynlib`` pragma are now possible. -- ``os.parseCmdLine`` returned wrong results for trailing whitespace. -- Inconsequent tuple usage (using the same tuple with and without named fields) - does not crash the code generator anymore. -- A better error message is provided when the loading of a proc within a - dynamic lib fails. - - -Additions ---------- -- Added ``system.contains`` for open arrays. -- The PEG module now supports the *search loop operator* ``@``. -- Grammar/parser: ``SAD|IND`` is allowed before any kind of closing bracket. - This allows for more flexible source code formating. -- The compiler now uses a *bind* table for symbol lookup within a ``bind`` - context. (See `<manual.html#templates>`_ for details.) -- ``discard """my long comment"""`` is now optimized away. -- New ``--floatChecks: on|off`` switches and pragmas for better debugging - of floating point operations. (See - `<manual.html#pre-defined-floating-point-types>`_ for details.) -- The manual has been improved. (Many thanks to Philippe Lhoste!) - - -Changes affecting backwards compatibility ------------------------------------------ -- The compiler does not skip the linking step anymore even if no file - has changed. -- ``os.splitFile(".xyz")`` now returns ``("", ".xyz", "")`` instead of - ``("", "", ".xyz")``. So filenames starting with a dot are handled - differently. -- ``strutils.split(s: string, seps: set[char])`` never yields the empty string - anymore. This behaviour is probably more appropriate for whitespace splitting. -- The compiler now stops after the ``--version`` command line switch. -- Removed support for enum inheritance in the parser; enum inheritance has - never been documented anyway. -- The ``msg`` field of ``system.E_base`` has now the type ``string``, instead - of ``cstring``. This improves memory safety. - - -2009-10-21 Version 0.8.2 released -================================= - -Bugfixes --------- -- Passing ``--hint[X]:off`` or ``--warning[X]: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 <pegs.html>`_ 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 compatibility ------------------------------------------ -- 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. - - -2009-09-12 Version 0.8.0 released -================================= - -Bugfixes --------- -- fixed a small bug that caused the compiler to not report unused - overloaded symbols -- fixed a small bug concerning symbol overloading -- fixed a typo: it's "ambiguous", not "ambigious" ;-) -- the compiler now detects recursive include files -- ``system.card`` should work again -- ``items`` for ``set[char]`` and ``array[char, T]`` should work now - - -Additions ---------- - -- implemented generic types and two phase symbol lookup in generic routines -- template parameters can now have real types -- implemented generalized raw string literals: ``ident"abc"`` is a shortcut for - ``ident(r"abc")`` -- in overloading resolution iterators are separated from procs; iterators now - can have the same name+signature as procs -- symbol lookup in templates can be affected by the new ``bind`` keyword -- the compiler now accepts a ``--no_main`` switch for better link - interoperability with other compiled languages -- implemented tuple unpacking in ``var`` sections -- the code generator emits ``default: __assume(0);`` for Visual C++ - (for optimization) -- the compiler now checks if a proc has side effects; procs that are declared - to have no side effects are rejected if the compiler cannot verify this -- the format operator ``strutils.%`` now supports ``$#`` for automatic argument - counting -- implemented ``strutils.join`` - - -Changes affecting backwards compatibility ------------------------------------------ - -- two phase symbol lookup is performed in generic routines -- ``bind`` is now a reserved word; ``exception`` is no reserved word anymore -- abstract types have been renamed to distinct types; thus - ``distinct`` is now a reserved word; ``abstract`` is no reserved word anymore -- ``system.openFile`` deprecated: use ``system.open`` instead -- ``system.closeFile`` deprecated: use ``system.close`` instead -- ``strutils.replaceStr`` deprecated: use ``strutils.replace`` instead -- ``strutils.deleteStr`` deprecated: use ``strutils.delete`` instead -- ``strutils.splitSeq`` deprecated: use ``strutils.split`` instead -- ``strutils.splitLinesSeq`` deprecated: use ``strutils.splitLines`` instead -- ``strutils.parseFloat`` does not accept an additional ``start`` parameter - anymore - - -Documentation -------------- - -- the manual has been improved - - - -2009-06-08 Version 0.7.10 released -================================== - -Nimrod version 0.7.10 has been released! - -Bugfixes --------- - -- fixed bug #374441, #376113 -- the posix module works for Mac OS X again -- returning an array should now work -- fixed a serious bug in several parsers: the cached buf pointer - must be updated after a reallocation of the buffer -- fixed a CSS bug that kept Firefox from rendering parts of - the generated documentation properly -- fixed a bug concerning evaluation of command statements -- overloading of ``inc``, ``dec``, ``pred``, ``succ`` should now work -- ``removeDir`` now works as the documentation says: it even removes - directories that are not empty - - -Additions ---------- - -* zero argument templates/macros can now be invoked without ``()``, - because this is not ambiguous -* new modules in the library: - - ``dynlib``: load symbols from a shared library - - ``python``: wrapper for the Python programming language - - ``tcl``: wrapper for the TCL programming language -* added ``system.max``, ``system.min`` for open arrays -* added ``system.each`` built-in -* added ``os.getFilePermissions``, ``os.setFilePermissions``, - ``os.inclFilePermissions``, ``os.exclFilePermissions`` -* the ``dynlib`` import mechanism now supports a flexible versioning scheme: - - .. code-block:: nimrod - - proc Tcl_Eval(interp: pTcl_Interp, script: cstring): int {.cdecl, - importc, dynlib: "libtcl(8.5|8.4|8.3|8.2|8.1).so.(1|0)".} - -* implemented ``abstract`` types - - -Changes affecting backwards compatibility ------------------------------------------ - -- the organization within the ``lib`` folder now reflects the documentation; - as a result old configuration files need to be updated -- ``abstract`` is now a reserved keyword -- ``echo`` is now a built-in macro that accepts a variable numer of - arguments of different types (and calls ``$`` for the arguments that need - it); as a result it cannot be overloaded anymore -- ``where`` is no keyword anymore -- installation on UNIX produces a release version of the compiler - - -2009-05-08 Version 0.7.8 released -================================= - -Nimrod version 0.7.8 has been released! -Apart from bugfixes and added libraries the biggest change is that Nimrod -now has a new memory manager which: - -- interacts much better with the GC -- uses less memory -- is faster than the old memory manager (``dlmalloc``) -- releases memory back to the operating system - - -Bugfixes --------- - -- generics are now processed earlier in the pipeline; thus - generics can be used within macros -- changed bootstrapping in ``koch.py`` and ``boot.nim`` to fix - bug #369607 -- the compiler now checks that ``yield`` is used inside a loop -- fixed a bug in the evaluation code for ``system.len``, - ``system.setlen`` and ``system.newSeq`` -- overflow checking for ``newSeq`` fixes a security issue - - -Additions ---------- - -- new module: ``parsecsv`` for parsing CSV files -- new module: ``xmlgen`` for generating XML or HTML -- new module: ``osproc`` for OS process communication -- added ``math.TRunningStat`` object and its methods -- added ``strutils.validIdentifier`` -- the reStructuredText parser now supports the ``container`` directive that - translates to the HTML ``div`` element -- the ``cgi`` module registers a handler, so that stack traces contain the - HTML ``<br />`` element making CGI applications easier to debug -- added the ``cgi.decodeData`` iterator -- ``copy`` and ``newString`` can now be evaluated at compile time. As a - result more procedures from the ``strutils`` module can be evaluated at - compile time. -- ``macros.error`` now prints a stack trace -- Nimrod now supports the Boehm-Demers-Weiser conservative garbage collector: - The ``--gc:boehm`` command line switch activates it. However, the native - Nimrod collector is faster! - - -Documentation -------------- - -- Nimrod's abstract syntax trees are now documented in the - `macros <macros.html>`_ module. Unfortunately the documentation is still - incomplete. - - -2009-04-22 Version 0.7.6 released -================================= - -Nimrod version 0.7.6 has been released! -This is mostly a bugfix release. Some new features and libraries have -also been implemented. - -Bugfixes --------- - -- installation on Windows Vista may now work out of the box; please try! -- fixed a bug that kept the "recursive modules" example from working -- mixing named and unnamed parameters in a procedure call now works -- octal numbers with the prefix ``0c`` are now properly supported -- enumerations now may start with negative values -- ``parseInt``, ``ParseBiggestInt`` now throw an exception if the - string does not end after the parsed number -- the compiler now handles top-level statements correctly -- generated ``nimcache`` directory never ends in a slash -- ``createDir`` now works for global directories under UNIX ("/somepath/here") -- the compiler now executes the executable with a leading "./" under UNIX -- the compiler now supports constant arrays of procedure pointers -- ``elif`` in ``case`` statements now works -- iterators using an open array parameter now work -- fixed a bug where in some contexts ``$myEnum`` did not work - - -Additions ---------- -- implemented the passing of a code-block to the last parameter of a - template/macro: - - .. code-block:: nimrod - - template withFile(f, filename, mode: expr, - actions: stmt): stmt = - block: - var f: TFile - if openFile(f, filename, mode): - try: - actions - finally: - closeFile(f) - else: - quit("cannot open: " & filename) - - withFile(txt, "ttempl3.txt", fmWrite): - txt.writeln("line 1") - txt.writeln("line 2") - -- new pragma ``deprecated`` can be used to mark deprecated identifiers -- added ``system.pop`` built-in for sequences -- added ``addf``, ``addSep`` and ``validEmailAddress`` to the - ``strutils`` module -- nice ``=~`` template operator for the ``regexprs`` module -- the scoping rules for ``for``, ``while``, ``if``, ``case`` changed - in a subtle way to support the new ``=~`` template -- added common regular expressions for regexprs -- ``posix`` module now declares socket stuff -- new module: ``cgi`` for creating CGI applications -- new module: ``terminal`` for simple terminal output customization -- new module: ``parsexml`` for HTML/XML parsing with some support for - parsing *dirty* HTML -- new module: ``web`` for retrieving web pages -- new module: ``md5`` for computation of MD5 checksums -- new wrappers: ``mysql``, ``sqlite3``, ``libcurl`` - - -Changes affecting backwards compatibility ------------------------------------------ - -- ``strutils.findSubStr``, ``strutils.findChars`` deprecated: - use ``strutils.find`` instead - - -Documentation -------------- - -- The library is now divided into *pure libraries*, *impure libraries* - and *wrappers*. - - -2009-01-22 Forum added -====================== -We now have a `forum <http://www.ethexor.com/heimdall>`_ where you can discuss -Nimrod. - - -2009-01-07 Version 0.7.4 released -================================= - -Nimrod version 0.7.4 has been released! - -Bugfixes --------- - -- installation on Windows should work now if the directory contains spaces -- the documentation generator now only renders documentation comments -- ``\`` is allowed for operators as the manual says -- in rare cases, the index check has been optimized away, even though - it would have been necessary -- several bugfixes for tuple types - -Additions ---------- - -- added an ``unicode`` module for UTF-8 handling -- added ``hostOS`` and ``hostCPU`` magics to the ``system`` module -- ``system.echo`` now accepts multiple arguments -- added optimization: in some cases inlining of iterators now produces - substantially better code -- added whole program dead code elimination -- the magic ``$`` operator now works for enumerations -- in ``const`` sections advanced compile time evaluation is done: - -.. code-block:: nimrod - proc fac(n: int): int = - if n <= 1: return 1 - else: return n*(fac(n-1)) - - const - z = fac(3) # computes 6 at compile time - -Changes affecting backwards compatibility ------------------------------------------ - -- renamed ``in_Operator`` to ``contains``: ``in`` is now a template that - translates to ``contains`` -- changed ``strutils.quoteIfSpaceExists`` to ``strutils.quoteIfContainsWhite`` -- the parser is now much more picky about missings commas, etc. If this affects - your code too much, try to run your code through the pretty printer. -- the ``macros`` API is no longer part of the ``system`` module, to use this - API you now have to import the ``macros`` module - -Documentation -------------- - -- added a tutorial - - - -2008-12-12 Version 0.7.2 released -================================= - -Nimrod version 0.7.2 has been released! This is a bugfix release. This most -important fix is that Nimrod now works again on AMD64 (x86_64) processors. No -new features have been implemented. - - -2008-11-16 Version 0.7.0 released -================================= - -Nimrod version 0.7.0 has been released! -Changes: -* various bug fixes, too many to list them here -* the installation for UNIX-based systems does not depend on Python any longer -* the ``koch.py`` script now works with older Python versions (including 1.5.2) -* changed integer operations and conversions rules -* added ``GC_ref`` and ``GC_unref`` procs -* sequences now need to be constructed with the ``@`` operator. This leads to - less ambiguities. -* the compiler now uses less memory and is much faster -* the GC is now much faster -* new bindings: zlib, SDL, Xlib, OpenGL, ODBC, Lua -* the generated C code is much faster to optimize with GCC -* new libraries: streams, zipfiles -* the Nimrod compiler has been ported to FreeBSD: it should work on - other BSD's too - - -2008-08-22 Version 0.6.0 released -================================= - -Nimrod version 0.6.0 has been released! -**This is the first version of the compiler that is able to compile itself!** -A nice side-effect from this is that a source-based installation does not -depend on FreePascal any longer. - -Changes: -* various bug fixes, too many to list them here -* cleaned up the type system: records are now superfluous and not - supported anymore -* improved the performance of the garbage collector -* new modules in the library: - - ``parseopt``: a simple to use command line parser - - ``hashes``: efficient computation of hash values - - ``strtabs``: efficient mapping from strings to strings - - ``parsecfg``: an efficient configuration file parser -* macros and compile-time evaluation implemented (however, still experimental) -* generics implemented (however, still experimental) diff --git a/web/nimrod.ini b/web/nimrod.ini deleted file mode 100644 index 65fc49936..000000000 --- a/web/nimrod.ini +++ /dev/null @@ -1,51 +0,0 @@ -[Project] -Name: "Nimrod" -Title: "Nimrod Programming Language" -Logo: "efficient, expressive, elegant" -Authors: "Andreas Rumpf" - -[Links] -GCC: "http://gcc.gnu.org" -LLVM: "http://llvm.org" - -[Tabs] -# Menu entry: filename -home: index -news: news -docs: documentation -download: download -community: community -FAQ: question - -[Ticker] -file: ticker - -[Documentation] -doc: "endb;intern;apis;lib;manual;tut1;tut2;nimrodc;overview" -doc: "tools;c2nim;niminst" -pdf: "manual;lib;tut1;tut2;nimrodc;c2nim;niminst" -srcdoc: "impure/graphics;pure/sockets" -srcdoc: "system.nim;pure/os;pure/strutils;pure/math" -srcdoc: "pure/complex;pure/times;pure/osproc;pure/pegs;pure/dynlib" -srcdoc: "pure/parseopt;pure/hashes;pure/strtabs;pure/lexbase" -srcdoc: "pure/parsecfg;pure/parsexml;pure/parsecsv;pure/parsesql" -srcdoc: "pure/streams;pure/terminal;pure/cgi;impure/web;pure/unicode" -srcdoc: "impure/zipfiles;pure/xmlgen;pure/macros;pure/parseutils;pure/browsers" -srcdoc: "impure/db_postgres;impure/db_mysql;impure/db_sqlite" -srcdoc: "pure/httpserver;pure/httpclient;pure/stmp;impure/ssl" -srcdoc: "pure/ropes;pure/unidecode/unidecode;pure/xmldom;pure/xmldomparser" -srcdoc: "pure/xmlparser;pure/htmlparser;pure/xmltree;pure/colors" -srcdoc: "pure/json;pure/base64;pure/scgi;impure/graphics" - -webdoc: "wrappers/libcurl;pure/md5;wrappers/mysql;wrappers/iup" -webdoc: "wrappers/sqlite3;wrappers/postgres;wrappers/tinyc" -webdoc: "wrappers/python;wrappers/tcl;wrappers/expat;wrappers/pcre" -webdoc: "wrappers/tre;wrappers/openssl" - -webdoc: "posix/posix;wrappers/odbcsql;impure/dialogs" -webdoc: "wrappers/zip/zlib;wrappers/zip/libzip" -webdoc: "wrappers/cairo" -webdoc: "wrappers/gtk" -webdoc: "windows" -webdoc: "wrappers/x11;wrappers/opengl;wrappers/sdl;wrappers/lua" - diff --git a/web/question.txt b/web/question.txt deleted file mode 100755 index 6f6730f94..000000000 --- a/web/question.txt +++ /dev/null @@ -1,130 +0,0 @@ -=========================================== - 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. - - - diff --git a/web/snippets/snippet1.nim b/web/snippets/snippet1.nim deleted file mode 100755 index 85cb98142..000000000 --- a/web/snippets/snippet1.nim +++ /dev/null @@ -1,4 +0,0 @@ -import strutils -echo "Give a list of integers (separated by spaces): ", - stdin.readLine.split.each(parseInt).max, - " is the maximum!" diff --git a/web/ticker.txt b/web/ticker.txt deleted file mode 100755 index 548486a5d..000000000 --- a/web/ticker.txt +++ /dev/null @@ -1,43 +0,0 @@ -| `2010-10-20`:newsdate: -| Nimrod version 0.8.10 has been released! - Get it `here <./download.html>`_. - -| `2010-03-14`:newsdate: -| Nimrod version 0.8.8 has been released! - -| `2009-12-21`:newsdate: -| Nimrod version 0.8.6 has been released! - -| `2009-10-21`:newsdate: -| Nimrod version 0.8.2 has been released! - -| `2009-09-12`:newsdate: -| Nimrod version 0.8.0 has been released! - -| `2009-06-08`:newsdate: -| Nimrod version 0.7.10 has been released! - -| `2009-05-08`:newsdate: -| Nimrod version 0.7.8 has been released! - -| `2009-04-22`:newsdate: -| Nimrod version 0.7.6 has been released! - -| `2009-01-22`:newsdate: -| Forum added! - -| `2009-01-07`:newsdate: -| Nimrod version 0.7.4 has been released! - -| `2008-12-12`:newsdate: -| Nimrod version 0.7.2 has been released! - -| `2008-11-16`:newsdate: -| Nimrod version 0.7.0 has been released! - -| `2008-08-22`:newsdate: -| Nimrod version 0.6.0 has been released! - -| `2008-06-22`:newsdate: -| This page is finally online! - |