diff options
Diffstat (limited to 'doc/nimrodc.txt')
-rwxr-xr-x | doc/nimrodc.txt | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/doc/nimrodc.txt b/doc/nimrodc.txt index d249d4860..08128521f 100755 --- a/doc/nimrodc.txt +++ b/doc/nimrodc.txt @@ -76,6 +76,28 @@ Linux does not compile on Windows, for instance. The comment on top of the C file lists the OS, CPU and CC the file has been compiled for. +Compilation cache +================= + +**Warning**: The compilation cache is still highly experimental! + +The ``nimcache`` directory may also contain so called `rod`:idx: +or `symbol files`:idx:. These files are pre-compiled modules that are used by +the compiler to perform `incremental compilation`:idx:. This means that only +modules that have changed since the last compilation (or the modules depending +on them etc.) are re-compiled. However, per default no symbol files are +generated; use the ``--symbolFiles:on`` command line switch to activate them. + +Unfortunately due to technical reasons the ``--symbolFiles:on`` needs +to *aggregate* some generated C code. This means that the resulting executable +might contain some cruft even in when dead code elimination is turned on. So +the final release build should be done with ``--symbolFiles:off``. + +Due to the aggregation of C code it is also recommended that each project +resists in its own directory so that the generated ``nimcache`` directory +is not shared between different projects. + + Cross compilation ================= @@ -315,7 +337,7 @@ ENDB. See the documentation of `endb <endb.html>`_ for further information. Volatile pragma --------------- The `volatile`:idx: pragma is for variables only. It declares the variable as -``volatile``, whatever that means in C/C++ (its semantics are not well defined +``volatile``, whatever that means in C/C++ (its semantics are not well defined in C/C++). **Note**: This pragma will not exist for the LLVM backend. @@ -331,7 +353,7 @@ input management. To start Nimrod in interactive mode use the command ``nimrod i``. To quit use the ``quit()`` command. To determine whether an input line is an incomplete statement to be continued these rules are used: -1. The line ends with ``[-+*/\\<>!\?\|%&$@~,;:=#^]\s*$`` (operator symbol +1. The line ends with ``[-+*/\\<>!\?\|%&$@~,;:=#^]\s*$`` (operator symbol followed by optional whitespace). 2. The line starts with a space (indentation). 3. The line is within a triple quoted string literal. However, the detection |