summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/nversion.nim6
-rw-r--r--compiler/semtypinst.nim5
-rw-r--r--doc/manual.txt51
-rw-r--r--web/download.txt30
-rw-r--r--web/news.txt8
5 files changed, 69 insertions, 31 deletions
diff --git a/compiler/nversion.nim b/compiler/nversion.nim
index db38354ce..b996d0b9b 100644
--- a/compiler/nversion.nim
+++ b/compiler/nversion.nim
@@ -1,7 +1,7 @@
 #
 #
 #           The Nimrod Compiler
-#        (c) Copyright 2012 Andreas Rumpf
+#        (c) Copyright 2014 Andreas Rumpf
 #
 #    See the file "copying.txt", included in this
 #    distribution, for details about the copyright.
@@ -15,8 +15,8 @@ const
   defaultAsmMarkerSymbol* = '!'
   VersionMajor* = 0
   VersionMinor* = 9
-  VersionPatch* = 3
+  VersionPatch* = 4
   VersionAsString* = $VersionMajor & "." & $VersionMinor & "." & $VersionPatch
 
-  RodFileVersion* = "1214"       # modify this if the rod-format changes!
+  RodFileVersion* = "1215"       # modify this if the rod-format changes!
 
diff --git a/compiler/semtypinst.nim b/compiler/semtypinst.nim
index 271a01266..33de40f34 100644
--- a/compiler/semtypinst.nim
+++ b/compiler/semtypinst.nim
@@ -352,8 +352,9 @@ proc replaceTypeVarsTAux(cl: var TReplTypeVars, t: PType): PType =
     result = handleGenericInvokation(cl, t)
 
   of tyGenericBody:
-    internalError(cl.info, "ReplaceTypeVarsT: tyGenericBody" )
-    result = replaceTypeVarsT(cl, lastSon(t))
+    localError(cl.info, errCannotInstantiateX, typeToString(t))
+    result = t
+    #result = replaceTypeVarsT(cl, lastSon(t))
 
   of tyFromExpr:
     if cl.allowMetaTypes: return
diff --git a/doc/manual.txt b/doc/manual.txt
index d6b9f296e..98af5aebc 100644
--- a/doc/manual.txt
+++ b/doc/manual.txt
@@ -3575,6 +3575,8 @@ match anything without discrimination.
 User defined type classes
 -------------------------
 
+**Note**: User defined type classes are still in development.
+
 The user-defined type classes are available in two flavours - declarative and
 imperative. Both are used to specify an arbitrary set of requirements that the
 matched type must satisfy.
@@ -3599,13 +3601,13 @@ b) all statically evaluatable boolean expressions in the body must be true
 
 The identifiers following the `generic` keyword represent instances of the
 currently matched type. These instances can act both as variables of the type,
-when used in contexts, where a value is expected, and as the type itself, when
-used in a contexts, where a type is expected.
+when used in contexts where a value is expected, and as the type itself when
+used in contexts where a type is expected.
 
 Please note that the ``is`` operator allows one to easily verify the precise
 type signatures of the required operations, but since type inference and
 default parameters are still applied in the provided block, it's also possible
-to encode usage protocols that doesn't reveal implementation details.
+to encode usage protocols that do not reveal implementation details.
 
 As a special rule providing further convenience when writing type classes, any
 type value appearing in a callable expression will be treated as a variable of
@@ -4118,6 +4120,8 @@ Special Types
 static[T]
 ---------
 
+**Note**: static[T] is still in development.
+
 As their name suggests, static params must be known at compile-time:
 
 .. code-block:: nimrod
@@ -4255,6 +4259,7 @@ types that will match the typedesc param:
 
 The constraint can be a concrete type or a type class.
 
+
 Special Operators
 =================
 
@@ -5600,10 +5605,8 @@ This is only useful if the program is compiled as a dynamic library via the
 Threads
 =======
 
-Even though Nimrod's `thread`:idx: support and semantics are preliminary, 
-they should be quite usable already. To enable thread support 
-the ``--threads:on`` command line switch needs to be used. The ``system``
-module then contains several threading primitives. 
+To enable thread support the ``--threads:on`` command line switch needs to 
+be used. The ``system`` module then contains several threading primitives. 
 See the `threads <threads.html>`_ and `channels <channels.html>`_ modules 
 for the thread API.
 
@@ -5645,6 +5648,11 @@ contain a ``ref`` or ``closure`` type. This enforces
 the *no heap sharing restriction*. 
 
 Routines that are imported from C are always assumed to be ``gcsafe``.
+To enable the GC-safety checking the ``--threadAnalysis:on`` command line
+switch must be used. This is a temporary workaround to ease the porting effort
+from old code to the new threading model. In the future the thread analysis
+will always be performed.
+
 
 Future directions:
 
@@ -5675,6 +5683,35 @@ in one thread cannot affect any other thread. However, an *unhandled*
 exception in one thread terminates the whole *process*!
 
 
+Spawn
+-----
+
+Nimrod has a builtin thread pool that can be used for CPU intensive tasks. For
+IO intensive tasks the upcoming ``async`` and ``await`` features should be
+used. `spawn`:idx: is used to pass a task to the thread pool:
+
+.. code-block:: nimrod
+  proc processLine(line: string) =
+    # do some heavy lifting here:
+    discard
+    
+  for x in lines("myinput.txt"):
+    spawn processLine(x)
+  sync()
+
+Currently the expression that ``spawn`` takes is however quite restricted: 
+
+* It must be a call expresion ``f(a, ...)``.
+* ``f`` must be ``gcsafe``.
+* ``f`` must not have the calling convention ``closure``.
+* ``f``'s parameters may not be of type ``var`` nor may they contain ``ref``.
+  This means you have to use raw ``ptr``'s for data passing reminding the
+  programmer to be careful.
+* For *safe* data exchange between ``f`` and the caller a global ``TChannel``
+  needs to be used. Other means will be provided soon.
+
+
+
 Taint mode
 ==========
 
diff --git a/web/download.txt b/web/download.txt
index f638a43b2..a306e516c 100644
--- a/web/download.txt
+++ b/web/download.txt
@@ -1,18 +1,12 @@
-Here you can download the latest version of the Nimrod Compiler.
-Please choose your platform:
-* source-based installation: `<download/nimrod_0.9.2.zip>`_
-* installer for Windows XP/Vista/7 (i386, 32bit): `<download/nimrod_0.9.2.exe>`_
-  (includes GCC and everything else you need)
-* minimal installer for Windows XP/Vista/7 (i386, 32bit): `<download/nimrod_gamera_0.9.2.exe>`_
-  ("Gamera edition": includes only a minimal GCC)
-
-The source-based installation has been tested on these systems:
-* Linux: i386, AMD64, PowerPC, ARM
-* BSD: AMD64
-* Mac OS X: i386, AMD64
-* Solaris: AMD64
-
-Other UNIX-based operating systems may work.
-
-.. include:: ../install.txt
-
+Starting with 0.9.4 we now advise people to build directly from the
+github `master <https://github.com/Araq/Nimrod#compiling>`_ branch::
+
+  git clone git://github.com/Araq/Nimrod.git
+  cd Nimrod
+  git clone --depth 1 git://github.com/nimrod-code/csources
+  cd csources && sh build.sh
+  cd ..
+  bin/nimrod c koch
+  ./koch boot -d:release
+
+Prebuilt binaries will be available soon.
diff --git a/web/news.txt b/web/news.txt
index b956386fb..fa1c532e8 100644
--- a/web/news.txt
+++ b/web/news.txt
@@ -12,11 +12,15 @@ The Nimrod development community is proud to announce the release of version
 considered beta quality! Lots of new features have been implemented but most
 do not fullfill our quality standards.**
 
+This release can be downloaded from `github <https://github.com/Araq/Nimrod>`_.
+Prebuilt binaries will be available soon.
+
 This release includes about 1300 changes in total including various bug
 fixes, new languages features and standard library additions and improvements.
 This release brings with it support for user-defined type classes, a brand
 new VM for executing Nimrod code at compile-time and new symbol binding
 rules for clean templates.
+
 It also introduces support for the brand new
 `Babel package manager <https://github.com/nimrod-code/babel>`_ which
 has itself seen its first release recently. Many of the wrappers that were
@@ -117,6 +121,8 @@ Changes affecting backwards compatibility
   of sockets given to it.
 - The ``noStackFrame`` pragma has been renamed to ``asmNoStackFrame`` to
   ensure you only use it when you know what you're doing.
+- Many of the wrappers that were present in the standard library have been
+  moved to separate repositories and should now be installed using Babel.
 
 
 Compiler Additions
@@ -140,7 +146,6 @@ Compiler Additions
 - Arrays can be annotated to be ``unchecked`` for easier low level
   manipulations of memory.
 - Support for the new Babel package manager.
-- Added support for builtin ``spawn`` for easy thread pool usage.
 
 
 Language Additions
@@ -162,6 +167,7 @@ Language Additions
   of an outer proc.
 - The experimental ``strongSpaces`` parsing mode has been implemented.
 - You can annotate pointer types with regions for increased type safety.
+- Added support for the builtin ``spawn`` for easy thread pool usage.
 
 
 Tools improvements