summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2012-02-09 02:26:08 +0100
committerAraq <rumpf_a@web.de>2012-02-09 02:26:08 +0100
commitb458dc70096d3f23c72b28097ef4ce5329893db8 (patch)
tree707563df5ad0da87d6393455d408926653840a93
parent32b4192b3f0771af11e9d850046e5f3dd42a9a5f (diff)
downloadNim-b458dc70096d3f23c72b28097ef4ce5329893db8.tar.gz
little fixes for 0.8.14 release
-rwxr-xr-xcopying.txt2
-rwxr-xr-xdoc/lib.txt4
-rwxr-xr-xdoc/theindex.txt183
-rw-r--r--lib/pure/actors.nim13
-rwxr-xr-xweb/news.txt1
-rwxr-xr-xweb/nimrod.ini2
6 files changed, 131 insertions, 74 deletions
diff --git a/copying.txt b/copying.txt
index 9218f17d7..0f0ec0daa 100755
--- a/copying.txt
+++ b/copying.txt
@@ -1,6 +1,6 @@
 =======================================================

                 The Nimrod Compiler

-         Copyright (C) 2004-2011  Andreas Rumpf

+         Copyright (C) 2004-2012  Andreas Rumpf

 =======================================================

 

 This program is free software; you can redistribute it and/or

diff --git a/doc/lib.txt b/doc/lib.txt
index 50c89e679..acdee3447 100755
--- a/doc/lib.txt
+++ b/doc/lib.txt
@@ -48,6 +48,10 @@ Core
 * `typeinfo <typeinfo.html>`_
   Provides (unsafe) access to Nimrod's run time type information. 
   
+* `actors <actors.html>`_
+  Actor support for Nimrod; implemented as a layer on top of the threads and
+  channels modules.
+
 
 Collections and algorithms
 --------------------------
diff --git a/doc/theindex.txt b/doc/theindex.txt
index 56d090ddf..3a9dabf3f 100755
--- a/doc/theindex.txt
+++ b/doc/theindex.txt
@@ -257,15 +257,15 @@ Index
      * `system.html#524 <system.html#524>`_
 
    `<=%`:idx:
+     `unicode.html#103 <unicode.html#103>`_
+
+   `<=%`:idx:
      * `system.html#318 <system.html#318>`_
      * `system.html#319 <system.html#319>`_
      * `system.html#320 <system.html#320>`_
      * `system.html#321 <system.html#321>`_
      * `system.html#322 <system.html#322>`_
 
-   `<=%`:idx:
-     `unicode.html#103 <unicode.html#103>`_
-
    `<>`:idx:
      `xmltree.html#128 <xmltree.html#128>`_
 
@@ -303,10 +303,10 @@ Index
      `regexprs.html#111 <regexprs.html#111>`_
 
    `=~`:idx:
-     `re.html#120 <re.html#120>`_
+     `complex.html#103 <complex.html#103>`_
 
    `=~`:idx:
-     `complex.html#103 <complex.html#103>`_
+     `re.html#120 <re.html#120>`_
 
    `>`:idx:
      `system.html#370 <system.html#370>`_
@@ -331,11 +331,16 @@ Index
      `pegs.html#114 <pegs.html#114>`_
 
    `[]`:idx:
+     `xmltree.html#115 <xmltree.html#115>`_
+
+   `[]`:idx:
      `macros.html#112 <macros.html#112>`_
 
    `[]`:idx:
-     * `graphics.html#116 <graphics.html#116>`_
-     * `graphics.html#117 <graphics.html#117>`_
+     `ropes.html#115 <ropes.html#115>`_
+
+   `[]`:idx:
+     `strtabs.html#107 <strtabs.html#107>`_
 
    `[]`:idx:
      * `tables.html#108 <tables.html#108>`_
@@ -343,11 +348,9 @@ Index
      * `tables.html#139 <tables.html#139>`_
 
    `[]`:idx:
-     * `json.html#130 <json.html#130>`_
-     * `json.html#131 <json.html#131>`_
-
-   `[]`:idx:
-     `xmltree.html#115 <xmltree.html#115>`_
+     * `typeinfo.html#112 <typeinfo.html#112>`_
+     * `typeinfo.html#120 <typeinfo.html#120>`_
+     * `typeinfo.html#121 <typeinfo.html#121>`_
 
    `[]`:idx:
      * `system.html#606 <system.html#606>`_
@@ -356,26 +359,18 @@ Index
      * `system.html#613 <system.html#613>`_
 
    `[]`:idx:
-     `strtabs.html#107 <strtabs.html#107>`_
-
-   `[]`:idx:
-     * `typeinfo.html#112 <typeinfo.html#112>`_
-     * `typeinfo.html#120 <typeinfo.html#120>`_
-     * `typeinfo.html#121 <typeinfo.html#121>`_
+     * `json.html#130 <json.html#130>`_
+     * `json.html#131 <json.html#131>`_
 
    `[]`:idx:
      `critbits.html#110 <critbits.html#110>`_
 
    `[]`:idx:
-     `ropes.html#115 <ropes.html#115>`_
-
-   `[]=`:idx:
-     * `tables.html#111 <tables.html#111>`_
-     * `tables.html#127 <tables.html#127>`_
-     * `tables.html#142 <tables.html#142>`_
+     * `graphics.html#116 <graphics.html#116>`_
+     * `graphics.html#117 <graphics.html#117>`_
 
    `[]=`:idx:
-     `json.html#135 <json.html#135>`_
+     `strtabs.html#110 <strtabs.html#110>`_
 
    `[]=`:idx:
      * `typeinfo.html#113 <typeinfo.html#113>`_
@@ -383,27 +378,35 @@ Index
      * `typeinfo.html#122 <typeinfo.html#122>`_
 
    `[]=`:idx:
-     `strtabs.html#110 <strtabs.html#110>`_
+     `macros.html#113 <macros.html#113>`_
 
    `[]=`:idx:
-     `critbits.html#109 <critbits.html#109>`_
+     * `tables.html#111 <tables.html#111>`_
+     * `tables.html#127 <tables.html#127>`_
+     * `tables.html#142 <tables.html#142>`_
+
+   `[]=`:idx:
+     * `system.html#608 <system.html#608>`_
+     * `system.html#610 <system.html#610>`_
+     * `system.html#612 <system.html#612>`_
+     * `system.html#615 <system.html#615>`_
 
    `[]=`:idx:
      * `graphics.html#118 <graphics.html#118>`_
      * `graphics.html#119 <graphics.html#119>`_
 
    `[]=`:idx:
-     `macros.html#113 <macros.html#113>`_
+     `json.html#135 <json.html#135>`_
 
    `[]=`:idx:
-     * `system.html#608 <system.html#608>`_
-     * `system.html#610 <system.html#610>`_
-     * `system.html#612 <system.html#612>`_
-     * `system.html#615 <system.html#615>`_
+     `critbits.html#109 <critbits.html#109>`_
 
    `[ESC]`:idx:
      `manual.html#134 <manual.html#134>`_
 
+   `^`:idx:
+     `actors.html#115 <actors.html#115>`_
+
    `a`:idx:
      * `xmlgen.html#107 <xmlgen.html#107>`_
      * `htmlgen.html#107 <htmlgen.html#107>`_
@@ -432,6 +435,9 @@ Index
      * `xmlgen.html#108 <xmlgen.html#108>`_
      * `htmlgen.html#108 <htmlgen.html#108>`_
 
+   `Actor`:idx:
+     `actors.html#101 <actors.html#101>`_
+
    `actor model`:idx:
      `manual.html#285 <manual.html#285>`_
 
@@ -1679,6 +1685,9 @@ Index
    `create`:idx:
      `sphinx.html#151 <sphinx.html#151>`_
 
+   `createActorPool`:idx:
+     `actors.html#116 <actors.html#116>`_
+
    `createAttribute`:idx:
      `xmldom.html#142 <xmldom.html#142>`_
 
@@ -2633,12 +2642,12 @@ Index
    `enum_cursor_type`:idx:
      `mysql.html#237 <mysql.html#237>`_
 
-   `Enumeration`:idx:
-     `manual.html#159 <manual.html#159>`_
-
    `enumeration`:idx:
      `tut1.html#114 <tut1.html#114>`_
 
+   `Enumeration`:idx:
+     `manual.html#159 <manual.html#159>`_
+
    `enum_field_types`:idx:
      `mysql.html#202 <mysql.html#202>`_
 
@@ -3575,12 +3584,12 @@ Index
    `getStream`:idx:
      `zipfiles.html#109 <zipfiles.html#109>`_
 
-   `getString`:idx:
-     `typeinfo.html#141 <typeinfo.html#141>`_
-
    `get_string`:idx:
      `sphinx.html#188 <sphinx.html#188>`_
 
+   `getString`:idx:
+     `typeinfo.html#141 <typeinfo.html#141>`_
+
    `getTempDir`:idx:
      `os.html#173 <os.html#173>`_
 
@@ -3758,15 +3767,15 @@ Index
    `hSetNX`:idx:
      `redis.html#147 <redis.html#147>`_
 
-   `html`:idx:
-     * `xmlgen.html#139 <xmlgen.html#139>`_
-     * `htmlgen.html#139 <htmlgen.html#139>`_
-
    `HTML`:idx:
      * `xmlgen.html#102 <xmlgen.html#102>`_
      * `parsexml.html#102 <parsexml.html#102>`_
      * `htmlgen.html#102 <htmlgen.html#102>`_
 
+   `html`:idx:
+     * `xmlgen.html#139 <xmlgen.html#139>`_
+     * `htmlgen.html#139 <htmlgen.html#139>`_
+
    `htmlTag`:idx:
      * `htmlparser.html#105 <htmlparser.html#105>`_
      * `htmlparser.html#106 <htmlparser.html#106>`_
@@ -3815,24 +3824,24 @@ Index
    `ident=`:idx:
      `macros.html#132 <macros.html#132>`_
 
-   `IdentChars`:idx:
-     `strutils.html#106 <strutils.html#106>`_
-
    `identChars`:idx:
      `pegs.html#140 <pegs.html#140>`_
 
+   `IdentChars`:idx:
+     `strutils.html#106 <strutils.html#106>`_
+
    `identifier`:idx:
      `manual.html#105 <manual.html#105>`_
 
    `Identifiers`:idx:
      `manual.html#116 <manual.html#116>`_
 
-   `identStartChars`:idx:
-     `pegs.html#141 <pegs.html#141>`_
-
    `IdentStartChars`:idx:
      `strutils.html#107 <strutils.html#107>`_
 
+   `identStartChars`:idx:
+     `pegs.html#141 <pegs.html#141>`_
+
    `if`:idx:
      `manual.html#201 <manual.html#201>`_
 
@@ -3869,7 +3878,8 @@ Index
      `system.html#372 <system.html#372>`_
 
    `inbox`:idx:
-     `manual.html#288 <manual.html#288>`_
+     * `manual.html#288 <manual.html#288>`_
+     * `actors.html#105 <actors.html#105>`_
 
    `inc`:idx:
      * `system.html#186 <system.html#186>`_
@@ -4174,6 +4184,8 @@ Index
      * `strutils.html#143 <strutils.html#143>`_
      * `strutils.html#144 <strutils.html#144>`_
      * `irc.html#110 <irc.html#110>`_
+     * `actors.html#108 <actors.html#108>`_
+     * `actors.html#119 <actors.html#119>`_
 
    `JoinPath`:idx:
      * `os.html#126 <os.html#126>`_
@@ -4645,12 +4657,12 @@ Index
    `multi`:idx:
      `redis.html#196 <redis.html#196>`_
 
-   `multi-methods`:idx:
-     `tut2.html#104 <tut2.html#104>`_
-
    `Multi-methods`:idx:
      `manual.html#226 <manual.html#226>`_
 
+   `multi-methods`:idx:
+     `tut2.html#104 <tut2.html#104>`_
+
    `MULTIPLE_KEY_FLAG`:idx:
      `mysql.html#127 <mysql.html#127>`_
 
@@ -5201,12 +5213,12 @@ Index
    `NaNChecks`:idx:
      `manual.html#153 <manual.html#153>`_
 
-   `natural`:idx:
-     `pegs.html#143 <pegs.html#143>`_
-
    `Natural`:idx:
      `system.html#146 <system.html#146>`_
 
+   `natural`:idx:
+     `pegs.html#143 <pegs.html#143>`_
+
    `navigator`:idx:
      `dom.html#133 <dom.html#133>`_
 
@@ -5575,12 +5587,12 @@ Index
    `ord`:idx:
      `system.html#197 <system.html#197>`_
 
-   `ordinal`:idx:
-     `tut1.html#115 <tut1.html#115>`_
-
    `Ordinal`:idx:
      `system.html#116 <system.html#116>`_
 
+   `ordinal`:idx:
+     `tut1.html#115 <tut1.html#115>`_
+
    `Ordinal types`:idx:
      `manual.html#143 <manual.html#143>`_
 
@@ -5612,6 +5624,9 @@ Index
    `packet_error`:idx:
      `mysql.html#201 <mysql.html#201>`_
 
+   `PActor`:idx:
+     `actors.html#103 <actors.html#103>`_
+
    `PAIR`:idx:
      `zmq.html#122 <zmq.html#122>`_
 
@@ -5659,12 +5674,12 @@ Index
    `parseBiggestFloat`:idx:
      `parseutils.html#118 <parseutils.html#118>`_
 
-   `parseBiggestInt`:idx:
-     `parseutils.html#116 <parseutils.html#116>`_
-
    `ParseBiggestInt`:idx:
      `strutils.html#129 <strutils.html#129>`_
 
+   `parseBiggestInt`:idx:
+     `parseutils.html#116 <parseutils.html#116>`_
+
    `parseBool`:idx:
      `strutils.html#132 <strutils.html#132>`_
 
@@ -6299,13 +6314,13 @@ Index
    `PUSED_MEM`:idx:
      `mysql.html#322 <mysql.html#322>`_
 
-   `PUSH`:idx:
-     `zmq.html#130 <zmq.html#130>`_
-
    `push`:idx:
      * `math.html#140 <math.html#140>`_
      * `math.html#141 <math.html#141>`_
 
+   `PUSH`:idx:
+     `zmq.html#130 <zmq.html#130>`_
+
    `push/pop`:idx:
      `manual.html#271 <manual.html#271>`_
 
@@ -6460,6 +6475,7 @@ Index
    `ready`:idx:
      * `inboxes.html#106 <inboxes.html#106>`_
      * `channels.html#107 <channels.html#107>`_
+     * `actors.html#107 <actors.html#107>`_
 
    `realloc`:idx:
      `system.html#453 <system.html#453>`_
@@ -6486,6 +6502,7 @@ Index
      * `sockets.html#138 <sockets.html#138>`_
      * `channels.html#103 <channels.html#103>`_
      * `zmq.html#165 <zmq.html#165>`_
+     * `actors.html#109 <actors.html#109>`_
 
    `recvAsync`:idx:
      `sockets.html#139 <sockets.html#139>`_
@@ -6653,6 +6670,9 @@ Index
    `replaceWord`:idx:
      `strutils.html#154 <strutils.html#154>`_
 
+   `reply`:idx:
+     `actors.html#113 <actors.html#113>`_
+
    `repr`:idx:
      `system.html#418 <system.html#418>`_
 
@@ -6752,6 +6772,7 @@ Index
    `running`:idx:
      * `threads.html#103 <threads.html#103>`_
      * `osproc.html#112 <osproc.html#112>`_
+     * `actors.html#106 <actors.html#106>`_
 
    `run_queries`:idx:
      `sphinx.html#181 <sphinx.html#181>`_
@@ -6863,6 +6884,8 @@ Index
      * `zmq.html#174 <zmq.html#174>`_
      * `irc.html#107 <irc.html#107>`_
      * `ftpclient.html#109 <ftpclient.html#109>`_
+     * `actors.html#110 <actors.html#110>`_
+     * `actors.html#111 <actors.html#111>`_
 
    `sendAsync`:idx:
      `sockets.html#143 <sockets.html#143>`_
@@ -6870,6 +6893,9 @@ Index
    `sendmail`:idx:
      `smtp.html#106 <smtp.html#106>`_
 
+   `sendShutdown`:idx:
+     `actors.html#112 <actors.html#112>`_
+
    `separate compilation`:idx:
      * `manual.html#244 <manual.html#244>`_
      * `tut1.html#128 <tut1.html#128>`_
@@ -7212,6 +7238,11 @@ Index
      * `xmlgen.html#165 <xmlgen.html#165>`_
      * `htmlgen.html#165 <htmlgen.html#165>`_
 
+   `spawn`:idx:
+     * `actors.html#104 <actors.html#104>`_
+     * `actors.html#120 <actors.html#120>`_
+     * `actors.html#121 <actors.html#121>`_
+
    `specified`:idx:
      `xmldom.html#187 <xmldom.html#187>`_
 
@@ -8110,6 +8141,9 @@ Index
    `symbol=`:idx:
      `macros.html#131 <macros.html#131>`_
 
+   `sync`:idx:
+     `actors.html#117 <actors.html#117>`_
+
    `syscall`:idx:
      `manual.html#184 <manual.html#184>`_
 
@@ -8127,6 +8161,9 @@ Index
    `tabulator`:idx:
      `manual.html#125 <manual.html#125>`_
 
+   `TActorPool`:idx:
+     `actors.html#114 <actors.html#114>`_
+
    `TAddress`:idx:
      `system.html#419 <system.html#419>`_
 
@@ -8449,7 +8486,8 @@ Index
      `pegs.html#106 <pegs.html#106>`_
 
    `terminate`:idx:
-     `osproc.html#111 <osproc.html#111>`_
+     * `osproc.html#111 <osproc.html#111>`_
+     * `actors.html#118 <actors.html#118>`_
 
    `TEvent`:idx:
      `dom.html#116 <dom.html#116>`_
@@ -8862,12 +8900,12 @@ Index
    `TResponse`:idx:
      `httpclient.html#101 <httpclient.html#101>`_
 
-   `TResult`:idx:
-     `system.html#181 <system.html#181>`_
-
    `Tresult`:idx:
      `sphinx.html#148 <sphinx.html#148>`_
 
+   `TResult`:idx:
+     `system.html#181 <system.html#181>`_
+
    `TRow`:idx:
      * `db_postgres.html#103 <db_postgres.html#103>`_
      * `db_mysql.html#103 <db_mysql.html#103>`_
@@ -9011,6 +9049,9 @@ Index
    `TTable`:idx:
      `tables.html#101 <tables.html#101>`_
 
+   `TTask`:idx:
+     `actors.html#102 <actors.html#102>`_
+
    `TThread`:idx:
      `threads.html#101 <threads.html#101>`_
 
@@ -9302,12 +9343,12 @@ Index
      * `manual.html#215 <manual.html#215>`_
      * `manual.html#270 <manual.html#270>`_
 
-   `whitespace`:idx:
-     `pegs.html#139 <pegs.html#139>`_
-
    `Whitespace`:idx:
      `strutils.html#102 <strutils.html#102>`_
 
+   `whitespace`:idx:
+     `pegs.html#139 <pegs.html#139>`_
+
    `window`:idx:
      `dom.html#131 <dom.html#131>`_
 
diff --git a/lib/pure/actors.nim b/lib/pure/actors.nim
index 6703470bd..121dabf82 100644
--- a/lib/pure/actors.nim
+++ b/lib/pure/actors.nim
@@ -10,11 +10,22 @@
 ## `Actor`:idx: support for Nimrod. An actor is implemented as a thread with
 ## a channel as its inbox. This module requires the ``--threads:on``
 ## command line switch.
+##
+## Example:
+##
+## .. code-block:: nimrod
+##
+##      var
+##        a: TActorPool[int, void]
+##      createActorPool(a)
+##      for i in 0 .. < 300:
+##        a.spawn(i, proc (x: int) {.thread.} = echo x)
+##      a.join()
 
 from os import sleep
 
 type
-  TTask*[TIn, TOut] = object{.pure, final.}
+  TTask*[TIn, TOut] = object{.pure, final.} ## a task
     when TOut isnot void:
       receiver*: ptr TChannel[TOut] ## the receiver channel of the response
     action*: proc (x: TIn): TOut {.thread.} ## action to execute;
diff --git a/web/news.txt b/web/news.txt
index 21fdf9b4e..da042a5d4 100755
--- a/web/news.txt
+++ b/web/news.txt
@@ -157,6 +157,7 @@ Library Additions
 - Added ``subexes`` module.
 - Added ``critbits`` module.
 - Added ``asyncio`` module.
+- Added ``actors`` module.
 - Added ``algorithm`` module for generic ``sort``, ``reverse`` etc. operations.
 - Added ``osproc.startCmd``, ``osproc.execCmdEx``.
 - The ``osproc`` module now uses ``posix_spawn`` instead of ``fork`` 
diff --git a/web/nimrod.ini b/web/nimrod.ini
index c2afbeab5..738782a0d 100755
--- a/web/nimrod.ini
+++ b/web/nimrod.ini
@@ -43,7 +43,7 @@ srcdoc: "pure/collections/tables;pure/collections/sets;pure/collections/lists"
 srcdoc: "pure/collections/intsets;pure/collections/queues;pure/encodings"
 srcdoc: "pure/events;pure/collections/sequtils;pure/irc;ecmas/dom"
 srcdoc: "pure/ftpclient;pure/memfiles;pure/subexes;pure/collections/critbits"
-srcdoc: "pure/asyncio"
+srcdoc: "pure/asyncio;pure/actors"
 
 webdoc: "wrappers/libcurl;pure/md5;wrappers/mysql;wrappers/iup"
 webdoc: "wrappers/sqlite3;wrappers/postgres;wrappers/tinyc"