summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@gmail.com>2016-06-04 22:06:50 +0100
committerDominik Picheta <dominikpicheta@gmail.com>2016-06-04 22:06:50 +0100
commit16381364c2354c007ddf8737be1c58f11782e28d (patch)
tree11cc0cc75f2ab8ccfa4263d7d0ae4cae8814b58c
parent5031b638d772c72b43bd786c6fb74c4c3bd0cdf1 (diff)
downloadNim-16381364c2354c007ddf8737be1c58f11782e28d.tar.gz
News articles are now placed in separate pages.
Also given each rst file its rightful extension.
-rw-r--r--tools/nimweb.nim60
-rw-r--r--tools/website.tmpl21
-rw-r--r--web/assets/style.css11
-rw-r--r--web/community.rst (renamed from web/community.txt)0
-rw-r--r--web/documentation.rst (renamed from web/documentation.txt)0
-rw-r--r--web/download.rst (renamed from web/download.txt)0
-rw-r--r--web/index.rst (renamed from web/index.txt)0
-rw-r--r--web/learn.rst (renamed from web/learn.txt)0
-rw-r--r--web/links.rst (renamed from web/links.txt)0
-rw-r--r--web/news.rst111
-rw-r--r--web/news.txt2443
-rw-r--r--web/news/2009_12_21_version_0_8_6_released.rst54
-rw-r--r--web/news/2010_03_14_version_0_8_8_released.rst82
-rw-r--r--web/news/2010_10_20_version_0_8_10_released.rst70
-rw-r--r--web/news/2011_07_10_version_0_8_12_released.rst122
-rw-r--r--web/news/2012_02_09_version_0_8_14_released.rst168
-rw-r--r--web/news/2012_09_23_version_0_9_0_released.rst182
-rw-r--r--web/news/2013_05_20_new_website_design.rst13
-rw-r--r--web/news/2013_05_20_version_0_9_2_released.rst118
-rw-r--r--web/news/2014_01_15_andreas_rumpfs_talk_on_nimrod.rst11
-rw-r--r--web/news/2014_02_11_nimrod_featured_in_dr_dobbs_journal.rst9
-rw-r--r--web/news/2014_04_21_version_0_9_4_released.rst179
-rw-r--r--web/news/2014_10_19_version_0_9_6_released.rst65
-rw-r--r--web/news/2014_12_29_version_0_10_2_released.rst198
-rw-r--r--web/news/2015_04_30_version_0_11_0_released.rst396
-rw-r--r--web/news/2015_05_04_version_0_11_2_released.rst12
-rw-r--r--web/news/2015_10_16_first_nim_conference.rst26
-rw-r--r--web/news/2015_10_27_version_0_12_0_released.rst403
-rw-r--r--web/news/2016_01_18_andreas_rumpfs_talk_at_oscon_amsterdam.rst13
-rw-r--r--web/news/2016_01_18_version_0_13_0_released.rst182
-rw-r--r--web/news/2016_01_27_nim_in_action_is_now_available.rst32
-rw-r--r--web/news/version_0_14_released.rst98
-rw-r--r--web/question.rst (renamed from web/question.txt)0
-rw-r--r--web/support.rst (renamed from web/support.txt)0
-rw-r--r--web/ticker.html21
-rw-r--r--web/ticker.txt26
-rw-r--r--web/website.ini2
37 files changed, 2624 insertions, 2504 deletions
diff --git a/tools/nimweb.nim b/tools/nimweb.nim
index f0479a258..8da58ff4d 100644
--- a/tools/nimweb.nim
+++ b/tools/nimweb.nim
@@ -217,8 +217,8 @@ proc parseIniFile(c: var TConfigData) =
       of "ticker": c.ticker = v
       of "documentation":
         case normalize(k.key)
-        of "doc": addFiles(c.doc, "doc", ".txt", split(v, {';'}))
-        of "pdf": addFiles(c.pdf, "doc", ".txt", split(v, {';'}))
+        of "doc": addFiles(c.doc, "doc", ".rst", split(v, {';'}))
+        of "pdf": addFiles(c.pdf, "doc", ".rst", split(v, {';'}))
         of "srcdoc": addFiles(c.srcdoc, "lib", ".nim", split(v, {';'}))
         of "srcdoc2": addFiles(c.srcdoc2, "lib", ".nim", split(v, {';'}))
         of "webdoc": addFiles(c.webdoc, "lib", ".nim", split(v, {';'}))
@@ -406,9 +406,9 @@ proc generateRss(outputFilename: string, news: seq[TRssItem]) =
   output.write("""</feed>""")
 
 proc buildNewsRss(c: var TConfigData, destPath: string) =
-  # generates an xml feed from the web/news.txt file
+  # generates an xml feed from the web/news.rst file
   let
-    srcFilename = "web" / "news.txt"
+    srcFilename = "web" / "news.rst"
     destFilename = destPath / changeFileExt(splitFile(srcFilename).name, "xml")
 
   generateRss(destFilename, parseNewsTitles(srcFilename))
@@ -441,9 +441,38 @@ proc buildSponsors(c: var TConfigData, sponsorsFile: string, outputDir: string)
   else:
     quit("[Error] Cannot write file: " & outFile)
 
+const
+  cmdRst2Html = "nim rst2html --compileonly $1 -o:web/$2.temp web/$2.rst"
+
+proc buildPage(c: var TConfigData, file, rss: string, assetDir = "") =
+  exec(cmdRst2Html % [c.nimArgs, file])
+  var temp = "web" / changeFileExt(file, "temp")
+  var content: string
+  try:
+    content = readFile(temp)
+  except IOError:
+    quit("[Error] cannot open: " & temp)
+  var f: File
+  var outfile = "web/upload/$#.html" % file
+  if not existsDir(outfile.splitFile.dir):
+    createDir(outfile.splitFile.dir)
+  if open(f, outfile, fmWrite):
+    writeLine(f, generateHTMLPage(c, file, content, rss, assetDir))
+    close(f)
+  else:
+    quit("[Error] cannot write file: " & outfile)
+  removeFile(temp)
+
+proc buildNews(c: var TConfigData, newsDir: string, outputDir: string) =
+  for kind, path in walkDir(newsDir):
+    let (dir, name, ext) = path.splitFile
+    if ext == ".rst":
+      buildPage(c, tailDir(dir) / name, "", "../")
+    else:
+      echo("Skipping file in news directory: ", path)
+
 proc buildWebsite(c: var TConfigData) =
-  const
-    cmd = "nim rst2html --compileonly $1 -o:web/$2.temp web/$2.txt"
+
   if c.ticker.len > 0:
     try:
       c.ticker = readFile("web" / c.ticker)
@@ -453,26 +482,11 @@ proc buildWebsite(c: var TConfigData) =
     var file = c.tabs[i].val
     let rss = if file in ["news", "index"]: extractFilename(rssUrl) else: ""
     if '.' in file: continue
-    exec(cmd % [c.nimArgs, file])
-    var temp = "web" / changeFileExt(file, "temp")
-    var content: string
-    try:
-      content = readFile(temp)
-    except IOError:
-      quit("[Error] cannot open: " & temp)
-    var f: File
-    var outfile = "web/upload/$#.html" % file
-    if not existsDir("web/upload"):
-      createDir("web/upload")
-    if open(f, outfile, fmWrite):
-      writeLine(f, generateHTMLPage(c, file, content, rss))
-      close(f)
-    else:
-      quit("[Error] cannot write file: " & outfile)
-    removeFile(temp)
+    buildPage(c, file, rss)
   copyDir("web/assets", "web/upload/assets")
   buildNewsRss(c, "web/upload")
   buildSponsors(c, sponsors, "web/upload")
+  buildNews(c, "web/news", "web/upload/news")
 
 proc main(c: var TConfigData) =
   buildWebsite(c)
diff --git a/tools/website.tmpl b/tools/website.tmpl
index 9cb6b6772..0657c275b 100644
--- a/tools/website.tmpl
+++ b/tools/website.tmpl
@@ -1,13 +1,14 @@
 #? stdtmpl | standard
-#proc generateHTMLPage(c: var TConfigData, currentTab, content, rss: string): string =
+#proc generateHTMLPage(c: var TConfigData, currentTab, content, rss,
+#   rootDir = ""): string =
 #  result = ""
 <!DOCTYPE html>
 <html>
   <head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8">
     <title>${currentTab} - $c.projectTitle</title>
-    <link rel="stylesheet" type="text/css" href="assets/style.css?t=2221" />
-    <link rel="shortcut icon" href="assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" href="${rootDir}assets/style.css?t=2221" />
+    <link rel="shortcut icon" href="${rootDir}assets/images/favicon.ico">
   #if len(rss) > 0:
     <link href="$rss" title="Recent changes" type="application/atom+xml" rel="alternate">
   #end if
@@ -16,7 +17,7 @@
     <div id="bountysource">
       <a href="https://salt.bountysource.com/teams/nim">
       <div class="page-layout" style="padding: 2pt 2pt 2pt 30pt">
-  	<img src="assets/bountysource/bountysource.png" style="width: 20px; float: left;">
+  	<img src="${rootDir}assets/bountysource/bountysource.png" style="width: 20px; float: left;">
         <span style="margin-left: 10pt; float: left; margin-top: 2pt;">Fund Nim and help us develop it further!</span>
         <img src="https://api.bountysource.com/badge/team?team_id=19072&style=raised" style="margin-top: 2pt; margin-left: 10pt"/>
       </div>
@@ -26,7 +27,7 @@
     <header id="head">
       <div class="page-layout tall">
         <div id="head-logo"></div>
-        <a id="head-logo-link" href="index.html"></a>
+        <a id="head-logo-link" href="${rootDir}index.html"></a>
         <nav id="head-links">
       #for i in 0.. c.tabs.len-1:
       # let t = c.tabs[i].val
@@ -40,7 +41,7 @@
       #   if t.contains('.'):
             href="${t}" title = "$c.projectName - $name">$name</a>
       #   else:
-            href="${t}.html" title = "$c.projectName - $name">$name</a>
+            href="${rootDir}${t}.html" title = "$c.projectName - $name">$name</a>
       #   end if
       # end if
       #end for
@@ -61,12 +62,12 @@
           <!-- slides -->
           <div id="slide0" class="active niaslide">
             <a href="sponsors.html">
-              <img src="assets/bountysource/meet_sponsors.png" alt="Meet our BountySource sponsors!"/>
+              <img src="${rootDir}assets/bountysource/meet_sponsors.png" alt="Meet our BountySource sponsors!"/>
             </a>
           </div>
           <div id="slide1" class="niaslide">
             <a href="news.html#Z2016-01-27-nim-in-action-is-now-available">
-              <img src="assets/niminaction/banner.jpg" alt="New in Manning Early Access Program: Nim in Action!"/>
+              <img src="${rootDir}assets/niminaction/banner.jpg" alt="New in Manning Early Access Program: Nim in Action!"/>
             </a>
           </div>
           <div id="slide2" class="codeslide2">
@@ -156,7 +157,7 @@ runForever()
 #  if len(c.ticker) > 0:
 					<h3 class="blue">Latest News</h3>
 					<div id="sidebar-news">
-          $c.ticker
+          ${c.ticker % rootDir}
 					</div>
 #  end if
 				</aside>
@@ -200,7 +201,7 @@ runForever()
 		</footer>
 
 #  if currentTab == "index":
-  <script src="assets/index.js"></script>
+  <script src="${rootDir}assets/index.js"></script>
 # end if
 #  if c.gaId != nil:
   <script>
diff --git a/web/assets/style.css b/web/assets/style.css
index d7599477e..d63177469 100644
--- a/web/assets/style.css
+++ b/web/assets/style.css
@@ -316,7 +316,7 @@ pre .end { background:url("images/tabEnd.png") no-repeat left bottom; }
 		background:url("images/glow-line2.png") no-repeat right; }
 
 	#content { padding:40px 0; line-height:150%; }
-	#content.page { width:680px; min-height:800px; padding-left:20px; }
+	#content.page { width:680px; min-height:1220px; padding-left:20px; }
 	#content h1 { font-size:20pt; letter-spacing:1px; color:rgba(0,0,0,.75); }
 	#content h2 { font-size:16pt; letter-spacing:1px; color:rgba(0,0,0,.7); margin-top:40px; }
 	#content p { text-align:justify; }
@@ -605,3 +605,12 @@ dt a, dt a:visited, dt a:hover {
 dt.level-1 {
   color: #2f2f2f !important;
 }
+
+/* News articles */
+
+.metadata {
+  font-size: 12pt;
+  margin-bottom: 20pt;
+  margin-top: -16pt;
+  color: #4f4f4f;
+}
diff --git a/web/community.txt b/web/community.rst
index 9ce87b546..9ce87b546 100644
--- a/web/community.txt
+++ b/web/community.rst
diff --git a/web/documentation.txt b/web/documentation.rst
index ec33d0827..ec33d0827 100644
--- a/web/documentation.txt
+++ b/web/documentation.rst
diff --git a/web/download.txt b/web/download.rst
index cffad4ac9..cffad4ac9 100644
--- a/web/download.txt
+++ b/web/download.rst
diff --git a/web/index.txt b/web/index.rst
index 506453423..506453423 100644
--- a/web/index.txt
+++ b/web/index.rst
diff --git a/web/learn.txt b/web/learn.rst
index c0b583429..c0b583429 100644
--- a/web/learn.txt
+++ b/web/learn.rst
diff --git a/web/links.txt b/web/links.rst
index e69de29bb..e69de29bb 100644
--- a/web/links.txt
+++ b/web/links.rst
diff --git a/web/news.rst b/web/news.rst
new file mode 100644
index 000000000..6b7a10811
--- /dev/null
+++ b/web/news.rst
@@ -0,0 +1,111 @@
+====
+News
+====
+
+`2016-01-27 Nim in Action is now available! <news/2016_01_27_nim_in_action_is_now_available.html>`_
+==================================
+
+`2016-01-18 Version 0.13.0 released <news/2016_01_18_version_0_13_0_released.html>`_
+==================================
+
+`2016-01-18 Andreas Rumpf's talk at OSCON Amsterdam <news/2016_01_18_andreas_rumpfs_talk_at_oscon_amsterdam.html>`_
+==================================================
+
+`2015-10-27 Version 0.12.0 released <news/2015_10_27_version_0_12_0_released.html>`_
+==================================
+
+`2015-10-16 First Nim conference <news/2015_10_16_first_nim_conference.html>`_
+===============================
+
+`2015-05-04 Version 0.11.2 released <news/2015_05_04_version_0_11_2_released.html>`_
+==================================
+
+`2015-04-30 Version 0.11.0 released <news/2015_04_30_version_0_11_0_released.html>`_
+==================================
+
+`2014-12-29 Version 0.10.2 released <news/2014_12_29_version_0_10_2_released.html>`_
+==================================
+
+
+`2014-10-19 Version 0.9.6 released <news/2014_10_19_version_0_9_6_released.html>`_
+=================================
+
+
+`2014-04-21 Version 0.9.4 released <news/2014_04_21_version_0_9_4_released.html>`_
+=================================
+
+
+`2014-02-11 Nimrod Featured in Dr. Dobb's Journal <news/2014_02_11_nimrod_featured_in_dr_dobbs_journal.html>`_
+================================================
+
+
+`2014-01-15 Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online <news/2014_01_15_andreas_rumpfs_talk_on_nimrod.html>`_
+============================================================================
+
+
+`2013-05-20 New website design! <news/2013_05_20_new_website_design.html>`_
+==============================
+
+
+
+`2013-05-20 Version 0.9.2 released <news/2013_05_20_version_0_9_2_released.html>`_
+=================================
+
+
+
+`2012-09-23 Version 0.9.0 released <news/2012_09_23_version_0_9_0_released.html>`_
+=================================
+
+
+
+`2012-02-09 Version 0.8.14 released <news/2012_02_09_version_0_8_14_released.html>`_
+==================================
+
+
+
+`2011-07-10 Version 0.8.12 released <news/2011_07_10_version_0_8_12_released.html>`_
+==================================
+
+
+`2010-10-20 Version 0.8.10 released <news/2010_10_20_version_0_8_10_released.html>`_
+==================================
+
+
+
+`2010-03-14 Version 0.8.8 released <news/2010_03_14_version_0_8_8_released.html>`_
+=================================
+
+
+`2009-12-21 Version 0.8.6 released <news/2009_12_21_version_0_8_6_released.html>`_
+=================================
+
+
+2009-10-21 Version 0.8.2 released
+=================================
+
+
+2009-09-12 Version 0.8.0 released
+=================================
+
+
+2009-06-08 Version 0.7.10 released
+==================================
+
+
+2009-05-08 Version 0.7.8 released
+=================================
+
+
+2009-04-22 Version 0.7.6 released
+=================================
+
+
+2008-11-16 Version 0.7.0 released
+=================================
+
+
+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!**
diff --git a/web/news.txt b/web/news.txt
deleted file mode 100644
index 7eb80fea7..000000000
--- a/web/news.txt
+++ /dev/null
@@ -1,2443 +0,0 @@
-====
-News
-====
-
-2016-XX-XX Version 0.14.0 released
-==================================
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- ``--out`` and ``--nimcache`` command line arguments are now relative to
-  current directory. Previously they were relative to project directory.
-- The json module now stores the name/value pairs in objects internally as a
-  hash table of type ``fields*: Table[string, JsonNode]`` instead of a
-  sequence. This means that order is no longer preserved. When using the
-  ``table.mpairs`` iterator only the returned values can be modified, no
-  longer the keys.
-- The deprecated Nim shebang notation ``#!`` was removed from the language. Use ``#?`` instead.
-- The ``using`` statement now means something completely different. You can use the
-  new experimental ``this`` pragma to achieve a similar effect to what the old ``using`` statement tried to achieve.
-- Typeless parameters have been removed from the language since it would
-  clash with ``using``.
-- Procedures in ``mersenne.nim`` (Mersenne Twister implementation) no longer
-  accept and produce ``int`` values which have platform-dependent size -
-  they use ``uint32`` instead.
-- The ``strutils.unindent`` procedure has been rewritten. Its parameters now
-  match the parameters of ``strutils.indent``. See issue [#4037](https://github.com/nim-lang/Nim/issues/4037)
-  for more details.
-- The ``matchers`` module has been deprecated. See issue [#2446](https://github.com/nim-lang/Nim/issues/2446)
-  for more details.
-- The ``json.[]`` no longer returns ``nil`` when a key is not found. Instead it
-  raises a ``KeyError`` exception. You can compile with the ``-d:nimJsonGet``
-  flag to get a list of usages of ``[]``, as well as to restore the operator's
-  previous behaviour.
-- When using ``useMalloc``, an additional header containing the size of the
-  allocation will be allocated, to support zeroing memory on realloc as expected
-  by the language. With this change, ``alloc`` and ``dealloc`` are no longer
-  aliases for ``malloc`` and ``free`` - use ``c_malloc`` and ``c_free`` if
-  you need that.
-- The ``json.%`` operator is now overloaded for ``object``, ``ref object`` and
-  ``openarray[T]``.
-- The procs related to ``random`` number generation in ``math.nim`` have
-  been moved to its own ``random`` module and been reimplemented in pure
-  Nim.
-- The path handling changed. The project directory is not added to the
-  search path automatically anymore. Add this line to your project's
-  config to get back the old behaviour: ``--path:"$projectdir"``.
-- The ``round`` function in ``math.nim`` now returns a float and has been
-  corrected such that the C implementation always rounds up from .5 rather
-  than changing the operation for even and odd numbers.
-- The ``round`` function now accepts a ``places`` argument to round to a
-  given number of places (e.g. round 4.35 to 4.4 if ``places`` is 1).
-- In ``strutils.nim``, ``formatSize`` now returns a number representing the
-  size in conventional decimal format (e.g. 2.234GB meaning 2.234 GB rather
-  than meaning 2.285 GB as in the previous implementation).  By default it
-  also uses IEC prefixes (KiB, MiB) etc and optionally uses colloquial names
-  (kB, MB etc) and the (SI-preferred) space.
-- The ``==`` operator for ``cstring`` now implements a value comparision
-  for the C backend (using ``strcmp``), not reference comparisons anymore.
-  Convert the cstrings to pointers if you really want reference equality
-  for speed.
-- HTTP headers are now stored in a ``HttpHeaders`` object instead of a
-  ``StringTableRef``. This object allows multiple values to be associated with
-  a single key. A new ``httpcore`` module implements it and it is used by
-  both ``asynchttpserver`` and ``httpclient``.
-
-
-Library Additions
------------------
-
-- The rlocks module has been added providing reentrant lock synchronization
-  primitive.
-- A generic "sink operator" written as ``&=`` has been added to the ``system`` and the ``net`` modules.
-- Added ``strscans`` module that implements a ``scanf`` for easy input extraction.
-- Added a version of ``parseutils.parseUntil`` that can deal with a string ``until`` token. The other
-  versions are for ``char`` and ``set[char]``.
-- Added ``splitDecimal`` to ``math.nim`` to split a floating point value
-  into an integer part and a floating part (in the range -1<x<1).
-- Added ``trimZeros`` to ```strutils.nim`` to trim trailing zeros in a
-  floating point number.
-- Added ``formatEng`` to ``strutils.nim`` to format numbers using engineering
-  notation.
-
-
-Compiler Additions
-------------------
-
-- Added a new ``--noCppExceptions`` switch that allows to use default exception
-  handling (no ``throw`` or ``try``/``catch`` generated) when compiling to C++
-  code.
-
-Language Additions
-------------------
-
-- Nim now supports a ``.this`` pragma for more notational convenience.
-- Nim now supports a different ``using`` statement for more convenience.
-- ``include`` statements are not restricted to top level statements anymore.
-
-..
-  - Nim now supports ``partial`` object declarations to mitigate the problems
-    that arise when types are mutually dependent and yet should be kept in
-    different modules.
-
-
-2016-01-27 Nim in Action is now available!
-==========================================
-
-.. raw::html
-
-  <a href="https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81">
-    <img src="assets/niminaction/banner.jpg" alt="New in Manning Early Access Program: Nim in Action!" width="682"/>
-  </a>
-
-We are proud to announce that *Nim in Action*, a book about the Nim programming
-language, is now available!
-
-The book is available at this URL:
-`https://www.manning.com/books/nim-in-action <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_
-
-The first three chapters are available for download
-as an eBook through Manning's Early Access program. You can download a free
-sample of the book containing the first chapter as well!
-
-*Nim in Action* is currently being written and is expected to be completed by
-Summer 2016. If you purchase the eBook you will start receiving new chapters
-as they become available. You can also purchase the printed book together with
-the eBook for a slightly higher price.
-
-If you do read the book, even if it's just the first chapter, then please share
-any comments, suggestions and questions on the
-`Nim forum <http://forum.nim-lang.org/t/1978>`_ or in
-Manning's own `Author Online forum! <https://forums.manning.com/forums/nim-in-action>`_
-
-
-2016-01-18 Version 0.13.0 released
-==================================
-
-Once again we are proud to announce the latest release of the Nim compiler
-and related tools. This release comes just 3 months after the last
-release!
-
-A new version of Nimble which depends on this release, has also been
-released. See `this <http://forum.nim-lang.org/t/1912>`_ forum thread for
-more information about the Nimble release.
-
-This release of Nim includes over 116 bug fixes, many of which are related
-to closures. The lambda lifting algorithm in the compiler has been completely
-rewritten, and some changes have been made to the semantics of closures in
-Nim as a result. These changes may affect backwards compatibility and are all
-described in the section below.
-
-With this release, we are one step closer to Nim version 1.0.
-The 1.0 release will be a big milestone for Nim, because after that version
-is released there will be no more breaking changes made to the language
-or the standard library.
-
-That being said, the next release will likely be Nim 0.14. It will focus on
-improvements to the GC and concurrency. We will in particular be looking at
-ways to add multi-core support to async await. Standard library improvements
-are also on our roadmap but may not make it for Nim 0.14.
-
-As always you can download the latest version of Nim from the
-`download <download.html>`_ page.
-
-Happy coding!
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- ``macros.newLit`` for ``bool`` now produces false/true symbols which
-  actually work with the bool datatype.
-- When compiling to JS: ``Node``, ``NodeType`` and ``Document`` are no longer
-  defined. Use the types defined in ``dom.nim`` instead.
-- The check ``x is iterator`` (used for instance in concepts) was always a
-  weird special case (you could not use ``x is proc``) and was removed from
-  the language.
-- Top level routines cannot have the calling convention ``closure``
-  anymore.
-- The ``redis`` module has been moved out of the standard library. It can
-  now be installed via Nimble and is located here:
-  https://github.com/nim-lang/redis
-- ``math.RunningStat`` and its associated procs have been moved from
-  the ``math`` module to a new ``stats`` module.
-
-
-Syntax changes
-~~~~~~~~~~~~~~
-
-The parser now considers leading whitespace in front of operators
-to determine if an operator is used in prefix or infix position.
-This means that finally ``echo $foo`` is parsed as people expect,
-which is as ``echo($foo)``. It used to be parsed as ``(echo) $ (foo)``.
-
-``echo $ foo`` continues to be parsed as ``(echo) $ (foo)``.
-
-This also means that ``-1`` is always parsed as prefix operator so
-code like ``0..kArraySize div 2 -1`` needs to be changed to
-``0..kArraySize div 2 - 1``.
-
-This release also adds multi-line comments to Nim. The syntax for them is:
-``#[ comment here ]#``. For more details read the section of
-the `manual <docs/manual.html#lexical-analysis-multiline-comments>`_.
-
-Iterator changes
-~~~~~~~~~~~~~~~~
-
-Implicit return type inference for iterators has been removed from the language. The following used to work:
-
-.. code-block:: nim
-  iterator it =
-    yield 7
-
-This was a strange special case and has been removed. Now you need to write it like so which is consistent with procs:
-
-.. code-block:: nim
-  iterator it: auto =
-    yield 7
-
-
-Closure changes
-~~~~~~~~~~~~~~~
-
-The semantics of closures changed: Capturing variables that are in loops do not produce a new environment. Nim closures behave like JavaScript closures now.
-
-The following used to work as the environment creation used to be attached to the loop body:
-
-.. code-block:: nim
-
-  proc outer =
-    var s: seq[proc(): int {.closure.}] = @[]
-    for i in 0 ..< 30:
-      let ii = i
-      s.add(proc(): int = return ii*ii)
-
-This behaviour has changed in 0.13.0 and now needs to be written as:
-
-.. code-block:: nim
-
-  proc outer =
-    var s: seq[proc(): int {.closure.}] = @[]
-    for i in 0 ..< 30:
-      (proc () =
-        let ii = i
-        s.add(proc(): int = return ii*ii))()
-
-The reason is that environment creations are now only performed once
-per proc call. This change is subtle and unfortunate, but:
-
-1. Affects almost no code out there.
-2. Is easier to implement and we are at a point in Nim's development process where simple+stable wins over perfect-in-theory+unstable-in-practice.
-3. Implies programmers are more in control of where memory is allocated which is beneficial for a systems programming language.
-
-Bugfixes
---------
-
-The list below has been generated based on the commits in Nim's git
-repository. As such it lists only the issues which have been closed
-via a commit, for a full list see
-`this link on Github <https://github.com/nim-lang/Nim/issues?utf8=%E2%9C%93&q=is%3Aissue+closed%3A%222015-10-27+..+2016-01-19%22+>`_.
-
-- Fixed "Generic arguments cannot be used in templates (raising undeclared identifier)"
-  (`#3498 <https://github.com/nim-lang/Nim/issues/3498>`_)
-- Fixed "multimethods: Error: internal error: cgmeth.genConv"
-  (`#3550 <https://github.com/nim-lang/Nim/issues/3550>`_)
-- Fixed "nimscript - SIGSEGV in except block"
-  (`#3546 <https://github.com/nim-lang/Nim/issues/3546>`_)
-- Fixed "Bool literals in macros do not work."
-  (`#3541 <https://github.com/nim-lang/Nim/issues/3541>`_)
-- Fixed "Docs: nativesocket.html - 404"
-  (`#3582 <https://github.com/nim-lang/Nim/issues/3582>`_)
-- Fixed ""not nil" return types never trigger an error or warning"
-  (`#2285 <https://github.com/nim-lang/Nim/issues/2285>`_)
-- Fixed "No warning or error is raised even if not nil is specified "
-  (`#3222 <https://github.com/nim-lang/Nim/issues/3222>`_)
-- Fixed "Incorrect fsmonitor add() filter logic"
-  (`#3611 <https://github.com/nim-lang/Nim/issues/3611>`_)
-- Fixed ""nimble install nimsuggest" failed"
-  (`#3622 <https://github.com/nim-lang/Nim/issues/3622>`_)
-- Fixed "compile time `excl ` cause SIGSEGV"
-  (`#3639 <https://github.com/nim-lang/Nim/issues/3639>`_)
-- Fixed "Unable to echo unsigned ints at compile-time"
-  (`#2514 <https://github.com/nim-lang/Nim/issues/2514>`_)
-- Fixed "Nested closure iterator produces internal error"
-  (`#1725 <https://github.com/nim-lang/Nim/issues/1725>`_)
-- Fixed "C Error on walkDirRec closure"
-  (`#3636 <https://github.com/nim-lang/Nim/issues/3636>`_)
-- Fixed "Error in generated c code"
-  (`#3201 <https://github.com/nim-lang/Nim/issues/3201>`_)
-- Fixed "C Compile-time error with generic proc type."
-  (`#2659 <https://github.com/nim-lang/Nim/issues/2659>`_)
-- Fixed "ICE dereferencing array pointer"
-  (`#2240 <https://github.com/nim-lang/Nim/issues/2240>`_)
-- Fixed "Lambda lifting crash"
-  (`#2007 <https://github.com/nim-lang/Nim/issues/2007>`_)
-- Fixed "Can't reference outer variables from a closure in an iterator"
-  (`#2604 <https://github.com/nim-lang/Nim/issues/2604>`_)
-- Fixed "M&S collector breaks with nested for loops."
-  (`#603 <https://github.com/nim-lang/Nim/issues/603>`_)
-- Fixed "Regression: bad C codegen"
-  (`#3723 <https://github.com/nim-lang/Nim/issues/3723>`_)
-- Fixed "JS backend - handle bool type in case statement"
-  (`#3722 <https://github.com/nim-lang/Nim/issues/3722>`_)
-- Fixed "linenoise compilation with cpp"
-  (`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_)
-- Fixed "(???,???) duplicate case label"
-  (`#3665 <https://github.com/nim-lang/Nim/issues/3665>`_)
-- Fixed "linenoise compilation with cpp"
-  (`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_)
-- Fixed "Update list of backward incompatibilities for Nim 0.12.0 in the main site"
-  (`#3689 <https://github.com/nim-lang/Nim/issues/3689>`_)
-- Fixed "Can't compile nimble with latest devel - codegen bug"
-  (`#3730 <https://github.com/nim-lang/Nim/issues/3730>`_)
-
-
-2016-01-18 Andreas Rumpf's talk at OSCON Amsterdam
-==================================================
-
-In case you have missed it, here is Andreas' Nim: An Overview talk at
-OSCON Amsterdam.
-
-.. raw:: html
-
-  <iframe width="560" height="315" src="https://www.youtube.com/embed/4rJEBs_Nnaw" frameborder="0" allowfullscreen></iframe>
-
-2015-10-27 Version 0.12.0 released
-==================================
-
-The Nim community of developers is proud to announce the new version of the
-Nim compiler. This has been a long time coming as the last release has been
-made over 5 months ago!
-
-This release includes some changes which affect backwards compatibility,
-one major change is that now the hash table ``[]`` operators now raise a
-``KeyError`` exception when the key does not exist.
-
-Some of the more exciting new features include: the ability to unpack tuples
-in any assignment context, the introduction of `NimScript <docs/nims.html>`_,
-and improvements to the type inference of lambdas.
-
-There are of course many many many bug fixes included with this release.
-We are getting closer and closer to a 1.0 release and are hoping that only
-a few 0.x releases will be necessary before we are happy to release version 1.0.
-
-As always you can download the latest version of Nim from the
-`download <download.html>`_ page.
-
-For a more detailed list of changes look below. Some of the upcoming breaking
-changes are also documented in this forum
-`thread <http://forum.nim-lang.org/t/1708>`_.
-
-Changes affecting backwards compatibility
------------------------------------------
-- The regular expression modules, ``re`` and ``nre`` now depend on version
-  8.36 of PCRE. If you have an older version you may see a message similar
-  to ``could not import: pcre_free_study`` output when you start your
-  program. See `this issue <https://github.com/docopt/docopt.nim/issues/13>`_
-  for more information.
-- ``tables.[]``, ``strtabs.[]``, ``critbits.[]`` **now raise**
-  the ``KeyError`` **exception when the key does not exist**! Use the
-  new ``getOrDefault`` instead to get the old behaviour. Compile all your
-  code with ``-d:nimTableGet`` to get a listing of where your code
-  uses ``[]``!
-- The ``rawsockets`` module has been renamed to ``nativesockets`` to avoid
-  confusion with TCP/IP raw sockets, so ``newNativeSocket`` should be used
-  instead of ``newRawSocket``.
-- The ``miliseconds`` property of ``times.TimeInterval`` is now ``milliseconds``.
-  Code accessing that property is deprecated and code using ``miliseconds``
-  during object initialization or as a named parameter of ``initInterval()``
-  will need to be updated.
-- ``std.logging`` functions no longer do formatting and semantically treat
-  their arguments just like ``echo`` does. Affected functions: ``log``,
-  ``debug``, ``info``, ``warn``, ``error``, ``fatal``. Custom subtypes of
-  ``Logger`` also need to be adjusted accordingly.
-- Floating point numbers can now look like ``2d`` (float64)
-  and ``2f`` (float32) which means imports like ``import scene/2d/sprite``
-  do not work anymore. Instead quotes have to be
-  used: ``import "scene/2d/sprite"``. The former code never was valid Nim.
-- The Windows API wrapper (``windows.nim``) is now not part of the official
-  distribution anymore. Instead use the ``oldwinapi`` Nimble package.
-- There is now a clear distinction between ``--os:standalone``
-  and ``--gc:none``. So if you use ``--os:standalone`` ensure you also use
-  ``--gc:none``. ``--os:standalone`` without ``--gc:none`` is now a version
-  that doesn't depend on any OS but includes the GC. However this version
-  is currently untested!
-- All procedures which construct a ``Socket``/``AsyncSocket`` now need to
-  specify the socket domain, type and protocol. The param name
-  ``typ: SockType`` (in ``newSocket``/``newAsyncSocket`` procs) was also
-  renamed to ``sockType``. The param ``af`` in the ``connect`` procs was
-  removed. This affects ``asyncnet``, ``asyncdispatch``, ``net``, and
-  ``rawsockets``.
-- ``varargs[typed]`` and ``varargs[untyped]`` have been refined and now work
-  as expected. However ``varargs[untyped]`` is not an alias anymore for
-  ``varargs[expr]``. So if your code breaks for ``varargs[untyped]``, use
-  ``varargs[expr]`` instead. The same applies to ``varargs[typed]`` vs
-  ``varargs[stmt]``.
-- ``sequtils.delete`` doesn't take confusing default arguments anymore.
-- ``system.free`` was an error-prone alias to ``system.dealloc`` and has
-  been removed.
-- ``macros.high`` never worked and the manual says ``high`` cannot be
-  overloaded, so we removed it with no deprecation cycle.
-- To use the ``parallel`` statement you now have to
-  use the ``--experimental`` mode.
-- Toplevel procs of calling convention ``closure`` never worked reliably
-  and are now deprecated and will be removed from the language. Instead you
-  have to insert type conversions
-  like ``(proc (a, b: int) {.closure.})(myToplevelProc)`` if necessary.
-- The modules ``libffi``, ``sdl``, ``windows``, ``zipfiles``, ``libzip``,
-  ``zlib``, ``zzip``, ``dialogs``, ``expat``, ``graphics``, ``libcurl``,
-  ``sphinx`` have been moved out of the stdlib and are Nimble packages now.
-- The constant fights between 32 and 64 bit DLLs on Windows have been put to
-  an end: The standard distribution now ships with 32 and 64 bit versions
-  of all the DLLs the standard library needs. This means that the following
-  DLLs are now split into 32 and 64 versions:
-
-  * ``pcre.dll``: Split into ``pcre32.dll`` and ``pcre64.dll``.
-  * ``pdcurses.dll``: Split into ``pdcurses32.dll`` and ``pdcurses64.dll``.
-  * ``sqlite3.dll``: Split into ``sqlite3_32.dll`` and ``sqlite3_64.dll``.
-  * ``ssleay32.dll``: Split into ``ssleay32.dll`` and ``ssleay64.dll``.
-  * ``libeay32.dll``: Split into ``libeay32.dll`` and ``libeay64.dll``.
-
-  Compile with ``-d:nimOldDLLs`` to make the stdlib use the old DLL names.
-- Nim VM now treats objects as ``nkObjConstr`` nodes, and not ``nkPar`` nodes
-  as it was previously. Macros that generate ``nkPar`` nodes when object is
-  expected are likely to break. Macros that expect ``nkPar`` nodes to which
-  objects are passed are likely to break as well.
-- Base methods now need to be annotated with the ``base`` pragma. This makes
-  multi methods less error-prone to use with the effect system.
-- Nim's parser directive ``#!`` is now ``#?`` in order to produce no conflicts
-  with Unix's ``#!``.
-- An implicit return type for an iterator is now deprecated. Use ``auto`` if
-  you want more type inference.
-- The type ``auto`` is now a "multi-bind" metatype, so the following compiles:
-
-  .. code-block:: nim
-    proc f(x, y: auto): auto =
-      result = $x & y
-
-    echo f(0, "abc")
-- The ``ftpclient`` module is now deprecated in favour of the
-  ``asyncftpclient`` module.
-- In sequtils.nim renamed ``repeat`` function to ``cycle`` (concatenating
-  a sequence by itself the given times), and also introduced ``repeat``,
-  which repeats an element the given times.
-- The function ``map`` is moved to sequtils.nim. The inplace ``map`` version
-  is renamed to ``apply``.
-- The template ``mapIt`` now doesn't require the result's type parameter.
-  Also the inplace ``mapIt`` is renamed to ``apply``.
-- The compiler is now stricter with what is allowed as a case object
-  discriminator. The following code used to compile but was not supported
-  completely and so now fails:
-
-.. code-block:: nim
-    type
-        DataType* {.pure.} = enum
-            Char = 1,
-            Int8 = 2,
-            Int16 = 3,
-            Int32 = 4,
-            Int64 = 5,
-            Float32 = 6,
-            Float64 = 7
-
-        DataSeq* = object
-            case kind* : DataType
-            of DataType.Char: charSeq* : seq[char]
-            of DataType.Int8: int8Seq* : seq[int8]
-            of DataType.Int16: int16Seq* : seq[int16]
-            of DataType.Int32: int32Seq* : seq[int32]
-            of DataType.Int64: int64Seq* : seq[int64]
-            of DataType.Float32: float32Seq* : seq[float32]
-            of DataType.Float64: float64Seq* : seq[float64]
-
-            length* : int
-
-
-
-Library Additions
------------------
-
-- The nre module has been added, providing a better interface to PCRE than re.
-- The ``expandSymlink`` proc has been added to the ``os`` module.
-- The ``tailDir`` proc has been added to the ``os`` module.
-- Define ``nimPinToCpu`` to make the ``threadpool`` use explicit thread
-  affinities. This can speed up or slow down the thread pool; it's up to you
-  to benchmark it.
-- ``strutils.formatFloat`` and ``formatBiggestFloat`` do not depend on the C
-  locale anymore and now take an optional ``decimalSep = '.'`` parameter.
-- Added ``unicode.lastRune``, ``unicode.graphemeLen``.
-
-
-Compiler Additions
-------------------
-
-- The compiler now supports a new configuration system based on
-  `NimScript <docs/nims.html>`_.
-- The compiler finally considers symbol binding rules in templates and
-  generics for overloaded ``[]``, ``[]=``, ``{}``, ``{}=`` operators
-  (issue `#2599 <https://github.com/nim-lang/Nim/issues/2599>`_).
-- The compiler now supports a `bitsize pragma <docs/manual.html#pragmas-bitsize-pragma>`_
-  for constructing bitfields.
-- Added a new ``--reportConceptFailures`` switch for better debugging of
-  concept related type mismatches. This can also be used to debug
-  ``system.compiles`` failures.
-
-
-Language Additions
-------------------
-
-- ``system.unsafeAddr`` can be used to access the address of a ``let``
-  variable or parameter for C interoperability. Since technically this
-  makes parameters and ``let`` variables mutable, it is considered even more
-  unsafe than the ordinary ``addr`` builtin.
-- Added ``macros.getImpl`` that can be used to access the implementation of
-  a routine or a constant. This allows for example for user-defined inlining
-  of function calls.
-- Tuple unpacking finally works in a non-var/let context: ``(x, y) = f()``
-  is allowed. Note that this doesn't declare ``x`` and ``y`` variables, for
-  this ``let (x, y) = f()`` still needs to be used.
-- ``when nimvm`` can now be used for compiletime versions of some code
-  sections. Click `here <docs/manual.html#when-nimvm-statement>`_ for details.
-- Usage of the type ``NimNode`` in a proc now implicitly annotates the proc
-  with ``.compileTime``. This means generics work much better for ``NimNode``.
-
-
-Bugfixes
---------
-- Fixed "Compiler internal error on iterator it(T: typedesc[Base]) called with it(Child), where Child = object of Base"
-  (`#2662 <https://github.com/Araq/Nim/issues/2662>`_)
-- Fixed "repr() misses base object field in 2nd level derived object"
-  (`#2749 <https://github.com/Araq/Nim/issues/2749>`_)
-- Fixed "nimsuggest doesn't work more than once on the non-main file"
-  (`#2694 <https://github.com/Araq/Nim/issues/2694>`_)
-- Fixed "JS Codegen. Passing arguments by var in certain cases leads to invalid JS."
-  (`#2798 <https://github.com/Araq/Nim/issues/2798>`_)
-- Fixed ""check" proc in unittest.nim prevents the propagation of changes to var parameters."
-  (`#964 <https://github.com/Araq/Nim/issues/964>`_)
-- Fixed "Excessive letters in integer literals are not an error"
-  (`#2523 <https://github.com/Araq/Nim/issues/2523>`_)
-- Fixed "Unicode dashes as "lisp'ish" alternative to hump and snake notation"
-  (`#2811 <https://github.com/Araq/Nim/issues/2811>`_)
-- Fixed "Bad error message when trying to construct an object incorrectly"
-  (`#2584 <https://github.com/Araq/Nim/issues/2584>`_)
-- Fixed "Determination of GC safety of globals is broken "
-  (`#2854 <https://github.com/Araq/Nim/issues/2854>`_)
-- Fixed "v2 gc crashes compiler"
-  (`#2687 <https://github.com/Araq/Nim/issues/2687>`_)
-- Fixed "Compile error using object in const array"
-  (`#2774 <https://github.com/Araq/Nim/issues/2774>`_)
-- Fixed "httpclient async requests with method httpPOST isn't sending Content-Length header"
-  (`#2884 <https://github.com/Araq/Nim/issues/2884>`_)
-- Fixed "Streams module not working with JS backend"
-  (`#2148 <https://github.com/Araq/Nim/issues/2148>`_)
-- Fixed "Sign of certain short constants is wrong"
-  (`#1179 <https://github.com/Araq/Nim/issues/1179>`_)
-- Fixed "Symlinks to directories reported as symlinks to files"
-  (`#1985 <https://github.com/Araq/Nim/issues/1985>`_)
-- Fixed "64-bit literals broken on x86"
-  (`#2909 <https://github.com/Araq/Nim/issues/2909>`_)
-- Fixed "import broken for certain names"
-  (`#2904 <https://github.com/Araq/Nim/issues/2904>`_)
-- Fixed "Invalid UTF-8 strings in JavaScript"
-  (`#2917 <https://github.com/Araq/Nim/issues/2917>`_)
-- Fixed "[JS][Codegen] Initialising object doesn't create unmentioned fields."
-
-  (`#2617 <https://github.com/Araq/Nim/issues/2617>`_)
-- Fixed "Table returned from proc computed at compile time is missing keys:"
-  (`#2297 <https://github.com/Araq/Nim/issues/2297>`_)
-- Fixed "Clarify copyright status for some files"
-  (`#2949 <https://github.com/Araq/Nim/issues/2949>`_)
-- Fixed "math.nim: trigonometry: radians to degrees conversion"
-  (`#2881 <https://github.com/Araq/Nim/issues/2881>`_)
-- Fixed "xoring unsigned integers yields RangeError in certain conditions"
-  (`#2979 <https://github.com/Araq/Nim/issues/2979>`_)
-- Fixed "Directly checking equality between procs"
-  (`#2985 <https://github.com/Araq/Nim/issues/2985>`_)
-- Fixed "Compiler crashed, but there have to be meaningful error message"
-  (`#2974 <https://github.com/Araq/Nim/issues/2974>`_)
-- Fixed "repr is broken"
-  (`#2992 <https://github.com/Araq/Nim/issues/2992>`_)
-- Fixed "Ipv6 devel - add IPv6 support for asyncsockets, make AF_INET6 a default"
-  (`#2976 <https://github.com/Araq/Nim/issues/2976>`_)
-- Fixed "Compilation broken on windows"
-  (`#2996 <https://github.com/Araq/Nim/issues/2996>`_)
-- Fixed "'u64 literal conversion compiler error"
-  (`#2731 <https://github.com/Araq/Nim/issues/2731>`_)
-- Fixed "Importing 'impure' libraries while using threads causes segfaults"
-  (`#2672 <https://github.com/Araq/Nim/issues/2672>`_)
-- Fixed "Uncatched exception in async procedure on raise statement"
-  (`#3014 <https://github.com/Araq/Nim/issues/3014>`_)
-- Fixed "nim doc2 fails in Mac OS X due to system.nim (possibly related to #1898)"
-  (`#3005 <https://github.com/Araq/Nim/issues/3005>`_)
-- Fixed "IndexError when rebuilding Nim on iteration 2"
-  (`#3018 <https://github.com/Araq/Nim/issues/3018>`_)
-- Fixed "Assigning large const set to variable looses some information"
-  (`#2880 <https://github.com/Araq/Nim/issues/2880>`_)
-- Fixed "Inconsistent generics behavior"
-  (`#3022 <https://github.com/Araq/Nim/issues/3022>`_)
-- Fixed "Compiler breaks on float64 division"
-  (`#3028 <https://github.com/Araq/Nim/issues/3028>`_)
-- Fixed "Confusing error message comparing string to nil "
-  (`#2935 <https://github.com/Araq/Nim/issues/2935>`_)
-- Fixed "convert 64bit number to float on 32bit"
-  (`#1463 <https://github.com/Araq/Nim/issues/1463>`_)
-- Fixed "Type redefinition and construction will break nim check"
-  (`#3032 <https://github.com/Araq/Nim/issues/3032>`_)
-- Fixed "XmlParser fails on very large XML files without new lines"
-  (`#2429 <https://github.com/Araq/Nim/issues/2429>`_)
-- Fixed "Error parsing arguments with whitespaces"
-  (`#2874 <https://github.com/Araq/Nim/issues/2874>`_)
-- Fixed "Crash when missing one arg and used a named arg"
-  (`#2993 <https://github.com/Araq/Nim/issues/2993>`_)
-- Fixed "Wrong number of arguments in assert will break nim check"
-  (`#3044 <https://github.com/Araq/Nim/issues/3044>`_)
-- Fixed "Wrong const definition will break nim check"
-  (`#3041 <https://github.com/Araq/Nim/issues/3041>`_)
-- Fixed "Wrong set declaration will break nim check"
-  (`#3040 <https://github.com/Araq/Nim/issues/3040>`_)
-- Fixed "Compiler segfault (type section)"
-  (`#2540 <https://github.com/Araq/Nim/issues/2540>`_)
-- Fixed "Segmentation fault when compiling this code"
-  (`#3038 <https://github.com/Araq/Nim/issues/3038>`_)
-- Fixed "Kill nim i"
-  (`#2633 <https://github.com/Araq/Nim/issues/2633>`_)
-- Fixed "Nim check will break on wrong array declaration"
-  (`#3048 <https://github.com/Araq/Nim/issues/3048>`_)
-- Fixed "boolVal seems to be broken"
-  (`#3046 <https://github.com/Araq/Nim/issues/3046>`_)
-- Fixed "Nim check crashes on wrong set/array declaration inside ref object"
-  (`#3062 <https://github.com/Araq/Nim/issues/3062>`_)
-- Fixed "Nim check crashes on incorrect generic arg definition"
-  (`#3051 <https://github.com/Araq/Nim/issues/3051>`_)
-- Fixed "Nim check crashes on iterating nonexistent var"
-  (`#3053 <https://github.com/Araq/Nim/issues/3053>`_)
-- Fixed "Nim check crashes on wrong param set declaration + iteration"
-  (`#3054 <https://github.com/Araq/Nim/issues/3054>`_)
-- Fixed "Wrong sharing of static_t instantations"
-  (`#3112 <https://github.com/Araq/Nim/issues/3112>`_)
-- Fixed "Automatically generated proc conflicts with user-defined proc when .exportc.'ed"
-  (`#3134 <https://github.com/Araq/Nim/issues/3134>`_)
-- Fixed "getTypeInfo call crashes nim"
-  (`#3099 <https://github.com/Araq/Nim/issues/3099>`_)
-- Fixed "Array ptr dereference"
-  (`#2963 <https://github.com/Araq/Nim/issues/2963>`_)
-- Fixed "Internal error when `repr`-ing a type directly"
-  (`#3079 <https://github.com/Araq/Nim/issues/3079>`_)
-- Fixed "unknown type name 'TNimType' after importing typeinfo module"
-  (`#2841 <https://github.com/Araq/Nim/issues/2841>`_)
-- Fixed "Can export a template twice and from inside a block"
-  (`#1738 <https://github.com/Araq/Nim/issues/1738>`_)
-- Fixed "C Codegen: C Types are defined after their usage in certain cases"
-  (`#2823 <https://github.com/Araq/Nim/issues/2823>`_)
-- Fixed "s.high refers to the current seq instead of the old one"
-  (`#1832 <https://github.com/Araq/Nim/issues/1832>`_)
-- Fixed "Error while unmarshaling null values"
-  (`#3149 <https://github.com/Araq/Nim/issues/3149>`_)
-- Fixed "Inference of `static[T]` in sequences"
-  (`#3144 <https://github.com/Araq/Nim/issues/3144>`_)
-- Fixed "Argument named "closure" to proc inside template interfere with closure pragma"
-  (`#3171 <https://github.com/Araq/Nim/issues/3171>`_)
-- Fixed "Internal error with aliasing inside template"
-  (`#3158 <https://github.com/Araq/Nim/issues/3158>`_)
-- Fixed "Cardinality of sets prints unexpected value"
-  (`#3135 <https://github.com/Araq/Nim/issues/3135>`_)
-- Fixed "Nim crashes on const assignment from function returning var ref object"
-  (`#3103 <https://github.com/Araq/Nim/issues/3103>`_)
-- Fixed "`repr` cstring"
-  (`#3080 <https://github.com/Araq/Nim/issues/3080>`_)
-- Fixed "Nim check crashes on wrong enum declaration"
-  (`#3052 <https://github.com/Araq/Nim/issues/3052>`_)
-- Fixed "Compiler assertion when evaluating template with static[T]"
-  (`#1858 <https://github.com/Araq/Nim/issues/1858>`_)
-- Fixed "Erroneous overflow in iterators when compiler built with overflowChecks enabled"
-  (`#3140 <https://github.com/Araq/Nim/issues/3140>`_)
-- Fixed "Unicode dashes as "lisp'ish" alternative to hump and snake notation"
-  (`#2811 <https://github.com/Araq/Nim/issues/2811>`_)
-- Fixed "Calling discardable proc from a defer is an error."
-  (`#3185 <https://github.com/Araq/Nim/issues/3185>`_)
-- Fixed "Defer statement at the end of a block produces ICE"
-  (`#3186 <https://github.com/Araq/Nim/issues/3186>`_)
-- Fixed "Call to `createU` fails to compile"
-  (`#3193 <https://github.com/Araq/Nim/issues/3193>`_)
-- Fixed "VM crash when accessing array's element"
-  (`#3192 <https://github.com/Araq/Nim/issues/3192>`_)
-- Fixed "Unexpected proc invoked when different modules add procs to a type from a 3rd module"
-  (`#2664 <https://github.com/Araq/Nim/issues/2664>`_)
-- Fixed "Nim crashes on conditional declaration inside a template"
-  (`#2670 <https://github.com/Araq/Nim/issues/2670>`_)
-- Fixed "Iterator names conflict within different scopes"
-  (`#2752 <https://github.com/Araq/Nim/issues/2752>`_)
-- Fixed "VM: Cannot assign int value to ref variable"
-  (`#1329 <https://github.com/Araq/Nim/issues/1329>`_)
-- Fixed "Incorrect code generated for tagged unions with enums not starting at zero"
-  (`#3096 <https://github.com/Araq/Nim/issues/3096>`_)
-- Fixed "Compile time procs using forward declarations are silently ignored"
-  (`#3066 <https://github.com/Araq/Nim/issues/3066>`_)
-- Fixed "re binding error in generic"
-  (`#1965 <https://github.com/Araq/Nim/issues/1965>`_)
-- Fixed "os.getCreationTime is incorrect/impossible on Posix systems"
-  (`#1058 <https://github.com/Araq/Nim/issues/1058>`_)
-- Fixed "Improve error message for osproc.startProcess when command does not exist"
-  (`#2183 <https://github.com/Araq/Nim/issues/2183>`_)
-- Fixed "gctest segfaults with --gc:markandsweep on x86_64"
-  (`#2305 <https://github.com/Araq/Nim/issues/2305>`_)
-- Fixed "Coroutine changes break compilation on unsupported architectures"
-  (`#3245 <https://github.com/Araq/Nim/issues/3245>`_)
-- Fixed "Bugfix: Windows 32bit  TinyCC support issue fixed"
-  (`#3237 <https://github.com/Araq/Nim/issues/3237>`_)
-- Fixed "db_mysql getValue() followed by exec() causing error"
-  (`#3220 <https://github.com/Araq/Nim/issues/3220>`_)
-- Fixed "xmltree.newEntity creates xnCData instead of xnEntity"
-  (`#3282 <https://github.com/Araq/Nim/issues/3282>`_)
-- Fixed "Methods and modules don't work together"
-  (`#2590 <https://github.com/Araq/Nim/issues/2590>`_)
-- Fixed "String slicing not working in the vm"
-  (`#3300 <https://github.com/Araq/Nim/issues/3300>`_)
-- Fixed "internal error: evalOp(mTypeOf)"
-  (`#3230 <https://github.com/Araq/Nim/issues/3230>`_)
-- Fixed "#! source code prefix collides with Unix Shebang"
-  (`#2559 <https://github.com/Araq/Nim/issues/2559>`_)
-- Fixed "wrong codegen for constant object"
-  (`#3195 <https://github.com/Araq/Nim/issues/3195>`_)
-- Fixed "Doc comments inside procs with implicit returns don't work"
-  (`#1528 <https://github.com/Araq/Nim/issues/1528>`_)
-
-
-2015-10-16 First Nim conference
-===============================
-
-.. raw::html
-
-  <img src="assets/zeo/banner.jpg" alt="First Nim conference in Ukraine!" width="682"/>
-
-This Autumn you have the unique opportunity to take part in the first Nim event
-held in Kyiv and to meet the creator of the Nim programming language -
-Andreas Rumpf. The event is hosted by Zeo Alliance and is taking place between
-14-15 November 2015 in Kyiv, Ukraine.
-
-During the workshop you will learn:
-
-- The basics of the language including its safe and unsafe subsets.
-- How to use Nim to develop web applications.
-- How Nim's meta programming capabilities make Nim the ultimate glue language,
-  excellent at interoperability with C++, JavaScript, Java and others.
-- Games in Nim and the ability to rapidly prototype without sacrificing speed.
-
-Registration is free, but the number of places is limited. More details
-can be found `here <https://nimworkshop.splashthat.com/>`_.
-
-
-
-
-
-
-
-
-2015-05-04 Version 0.11.2 released
-==================================
-
-This is just a bugfix release that fixes the most pressing regressions we
-introduced with version 0.11.0. The way types are computed was
-changed significantly causing all sort of problems. Sorry for the
-inconvenience; we grew overconfident our large test suite would prevent these
-things.
-
-
-2015-04-30 Version 0.11.0 released
-==================================
-
-With this release we are one step closer to reaching version 1.0 and by
-extension the persistence of the Nim specification. As mentioned in the
-previous release notes, starting with version 1.0, we will not be introducing
-any more breaking changes to Nim.
-
-The *language* itself is very close to 1.0, the primary area that requires
-more work is the standard library.
-
-Take a look at the `download <download.html>`_ page for binaries (Windows-only)
-and 0.11.0 snapshots of the source code. The Windows installer now also
-includes `Aporia <https://github.com/nim-lang/aporia>`_,
-`Nimble <https://github.com/nim-lang/nimble>`_ and other useful tools to get
-you started with Nim.
-
-What's left to be done
-~~~~~~~~~~~~~~~~~~~~~~
-
-The 1.0 release is expected by the end of this year. Rumors say it will be in
-summer 2015. What's left:
-
-* Bug fixes, bug fixes, bug fixes, in particular:
-  - The remaining bugs of the lambda lifting pass that is responsible to enable
-    closures and closure iterators need to be fixed.
-  - ``concept`` needs to be refined, a nice name for the feature is not enough.
-  - Destructors need to be refined.
-  - ``static[T]`` needs to be fixed.
-  - Finish the implementation of the 'parallel' statement.
-* ``immediate`` templates and macros will be deprecated as these will soon be
-  completely unnecessary, instead the ``typed`` or ``untyped`` metatypes can
-  be used.
-* More of the standard library should be moved to Nimble packages and what's
-  left should use the features we have for concurrency and parallelism.
-
-
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- Parameter names are finally properly ``gensym``'ed. This can break
-  templates though that used to rely on the fact that they are not.
-  (Bug #1915.) This means this doesn't compile anymore:
-
-.. code-block:: nim
-
-  template doIt(body: stmt) {.immediate.} =
-    # this used to inject the 'str' parameter:
-    proc res(str: string) =
-      body
-
-  doIt:
-    echo str # Error: undeclared identifier: 'str'
-..
-
-  This used to inject the ``str`` parameter into the scope of the body.
-  Declare the ``doIt`` template as ``immediate, dirty`` to get the old
-  behaviour.
-- Tuple field names are not ignored anymore, this caused too many problems
-  in practice so now the behaviour is as it was for version 0.9.6: If field
-  names exist for the tuple type, they are checked.
-- ``logging.level`` and ``logging.handlers`` are no longer exported.
-  ``addHandler``, ``getHandlers``, ``setLogFilter`` and ``getLogFilter``
-  should be used instead.
-- ``nim idetools`` has been replaced by a separate
-  tool `nimsuggest <0.11.0/nimsuggest.html>`_.
-- *arrow like* operators are not right associative anymore and are required
-  to end with either ``->``, ``~>`` or
-  ``=>``, not just ``>``. Examples of operators still considered arrow like:
-  ``->``, ``==>``, ``+=>``. On the other hand, the following operators are now
-  considered regular operators again: ``|>``, ``-+>``, etc.
-- Typeless parameters are now only allowed in templates and macros. The old
-  way turned out to be too error-prone.
-- The 'addr' and 'type' operators are now parsed as unary function
-  application. This means ``type(x).name`` is now parsed as ``(type(x)).name``
-  and not as ``type((x).name)``. Note that this also affects the AST
-  structure; for immediate macro parameters ``nkCall('addr', 'x')`` is
-  produced instead of ``nkAddr('x')``.
-- ``concept`` is now a keyword and is used instead of ``generic``.
-- The ``inc``, ``dec``, ``+=``, ``-=`` builtins now produce OverflowError
-  exceptions. This means code like the following:
-
-.. code-block:: nim
-  var x = low(T)
-  while x <= high(T):
-    echo x
-    inc x
-
-Needs to be replaced by something like this:
-
-.. code-block:: nim
-  var x = low(T).int
-  while x <= high(T).int:
-    echo x.T
-    inc x
-
-- **Negative indexing for slicing does not work anymore!** Instead
-  of ``a[0.. -1]`` you can
-  use ``a[0.. ^1]``. This also works with accessing a single
-  element ``a[^1]``. Note that we cannot detect this reliably as it is
-  determined at **runtime** whether negative indexing is used!
-  ``a[0.. -1]`` now produces the empty string/sequence.
-- The compiler now warns about code like ``foo +=1`` which uses inconsistent
-  spacing around binary operators. Later versions of the language will parse
-  these as unary operators instead so that ``echo $foo`` finally can do what
-  people expect it to do.
-- ``system.untyped`` and ``system.typed`` have been introduced as aliases
-  for ``expr`` and ``stmt``. The new names capture the semantics much better
-  and most likely  ``expr`` and ``stmt`` will be deprecated in favor of the
-  new names.
-- The ``split`` method in module ``re`` has changed. It now handles the case
-  of matches having a length of 0, and empty strings being yielded from the
-  iterator. A notable change might be that a pattern being matched at the
-  beginning and end of a string, will result in an empty string being produced
-  at the start and the end of the iterator.
-- The compiler and nimsuggest now count columns starting with 1, not 0 for
-  consistency with the rest of the world.
-
-
-Language Additions
-------------------
-
-- For empty ``case object`` branches ``discard`` can finally be used instead
-  of ``nil``.
-- Automatic dereferencing is now done for the first argument of a routine
-  call if overloading resolution produces no match otherwise. This feature
-  has to be enabled with
-  the `experimental <0.11.0/manual.html#pragmas-experimental-pragma>`_ pragma.
-- Objects that do not use inheritance nor ``case`` can be put into ``const``
-  sections. This means that finally this is possible and produces rather
-  nice code:
-
-.. code-block:: nim
-  import tables
-
-  const
-    foo = {"ah": "finally", "this": "is", "possible.": "nice!"}.toTable()
-
-
-- Ordinary parameters can follow after a varargs parameter. This means the
-  following is finally accepted by the compiler:
-
-.. code-block:: nim
-  template takesBlock(a, b: int, x: varargs[expr]; blck: stmt) =
-    blck
-    echo a, b
-
-  takesBlock 1, 2, "some", 0.90, "random stuff":
-    echo "yay"
-
-- Overloading by 'var T' is now finally possible:
-
-.. code-block:: nim
-  proc varOrConst(x: var int) = echo "var"
-  proc varOrConst(x: int) = echo "const"
-
-  var x: int
-  varOrConst(x) # "var"
-  varOrConst(45) # "const"
-
-- Array and seq indexing can now use the builtin ``^`` operator to access
-  things from backwards: ``a[^1]`` is like Python's ``a[-1]``.
-- A first version of the specification and implementation of the overloading
-  of the assignment operator has arrived!
-- ``system.len`` for strings and sequences now returns 0 for nil.
-
-- A single underscore can now be used to discard values when unpacking tuples:
-
-.. code-block:: nim
-  let (path, _, _) = os.splitFile("path/file.ext")
-
-
-- ``marshal.$$`` and ``marshal.to`` can be executed at compile-time.
-- Interoperability with C++ improved tremendously; C++'s templates and
-  operators can be wrapped directly. See
-  `this <0.11.0/nimc.html#additional-features-importcpp-pragma>`_
-  for more information.
-- ``macros.getType`` can be used to query an AST's type at compile-time. This
-  enables more powerful macros, for instance *currying* can now be done with
-  a macro.
-
-
-Library additions
------------------
-
-- ``reversed`` proc added to the ``unicode`` module.
-- Added multipart param to httpclient's ``post`` and ``postContent`` together
-  with a ``newMultipartData`` proc.
-- Added `%*` operator for JSON.
-- The compiler is now available as Nimble package for c2nim.
-- Added ``..^`` and ``..<`` templates to system so that the rather annoying
-  space between ``.. <`` and ``.. ^`` is not necessary anymore.
-- Added ``system.xlen`` for strings and sequences to get back the old ``len``
-  operation that doesn't check for ``nil`` for efficiency.
-- Added sexp.nim to parse and generate sexp.
-
-
-Bugfixes
---------
-
-- Fixed internal compiler error when using ``char()`` in an echo call
-  (`#1788 <https://github.com/Araq/Nim/issues/1788>`_).
-- Fixed Windows cross-compilation on Linux.
-- Overload resolution now works for types distinguished only by a
-  ``static[int]`` param
-  (`#1056 <https://github.com/Araq/Nim/issues/1056>`_).
-- Other fixes relating to generic types and static params.
-- Fixed some compiler crashes with unnamed tuples
-  (`#1774 <https://github.com/Araq/Nim/issues/1774>`_).
-- Fixed ``channels.tryRecv`` blocking
-  (`#1816 <https://github.com/Araq/Nim/issues/1816>`_).
-- Fixed generic instantiation errors with ``typedesc``
-  (`#419 <https://github.com/Araq/Nim/issues/419>`_).
-- Fixed generic regression where the compiler no longer detected constant
-  expressions properly (`#544 <https://github.com/Araq/Nim/issues/544>`_).
-- Fixed internal error with generic proc using ``static[T]`` in a specific
-  way (`#1049 <https://github.com/Araq/Nim/issues/1049>`_).
-- More fixes relating to generics (`#1820 <https://github.com/Araq/Nim/issues/1820>`_,
-  `#1050 <https://github.com/Araq/Nim/issues/1050>`_,
-  `#1859 <https://github.com/Araq/Nim/issues/1859>`_,
-  `#1858 <https://github.com/Araq/Nim/issues/1858>`_).
-- Fixed httpclient to properly encode queries.
-- Many fixes to the ``uri`` module.
-- Async sockets are now closed on error.
-- Fixes to httpclient's handling of multipart data.
-- Fixed GC segfaults with asynchronous sockets
-  (`#1796 <https://github.com/Araq/Nim/issues/1796>`_).
-- Added more versions to openssl's DLL version list
-  (`076f993 <https://github.com/Araq/Nim/commit/076f993>`_).
-- Fixed shallow copy in iterators being broken
-  (`#1803 <https://github.com/Araq/Nim/issues/1803>`_).
-- ``nil`` can now be inserted into tables with the ``db_sqlite`` module
-  (`#1866 <https://github.com/Araq/Nim/issues/1866>`_).
-- Fixed "Incorrect assembler generated"
-  (`#1907 <https://github.com/Araq/Nim/issues/1907>`_)
-- Fixed "Expression templates that define macros are unusable in some contexts"
-  (`#1903 <https://github.com/Araq/Nim/issues/1903>`_)
-- Fixed "a second level generic subclass causes the compiler to crash"
-  (`#1919 <https://github.com/Araq/Nim/issues/1919>`_)
-- Fixed "nim 0.10.2 generates invalid AsyncHttpClient C code for MSVC "
-  (`#1901 <https://github.com/Araq/Nim/issues/1901>`_)
-- Fixed "1 shl n produces wrong C code"
-  (`#1928 <https://github.com/Araq/Nim/issues/1928>`_)
-- Fixed "Internal error on tuple yield"
-  (`#1838 <https://github.com/Araq/Nim/issues/1838>`_)
-- Fixed "ICE with template"
-  (`#1915 <https://github.com/Araq/Nim/issues/1915>`_)
-- Fixed "include the tool directory in the installer as it is required by koch"
-  (`#1947 <https://github.com/Araq/Nim/issues/1947>`_)
-- Fixed "Can't compile if file location contains spaces on Windows"
-  (`#1955 <https://github.com/Araq/Nim/issues/1955>`_)
-- Fixed "List comprehension macro only supports infix checks as guards"
-  (`#1920 <https://github.com/Araq/Nim/issues/1920>`_)
-- Fixed "wrong field names of compatible tuples in generic types"
-  (`#1910 <https://github.com/Araq/Nim/issues/1910>`_)
-- Fixed "Macros within templates no longer work as expected"
-  (`#1944 <https://github.com/Araq/Nim/issues/1944>`_)
-- Fixed "Compiling for Standalone AVR broken in 0.10.2"
-  (`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
-- Fixed "Compiling for Standalone AVR broken in 0.10.2"
-  (`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
-- Fixed "Code generation for mitems with tuple elements"
-  (`#1833 <https://github.com/Araq/Nim/issues/1833>`_)
-- Fixed "httpclient.HttpMethod should not be an enum"
-  (`#1962 <https://github.com/Araq/Nim/issues/1962>`_)
-- Fixed "terminal / eraseScreen() throws an OverflowError"
-  (`#1906 <https://github.com/Araq/Nim/issues/1906>`_)
-- Fixed "setControlCHook(nil) disables registered quit procs"
-  (`#1546 <https://github.com/Araq/Nim/issues/1546>`_)
-- Fixed "Unexpected idetools behaviour"
-  (`#325 <https://github.com/Araq/Nim/issues/325>`_)
-- Fixed "Unused lifted lambda does not compile"
-  (`#1642 <https://github.com/Araq/Nim/issues/1642>`_)
-- Fixed "'low' and 'high' don't work with cstring asguments"
-  (`#2030 <https://github.com/Araq/Nim/issues/2030>`_)
-- Fixed "Converting to int does not round in JS backend"
-  (`#1959 <https://github.com/Araq/Nim/issues/1959>`_)
-- Fixed "Internal error genRecordField 2 when adding region to pointer."
-  (`#2039 <https://github.com/Araq/Nim/issues/2039>`_)
-- Fixed "Macros fail to compile when compiled with --os:standalone"
-  (`#2041 <https://github.com/Araq/Nim/issues/2041>`_)
-- Fixed "Reading from {.compileTime.} variables can cause code generation to fail"
-  (`#2022 <https://github.com/Araq/Nim/issues/2022>`_)
-- Fixed "Passing overloaded symbols to templates fails inside generic procedures"
-  (`#1988 <https://github.com/Araq/Nim/issues/1988>`_)
-- Fixed "Compiling iterator with object assignment in release mode causes "var not init""
-  (`#2023 <https://github.com/Araq/Nim/issues/2023>`_)
-- Fixed "calling a large number of macros doing some computation fails"
-  (`#1989 <https://github.com/Araq/Nim/issues/1989>`_)
-- Fixed "Can't get Koch to install nim under Windows"
-  (`#2061 <https://github.com/Araq/Nim/issues/2061>`_)
-- Fixed "Template with two stmt parameters segfaults compiler"
-  (`#2057 <https://github.com/Araq/Nim/issues/2057>`_)
-- Fixed "`noSideEffect` not affected by `echo`"
-  (`#2011 <https://github.com/Araq/Nim/issues/2011>`_)
-- Fixed "Compiling with the cpp backend ignores --passc"
-  (`#1601 <https://github.com/Araq/Nim/issues/1601>`_)
-- Fixed "Put untyped procedure parameters behind the experimental pragma"
-  (`#1956 <https://github.com/Araq/Nim/issues/1956>`_)
-- Fixed "generic regression"
-  (`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
-- Fixed "generic regression"
-  (`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
-- Fixed "Regression in template lookup with generics"
-  (`#2004 <https://github.com/Araq/Nim/issues/2004>`_)
-- Fixed "GC's growObj is wrong for edge cases"
-  (`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
-- Fixed "Compiler internal error when creating an array out of a typeclass"
-  (`#1131 <https://github.com/Araq/Nim/issues/1131>`_)
-- Fixed "GC's growObj is wrong for edge cases"
-  (`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
-- Fixed "Invalid Objective-C code generated when calling class method"
-  (`#2068 <https://github.com/Araq/Nim/issues/2068>`_)
-- Fixed "walkDirRec Error"
-  (`#2116 <https://github.com/Araq/Nim/issues/2116>`_)
-- Fixed "Typo in code causes compiler SIGSEGV in evalAtCompileTime"
-  (`#2113 <https://github.com/Araq/Nim/issues/2113>`_)
-- Fixed "Regression on exportc"
-  (`#2118 <https://github.com/Araq/Nim/issues/2118>`_)
-- Fixed "Error message"
-  (`#2102 <https://github.com/Araq/Nim/issues/2102>`_)
-- Fixed "hint[path] = off not working in nim.cfg"
-  (`#2103 <https://github.com/Araq/Nim/issues/2103>`_)
-- Fixed "compiler crashes when getting a tuple from a sequence of generic tuples"
-  (`#2121 <https://github.com/Araq/Nim/issues/2121>`_)
-- Fixed "nim check hangs with when"
-  (`#2123 <https://github.com/Araq/Nim/issues/2123>`_)
-- Fixed "static[T] param in nested type resolve/caching issue"
-  (`#2125 <https://github.com/Araq/Nim/issues/2125>`_)
-- Fixed "repr should display ``\0``"
-  (`#2124 <https://github.com/Araq/Nim/issues/2124>`_)
-- Fixed "'nim check' never ends in case of recursive dependency "
-  (`#2051 <https://github.com/Araq/Nim/issues/2051>`_)
-- Fixed "From macros: Error: unhandled exception: sons is not accessible"
-  (`#2167 <https://github.com/Araq/Nim/issues/2167>`_)
-- Fixed "`fieldPairs` doesn't work inside templates"
-  (`#1902 <https://github.com/Araq/Nim/issues/1902>`_)
-- Fixed "fields iterator misbehavior on break statement"
-  (`#2134 <https://github.com/Araq/Nim/issues/2134>`_)
-- Fixed "Fix for compiler not building anymore since #c3244ef1ff"
-  (`#2193 <https://github.com/Araq/Nim/issues/2193>`_)
-- Fixed "JSON parser fails in cpp output mode"
-  (`#2199 <https://github.com/Araq/Nim/issues/2199>`_)
-- Fixed "macros.getType mishandles void return"
-  (`#2211 <https://github.com/Araq/Nim/issues/2211>`_)
-- Fixed "Regression involving templates instantiated within generics"
-  (`#2215 <https://github.com/Araq/Nim/issues/2215>`_)
-- Fixed ""Error: invalid type" for 'not nil' on generic type."
-  (`#2216 <https://github.com/Araq/Nim/issues/2216>`_)
-- Fixed "--threads:on breaks async"
-  (`#2074 <https://github.com/Araq/Nim/issues/2074>`_)
-- Fixed "Type mismatch not always caught, can generate bad code for C backend."
-  (`#2169 <https://github.com/Araq/Nim/issues/2169>`_)
-- Fixed "Failed C compilation when storing proc to own type in object"
-  (`#2233 <https://github.com/Araq/Nim/issues/2233>`_)
-- Fixed "Unknown line/column number in constant declaration type conversion error"
-  (`#2252 <https://github.com/Araq/Nim/issues/2252>`_)
-- Fixed "Adding {.compile.} fails if nimcache already exists."
-  (`#2247 <https://github.com/Araq/Nim/issues/2247>`_)
-- Fixed "Two different type names generated for a single type (C backend)"
-  (`#2250 <https://github.com/Araq/Nim/issues/2250>`_)
-- Fixed "Ambigous call when it should not be"
-  (`#2229 <https://github.com/Araq/Nim/issues/2229>`_)
-- Fixed "Make sure we can load root urls"
-  (`#2227 <https://github.com/Araq/Nim/issues/2227>`_)
-- Fixed "Failure to slice a string with an int subrange type"
-  (`#794 <https://github.com/Araq/Nim/issues/794>`_)
-- Fixed "documentation error"
-  (`#2205 <https://github.com/Araq/Nim/issues/2205>`_)
-- Fixed "Code growth when using `const`"
-  (`#1940 <https://github.com/Araq/Nim/issues/1940>`_)
-- Fixed "Instances of generic types confuse overload resolution"
-  (`#2220 <https://github.com/Araq/Nim/issues/2220>`_)
-- Fixed "Compiler error when initializing sdl2's EventType"
-  (`#2316 <https://github.com/Araq/Nim/issues/2316>`_)
-- Fixed "Parallel disjoint checking can't handle `<`, `items`, or arrays"
-  (`#2287 <https://github.com/Araq/Nim/issues/2287>`_)
-- Fixed "Strings aren't copied in parallel loop"
-  (`#2286 <https://github.com/Araq/Nim/issues/2286>`_)
-- Fixed "JavaScript compiler crash with tables"
-  (`#2298 <https://github.com/Araq/Nim/issues/2298>`_)
-- Fixed "Range checker too restrictive"
-  (`#1845 <https://github.com/Araq/Nim/issues/1845>`_)
-- Fixed "Failure to slice a string with an int subrange type"
-  (`#794 <https://github.com/Araq/Nim/issues/794>`_)
-- Fixed "Remind user when compiling in debug mode"
-  (`#1868 <https://github.com/Araq/Nim/issues/1868>`_)
-- Fixed "Compiler user guide has jumbled options/commands."
-  (`#1819 <https://github.com/Araq/Nim/issues/1819>`_)
-- Fixed "using `method`: 1 in a objects constructor fails when compiling"
-  (`#1791 <https://github.com/Araq/Nim/issues/1791>`_)
-
-
-2014-12-29 Version 0.10.2 released
-==================================
-
-This release marks the completion of a very important change to the project:
-the official renaming from Nimrod to Nim. Version 0.10.2 contains many language
-changes, some of which may break your existing code. For your convenience, we
-added a new tool called `nimfix <nimfix.html>`_ that will help you convert your
-existing projects so that it works with the latest version of the compiler.
-
-Progress towards version 1.0
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Although Nim is still pre-1.0, we were able to keep the number of breaking
-changes to a minimum so far. Starting with version 1.0, we will not introduce
-any breaking changes between major release versions.
-One of Nim's goals is to ensure that the compiler is as efficient as possible.
-Take a look at the
-`latest benchmarks <https://github.com/logicchains/LPATHBench/blob/master/writeup.md>`_,
-which show that Nim is consistently near
-the top and already nearly as fast as C and C++. Recent developments, such as
-the new ``asyncdispatch`` module will allow you to write efficient web server
-applications using non-blocking code. Nim now also has a built-in thread pool
-for lightweight threading through the use of ``spawn``.
-
-The unpopular "T" and "P" prefixes on types have been deprecated. Nim also
-became more expressive by weakening the distinction between statements and
-expressions. We also added a new and searchable forum, a new website, and our
-documentation generator ``docgen`` has seen major improvements. Many thanks to
-Nick Greenfield for the much more beautiful documentation!
-
-
-
-What's left to be done
-~~~~~~~~~~~~~~~~~~~~~~
-
-The 1.0 release is actually very close. Apart from bug fixes, there are
-two major features missing or incomplete:
-
-* ``static[T]`` needs to be defined precisely and the bugs in the
-  implementation need to be fixed.
-* Overloading of the assignment operator is required for some generic
-  containers and needs to be implemented.
-
-This means that fancy matrix libraries will finally start to work, which used
-to be a major point of pain in the language.
-
-
-Nimble and other Nim tools
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Outside of the language and the compiler itself many Nim tools have seen
-considerable improvements.
-
-Babel the Nim package manager has been renamed to Nimble. Nimble's purpose
-is the installation of packages containing libraries and/or applications
-written in Nim.
-Even though Nimble is still very young it already is very
-functional. It can install packages by name, it does so by accessing a
-packages repository which is hosted on a GitHub repo. Packages can also be
-installed via a Git repo URL or Mercurial repo URL. The package repository
-is searchable through Nimble. Anyone is free to add their own packages to
-the package repository by forking the
-`nim-lang/packages <https://github.com/nim-lang/packages>`_ repo and creating
-a pull request. Nimble is fully cross-platform and should be fully functional
-on all major operating systems.
-It is of course completely written in Nim.
-
-Changelog
-~~~~~~~~~
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- **The language has been renamed from Nimrod to Nim.** The name of the
-  compiler changed from ``nimrod`` to ``nim`` too.
-- ``system.fileHandle`` has been renamed to ``system.getFileHandle`` to
-  prevent name conflicts with the new type ``FileHandle``.
-- Comments are now not part of the AST anymore, as such you cannot use them
-  in place of ``discard``.
-- Large parts of the stdlib got rid of the T/P type prefixes. Instead most
-  types now simply start with an uppercased letter. The
-  so called "partial case sensitivity" rule is now active allowing for code
-  like ``var foo: Foo`` in more contexts.
-- String case (or any non-ordinal case) statements
-  without 'else' are deprecated.
-- Recursive tuple types are not allowed anymore. Use ``object`` instead.
-- The PEGS module returns ``nil`` instead of ``""`` when an optional capture
-  fails to match.
-- The re module returns ``nil`` instead of ``""`` when an optional capture
-  fails to match.
-- The "symmetric set difference" operator (``-+-``) never worked and has been
-  removed.
-- ``defer`` is a keyword now.
-- ``func`` is a keyword now.
-- The ``using`` language feature now needs to be activated via the new
-  ``{.experimental.}`` pragma that enables experimental language features.
-- Destructors are now officially *experimental*.
-- Standalone ``except`` and ``finally`` statements are deprecated now.
-  The standalone ``finally`` can be replaced with ``defer``,
-  standalone ``except`` requires an explicit ``try``.
-- Operators ending in ``>`` are considered as "arrow like" and have their
-  own priority level and are right associative. This means that
-  the ``=>`` and ``->`` operators from the `future <future.html>`_ module
-  work better.
-- Field names in tuples are now ignored for type comparisons. This allows
-  for greater interoperability between different modules.
-- Statement lists are not converted to an implicit ``do`` block anymore. This
-  means the confusing ``nnkDo`` nodes when working with macros are gone for
-  good.
-
-
-Language Additions
-------------------
-
-- The new concurrency model has been implemented including ``locks`` sections,
-  lock levels and object field ``guards``.
-- The ``parallel`` statement has been implemented.
-- ``deepCopy`` has been added to the language.
-- The builtin ``procCall`` can be used to get ``super``-like functionality
-  for multi methods.
-- There is a new pragma ``{.experimental.}`` that enables experimental
-  language features per module, or you can enable these features on a global
-  level with the ``--experimental`` command line option.
-
-
-Compiler Additions
-------------------
-
-- The compiler now supports *mixed* Objective C / C++ / C code generation:
-  The modules that use ``importCpp`` or ``importObjc`` are compiled to C++
-  or Objective C code, any other module is compiled to C code. This
-  improves interoperability.
-- There is a new ``parallel`` statement for safe fork&join parallel computing.
-- ``guard`` and ``lock`` pragmas have been implemented to support safer
-  concurrent programming.
-- The following procs are now available at compile-time::
-
-    math.sqrt, math.ln, math.log10, math.log2, math.exp, math.round,
-    math.arccos, math.arcsin, math.arctan, math.arctan2, math.cos,
-    math.cosh, math.hypot, math.sinh, math.sin, math.tan, math.tanh,
-    math.pow, math.trunc, math.floor, math.ceil, math.fmod,
-    os.getEnv, os.existsEnv, os.dirExists, os.fileExists,
-    system.writeFile
-
-- Two backticks now produce a single backtick within an ``emit`` or ``asm``
-  statement.
-- There is a new tool, `nimfix <nimfix.html>`_ to help you in updating your
-  code from Nimrod to Nim.
-- The compiler's output has been prettified.
-
-Library Additions
------------------
-
-- Added module ``fenv`` to control the handling of floating-point rounding and
-  exceptions (overflow, division by zero, etc.).
-- ``system.setupForeignThreadGc`` can be used for better interaction with
-  foreign libraries that create threads and run a Nim callback from these
-  foreign threads.
-- List comprehensions have been implemented as a macro in the ``future``
-  module.
-- The new Async module (``asyncnet``) now supports SSL.
-- The ``smtp`` module now has an async implementation.
-- Added module ``asyncfile`` which implements asynchronous file reading
-  and writing.
-- ``osproc.kill`` has been added.
-- ``asyncnet`` and ``asynchttpserver`` now support ``SO_REUSEADDR``.
-
-Bugfixes
---------
-
-- ``nil`` and ``NULL`` are now preserved between Nim and databases in the
-  ``db_*`` modules.
-- Fixed issue with OS module in non-unicode mode on Windows.
-- Fixed issue with ``x.low``
-  (`#1366 <https://github.com/Araq/Nim/issues/1366>`_).
-- Fixed tuple unpacking issue inside closure iterators
-  (`#1067 <https://github.com/Araq/Nim/issues/1067>`_).
-- Fixed ENDB compilation issues.
-- Many ``asynchttpserver`` fixes.
-- Macros can now keep global state across macro calls
-  (`#903 <https://github.com/Araq/Nim/issues/903>`_).
-- ``osproc`` fixes on Windows.
-- ``osproc.terminate`` fixed.
-- Improvements to exception handling in async procedures.
-  (`#1487 <https://github.com/Araq/Nim/issues/1487>`_).
-- ``try`` now works at compile-time.
-- Fixes ``T = ref T`` to be an illegal recursive type.
-- Self imports are now disallowed.
-- Improved effect inference.
-- Fixes for the ``math`` module on Windows.
-- User defined pragmas will now work for generics that have
-  been instantiated in different modules.
-- Fixed queue exhaustion bug.
-- Many, many more.
-
-2014-12-09 New website design!
-==============================
-
-A brand new website including an improved forum is now live.
-All thanks go to Philip Witte and
-Dominik Picheta, Philip Witte for the design of the website (together with
-the logo) as well as the HTML and CSS code for his template, and Dominik Picheta
-for integrating Philip's design with Nim's forum. We're sure you will
-agree that Philip's design is beautiful.
-
-
-
-2014-10-19 Version 0.9.6 released
-=================================
-
-**Note: 0.9.6 is the last release of Nimrod. The language is being renamed to
-Nim. Nim slightly breaks compatibility.**
-
-This is a maintenance release. The upcoming 0.10.0 release has
-the new features and exciting developments.
-
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- ``spawn`` now uses an elaborate self-adapting thread pool and as such
-  has been moved into its own module. So to use it, you now have to import
-  ``threadpool``.
-- The symbol binding rules in generics changed: ``bar`` in ``foo.bar`` is
-  now considered for implicit early binding.
-- ``c2nim`` moved into its own repository and is now a Babel package.
-- ``pas2nim`` moved into its own repository and is now a Babel package.
-- ``system.$`` for floating point types now produces a human friendly string
-  representation.
-- ``uri.TUrl`` as well as the ``parseurl`` module are now deprecated in favour
-  of the new ``TUri`` type in the ``uri`` module.
-- The ``destructor`` pragma has been deprecated. Use the ``override`` pragma
-  instead. The destructor's name has to be ``destroy`` now.
-- ``lambda`` is not a keyword anymore.
-- **system.defined has been split into system.defined and system.declared**.
-  You have to use ``--symbol`` to declare new conditional symbols that can be
-  set via ``--define``.
-- ``--threadanalysis:on`` is now the default. To make your program compile
-  you can disable it but this is only a temporary solution as this option
-  will disappear soon!
-
-
-Compiler improvements
----------------------
-
-- Multi method dispatching performance has been improved by a factor of 10x for
-  pathological cases.
-
-
-Language Additions
-------------------
-
-- This version introduces the ``deprecated`` pragma statement that is used
-  to handle the upcoming massive amount of symbol renames.
-- ``spawn`` can now wrap proc that has a return value. It then returns a data
-  flow variable of the wrapped return type.
-
-
-Library Additions
------------------
-
-- Added module ``cpuinfo``.
-- Added module ``threadpool``.
-- ``sequtils.distnct`` has been renamed to ``sequtils.deduplicate``.
-- Added ``algorithm.reversed``
-- Added ``uri.combine`` and ``uri.parseUri``.
-- Some sockets procedures now support a ``SafeDisconn`` flag which causes
-  them to handle disconnection errors and not raise them.
-
-
-2014-04-21 Version 0.9.4 released
-=================================
-
-The Nimrod development community is proud to announce the release of version
-0.9.4 of the Nimrod compiler and tools. **Note: This release has to be
-considered beta quality! Lots of new features have been implemented but
-unfortunately some do not fulfill our quality standards yet.**
-
-Prebuilt binaries and instructions for building from source are available
-on the `download page <download.html>`_.
-
-This release includes about
-`1400 changes <https://github.com/Araq/Nimrod/compare/v0.9.2...v0.9.4>`_
-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
-present in the standard library have been moved to separate repositories
-and should now be installed using Babel.
-
-Apart from that a new **experimental** Asynchronous IO API has been added via
-the ``asyncdispatch`` and ``asyncnet`` modules. The ``net`` and ``rawsockets``
-modules have also been added and they will likely replace the sockets
-module in the next release. The Asynchronous IO API has been designed to
-take advantage of Linux's epoll and Windows' IOCP APIs, support for BSD's
-kqueue has not been implemented yet but will be in the future.
-The Asynchronous IO API provides both
-a callback interface and an interface which allows you to write code as you
-would if you were writing synchronous code. The latter is done through
-the use of an ``await`` macro which behaves similar to C#'s await. The
-following is a very simple chat server demonstrating Nimrod's new async
-capabilities.
-
-.. code-block::nim
-  import asyncnet, asyncdispatch
-
-  var clients: seq[PAsyncSocket] = @[]
-
-  proc processClient(client: PAsyncSocket) {.async.} =
-    while true:
-      let line = await client.recvLine()
-      for c in clients:
-        await c.send(line & "\c\L")
-
-  proc serve() {.async.} =
-    var server = newAsyncSocket()
-    server.bindAddr(TPort(12345))
-    server.listen()
-
-    while true:
-      let client = await server.accept()
-      clients.add client
-
-      processClient(client)
-
-  serve()
-  runForever()
-
-
-Note that this feature has been implemented with Nimrod's macro system and so
-``await`` and ``async`` are no keywords.
-
-Syntactic sugar for anonymous procedures has also been introduced. It too has
-been implemented as a macro. The following shows some simple usage of the new
-syntax:
-
-.. code-block::nim
-  import future
-
-  var s = @[1, 2, 3, 4, 5]
-  echo(s.map((x: int) => x * 5))
-
-A list of changes follows, for a comprehensive list of changes take a look
-`here <https://github.com/Araq/Nimrod/compare/v0.9.2...v0.9.4>`_.
-
-Library Additions
------------------
-
-- Added ``macros.genSym`` builtin for AST generation.
-- Added ``macros.newLit`` procs for easier AST generation.
-- Added module ``logging``.
-- Added module ``asyncdispatch``.
-- Added module ``asyncnet``.
-- Added module ``net``.
-- Added module ``rawsockets``.
-- Added module ``selectors``.
-- Added module ``asynchttpserver``.
-- Added support for the new asynchronous IO in the ``httpclient`` module.
-- Added a Python-inspired ``future`` module that features upcoming additions
-  to the ``system`` module.
-
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- The scoping rules for the ``if`` statement changed for better interaction
-  with the new syntactic construct ``(;)``.
-- ``OSError`` family of procedures has been deprecated. Procedures with the same
-  name but which take different parameters have been introduced. These procs now
-  require an error code to be passed to them. This error code can be retrieved
-  using the new ``OSLastError`` proc.
-- ``os.parentDir`` now returns "" if there is no parent dir.
-- In CGI scripts stacktraces are shown to the user only
-  if ``cgi.setStackTraceStdout`` is used.
-- The symbol binding rules for clean templates changed: ``bind`` for any
-  symbol that's not a parameter is now the default. ``mixin`` can be used
-  to require instantiation scope for a symbol.
-- ``quoteIfContainsWhite`` now escapes argument in such way that it can be safely
-  passed to shell, instead of just adding double quotes.
-- ``macros.dumpTree`` and ``macros.dumpLisp`` have been made ``immediate``,
-  ``dumpTreeImm`` and ``dumpLispImm`` are now deprecated.
-- The ``nil`` statement has been deprecated, use an empty ``discard`` instead.
-- ``sockets.select`` now prunes sockets that are **not** ready from the list
-  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
-------------------
-
-- The compiler can now warn about "uninitialized" variables. (There are no
-  real uninitialized variables in Nimrod as they are initialized to binary
-  zero). Activate via ``{.warning[Uninit]:on.}``.
-- The compiler now enforces the ``not nil`` constraint.
-- The compiler now supports a ``codegenDecl`` pragma for even more control
-  over the generated code.
-- The compiler now supports a ``computedGoto`` pragma to support very fast
-  dispatching for interpreters and the like.
-- The old evaluation engine has been replaced by a proper register based
-  virtual machine. This fixes numerous bugs for ``nimrod i`` and for macro
-  evaluation.
-- ``--gc:none`` produces warnings when code uses the GC.
-- A ``union`` pragma for better C interoperability is now supported.
-- A ``packed`` pragma to control the memory packing/alignment of fields in
-  an object.
-- Arrays can be annotated to be ``unchecked`` for easier low level
-  manipulations of memory.
-- Support for the new Babel package manager.
-
-
-Language Additions
-------------------
-
-- Arrays can now be declared with a single integer literal ``N`` instead of a
-  range; the range is then ``0..N-1``.
-- Added ``requiresInit`` pragma to enforce explicit initialization.
-- Exported templates are allowed to access hidden fields.
-- The ``using statement`` enables you to more easily author domain-specific
-  languages and libraries providing OOP-like syntactic sugar.
-- Added the possibility to override various dot operators in order to handle
-  calls to missing procs and reads from undeclared fields at compile-time.
-- The overload resolution now supports ``static[T]`` params that must be
-  evaluable at compile-time.
-- Support for user-defined type classes has been added.
-- The *command syntax* is supported in a lot more contexts.
-- Anonymous iterators are now supported and iterators can capture variables
-  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
-------------------
-
-- c2nim can deal with a subset of C++. Use the ``--cpp`` command line option
-  to activate.
-
-
-2014-02-11 Nimrod Featured in Dr. Dobb's Journal
-================================================
-
-Nimrod has been `featured<http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321>`_
-as the cover story in the February 2014 issue of Dr. Dobb's Journal.
-
-
-2014-01-15 Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online
-============================================================================
-
-Andreas Rumpf presented *Nimrod: A New Approach to Metaprogramming* at
-`Strange Loop 2013<https://thestrangeloop.com/sessions/nimrod-a-new-approach-to-meta-programming>`_.
-The `video and slides<http://www.infoq.com/presentations/nimrod>`_
-of the talk are now available.
-
-
-2013-05-20 New website design!
-==============================
-
-A brand new website is now live. All thanks go to Philip Witte and
-Dominik Picheta, Philip Witte for the design of the website (together with
-the logo) as well as the HTML and CSS code for his template, and Dominik Picheta
-for integrating Philip's design with the ``nimweb`` utility. We're sure you will
-agree that Philip's design is beautiful.
-
-
-2013-05-20 Version 0.9.2 released
-=================================
-
-We are pleased to announce that version 0.9.2 of the Nimrod compiler has been
-released. This release has attracted by far the most contributions in comparison
-to any other release.
-
-This release brings with it many new features and bug fixes, a list of which
-can be seen later. One of the major new features is the effect system together
-with exception tracking which allows for checked exceptions and more,
-for further details check out the `manual <manual.html#effect-system>`_.
-Another major new feature is the introduction of statement list expressions,
-more details on these can be found `here <manual.html#statement-list-expression>`_.
-The ability to exclude symbols from modules has also been
-implemented, this feature can be used like so: ``import module except symbol``.
-
-Thanks to all `contributors <https://github.com/Araq/Nimrod/contributors>`_!
-
-Bugfixes
---------
-
-- The old GC never collected cycles correctly. Fixed but it can cause
-  performance regressions. However you can deactivate the cycle collector
-  with ``GC_disableMarkAndSweep`` and run it explicitly at an appropriate time
-  or not at all. There is also a new GC you can activate
-  with ``--gc:markAndSweep`` which does not have this problem but is slower in
-  general and has no realtime guarantees.
-- ``cast`` for floating point types now does the bitcast as specified in the
-  manual. This breaks code that erroneously uses ``cast`` to convert different
-  floating point values.
-- SCGI module's performance has been improved greatly, it will no longer block
-  on many concurrent requests.
-- In total fixed over 70 github issues and merged over 60 pull requests.
-
-
-Library Additions
------------------
-
-- There is a new experimental mark&sweep GC which can be faster (or much
-  slower) than the default GC. Enable with ``--gc:markAndSweep``.
-- Added ``system.onRaise`` to support a condition system.
-- Added ``system.locals`` that provides access to a proc's locals.
-- Added ``macros.quote`` for AST quasi-quoting.
-- Added ``system.unsafeNew`` to support hacky variable length objects.
-- ``system.fields`` and ``system.fieldPairs`` support ``object`` too; they
-  used to only support tuples.
-- Added ``system.CurrentSourcePath`` returning the full file-system path of
-  the current source file.
-- The ``macros`` module now contains lots of useful helpers for building up
-  abstract syntax trees.
-
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- ``shared`` is a keyword now.
-- Deprecated ``sockets.recvLine`` and ``asyncio.recvLine``, added
-  ``readLine`` instead.
-- The way indentation is handled in the parser changed significantly. However,
-  this affects very little (if any) real world code.
-- The expression/statement unification has been implemented. Again this
-  only affects edge cases and no known real world code.
-- Changed the async interface of the ``scgi`` module.
-- WideStrings are now garbage collected like other string types.
-
-
-Compiler Additions
-------------------
-
-- The ``doc2`` command does not generate output for the whole project anymore.
-  Use the new ``--project`` switch to enable this behaviour.
-- The compiler can now warn about shadowed local variables. However, this needs
-  to be turned on explicitly via ``--warning[ShadowIdent]:on``.
-- The compiler now supports almost every pragma in a ``push`` pragma.
-- Generic converters have been implemented.
-- Added a **highly experimental** ``noforward`` pragma enabling a special
-  compilation mode that largely eliminates the need for forward declarations.
-
-Language Additions
-------------------
-
-- ``case expressions`` are now supported.
-- Table constructors now mimic more closely the syntax of the ``case``
-  statement.
-- Nimrod can now infer the return type of a proc from its body.
-- Added a ``mixin`` declaration to affect symbol binding rules in generics.
-- Exception tracking has been added and the ``doc2`` command annotates possible
-  exceptions for you.
-- User defined effects ("tags") tracking has been added and the ``doc2``
-  command annotates possible tags for you.
-- Types can be annotated with the new syntax ``not nil`` to explicitly state
-  that ``nil`` is not allowed. However currently the compiler performs no
-  advanced static checking for this; for now it's merely for documentation
-  purposes.
-- An ``export`` statement has been added to the language: It can be used for
-  symbol forwarding so client modules don't have to import a module's
-  dependencies explicitly.
-- Overloading based on ASTs has been implemented.
-- Generics are now supported for multi methods.
-- Objects can be initialized via an *object constructor expression*.
-- There is a new syntactic construct ``(;)`` unifying expressions and
-  statements.
-- You can now use ``from module import nil`` if you want to import the module
-  but want to enforce fully qualified access to every symbol in ``module``.
-
-
-Notes for the future
---------------------
-
-- The scope rules of ``if`` statements will change in 0.9.4. This affects the
-  ``=~`` pegs/re templates.
-- The ``sockets`` module will become a low-level wrapper of OS-specific socket
-  functions. All the high-level features of the current ``sockets`` module
-  will be moved to a ``network`` module.
-
-
-2012-09-23 Version 0.9.0 released
-=================================
-
-Summary
--------
-
-* Unsigned integers have been added.
-* The integer type promotion rules changed.
-* The template and macro system evolved.
-* Closures have been implemented.
-* Term rewriting macros have been implemented.
-* First steps to unify expressions and statements have been taken.
-* Symbol lookup rules in generics have become stricter to catch more errors.
-
-
-Bugfixes
---------
-
-- Fixed a bug where the compiler would "optimize away" valid constant parts of
-  a string concatenation.
-- Fixed a bug concerning implicit type conversions in ``case`` statements.
-- Fixed a serious code generation bug that caused ``algorithm.sort`` to
-  produce segmentation faults.
-- Fixed ambiguity in recvLine which meant that receiving ``\r\L`` was
-  indistinguishable from disconnections.
-- Many more bugfixes, too many to list them all.
-
-
-Library Additions
------------------
-
-- Added the (already existing) module ``htmlgen`` to the documentation.
-- Added the (already existing) module ``cookies`` to the documentation.
-- Added ``system.shallow`` that can be used to speed up string and sequence
-  assignments.
-- Added ``system.eval`` that can execute an anonymous block of code at
-  compile time as if was a macro.
-- Added ``system.staticExec`` and ``system.gorge`` for compile-time execution
-  of external programs.
-- Added ``system.staticRead`` as a synonym for ``system.slurp``.
-- Added ``macros.emit`` that can emit an arbitrary computed string as nimrod
-  code during compilation.
-- Added ``strutils.parseEnum``.
-- Added ``json.%`` constructor operator.
-- The stdlib can now be avoided to a point where C code generation for 16bit
-  micro controllers is feasible.
-- Added module ``oids``.
-- Added module ``endians``.
-- Added a new OpenGL wrapper that supports OpenGL up to version 4.2.
-- Added a wrapper for ``libsvm``.
-- Added a wrapper for ``mongodb``.
-- Added ``terminal.isatty``.
-- Added an overload for ``system.items`` that can be used to iterate over the
-  values of an enum.
-- Added ``system.TInteger`` and ``system.TNumber`` type classes matching
-  any of the corresponding types available in Nimrod.
-- Added ``system.clamp`` to limit a value within an interval ``[a, b]``.
-- Added ``strutils.continuesWith``.
-- Added ``system.getStackTrace``.
-- Added ``system.||`` for parallel ``for`` loop support.
-- The GC supports (soft) realtime systems via ``GC_setMaxPause``
-  and ``GC_step`` procs.
-- The sockets module now supports ssl through the OpenSSL library, ``recvLine``
-  is now much more efficient thanks to the newly implemented sockets buffering.
-- The httpclient module now supports ssl/tls.
-- Added ``times.format`` as well as many other utility functions
-  for managing time.
-- Added ``system.@`` for converting an ``openarray`` to a ``seq`` (it used to
-  only support fixed length arrays).
-- Added ``system.compiles`` which can be used to check whether a type supports
-  some operation.
-- Added ``strutils.format``, ``subexes.format`` which use the
-  new ``varargs`` type.
-- Added module ``fsmonitor``.
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- On Windows filenames and paths are supposed to be in UTF-8.
-  The ``system``, ``os``, ``osproc`` and ``memfiles`` modules use the wide
-  string versions of the WinAPI. Use the ``-d:useWinAnsi`` switch to revert
-  back to the old behaviour which uses the Ansi string versions.
-- ``static``, ``do``, ``interface`` and ``mixin`` are now keywords.
-- Templates now participate in overloading resolution which can break code that
-  uses templates in subtle ways. Use the new ``immediate`` pragma for templates
-  to get a template of old behaviour.
-- There is now a proper distinction in the type system between ``expr`` and
-  ``PNimrodNode`` which unfortunately breaks the old macro system.
-- ``pegs.@`` has been renamed to ``pegs.!*`` and ``pegs.@@`` has been renamed
-  to ``pegs.!*\`` as ``@`` operators now have different precedence.
-- The type ``proc`` (without any params or return type) is now considered a
-  type class matching all proc types. Use ``proc ()`` to get the old meaning
-  denoting a proc expecing no arguments and returing no value.
-- Deprecated ``system.GC_setStrategy``.
-- ``re.findAll`` and ``pegs.findAll`` don't return *captures* anymore but
-  matching *substrings*.
-- RTTI and thus the ``marshall`` module don't contain the proper field names
-  of tuples anymore. This had to be changed as the old behaviour never
-  produced consistent results.
-- Deprecated the ``ssl`` module.
-- Deprecated ``nimrod pretty`` as it never worked good enough and has some
-  inherent problems.
-- The integer promotion rules changed; the compiler is now less picky in some
-  situations and more picky in other situations: In particular implicit
-  conversions from ``int`` to ``int32`` are now forbidden.
-- ``system.byte`` is now an alias for ``uint8``; it used to be an alias
-  to ``int8``.
-- ``bind`` expressions in templates are not properly supported anymore. Use
-  the declarative ``bind`` statement instead.
-- The default calling convention for a procedural **type** is now ``closure``,
-  for procs it remains ``nimcall`` (which is compatible to ``closure``).
-  Activate the warning ``ImplicitClosure`` to make the compiler list the
-  occurrences of proc types which are affected.
-- The Nimrod type system now distinguishes ``openarray`` from ``varargs``.
-- Templates are now ``hygienic``. Use the ``dirty`` pragma to get the old
-  behaviour.
-- Objects that have no ancestor are now implicitly ``final``. Use
-  the ``inheritable`` pragma to introduce new object roots apart
-  from ``TObject``.
-- Macros now receive parameters like templates do; use the ``callsite`` builtin
-  to gain access to the invocation AST.
-- Symbol lookup rules in generics have become stricter to catch more errors.
-
-
-Compiler Additions
-------------------
-
-- Win64 is now an officially supported target.
-- The Nimrod compiler works on BSD again, but has some issues
-  as ``os.getAppFilename`` and ``os.getAppDir`` cannot work reliably on BSD.
-- The compiler can detect and evaluate calls that can be evaluated at compile
-  time for optimization purposes with the ``--implicitStatic`` command line
-  option or pragma.
-- The compiler now generates marker procs that the GC can use instead of RTTI.
-  This speeds up the GC quite a bit.
-- The compiler now includes a new advanced documentation generator
-  via the ``doc2`` command. This new generator uses all of the semantic passes
-  of the compiler and can thus generate documentation for symbols hiding in
-  macros.
-- The compiler now supports the ``dynlib`` pragma for variables.
-- The compiler now supports ``bycopy`` and ``byref`` pragmas that affect how
-  objects/tuples are passed.
-- The embedded profiler became a stack trace profiler and has been documented.
-
-
-Language Additions
-------------------
-
-- Added explicit ``static`` sections for enforced compile time evaluation.
-- Added an alternative notation for lambdas with ``do``.
-- ``addr`` is now treated like a prefix operator syntactically.
-- Added ``global`` pragma that can be used to introduce new global variables
-  from within procs.
-- ``when`` expressions are now allowed just like ``if`` expressions.
-- The precedence for operators starting with ``@`` is different now
-  allowing for *sigil-like* operators.
-- Stand-alone ``finally`` and ``except`` blocks are now supported.
-- Macros and templates can now be invoked as pragmas.
-- The apostrophe in type suffixes for numerical literals is now optional.
-- Unsigned integer types have been added.
-- The integer promotion rules changed.
-- Nimrod now tracks proper intervals for ``range`` over some built-in operators.
-- In parameter lists a semicolon instead of a comma can be used to improve
-  readability: ``proc divmod(a, b: int; resA, resB: var int)``.
-- A semicolon can now be used to have multiple simple statements on a single
-  line: ``inc i; inc j``.
-- ``bind`` supports overloaded symbols and operators.
-- A ``distinct`` type can now borrow from generic procs.
-- Added the pragmas ``gensym``, ``inject`` and ``dirty`` for hygiene
-  in templates.
-- Comments can be continued with a backslash continuation character so that
-  comment pieces don't have to align on the same column.
-- Enums can be annotated with ``pure`` so that their field names do not pollute
-  the current scope.
-- A proc body can consist of an expression that has a type. This is rewritten
-  to ``result = expression`` then.
-- Term rewriting macros (see `trmacros <http://nimrod-code.org/trmacros.html>`_)
-  have been implemented but are still in alpha.
-
-
-2012-02-09 Version 0.8.14 released
-==================================
-
-Version 0.8.14 has been released!
-
-Bugfixes
---------
-
-- Fixed a serious memory corruption concerning message passing.
-- Fixed a serious bug concerning different instantiations of a generic proc.
-- Fixed a newly introduced bug where a wrong ``EIO`` exception was raised for
-  the end of file for text files that do not end with a newline.
-- Bugfix c2nim, c2pas: the ``--out`` option has never worked properly.
-- Bugfix: forwarding of generic procs never worked.
-- Some more bugfixes for macros and compile-time evaluation.
-- The GC now takes into account interior pointers on the stack which may be
-  introduced by aggressive C optimizers.
-- Nimrod's native allocator/GC now works on PowerPC.
-- Lots of other bugfixes: Too many to list them all.
-
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- Removed deprecated ``os.AppendFileExt``, ``os.executeShellCommand``,
-  ``os.iterOverEnvironment``, ``os.pcDirectory``, ``os.pcLinkToDirectory``,
-  ``os.SplitPath``, ``os.extractDir``, ``os.SplitFilename``,
-  ``os.extractFileTrunk``, ``os.extractFileExt``, ``osproc.executeProcess``,
-  ``osproc.executeCommand``.
-- Removed deprecated ``parseopt.init``, ``parseopt.getRestOfCommandLine``.
-- Moved ``strutils.validEmailAddress`` to ``matchers.validEmailAddress``.
-- The pointer dereference operator ``^`` has been removed, so that ``^``
-  can now be a user-defined operator.
-- ``implies`` is no keyword anymore.
-- The ``is`` operator is now the ``of`` operator.
-- The ``is`` operator is now used to check type equivalence in generic code.
-- The ``pure`` pragma for procs has been renamed to ``noStackFrame``.
-- The threading API has been completely redesigned.
-- The ``unidecode`` module is now thread-safe and its interface has changed.
-- The ``bind`` expression is deprecated, use a ``bind`` declaration instead.
-- ``system.raiseHook`` is now split into ``system.localRaiseHook`` and
-  ``system.globalRaiseHook`` to distinguish between thread local and global
-  raise hooks.
-- Changed exception handling/error reporting for ``os.removeFile`` and
-  ``os.removeDir``.
-- The algorithm for searching and loading configuration files has been changed.
-- Operators now have diffent precedence rules: Assignment-like operators
-  (like ``*=``) are now special-cased.
-- The fields in ``TStream`` have been renamed to have an ``Impl`` suffix
-  because they should not be used directly anymore.
-  Wrapper procs have been created that should be used instead.
-- ``export`` is now a keyword.
-- ``assert`` is now implemented in pure Nimrod as a template; it's easy
-  to implement your own assertion templates with ``system.astToStr``.
-
-
-Language Additions
-------------------
-
-- Added new ``is`` and ``of`` operators.
-- The built-in type ``void`` can be used to denote the absence of any type.
-  This is useful in generic code.
-- Return types may be of the type ``var T`` to return an l-value.
-- The error pragma can now be used to mark symbols whose *usage* should trigger
-  a compile-time error.
-- There is a new ``discardable`` pragma that can be used to mark a routine
-  so that its result can be discarded implicitly.
-- Added a new ``noinit`` pragma to prevent automatic initialization to zero
-  of variables.
-- Constants can now have the type ``seq``.
-- There is a new user-definable syntactic construct ``a{i, ...}``
-  that has no semantics yet for built-in types and so can be overloaded to your
-  heart's content.
-- ``bind`` (used for symbol binding in templates and generics) is now a
-  declarative statement.
-- Nimrod now supports single assignment variables via the ``let`` statement.
-- Iterators named ``items`` and ``pairs`` are implicitly invoked when
-  an explicit iterator is missing.
-- The slice assignment ``a[i..j] = b`` where ``a`` is a sequence or string
-  now supports *splicing*.
-
-
-Compiler Additions
-------------------
-
-- The compiler can generate C++ code for easier interfacing with C++.
-- The compiler can generate Objective C code for easier interfacing with
-  Objective C.
-- The new pragmas ``importcpp`` and ``importobjc`` make interfacing with C++
-  and Objective C somewhat easier.
-- Added a new pragma ``incompleteStruct`` to deal with incomplete C struct
-  definitions.
-- Added a ``--nimcache:PATH`` configuration option for control over the output
-  directory for generated code.
-- The ``--genScript`` option now produces different compilation scripts
-  which do not contain absolute paths.
-- Added ``--cincludes:dir``, ``--clibdir:lib`` configuration options for
-  modifying the C compiler's header/library search path in cross-platform way.
-- Added ``--clib:lib`` configuration option for specifying additional
-  C libraries to be linked.
-- Added ``--mainmodule:file`` configuration options for specifying the main
-  project file. This is intended to be used in project configuration files to
-  allow commands like ``nimrod c`` or ``nimrod check`` to be executed anywhere
-  within the project's directory structure.
-- Added a ``--app:staticlib`` option for creating static libraries.
-- Added a ``--tlsEmulation:on|off`` switch for control over thread local
-  storage emulation.
-- The compiler and standard library now support a *taint mode*. Input strings
-  are declared with the ``TaintedString`` string type. If the taint
-  mode is turned on it is a distinct string type which helps to detect input
-  validation errors.
-- The compiler now supports the compilation cache via ``--symbolFiles:on``.
-  This potentially speeds up compilations by an order of magnitude, but is
-  still highly experimental!
-- Added ``--import:file`` and ``--include:file`` configuration options
-  for specifying modules that will be automatically imported/incluced.
-- ``nimrod i`` can now optionally be given a module to execute.
-- The compiler now performs a simple alias analysis to generate better code.
-- The compiler and ENDB now support *watchpoints*.
-- The compiler now supports proper compile time expressions of type ``bool``
-  for ``on|off`` switches in pragmas. In order to not break existing code,
-  ``on`` and ``off`` are now aliases for ``true`` and ``false`` and declared
-  in the system module.
-- The compiler finally supports **closures**. This is a preliminary
-  implementation, which does not yet support nestings deeper than 1 level
-  and still has many known bugs.
-
-
-Library Additions
------------------
-
-- Added ``system.allocShared``, ``system.allocShared0``,
-  ``system.deallocShared``, ``system.reallocShared``.
-- Slicing as implemented by the system module now supports *splicing*.
-- Added explicit channels for thread communication.
-- Added ``matchers`` module for email address etc. matching.
-- Added ``strutils.unindent``, ``strutils.countLines``,
-  ``strutils.replaceWord``.
-- Added ``system.slurp`` for easy resource embedding.
-- Added ``system.running`` for threads.
-- Added ``system.programResult``.
-- Added ``xmltree.innerText``.
-- Added ``os.isAbsolute``, ``os.dynLibFormat``, ``os.isRootDir``,
-  ``os.parentDirs``.
-- Added ``parseutils.interpolatedFragments``.
-- Added ``macros.treeRepr``, ``macros.lispRepr``, ``macros.dumpTree``,
-  ``macros.dumpLisp``, ``macros.parseExpr``, ``macros.parseStmt``,
-  ``macros.getAst``.
-- Added ``locks`` core module for more flexible locking support.
-- Added ``irc`` module.
-- Added ``ftpclient`` module.
-- Added ``memfiles`` module.
-- 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``
-  and ``exec`` on Posix systems. Define the symbol ``useFork`` to revert to
-  the old implementation.
-- Added ``intsets.assign``.
-- Added ``system.astToStr`` and ``system.rand``, ``system.doAssert``.
-- Added ``system.pairs`` for built-in types like arrays and strings.
-
-
-2011-07-10 Version 0.8.12 released
-==================================
-
-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.
-- Bugfix: Subclasses are taken into account for ``try except`` matching.
-- Bugfix: Generics and macros are more stable. There are still known bugs left
-  though.
-- Bugfix: Generated type information for tuples was sometimes wrong, causing
-  random crashes.
-- Lots of other bugfixes: Too many to list them all.
-
-
-Changes affecting backwards compatibility
------------------------------------------
-
-- Operators starting with ``^`` are now right-associative and have the highest
-  priority.
-- Deprecated ``os.getApplicationFilename``: Use ``os.getAppFilename`` instead.
-- Deprecated ``os.getApplicationDir``: Use ``os.getAppDir`` instead.
-- Deprecated ``system.copy``: Use ``substr`` or string slicing instead.
-- Changed and documented how generalized string literals work: The syntax
-  ``module.re"abc"`` is now supported.
-- Changed the behaviour of ``strutils.%``, ``ropes.%``
-  if both notations ``$#`` and ``$i`` are involved.
-- The ``pegs`` and ``re`` modules distinguish between ``replace``
-  and ``replacef`` operations.
-- The pointer dereference operation ``p^`` is deprecated and might become
-  ``^p`` in later versions or be dropped entirely since it is rarely used.
-  Use the new notation ``p[]`` in the rare cases where you need to
-  dereference a pointer explicitly.
-- ``system.readFile`` does not return ``nil`` anymore but raises an ``EIO``
-  exception instead.
-- Unsound co-/contravariance for procvars has been removed.
-
-
-Language Additions
-------------------
-
-- Source code filters are now documented.
-- Added the ``linearScanEnd``, ``unroll``, ``shallow`` pragmas.
-- Added ``emit`` pragma for direct code generator control.
-- Case statement branches support constant sets for programming convenience.
-- Tuple unpacking is not enforced in ``for`` loops anymore.
-- The compiler now supports array, sequence and string slicing.
-- 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.
-- Indices in array literals may be explicitly given, enhancing readability:
-  ``[enumValueA: "a", enumValueB: "b"]``.
-- Added thread support via the ``threads`` core module and
-  the ``--threads:on`` command line switch.
-- The built-in iterators ``system.fields`` and ``system.fieldPairs`` can be
-  used to iterate over any field of a tuple. With this mechanism operations
-  like ``==`` and ``hash`` are lifted to tuples.
-- The slice ``..`` is now a first-class operator, allowing code like:
-  ``x in 1000..100_000``.
-
-
-Compiler Additions
-------------------
-
-- The compiler supports IDEs via the new group of ``idetools`` command line
-  options.
-- The *interactive mode* (REPL) has been improved and documented for the
-  first time.
-- The compiler now might use hashing for string case statements depending
-  on the number of string literals in the case statement.
-
-
-Library Additions
------------------
-
-- Added ``lists`` module which contains generic linked lists.
-- Added ``sets`` module which contains generic hash sets.
-- Added ``tables`` module which contains generic hash tables.
-- Added ``queues`` module which contains generic sequence based queues.
-- Added ``intsets`` module which contains a specialized int set data type.
-- Added ``scgi`` module.
-- Added ``smtp`` module.
-- Added ``encodings`` module.
-- Added ``re.findAll``, ``pegs.findAll``.
-- Added ``os.findExe``.
-- Added ``parseutils.parseUntil`` and ``parseutils.parseWhile``.
-- 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.
-- Pegs support the ``$`` and ``^`` anchors.
-- Additional operations were added to the ``complex`` module.
-- Added ``strutils.formatFloat``,  ``strutils.formatBiggestFloat``.
-- Added unary ``<`` for nice looking excluding upper bounds in ranges.
-- Added ``math.floor``.
-- Added ``system.reset`` and a version of ``system.open`` that
-  returns a ``TFile`` and raises an exception in case of an error.
-- Added a wrapper for ``redis``.
-- Added a wrapper for ``0mq`` via the ``zmq`` module.
-- Added a wrapper for ``sphinx``.
-- Added ``system.newStringOfCap``.
-- Added ``system.raiseHook`` and ``system.outOfMemHook``.
-- Added ``system.writeFile``.
-- Added ``system.shallowCopy``.
-- ``system.echo`` is guaranteed to be thread-safe.
-- Added ``prelude`` include file for scripting convenience.
-- Added ``typeinfo`` core module for access to runtime type information.
-- Added ``marshal`` module for JSON serialization.
-
-
-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 ``&ltXX``.
-- ``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
-=================================
-
-
-2009-09-12 Version 0.8.0 released
-=================================
-
-
-2009-06-08 Version 0.7.10 released
-==================================
-
-
-2009-05-08 Version 0.7.8 released
-=================================
-
-
-2009-04-22 Version 0.7.6 released
-=================================
-
-
-2008-11-16 Version 0.7.0 released
-=================================
-
-
-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!**
diff --git a/web/news/2009_12_21_version_0_8_6_released.rst b/web/news/2009_12_21_version_0_8_6_released.rst
new file mode 100644
index 000000000..019168a44
--- /dev/null
+++ b/web/news/2009_12_21_version_0_8_6_released.rst
@@ -0,0 +1,54 @@
+2009-12-21 Version 0.8.6 released
+=================================
+
+.. container:: metadata
+
+  Posted by Andreas Rumpf on 21/12/2009
+
+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.
diff --git a/web/news/2010_03_14_version_0_8_8_released.rst b/web/news/2010_03_14_version_0_8_8_released.rst
new file mode 100644
index 000000000..2df476814
--- /dev/null
+++ b/web/news/2010_03_14_version_0_8_8_released.rst
@@ -0,0 +1,82 @@
+Version 0.8.8 released
+======================
+
+.. container:: metadata
+
+  Posted by Andreas Rumpf on 14/03/2010
+
+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 ``&ltXX``.
+- ``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.
diff --git a/web/news/2010_10_20_version_0_8_10_released.rst b/web/news/2010_10_20_version_0_8_10_released.rst
new file mode 100644
index 000000000..f72c0076c
--- /dev/null
+++ b/web/news/2010_10_20_version_0_8_10_released.rst
@@ -0,0 +1,70 @@
+Version 0.8.10 released
+=======================
+
+.. container:: metadata
+
+  Posted by Andreas Rumpf on 20/10/2010
+
+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``.
diff --git a/web/news/2011_07_10_version_0_8_12_released.rst b/web/news/2011_07_10_version_0_8_12_released.rst
new file mode 100644
index 000000000..5f154b2db
--- /dev/null
+++ b/web/news/2011_07_10_version_0_8_12_released.rst
@@ -0,0 +1,122 @@
+Version 0.8.12 released
+==================================
+
+.. container:: metadata
+
+  Posted by Andreas Rumpf on 10/07/2011
+
+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.
+- Bugfix: Subclasses are taken into account for ``try except`` matching.
+- Bugfix: Generics and macros are more stable. There are still known bugs left
+  though.
+- Bugfix: Generated type information for tuples was sometimes wrong, causing
+  random crashes.
+- Lots of other bugfixes: Too many to list them all.
+
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- Operators starting with ``^`` are now right-associative and have the highest
+  priority.
+- Deprecated ``os.getApplicationFilename``: Use ``os.getAppFilename`` instead.
+- Deprecated ``os.getApplicationDir``: Use ``os.getAppDir`` instead.
+- Deprecated ``system.copy``: Use ``substr`` or string slicing instead.
+- Changed and documented how generalized string literals work: The syntax
+  ``module.re"abc"`` is now supported.
+- Changed the behaviour of ``strutils.%``, ``ropes.%``
+  if both notations ``$#`` and ``$i`` are involved.
+- The ``pegs`` and ``re`` modules distinguish between ``replace``
+  and ``replacef`` operations.
+- The pointer dereference operation ``p^`` is deprecated and might become
+  ``^p`` in later versions or be dropped entirely since it is rarely used.
+  Use the new notation ``p[]`` in the rare cases where you need to
+  dereference a pointer explicitly.
+- ``system.readFile`` does not return ``nil`` anymore but raises an ``EIO``
+  exception instead.
+- Unsound co-/contravariance for procvars has been removed.
+
+
+Language Additions
+------------------
+
+- Source code filters are now documented.
+- Added the ``linearScanEnd``, ``unroll``, ``shallow`` pragmas.
+- Added ``emit`` pragma for direct code generator control.
+- Case statement branches support constant sets for programming convenience.
+- Tuple unpacking is not enforced in ``for`` loops anymore.
+- The compiler now supports array, sequence and string slicing.
+- 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.
+- Indices in array literals may be explicitly given, enhancing readability:
+  ``[enumValueA: "a", enumValueB: "b"]``.
+- Added thread support via the ``threads`` core module and
+  the ``--threads:on`` command line switch.
+- The built-in iterators ``system.fields`` and ``system.fieldPairs`` can be
+  used to iterate over any field of a tuple. With this mechanism operations
+  like ``==`` and ``hash`` are lifted to tuples.
+- The slice ``..`` is now a first-class operator, allowing code like:
+  ``x in 1000..100_000``.
+
+
+Compiler Additions
+------------------
+
+- The compiler supports IDEs via the new group of ``idetools`` command line
+  options.
+- The *interactive mode* (REPL) has been improved and documented for the
+  first time.
+- The compiler now might use hashing for string case statements depending
+  on the number of string literals in the case statement.
+
+
+Library Additions
+-----------------
+
+- Added ``lists`` module which contains generic linked lists.
+- Added ``sets`` module which contains generic hash sets.
+- Added ``tables`` module which contains generic hash tables.
+- Added ``queues`` module which contains generic sequence based queues.
+- Added ``intsets`` module which contains a specialized int set data type.
+- Added ``scgi`` module.
+- Added ``smtp`` module.
+- Added ``encodings`` module.
+- Added ``re.findAll``, ``pegs.findAll``.
+- Added ``os.findExe``.
+- Added ``parseutils.parseUntil`` and ``parseutils.parseWhile``.
+- 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.
+- Pegs support the ``$`` and ``^`` anchors.
+- Additional operations were added to the ``complex`` module.
+- Added ``strutils.formatFloat``,  ``strutils.formatBiggestFloat``.
+- Added unary ``<`` for nice looking excluding upper bounds in ranges.
+- Added ``math.floor``.
+- Added ``system.reset`` and a version of ``system.open`` that
+  returns a ``TFile`` and raises an exception in case of an error.
+- Added a wrapper for ``redis``.
+- Added a wrapper for ``0mq`` via the ``zmq`` module.
+- Added a wrapper for ``sphinx``.
+- Added ``system.newStringOfCap``.
+- Added ``system.raiseHook`` and ``system.outOfMemHook``.
+- Added ``system.writeFile``.
+- Added ``system.shallowCopy``.
+- ``system.echo`` is guaranteed to be thread-safe.
+- Added ``prelude`` include file for scripting convenience.
+- Added ``typeinfo`` core module for access to runtime type information.
+- Added ``marshal`` module for JSON serialization.
diff --git a/web/news/2012_02_09_version_0_8_14_released.rst b/web/news/2012_02_09_version_0_8_14_released.rst
new file mode 100644
index 000000000..4050c8b93
--- /dev/null
+++ b/web/news/2012_02_09_version_0_8_14_released.rst
@@ -0,0 +1,168 @@
+2012-02-09 Version 0.8.14 released
+==================================
+
+.. container:: metadata
+
+  Posted by Andreas Rumpf on 09/02/2012
+
+Version 0.8.14 has been released!
+
+Bugfixes
+--------
+
+- Fixed a serious memory corruption concerning message passing.
+- Fixed a serious bug concerning different instantiations of a generic proc.
+- Fixed a newly introduced bug where a wrong ``EIO`` exception was raised for
+  the end of file for text files that do not end with a newline.
+- Bugfix c2nim, c2pas: the ``--out`` option has never worked properly.
+- Bugfix: forwarding of generic procs never worked.
+- Some more bugfixes for macros and compile-time evaluation.
+- The GC now takes into account interior pointers on the stack which may be
+  introduced by aggressive C optimizers.
+- Nimrod's native allocator/GC now works on PowerPC.
+- Lots of other bugfixes: Too many to list them all.
+
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- Removed deprecated ``os.AppendFileExt``, ``os.executeShellCommand``,
+  ``os.iterOverEnvironment``, ``os.pcDirectory``, ``os.pcLinkToDirectory``,
+  ``os.SplitPath``, ``os.extractDir``, ``os.SplitFilename``,
+  ``os.extractFileTrunk``, ``os.extractFileExt``, ``osproc.executeProcess``,
+  ``osproc.executeCommand``.
+- Removed deprecated ``parseopt.init``, ``parseopt.getRestOfCommandLine``.
+- Moved ``strutils.validEmailAddress`` to ``matchers.validEmailAddress``.
+- The pointer dereference operator ``^`` has been removed, so that ``^``
+  can now be a user-defined operator.
+- ``implies`` is no keyword anymore.
+- The ``is`` operator is now the ``of`` operator.
+- The ``is`` operator is now used to check type equivalence in generic code.
+- The ``pure`` pragma for procs has been renamed to ``noStackFrame``.
+- The threading API has been completely redesigned.
+- The ``unidecode`` module is now thread-safe and its interface has changed.
+- The ``bind`` expression is deprecated, use a ``bind`` declaration instead.
+- ``system.raiseHook`` is now split into ``system.localRaiseHook`` and
+  ``system.globalRaiseHook`` to distinguish between thread local and global
+  raise hooks.
+- Changed exception handling/error reporting for ``os.removeFile`` and
+  ``os.removeDir``.
+- The algorithm for searching and loading configuration files has been changed.
+- Operators now have diffent precedence rules: Assignment-like operators
+  (like ``*=``) are now special-cased.
+- The fields in ``TStream`` have been renamed to have an ``Impl`` suffix
+  because they should not be used directly anymore.
+  Wrapper procs have been created that should be used instead.
+- ``export`` is now a keyword.
+- ``assert`` is now implemented in pure Nimrod as a template; it's easy
+  to implement your own assertion templates with ``system.astToStr``.
+
+
+Language Additions
+------------------
+
+- Added new ``is`` and ``of`` operators.
+- The built-in type ``void`` can be used to denote the absence of any type.
+  This is useful in generic code.
+- Return types may be of the type ``var T`` to return an l-value.
+- The error pragma can now be used to mark symbols whose *usage* should trigger
+  a compile-time error.
+- There is a new ``discardable`` pragma that can be used to mark a routine
+  so that its result can be discarded implicitly.
+- Added a new ``noinit`` pragma to prevent automatic initialization to zero
+  of variables.
+- Constants can now have the type ``seq``.
+- There is a new user-definable syntactic construct ``a{i, ...}``
+  that has no semantics yet for built-in types and so can be overloaded to your
+  heart's content.
+- ``bind`` (used for symbol binding in templates and generics) is now a
+  declarative statement.
+- Nimrod now supports single assignment variables via the ``let`` statement.
+- Iterators named ``items`` and ``pairs`` are implicitly invoked when
+  an explicit iterator is missing.
+- The slice assignment ``a[i..j] = b`` where ``a`` is a sequence or string
+  now supports *splicing*.
+
+
+Compiler Additions
+------------------
+
+- The compiler can generate C++ code for easier interfacing with C++.
+- The compiler can generate Objective C code for easier interfacing with
+  Objective C.
+- The new pragmas ``importcpp`` and ``importobjc`` make interfacing with C++
+  and Objective C somewhat easier.
+- Added a new pragma ``incompleteStruct`` to deal with incomplete C struct
+  definitions.
+- Added a ``--nimcache:PATH`` configuration option for control over the output
+  directory for generated code.
+- The ``--genScript`` option now produces different compilation scripts
+  which do not contain absolute paths.
+- Added ``--cincludes:dir``, ``--clibdir:lib`` configuration options for
+  modifying the C compiler's header/library search path in cross-platform way.
+- Added ``--clib:lib`` configuration option for specifying additional
+  C libraries to be linked.
+- Added ``--mainmodule:file`` configuration options for specifying the main
+  project file. This is intended to be used in project configuration files to
+  allow commands like ``nimrod c`` or ``nimrod check`` to be executed anywhere
+  within the project's directory structure.
+- Added a ``--app:staticlib`` option for creating static libraries.
+- Added a ``--tlsEmulation:on|off`` switch for control over thread local
+  storage emulation.
+- The compiler and standard library now support a *taint mode*. Input strings
+  are declared with the ``TaintedString`` string type. If the taint
+  mode is turned on it is a distinct string type which helps to detect input
+  validation errors.
+- The compiler now supports the compilation cache via ``--symbolFiles:on``.
+  This potentially speeds up compilations by an order of magnitude, but is
+  still highly experimental!
+- Added ``--import:file`` and ``--include:file`` configuration options
+  for specifying modules that will be automatically imported/incluced.
+- ``nimrod i`` can now optionally be given a module to execute.
+- The compiler now performs a simple alias analysis to generate better code.
+- The compiler and ENDB now support *watchpoints*.
+- The compiler now supports proper compile time expressions of type ``bool``
+  for ``on|off`` switches in pragmas. In order to not break existing code,
+  ``on`` and ``off`` are now aliases for ``true`` and ``false`` and declared
+  in the system module.
+- The compiler finally supports **closures**. This is a preliminary
+  implementation, which does not yet support nestings deeper than 1 level
+  and still has many known bugs.
+
+
+Library Additions
+-----------------
+
+- Added ``system.allocShared``, ``system.allocShared0``,
+  ``system.deallocShared``, ``system.reallocShared``.
+- Slicing as implemented by the system module now supports *splicing*.
+- Added explicit channels for thread communication.
+- Added ``matchers`` module for email address etc. matching.
+- Added ``strutils.unindent``, ``strutils.countLines``,
+  ``strutils.replaceWord``.
+- Added ``system.slurp`` for easy resource embedding.
+- Added ``system.running`` for threads.
+- Added ``system.programResult``.
+- Added ``xmltree.innerText``.
+- Added ``os.isAbsolute``, ``os.dynLibFormat``, ``os.isRootDir``,
+  ``os.parentDirs``.
+- Added ``parseutils.interpolatedFragments``.
+- Added ``macros.treeRepr``, ``macros.lispRepr``, ``macros.dumpTree``,
+  ``macros.dumpLisp``, ``macros.parseExpr``, ``macros.parseStmt``,
+  ``macros.getAst``.
+- Added ``locks`` core module for more flexible locking support.
+- Added ``irc`` module.
+- Added ``ftpclient`` module.
+- Added ``memfiles`` module.
+- 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``
+  and ``exec`` on Posix systems. Define the symbol ``useFork`` to revert to
+  the old implementation.
+- Added ``intsets.assign``.
+- Added ``system.astToStr`` and ``system.rand``, ``system.doAssert``.
+- Added ``system.pairs`` for built-in types like arrays and strings.
diff --git a/web/news/2012_09_23_version_0_9_0_released.rst b/web/news/2012_09_23_version_0_9_0_released.rst
new file mode 100644
index 000000000..5635ca94c
--- /dev/null
+++ b/web/news/2012_09_23_version_0_9_0_released.rst
@@ -0,0 +1,182 @@
+Version 0.9.0 released
+======================
+
+.. container:: metadata
+
+  Posted by Andreas Rumpf on 23/09/2012
+
+Summary
+-------
+
+* Unsigned integers have been added.
+* The integer type promotion rules changed.
+* The template and macro system evolved.
+* Closures have been implemented.
+* Term rewriting macros have been implemented.
+* First steps to unify expressions and statements have been taken.
+* Symbol lookup rules in generics have become stricter to catch more errors.
+
+
+Bugfixes
+--------
+
+- Fixed a bug where the compiler would "optimize away" valid constant parts of
+  a string concatenation.
+- Fixed a bug concerning implicit type conversions in ``case`` statements.
+- Fixed a serious code generation bug that caused ``algorithm.sort`` to
+  produce segmentation faults.
+- Fixed ambiguity in recvLine which meant that receiving ``\r\L`` was
+  indistinguishable from disconnections.
+- Many more bugfixes, too many to list them all.
+
+
+Library Additions
+-----------------
+
+- Added the (already existing) module ``htmlgen`` to the documentation.
+- Added the (already existing) module ``cookies`` to the documentation.
+- Added ``system.shallow`` that can be used to speed up string and sequence
+  assignments.
+- Added ``system.eval`` that can execute an anonymous block of code at
+  compile time as if was a macro.
+- Added ``system.staticExec`` and ``system.gorge`` for compile-time execution
+  of external programs.
+- Added ``system.staticRead`` as a synonym for ``system.slurp``.
+- Added ``macros.emit`` that can emit an arbitrary computed string as nimrod
+  code during compilation.
+- Added ``strutils.parseEnum``.
+- Added ``json.%`` constructor operator.
+- The stdlib can now be avoided to a point where C code generation for 16bit
+  micro controllers is feasible.
+- Added module ``oids``.
+- Added module ``endians``.
+- Added a new OpenGL wrapper that supports OpenGL up to version 4.2.
+- Added a wrapper for ``libsvm``.
+- Added a wrapper for ``mongodb``.
+- Added ``terminal.isatty``.
+- Added an overload for ``system.items`` that can be used to iterate over the
+  values of an enum.
+- Added ``system.TInteger`` and ``system.TNumber`` type classes matching
+  any of the corresponding types available in Nimrod.
+- Added ``system.clamp`` to limit a value within an interval ``[a, b]``.
+- Added ``strutils.continuesWith``.
+- Added ``system.getStackTrace``.
+- Added ``system.||`` for parallel ``for`` loop support.
+- The GC supports (soft) realtime systems via ``GC_setMaxPause``
+  and ``GC_step`` procs.
+- The sockets module now supports ssl through the OpenSSL library, ``recvLine``
+  is now much more efficient thanks to the newly implemented sockets buffering.
+- The httpclient module now supports ssl/tls.
+- Added ``times.format`` as well as many other utility functions
+  for managing time.
+- Added ``system.@`` for converting an ``openarray`` to a ``seq`` (it used to
+  only support fixed length arrays).
+- Added ``system.compiles`` which can be used to check whether a type supports
+  some operation.
+- Added ``strutils.format``, ``subexes.format`` which use the
+  new ``varargs`` type.
+- Added module ``fsmonitor``.
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- On Windows filenames and paths are supposed to be in UTF-8.
+  The ``system``, ``os``, ``osproc`` and ``memfiles`` modules use the wide
+  string versions of the WinAPI. Use the ``-d:useWinAnsi`` switch to revert
+  back to the old behaviour which uses the Ansi string versions.
+- ``static``, ``do``, ``interface`` and ``mixin`` are now keywords.
+- Templates now participate in overloading resolution which can break code that
+  uses templates in subtle ways. Use the new ``immediate`` pragma for templates
+  to get a template of old behaviour.
+- There is now a proper distinction in the type system between ``expr`` and
+  ``PNimrodNode`` which unfortunately breaks the old macro system.
+- ``pegs.@`` has been renamed to ``pegs.!*`` and ``pegs.@@`` has been renamed
+  to ``pegs.!*\`` as ``@`` operators now have different precedence.
+- The type ``proc`` (without any params or return type) is now considered a
+  type class matching all proc types. Use ``proc ()`` to get the old meaning
+  denoting a proc expecing no arguments and returing no value.
+- Deprecated ``system.GC_setStrategy``.
+- ``re.findAll`` and ``pegs.findAll`` don't return *captures* anymore but
+  matching *substrings*.
+- RTTI and thus the ``marshall`` module don't contain the proper field names
+  of tuples anymore. This had to be changed as the old behaviour never
+  produced consistent results.
+- Deprecated the ``ssl`` module.
+- Deprecated ``nimrod pretty`` as it never worked good enough and has some
+  inherent problems.
+- The integer promotion rules changed; the compiler is now less picky in some
+  situations and more picky in other situations: In particular implicit
+  conversions from ``int`` to ``int32`` are now forbidden.
+- ``system.byte`` is now an alias for ``uint8``; it used to be an alias
+  to ``int8``.
+- ``bind`` expressions in templates are not properly supported anymore. Use
+  the declarative ``bind`` statement instead.
+- The default calling convention for a procedural **type** is now ``closure``,
+  for procs it remains ``nimcall`` (which is compatible to ``closure``).
+  Activate the warning ``ImplicitClosure`` to make the compiler list the
+  occurrences of proc types which are affected.
+- The Nimrod type system now distinguishes ``openarray`` from ``varargs``.
+- Templates are now ``hygienic``. Use the ``dirty`` pragma to get the old
+  behaviour.
+- Objects that have no ancestor are now implicitly ``final``. Use
+  the ``inheritable`` pragma to introduce new object roots apart
+  from ``TObject``.
+- Macros now receive parameters like templates do; use the ``callsite`` builtin
+  to gain access to the invocation AST.
+- Symbol lookup rules in generics have become stricter to catch more errors.
+
+
+Compiler Additions
+------------------
+
+- Win64 is now an officially supported target.
+- The Nimrod compiler works on BSD again, but has some issues
+  as ``os.getAppFilename`` and ``os.getAppDir`` cannot work reliably on BSD.
+- The compiler can detect and evaluate calls that can be evaluated at compile
+  time for optimization purposes with the ``--implicitStatic`` command line
+  option or pragma.
+- The compiler now generates marker procs that the GC can use instead of RTTI.
+  This speeds up the GC quite a bit.
+- The compiler now includes a new advanced documentation generator
+  via the ``doc2`` command. This new generator uses all of the semantic passes
+  of the compiler and can thus generate documentation for symbols hiding in
+  macros.
+- The compiler now supports the ``dynlib`` pragma for variables.
+- The compiler now supports ``bycopy`` and ``byref`` pragmas that affect how
+  objects/tuples are passed.
+- The embedded profiler became a stack trace profiler and has been documented.
+
+
+Language Additions
+------------------
+
+- Added explicit ``static`` sections for enforced compile time evaluation.
+- Added an alternative notation for lambdas with ``do``.
+- ``addr`` is now treated like a prefix operator syntactically.
+- Added ``global`` pragma that can be used to introduce new global variables
+  from within procs.
+- ``when`` expressions are now allowed just like ``if`` expressions.
+- The precedence for operators starting with ``@`` is different now
+  allowing for *sigil-like* operators.
+- Stand-alone ``finally`` and ``except`` blocks are now supported.
+- Macros and templates can now be invoked as pragmas.
+- The apostrophe in type suffixes for numerical literals is now optional.
+- Unsigned integer types have been added.
+- The integer promotion rules changed.
+- Nimrod now tracks proper intervals for ``range`` over some built-in operators.
+- In parameter lists a semicolon instead of a comma can be used to improve
+  readability: ``proc divmod(a, b: int; resA, resB: var int)``.
+- A semicolon can now be used to have multiple simple statements on a single
+  line: ``inc i; inc j``.
+- ``bind`` supports overloaded symbols and operators.
+- A ``distinct`` type can now borrow from generic procs.
+- Added the pragmas ``gensym``, ``inject`` and ``dirty`` for hygiene
+  in templates.
+- Comments can be continued with a backslash continuation character so that
+  comment pieces don't have to align on the same column.
+- Enums can be annotated with ``pure`` so that their field names do not pollute
+  the current scope.
+- A proc body can consist of an expression that has a type. This is rewritten
+  to ``result = expression`` then.
+- Term rewriting macros (see `trmacros <http://nimrod-code.org/trmacros.html>`_)
+  have been implemented but are still in alpha.
diff --git a/web/news/2013_05_20_new_website_design.rst b/web/news/2013_05_20_new_website_design.rst
new file mode 100644
index 000000000..b36cc99dd
--- /dev/null
+++ b/web/news/2013_05_20_new_website_design.rst
@@ -0,0 +1,13 @@
+New website design!
+===================
+
+.. container:: metadata
+
+  Posted by Andreas Rumpf on 09/12/2014
+
+A brand new website including an improved forum is now live.
+All thanks go to Philip Witte and
+Dominik Picheta, Philip Witte for the design of the website (together with
+the logo) as well as the HTML and CSS code for his template, and Dominik Picheta
+for integrating Philip's design with Nim's forum. We're sure you will
+agree that Philip's design is beautiful.
diff --git a/web/news/2013_05_20_version_0_9_2_released.rst b/web/news/2013_05_20_version_0_9_2_released.rst
new file mode 100644
index 000000000..89352c06c
--- /dev/null
+++ b/web/news/2013_05_20_version_0_9_2_released.rst
@@ -0,0 +1,118 @@
+Version 0.9.2 released
+======================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 20/05/2013
+
+We are pleased to announce that version 0.9.2 of the Nimrod compiler has been
+released. This release has attracted by far the most contributions in comparison
+to any other release.
+
+This release brings with it many new features and bug fixes, a list of which
+can be seen later. One of the major new features is the effect system together
+with exception tracking which allows for checked exceptions and more,
+for further details check out the `manual <manual.html#effect-system>`_.
+Another major new feature is the introduction of statement list expressions,
+more details on these can be found `here <manual.html#statement-list-expression>`_.
+The ability to exclude symbols from modules has also been
+implemented, this feature can be used like so: ``import module except symbol``.
+
+Thanks to all `contributors <https://github.com/Araq/Nimrod/contributors>`_!
+
+Bugfixes
+--------
+
+- The old GC never collected cycles correctly. Fixed but it can cause
+  performance regressions. However you can deactivate the cycle collector
+  with ``GC_disableMarkAndSweep`` and run it explicitly at an appropriate time
+  or not at all. There is also a new GC you can activate
+  with ``--gc:markAndSweep`` which does not have this problem but is slower in
+  general and has no realtime guarantees.
+- ``cast`` for floating point types now does the bitcast as specified in the
+  manual. This breaks code that erroneously uses ``cast`` to convert different
+  floating point values.
+- SCGI module's performance has been improved greatly, it will no longer block
+  on many concurrent requests.
+- In total fixed over 70 github issues and merged over 60 pull requests.
+
+
+Library Additions
+-----------------
+
+- There is a new experimental mark&sweep GC which can be faster (or much
+  slower) than the default GC. Enable with ``--gc:markAndSweep``.
+- Added ``system.onRaise`` to support a condition system.
+- Added ``system.locals`` that provides access to a proc's locals.
+- Added ``macros.quote`` for AST quasi-quoting.
+- Added ``system.unsafeNew`` to support hacky variable length objects.
+- ``system.fields`` and ``system.fieldPairs`` support ``object`` too; they
+  used to only support tuples.
+- Added ``system.CurrentSourcePath`` returning the full file-system path of
+  the current source file.
+- The ``macros`` module now contains lots of useful helpers for building up
+  abstract syntax trees.
+
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- ``shared`` is a keyword now.
+- Deprecated ``sockets.recvLine`` and ``asyncio.recvLine``, added
+  ``readLine`` instead.
+- The way indentation is handled in the parser changed significantly. However,
+  this affects very little (if any) real world code.
+- The expression/statement unification has been implemented. Again this
+  only affects edge cases and no known real world code.
+- Changed the async interface of the ``scgi`` module.
+- WideStrings are now garbage collected like other string types.
+
+
+Compiler Additions
+------------------
+
+- The ``doc2`` command does not generate output for the whole project anymore.
+  Use the new ``--project`` switch to enable this behaviour.
+- The compiler can now warn about shadowed local variables. However, this needs
+  to be turned on explicitly via ``--warning[ShadowIdent]:on``.
+- The compiler now supports almost every pragma in a ``push`` pragma.
+- Generic converters have been implemented.
+- Added a **highly experimental** ``noforward`` pragma enabling a special
+  compilation mode that largely eliminates the need for forward declarations.
+
+Language Additions
+------------------
+
+- ``case expressions`` are now supported.
+- Table constructors now mimic more closely the syntax of the ``case``
+  statement.
+- Nimrod can now infer the return type of a proc from its body.
+- Added a ``mixin`` declaration to affect symbol binding rules in generics.
+- Exception tracking has been added and the ``doc2`` command annotates possible
+  exceptions for you.
+- User defined effects ("tags") tracking has been added and the ``doc2``
+  command annotates possible tags for you.
+- Types can be annotated with the new syntax ``not nil`` to explicitly state
+  that ``nil`` is not allowed. However currently the compiler performs no
+  advanced static checking for this; for now it's merely for documentation
+  purposes.
+- An ``export`` statement has been added to the language: It can be used for
+  symbol forwarding so client modules don't have to import a module's
+  dependencies explicitly.
+- Overloading based on ASTs has been implemented.
+- Generics are now supported for multi methods.
+- Objects can be initialized via an *object constructor expression*.
+- There is a new syntactic construct ``(;)`` unifying expressions and
+  statements.
+- You can now use ``from module import nil`` if you want to import the module
+  but want to enforce fully qualified access to every symbol in ``module``.
+
+
+Notes for the future
+--------------------
+
+- The scope rules of ``if`` statements will change in 0.9.4. This affects the
+  ``=~`` pegs/re templates.
+- The ``sockets`` module will become a low-level wrapper of OS-specific socket
+  functions. All the high-level features of the current ``sockets`` module
+  will be moved to a ``network`` module.
diff --git a/web/news/2014_01_15_andreas_rumpfs_talk_on_nimrod.rst b/web/news/2014_01_15_andreas_rumpfs_talk_on_nimrod.rst
new file mode 100644
index 000000000..00cc5e101
--- /dev/null
+++ b/web/news/2014_01_15_andreas_rumpfs_talk_on_nimrod.rst
@@ -0,0 +1,11 @@
+2014-01-15 Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online
+============================================================================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 12/01/2014
+
+Andreas Rumpf presented *Nimrod: A New Approach to Metaprogramming* at
+`Strange Loop 2013<https://thestrangeloop.com/sessions/nimrod-a-new-approach-to-meta-programming>`_.
+The `video and slides<http://www.infoq.com/presentations/nimrod>`_
+of the talk are now available.
diff --git a/web/news/2014_02_11_nimrod_featured_in_dr_dobbs_journal.rst b/web/news/2014_02_11_nimrod_featured_in_dr_dobbs_journal.rst
new file mode 100644
index 000000000..b48ccf31f
--- /dev/null
+++ b/web/news/2014_02_11_nimrod_featured_in_dr_dobbs_journal.rst
@@ -0,0 +1,9 @@
+Nimrod Featured in Dr. Dobb's Journal
+=====================================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 11/02/2014
+
+Nimrod has been `featured<http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321>`_
+as the cover story in the February 2014 issue of Dr. Dobb's Journal.
diff --git a/web/news/2014_04_21_version_0_9_4_released.rst b/web/news/2014_04_21_version_0_9_4_released.rst
new file mode 100644
index 000000000..2714c5c78
--- /dev/null
+++ b/web/news/2014_04_21_version_0_9_4_released.rst
@@ -0,0 +1,179 @@
+2014-04-21 Version 0.9.4 released
+=================================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 21/04/2014
+
+The Nimrod development community is proud to announce the release of version
+0.9.4 of the Nimrod compiler and tools. **Note: This release has to be
+considered beta quality! Lots of new features have been implemented but
+unfortunately some do not fulfill our quality standards yet.**
+
+Prebuilt binaries and instructions for building from source are available
+on the `download page <download.html>`_.
+
+This release includes about
+`1400 changes <https://github.com/Araq/Nimrod/compare/v0.9.2...v0.9.4>`_
+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
+present in the standard library have been moved to separate repositories
+and should now be installed using Babel.
+
+Apart from that a new **experimental** Asynchronous IO API has been added via
+the ``asyncdispatch`` and ``asyncnet`` modules. The ``net`` and ``rawsockets``
+modules have also been added and they will likely replace the sockets
+module in the next release. The Asynchronous IO API has been designed to
+take advantage of Linux's epoll and Windows' IOCP APIs, support for BSD's
+kqueue has not been implemented yet but will be in the future.
+The Asynchronous IO API provides both
+a callback interface and an interface which allows you to write code as you
+would if you were writing synchronous code. The latter is done through
+the use of an ``await`` macro which behaves similar to C#'s await. The
+following is a very simple chat server demonstrating Nimrod's new async
+capabilities.
+
+.. code-block::nim
+  import asyncnet, asyncdispatch
+
+  var clients: seq[PAsyncSocket] = @[]
+
+  proc processClient(client: PAsyncSocket) {.async.} =
+    while true:
+      let line = await client.recvLine()
+      for c in clients:
+        await c.send(line & "\c\L")
+
+  proc serve() {.async.} =
+    var server = newAsyncSocket()
+    server.bindAddr(TPort(12345))
+    server.listen()
+
+    while true:
+      let client = await server.accept()
+      clients.add client
+
+      processClient(client)
+
+  serve()
+  runForever()
+
+
+Note that this feature has been implemented with Nimrod's macro system and so
+``await`` and ``async`` are no keywords.
+
+Syntactic sugar for anonymous procedures has also been introduced. It too has
+been implemented as a macro. The following shows some simple usage of the new
+syntax:
+
+.. code-block::nim
+  import future
+
+  var s = @[1, 2, 3, 4, 5]
+  echo(s.map((x: int) => x * 5))
+
+A list of changes follows, for a comprehensive list of changes take a look
+`here <https://github.com/Araq/Nimrod/compare/v0.9.2...v0.9.4>`_.
+
+Library Additions
+-----------------
+
+- Added ``macros.genSym`` builtin for AST generation.
+- Added ``macros.newLit`` procs for easier AST generation.
+- Added module ``logging``.
+- Added module ``asyncdispatch``.
+- Added module ``asyncnet``.
+- Added module ``net``.
+- Added module ``rawsockets``.
+- Added module ``selectors``.
+- Added module ``asynchttpserver``.
+- Added support for the new asynchronous IO in the ``httpclient`` module.
+- Added a Python-inspired ``future`` module that features upcoming additions
+  to the ``system`` module.
+
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- The scoping rules for the ``if`` statement changed for better interaction
+  with the new syntactic construct ``(;)``.
+- ``OSError`` family of procedures has been deprecated. Procedures with the same
+  name but which take different parameters have been introduced. These procs now
+  require an error code to be passed to them. This error code can be retrieved
+  using the new ``OSLastError`` proc.
+- ``os.parentDir`` now returns "" if there is no parent dir.
+- In CGI scripts stacktraces are shown to the user only
+  if ``cgi.setStackTraceStdout`` is used.
+- The symbol binding rules for clean templates changed: ``bind`` for any
+  symbol that's not a parameter is now the default. ``mixin`` can be used
+  to require instantiation scope for a symbol.
+- ``quoteIfContainsWhite`` now escapes argument in such way that it can be safely
+  passed to shell, instead of just adding double quotes.
+- ``macros.dumpTree`` and ``macros.dumpLisp`` have been made ``immediate``,
+  ``dumpTreeImm`` and ``dumpLispImm`` are now deprecated.
+- The ``nil`` statement has been deprecated, use an empty ``discard`` instead.
+- ``sockets.select`` now prunes sockets that are **not** ready from the list
+  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
+------------------
+
+- The compiler can now warn about "uninitialized" variables. (There are no
+  real uninitialized variables in Nimrod as they are initialized to binary
+  zero). Activate via ``{.warning[Uninit]:on.}``.
+- The compiler now enforces the ``not nil`` constraint.
+- The compiler now supports a ``codegenDecl`` pragma for even more control
+  over the generated code.
+- The compiler now supports a ``computedGoto`` pragma to support very fast
+  dispatching for interpreters and the like.
+- The old evaluation engine has been replaced by a proper register based
+  virtual machine. This fixes numerous bugs for ``nimrod i`` and for macro
+  evaluation.
+- ``--gc:none`` produces warnings when code uses the GC.
+- A ``union`` pragma for better C interoperability is now supported.
+- A ``packed`` pragma to control the memory packing/alignment of fields in
+  an object.
+- Arrays can be annotated to be ``unchecked`` for easier low level
+  manipulations of memory.
+- Support for the new Babel package manager.
+
+
+Language Additions
+------------------
+
+- Arrays can now be declared with a single integer literal ``N`` instead of a
+  range; the range is then ``0..N-1``.
+- Added ``requiresInit`` pragma to enforce explicit initialization.
+- Exported templates are allowed to access hidden fields.
+- The ``using statement`` enables you to more easily author domain-specific
+  languages and libraries providing OOP-like syntactic sugar.
+- Added the possibility to override various dot operators in order to handle
+  calls to missing procs and reads from undeclared fields at compile-time.
+- The overload resolution now supports ``static[T]`` params that must be
+  evaluable at compile-time.
+- Support for user-defined type classes has been added.
+- The *command syntax* is supported in a lot more contexts.
+- Anonymous iterators are now supported and iterators can capture variables
+  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
+------------------
+
+- c2nim can deal with a subset of C++. Use the ``--cpp`` command line option
+  to activate.
diff --git a/web/news/2014_10_19_version_0_9_6_released.rst b/web/news/2014_10_19_version_0_9_6_released.rst
new file mode 100644
index 000000000..7a148aaa5
--- /dev/null
+++ b/web/news/2014_10_19_version_0_9_6_released.rst
@@ -0,0 +1,65 @@
+Version 0.9.6 released
+=================================
+
+.. container:: metadata
+
+  Posted by Andreas Rumpf on 19/10/2014
+
+**Note: 0.9.6 is the last release of Nimrod. The language is being renamed to
+Nim. Nim slightly breaks compatibility.**
+
+This is a maintenance release. The upcoming 0.10.0 release has
+the new features and exciting developments.
+
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- ``spawn`` now uses an elaborate self-adapting thread pool and as such
+  has been moved into its own module. So to use it, you now have to import
+  ``threadpool``.
+- The symbol binding rules in generics changed: ``bar`` in ``foo.bar`` is
+  now considered for implicit early binding.
+- ``c2nim`` moved into its own repository and is now a Babel package.
+- ``pas2nim`` moved into its own repository and is now a Babel package.
+- ``system.$`` for floating point types now produces a human friendly string
+  representation.
+- ``uri.TUrl`` as well as the ``parseurl`` module are now deprecated in favour
+  of the new ``TUri`` type in the ``uri`` module.
+- The ``destructor`` pragma has been deprecated. Use the ``override`` pragma
+  instead. The destructor's name has to be ``destroy`` now.
+- ``lambda`` is not a keyword anymore.
+- **system.defined has been split into system.defined and system.declared**.
+  You have to use ``--symbol`` to declare new conditional symbols that can be
+  set via ``--define``.
+- ``--threadanalysis:on`` is now the default. To make your program compile
+  you can disable it but this is only a temporary solution as this option
+  will disappear soon!
+
+
+Compiler improvements
+---------------------
+
+- Multi method dispatching performance has been improved by a factor of 10x for
+  pathological cases.
+
+
+Language Additions
+------------------
+
+- This version introduces the ``deprecated`` pragma statement that is used
+  to handle the upcoming massive amount of symbol renames.
+- ``spawn`` can now wrap proc that has a return value. It then returns a data
+  flow variable of the wrapped return type.
+
+
+Library Additions
+-----------------
+
+- Added module ``cpuinfo``.
+- Added module ``threadpool``.
+- ``sequtils.distnct`` has been renamed to ``sequtils.deduplicate``.
+- Added ``algorithm.reversed``
+- Added ``uri.combine`` and ``uri.parseUri``.
+- Some sockets procedures now support a ``SafeDisconn`` flag which causes
+  them to handle disconnection errors and not raise them.
diff --git a/web/news/2014_12_29_version_0_10_2_released.rst b/web/news/2014_12_29_version_0_10_2_released.rst
new file mode 100644
index 000000000..ad8afa3bf
--- /dev/null
+++ b/web/news/2014_12_29_version_0_10_2_released.rst
@@ -0,0 +1,198 @@
+Version 0.10.2 released
+=======================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 29/12/2014
+
+This release marks the completion of a very important change to the project:
+the official renaming from Nimrod to Nim. Version 0.10.2 contains many language
+changes, some of which may break your existing code. For your convenience, we
+added a new tool called `nimfix <nimfix.html>`_ that will help you convert your
+existing projects so that it works with the latest version of the compiler.
+
+Progress towards version 1.0
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Although Nim is still pre-1.0, we were able to keep the number of breaking
+changes to a minimum so far. Starting with version 1.0, we will not introduce
+any breaking changes between major release versions.
+One of Nim's goals is to ensure that the compiler is as efficient as possible.
+Take a look at the
+`latest benchmarks <https://github.com/logicchains/LPATHBench/blob/master/writeup.md>`_,
+which show that Nim is consistently near
+the top and already nearly as fast as C and C++. Recent developments, such as
+the new ``asyncdispatch`` module will allow you to write efficient web server
+applications using non-blocking code. Nim now also has a built-in thread pool
+for lightweight threading through the use of ``spawn``.
+
+The unpopular "T" and "P" prefixes on types have been deprecated. Nim also
+became more expressive by weakening the distinction between statements and
+expressions. We also added a new and searchable forum, a new website, and our
+documentation generator ``docgen`` has seen major improvements. Many thanks to
+Nick Greenfield for the much more beautiful documentation!
+
+
+
+What's left to be done
+~~~~~~~~~~~~~~~~~~~~~~
+
+The 1.0 release is actually very close. Apart from bug fixes, there are
+two major features missing or incomplete:
+
+* ``static[T]`` needs to be defined precisely and the bugs in the
+  implementation need to be fixed.
+* Overloading of the assignment operator is required for some generic
+  containers and needs to be implemented.
+
+This means that fancy matrix libraries will finally start to work, which used
+to be a major point of pain in the language.
+
+
+Nimble and other Nim tools
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Outside of the language and the compiler itself many Nim tools have seen
+considerable improvements.
+
+Babel the Nim package manager has been renamed to Nimble. Nimble's purpose
+is the installation of packages containing libraries and/or applications
+written in Nim.
+Even though Nimble is still very young it already is very
+functional. It can install packages by name, it does so by accessing a
+packages repository which is hosted on a GitHub repo. Packages can also be
+installed via a Git repo URL or Mercurial repo URL. The package repository
+is searchable through Nimble. Anyone is free to add their own packages to
+the package repository by forking the
+`nim-lang/packages <https://github.com/nim-lang/packages>`_ repo and creating
+a pull request. Nimble is fully cross-platform and should be fully functional
+on all major operating systems.
+It is of course completely written in Nim.
+
+Changelog
+~~~~~~~~~
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- **The language has been renamed from Nimrod to Nim.** The name of the
+  compiler changed from ``nimrod`` to ``nim`` too.
+- ``system.fileHandle`` has been renamed to ``system.getFileHandle`` to
+  prevent name conflicts with the new type ``FileHandle``.
+- Comments are now not part of the AST anymore, as such you cannot use them
+  in place of ``discard``.
+- Large parts of the stdlib got rid of the T/P type prefixes. Instead most
+  types now simply start with an uppercased letter. The
+  so called "partial case sensitivity" rule is now active allowing for code
+  like ``var foo: Foo`` in more contexts.
+- String case (or any non-ordinal case) statements
+  without 'else' are deprecated.
+- Recursive tuple types are not allowed anymore. Use ``object`` instead.
+- The PEGS module returns ``nil`` instead of ``""`` when an optional capture
+  fails to match.
+- The re module returns ``nil`` instead of ``""`` when an optional capture
+  fails to match.
+- The "symmetric set difference" operator (``-+-``) never worked and has been
+  removed.
+- ``defer`` is a keyword now.
+- ``func`` is a keyword now.
+- The ``using`` language feature now needs to be activated via the new
+  ``{.experimental.}`` pragma that enables experimental language features.
+- Destructors are now officially *experimental*.
+- Standalone ``except`` and ``finally`` statements are deprecated now.
+  The standalone ``finally`` can be replaced with ``defer``,
+  standalone ``except`` requires an explicit ``try``.
+- Operators ending in ``>`` are considered as "arrow like" and have their
+  own priority level and are right associative. This means that
+  the ``=>`` and ``->`` operators from the `future <future.html>`_ module
+  work better.
+- Field names in tuples are now ignored for type comparisons. This allows
+  for greater interoperability between different modules.
+- Statement lists are not converted to an implicit ``do`` block anymore. This
+  means the confusing ``nnkDo`` nodes when working with macros are gone for
+  good.
+
+
+Language Additions
+------------------
+
+- The new concurrency model has been implemented including ``locks`` sections,
+  lock levels and object field ``guards``.
+- The ``parallel`` statement has been implemented.
+- ``deepCopy`` has been added to the language.
+- The builtin ``procCall`` can be used to get ``super``-like functionality
+  for multi methods.
+- There is a new pragma ``{.experimental.}`` that enables experimental
+  language features per module, or you can enable these features on a global
+  level with the ``--experimental`` command line option.
+
+
+Compiler Additions
+------------------
+
+- The compiler now supports *mixed* Objective C / C++ / C code generation:
+  The modules that use ``importCpp`` or ``importObjc`` are compiled to C++
+  or Objective C code, any other module is compiled to C code. This
+  improves interoperability.
+- There is a new ``parallel`` statement for safe fork&join parallel computing.
+- ``guard`` and ``lock`` pragmas have been implemented to support safer
+  concurrent programming.
+- The following procs are now available at compile-time::
+
+    math.sqrt, math.ln, math.log10, math.log2, math.exp, math.round,
+    math.arccos, math.arcsin, math.arctan, math.arctan2, math.cos,
+    math.cosh, math.hypot, math.sinh, math.sin, math.tan, math.tanh,
+    math.pow, math.trunc, math.floor, math.ceil, math.fmod,
+    os.getEnv, os.existsEnv, os.dirExists, os.fileExists,
+    system.writeFile
+
+- Two backticks now produce a single backtick within an ``emit`` or ``asm``
+  statement.
+- There is a new tool, `nimfix <nimfix.html>`_ to help you in updating your
+  code from Nimrod to Nim.
+- The compiler's output has been prettified.
+
+Library Additions
+-----------------
+
+- Added module ``fenv`` to control the handling of floating-point rounding and
+  exceptions (overflow, division by zero, etc.).
+- ``system.setupForeignThreadGc`` can be used for better interaction with
+  foreign libraries that create threads and run a Nim callback from these
+  foreign threads.
+- List comprehensions have been implemented as a macro in the ``future``
+  module.
+- The new Async module (``asyncnet``) now supports SSL.
+- The ``smtp`` module now has an async implementation.
+- Added module ``asyncfile`` which implements asynchronous file reading
+  and writing.
+- ``osproc.kill`` has been added.
+- ``asyncnet`` and ``asynchttpserver`` now support ``SO_REUSEADDR``.
+
+Bugfixes
+--------
+
+- ``nil`` and ``NULL`` are now preserved between Nim and databases in the
+  ``db_*`` modules.
+- Fixed issue with OS module in non-unicode mode on Windows.
+- Fixed issue with ``x.low``
+  (`#1366 <https://github.com/Araq/Nim/issues/1366>`_).
+- Fixed tuple unpacking issue inside closure iterators
+  (`#1067 <https://github.com/Araq/Nim/issues/1067>`_).
+- Fixed ENDB compilation issues.
+- Many ``asynchttpserver`` fixes.
+- Macros can now keep global state across macro calls
+  (`#903 <https://github.com/Araq/Nim/issues/903>`_).
+- ``osproc`` fixes on Windows.
+- ``osproc.terminate`` fixed.
+- Improvements to exception handling in async procedures.
+  (`#1487 <https://github.com/Araq/Nim/issues/1487>`_).
+- ``try`` now works at compile-time.
+- Fixes ``T = ref T`` to be an illegal recursive type.
+- Self imports are now disallowed.
+- Improved effect inference.
+- Fixes for the ``math`` module on Windows.
+- User defined pragmas will now work for generics that have
+  been instantiated in different modules.
+- Fixed queue exhaustion bug.
+- Many, many more.
diff --git a/web/news/2015_04_30_version_0_11_0_released.rst b/web/news/2015_04_30_version_0_11_0_released.rst
new file mode 100644
index 000000000..a8a58f2ae
--- /dev/null
+++ b/web/news/2015_04_30_version_0_11_0_released.rst
@@ -0,0 +1,396 @@
+Version 0.11.0 released
+=======================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 30/04/2015
+
+With this release we are one step closer to reaching version 1.0 and by
+extension the persistence of the Nim specification. As mentioned in the
+previous release notes, starting with version 1.0, we will not be introducing
+any more breaking changes to Nim.
+
+The *language* itself is very close to 1.0, the primary area that requires
+more work is the standard library.
+
+Take a look at the `download <download.html>`_ page for binaries (Windows-only)
+and 0.11.0 snapshots of the source code. The Windows installer now also
+includes `Aporia <https://github.com/nim-lang/aporia>`_,
+`Nimble <https://github.com/nim-lang/nimble>`_ and other useful tools to get
+you started with Nim.
+
+What's left to be done
+~~~~~~~~~~~~~~~~~~~~~~
+
+The 1.0 release is expected by the end of this year. Rumors say it will be in
+summer 2015. What's left:
+
+* Bug fixes, bug fixes, bug fixes, in particular:
+  - The remaining bugs of the lambda lifting pass that is responsible to enable
+    closures and closure iterators need to be fixed.
+  - ``concept`` needs to be refined, a nice name for the feature is not enough.
+  - Destructors need to be refined.
+  - ``static[T]`` needs to be fixed.
+  - Finish the implementation of the 'parallel' statement.
+* ``immediate`` templates and macros will be deprecated as these will soon be
+  completely unnecessary, instead the ``typed`` or ``untyped`` metatypes can
+  be used.
+* More of the standard library should be moved to Nimble packages and what's
+  left should use the features we have for concurrency and parallelism.
+
+
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- Parameter names are finally properly ``gensym``'ed. This can break
+  templates though that used to rely on the fact that they are not.
+  (Bug #1915.) This means this doesn't compile anymore:
+
+.. code-block:: nim
+
+  template doIt(body: stmt) {.immediate.} =
+    # this used to inject the 'str' parameter:
+    proc res(str: string) =
+      body
+
+  doIt:
+    echo str # Error: undeclared identifier: 'str'
+..
+
+  This used to inject the ``str`` parameter into the scope of the body.
+  Declare the ``doIt`` template as ``immediate, dirty`` to get the old
+  behaviour.
+- Tuple field names are not ignored anymore, this caused too many problems
+  in practice so now the behaviour is as it was for version 0.9.6: If field
+  names exist for the tuple type, they are checked.
+- ``logging.level`` and ``logging.handlers`` are no longer exported.
+  ``addHandler``, ``getHandlers``, ``setLogFilter`` and ``getLogFilter``
+  should be used instead.
+- ``nim idetools`` has been replaced by a separate
+  tool `nimsuggest <0.11.0/nimsuggest.html>`_.
+- *arrow like* operators are not right associative anymore and are required
+  to end with either ``->``, ``~>`` or
+  ``=>``, not just ``>``. Examples of operators still considered arrow like:
+  ``->``, ``==>``, ``+=>``. On the other hand, the following operators are now
+  considered regular operators again: ``|>``, ``-+>``, etc.
+- Typeless parameters are now only allowed in templates and macros. The old
+  way turned out to be too error-prone.
+- The 'addr' and 'type' operators are now parsed as unary function
+  application. This means ``type(x).name`` is now parsed as ``(type(x)).name``
+  and not as ``type((x).name)``. Note that this also affects the AST
+  structure; for immediate macro parameters ``nkCall('addr', 'x')`` is
+  produced instead of ``nkAddr('x')``.
+- ``concept`` is now a keyword and is used instead of ``generic``.
+- The ``inc``, ``dec``, ``+=``, ``-=`` builtins now produce OverflowError
+  exceptions. This means code like the following:
+
+.. code-block:: nim
+  var x = low(T)
+  while x <= high(T):
+    echo x
+    inc x
+
+Needs to be replaced by something like this:
+
+.. code-block:: nim
+  var x = low(T).int
+  while x <= high(T).int:
+    echo x.T
+    inc x
+
+- **Negative indexing for slicing does not work anymore!** Instead
+  of ``a[0.. -1]`` you can
+  use ``a[0.. ^1]``. This also works with accessing a single
+  element ``a[^1]``. Note that we cannot detect this reliably as it is
+  determined at **runtime** whether negative indexing is used!
+  ``a[0.. -1]`` now produces the empty string/sequence.
+- The compiler now warns about code like ``foo +=1`` which uses inconsistent
+  spacing around binary operators. Later versions of the language will parse
+  these as unary operators instead so that ``echo $foo`` finally can do what
+  people expect it to do.
+- ``system.untyped`` and ``system.typed`` have been introduced as aliases
+  for ``expr`` and ``stmt``. The new names capture the semantics much better
+  and most likely  ``expr`` and ``stmt`` will be deprecated in favor of the
+  new names.
+- The ``split`` method in module ``re`` has changed. It now handles the case
+  of matches having a length of 0, and empty strings being yielded from the
+  iterator. A notable change might be that a pattern being matched at the
+  beginning and end of a string, will result in an empty string being produced
+  at the start and the end of the iterator.
+- The compiler and nimsuggest now count columns starting with 1, not 0 for
+  consistency with the rest of the world.
+
+
+Language Additions
+------------------
+
+- For empty ``case object`` branches ``discard`` can finally be used instead
+  of ``nil``.
+- Automatic dereferencing is now done for the first argument of a routine
+  call if overloading resolution produces no match otherwise. This feature
+  has to be enabled with
+  the `experimental <0.11.0/manual.html#pragmas-experimental-pragma>`_ pragma.
+- Objects that do not use inheritance nor ``case`` can be put into ``const``
+  sections. This means that finally this is possible and produces rather
+  nice code:
+
+.. code-block:: nim
+  import tables
+
+  const
+    foo = {"ah": "finally", "this": "is", "possible.": "nice!"}.toTable()
+
+
+- Ordinary parameters can follow after a varargs parameter. This means the
+  following is finally accepted by the compiler:
+
+.. code-block:: nim
+  template takesBlock(a, b: int, x: varargs[expr]; blck: stmt) =
+    blck
+    echo a, b
+
+  takesBlock 1, 2, "some", 0.90, "random stuff":
+    echo "yay"
+
+- Overloading by 'var T' is now finally possible:
+
+.. code-block:: nim
+  proc varOrConst(x: var int) = echo "var"
+  proc varOrConst(x: int) = echo "const"
+
+  var x: int
+  varOrConst(x) # "var"
+  varOrConst(45) # "const"
+
+- Array and seq indexing can now use the builtin ``^`` operator to access
+  things from backwards: ``a[^1]`` is like Python's ``a[-1]``.
+- A first version of the specification and implementation of the overloading
+  of the assignment operator has arrived!
+- ``system.len`` for strings and sequences now returns 0 for nil.
+
+- A single underscore can now be used to discard values when unpacking tuples:
+
+.. code-block:: nim
+  let (path, _, _) = os.splitFile("path/file.ext")
+
+
+- ``marshal.$$`` and ``marshal.to`` can be executed at compile-time.
+- Interoperability with C++ improved tremendously; C++'s templates and
+  operators can be wrapped directly. See
+  `this <0.11.0/nimc.html#additional-features-importcpp-pragma>`_
+  for more information.
+- ``macros.getType`` can be used to query an AST's type at compile-time. This
+  enables more powerful macros, for instance *currying* can now be done with
+  a macro.
+
+
+Library additions
+-----------------
+
+- ``reversed`` proc added to the ``unicode`` module.
+- Added multipart param to httpclient's ``post`` and ``postContent`` together
+  with a ``newMultipartData`` proc.
+- Added `%*` operator for JSON.
+- The compiler is now available as Nimble package for c2nim.
+- Added ``..^`` and ``..<`` templates to system so that the rather annoying
+  space between ``.. <`` and ``.. ^`` is not necessary anymore.
+- Added ``system.xlen`` for strings and sequences to get back the old ``len``
+  operation that doesn't check for ``nil`` for efficiency.
+- Added sexp.nim to parse and generate sexp.
+
+
+Bugfixes
+--------
+
+- Fixed internal compiler error when using ``char()`` in an echo call
+  (`#1788 <https://github.com/Araq/Nim/issues/1788>`_).
+- Fixed Windows cross-compilation on Linux.
+- Overload resolution now works for types distinguished only by a
+  ``static[int]`` param
+  (`#1056 <https://github.com/Araq/Nim/issues/1056>`_).
+- Other fixes relating to generic types and static params.
+- Fixed some compiler crashes with unnamed tuples
+  (`#1774 <https://github.com/Araq/Nim/issues/1774>`_).
+- Fixed ``channels.tryRecv`` blocking
+  (`#1816 <https://github.com/Araq/Nim/issues/1816>`_).
+- Fixed generic instantiation errors with ``typedesc``
+  (`#419 <https://github.com/Araq/Nim/issues/419>`_).
+- Fixed generic regression where the compiler no longer detected constant
+  expressions properly (`#544 <https://github.com/Araq/Nim/issues/544>`_).
+- Fixed internal error with generic proc using ``static[T]`` in a specific
+  way (`#1049 <https://github.com/Araq/Nim/issues/1049>`_).
+- More fixes relating to generics (`#1820 <https://github.com/Araq/Nim/issues/1820>`_,
+  `#1050 <https://github.com/Araq/Nim/issues/1050>`_,
+  `#1859 <https://github.com/Araq/Nim/issues/1859>`_,
+  `#1858 <https://github.com/Araq/Nim/issues/1858>`_).
+- Fixed httpclient to properly encode queries.
+- Many fixes to the ``uri`` module.
+- Async sockets are now closed on error.
+- Fixes to httpclient's handling of multipart data.
+- Fixed GC segfaults with asynchronous sockets
+  (`#1796 <https://github.com/Araq/Nim/issues/1796>`_).
+- Added more versions to openssl's DLL version list
+  (`076f993 <https://github.com/Araq/Nim/commit/076f993>`_).
+- Fixed shallow copy in iterators being broken
+  (`#1803 <https://github.com/Araq/Nim/issues/1803>`_).
+- ``nil`` can now be inserted into tables with the ``db_sqlite`` module
+  (`#1866 <https://github.com/Araq/Nim/issues/1866>`_).
+- Fixed "Incorrect assembler generated"
+  (`#1907 <https://github.com/Araq/Nim/issues/1907>`_)
+- Fixed "Expression templates that define macros are unusable in some contexts"
+  (`#1903 <https://github.com/Araq/Nim/issues/1903>`_)
+- Fixed "a second level generic subclass causes the compiler to crash"
+  (`#1919 <https://github.com/Araq/Nim/issues/1919>`_)
+- Fixed "nim 0.10.2 generates invalid AsyncHttpClient C code for MSVC "
+  (`#1901 <https://github.com/Araq/Nim/issues/1901>`_)
+- Fixed "1 shl n produces wrong C code"
+  (`#1928 <https://github.com/Araq/Nim/issues/1928>`_)
+- Fixed "Internal error on tuple yield"
+  (`#1838 <https://github.com/Araq/Nim/issues/1838>`_)
+- Fixed "ICE with template"
+  (`#1915 <https://github.com/Araq/Nim/issues/1915>`_)
+- Fixed "include the tool directory in the installer as it is required by koch"
+  (`#1947 <https://github.com/Araq/Nim/issues/1947>`_)
+- Fixed "Can't compile if file location contains spaces on Windows"
+  (`#1955 <https://github.com/Araq/Nim/issues/1955>`_)
+- Fixed "List comprehension macro only supports infix checks as guards"
+  (`#1920 <https://github.com/Araq/Nim/issues/1920>`_)
+- Fixed "wrong field names of compatible tuples in generic types"
+  (`#1910 <https://github.com/Araq/Nim/issues/1910>`_)
+- Fixed "Macros within templates no longer work as expected"
+  (`#1944 <https://github.com/Araq/Nim/issues/1944>`_)
+- Fixed "Compiling for Standalone AVR broken in 0.10.2"
+  (`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
+- Fixed "Compiling for Standalone AVR broken in 0.10.2"
+  (`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
+- Fixed "Code generation for mitems with tuple elements"
+  (`#1833 <https://github.com/Araq/Nim/issues/1833>`_)
+- Fixed "httpclient.HttpMethod should not be an enum"
+  (`#1962 <https://github.com/Araq/Nim/issues/1962>`_)
+- Fixed "terminal / eraseScreen() throws an OverflowError"
+  (`#1906 <https://github.com/Araq/Nim/issues/1906>`_)
+- Fixed "setControlCHook(nil) disables registered quit procs"
+  (`#1546 <https://github.com/Araq/Nim/issues/1546>`_)
+- Fixed "Unexpected idetools behaviour"
+  (`#325 <https://github.com/Araq/Nim/issues/325>`_)
+- Fixed "Unused lifted lambda does not compile"
+  (`#1642 <https://github.com/Araq/Nim/issues/1642>`_)
+- Fixed "'low' and 'high' don't work with cstring asguments"
+  (`#2030 <https://github.com/Araq/Nim/issues/2030>`_)
+- Fixed "Converting to int does not round in JS backend"
+  (`#1959 <https://github.com/Araq/Nim/issues/1959>`_)
+- Fixed "Internal error genRecordField 2 when adding region to pointer."
+  (`#2039 <https://github.com/Araq/Nim/issues/2039>`_)
+- Fixed "Macros fail to compile when compiled with --os:standalone"
+  (`#2041 <https://github.com/Araq/Nim/issues/2041>`_)
+- Fixed "Reading from {.compileTime.} variables can cause code generation to fail"
+  (`#2022 <https://github.com/Araq/Nim/issues/2022>`_)
+- Fixed "Passing overloaded symbols to templates fails inside generic procedures"
+  (`#1988 <https://github.com/Araq/Nim/issues/1988>`_)
+- Fixed "Compiling iterator with object assignment in release mode causes "var not init""
+  (`#2023 <https://github.com/Araq/Nim/issues/2023>`_)
+- Fixed "calling a large number of macros doing some computation fails"
+  (`#1989 <https://github.com/Araq/Nim/issues/1989>`_)
+- Fixed "Can't get Koch to install nim under Windows"
+  (`#2061 <https://github.com/Araq/Nim/issues/2061>`_)
+- Fixed "Template with two stmt parameters segfaults compiler"
+  (`#2057 <https://github.com/Araq/Nim/issues/2057>`_)
+- Fixed "`noSideEffect` not affected by `echo`"
+  (`#2011 <https://github.com/Araq/Nim/issues/2011>`_)
+- Fixed "Compiling with the cpp backend ignores --passc"
+  (`#1601 <https://github.com/Araq/Nim/issues/1601>`_)
+- Fixed "Put untyped procedure parameters behind the experimental pragma"
+  (`#1956 <https://github.com/Araq/Nim/issues/1956>`_)
+- Fixed "generic regression"
+  (`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
+- Fixed "generic regression"
+  (`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
+- Fixed "Regression in template lookup with generics"
+  (`#2004 <https://github.com/Araq/Nim/issues/2004>`_)
+- Fixed "GC's growObj is wrong for edge cases"
+  (`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
+- Fixed "Compiler internal error when creating an array out of a typeclass"
+  (`#1131 <https://github.com/Araq/Nim/issues/1131>`_)
+- Fixed "GC's growObj is wrong for edge cases"
+  (`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
+- Fixed "Invalid Objective-C code generated when calling class method"
+  (`#2068 <https://github.com/Araq/Nim/issues/2068>`_)
+- Fixed "walkDirRec Error"
+  (`#2116 <https://github.com/Araq/Nim/issues/2116>`_)
+- Fixed "Typo in code causes compiler SIGSEGV in evalAtCompileTime"
+  (`#2113 <https://github.com/Araq/Nim/issues/2113>`_)
+- Fixed "Regression on exportc"
+  (`#2118 <https://github.com/Araq/Nim/issues/2118>`_)
+- Fixed "Error message"
+  (`#2102 <https://github.com/Araq/Nim/issues/2102>`_)
+- Fixed "hint[path] = off not working in nim.cfg"
+  (`#2103 <https://github.com/Araq/Nim/issues/2103>`_)
+- Fixed "compiler crashes when getting a tuple from a sequence of generic tuples"
+  (`#2121 <https://github.com/Araq/Nim/issues/2121>`_)
+- Fixed "nim check hangs with when"
+  (`#2123 <https://github.com/Araq/Nim/issues/2123>`_)
+- Fixed "static[T] param in nested type resolve/caching issue"
+  (`#2125 <https://github.com/Araq/Nim/issues/2125>`_)
+- Fixed "repr should display ``\0``"
+  (`#2124 <https://github.com/Araq/Nim/issues/2124>`_)
+- Fixed "'nim check' never ends in case of recursive dependency "
+  (`#2051 <https://github.com/Araq/Nim/issues/2051>`_)
+- Fixed "From macros: Error: unhandled exception: sons is not accessible"
+  (`#2167 <https://github.com/Araq/Nim/issues/2167>`_)
+- Fixed "`fieldPairs` doesn't work inside templates"
+  (`#1902 <https://github.com/Araq/Nim/issues/1902>`_)
+- Fixed "fields iterator misbehavior on break statement"
+  (`#2134 <https://github.com/Araq/Nim/issues/2134>`_)
+- Fixed "Fix for compiler not building anymore since #c3244ef1ff"
+  (`#2193 <https://github.com/Araq/Nim/issues/2193>`_)
+- Fixed "JSON parser fails in cpp output mode"
+  (`#2199 <https://github.com/Araq/Nim/issues/2199>`_)
+- Fixed "macros.getType mishandles void return"
+  (`#2211 <https://github.com/Araq/Nim/issues/2211>`_)
+- Fixed "Regression involving templates instantiated within generics"
+  (`#2215 <https://github.com/Araq/Nim/issues/2215>`_)
+- Fixed ""Error: invalid type" for 'not nil' on generic type."
+  (`#2216 <https://github.com/Araq/Nim/issues/2216>`_)
+- Fixed "--threads:on breaks async"
+  (`#2074 <https://github.com/Araq/Nim/issues/2074>`_)
+- Fixed "Type mismatch not always caught, can generate bad code for C backend."
+  (`#2169 <https://github.com/Araq/Nim/issues/2169>`_)
+- Fixed "Failed C compilation when storing proc to own type in object"
+  (`#2233 <https://github.com/Araq/Nim/issues/2233>`_)
+- Fixed "Unknown line/column number in constant declaration type conversion error"
+  (`#2252 <https://github.com/Araq/Nim/issues/2252>`_)
+- Fixed "Adding {.compile.} fails if nimcache already exists."
+  (`#2247 <https://github.com/Araq/Nim/issues/2247>`_)
+- Fixed "Two different type names generated for a single type (C backend)"
+  (`#2250 <https://github.com/Araq/Nim/issues/2250>`_)
+- Fixed "Ambigous call when it should not be"
+  (`#2229 <https://github.com/Araq/Nim/issues/2229>`_)
+- Fixed "Make sure we can load root urls"
+  (`#2227 <https://github.com/Araq/Nim/issues/2227>`_)
+- Fixed "Failure to slice a string with an int subrange type"
+  (`#794 <https://github.com/Araq/Nim/issues/794>`_)
+- Fixed "documentation error"
+  (`#2205 <https://github.com/Araq/Nim/issues/2205>`_)
+- Fixed "Code growth when using `const`"
+  (`#1940 <https://github.com/Araq/Nim/issues/1940>`_)
+- Fixed "Instances of generic types confuse overload resolution"
+  (`#2220 <https://github.com/Araq/Nim/issues/2220>`_)
+- Fixed "Compiler error when initializing sdl2's EventType"
+  (`#2316 <https://github.com/Araq/Nim/issues/2316>`_)
+- Fixed "Parallel disjoint checking can't handle `<`, `items`, or arrays"
+  (`#2287 <https://github.com/Araq/Nim/issues/2287>`_)
+- Fixed "Strings aren't copied in parallel loop"
+  (`#2286 <https://github.com/Araq/Nim/issues/2286>`_)
+- Fixed "JavaScript compiler crash with tables"
+  (`#2298 <https://github.com/Araq/Nim/issues/2298>`_)
+- Fixed "Range checker too restrictive"
+  (`#1845 <https://github.com/Araq/Nim/issues/1845>`_)
+- Fixed "Failure to slice a string with an int subrange type"
+  (`#794 <https://github.com/Araq/Nim/issues/794>`_)
+- Fixed "Remind user when compiling in debug mode"
+  (`#1868 <https://github.com/Araq/Nim/issues/1868>`_)
+- Fixed "Compiler user guide has jumbled options/commands."
+  (`#1819 <https://github.com/Araq/Nim/issues/1819>`_)
+- Fixed "using `method`: 1 in a objects constructor fails when compiling"
+  (`#1791 <https://github.com/Araq/Nim/issues/1791>`_)
diff --git a/web/news/2015_05_04_version_0_11_2_released.rst b/web/news/2015_05_04_version_0_11_2_released.rst
new file mode 100644
index 000000000..273182340
--- /dev/null
+++ b/web/news/2015_05_04_version_0_11_2_released.rst
@@ -0,0 +1,12 @@
+Version 0.11.2 released
+==================================
+
+.. container:: metadata
+
+  Posted by Andreas Rumpf on 04/05/2015
+
+This is just a bugfix release that fixes the most pressing regressions we
+introduced with version 0.11.0. The way types are computed was
+changed significantly causing all sort of problems. Sorry for the
+inconvenience; we grew overconfident our large test suite would prevent these
+things.
diff --git a/web/news/2015_10_16_first_nim_conference.rst b/web/news/2015_10_16_first_nim_conference.rst
new file mode 100644
index 000000000..228bffd28
--- /dev/null
+++ b/web/news/2015_10_16_first_nim_conference.rst
@@ -0,0 +1,26 @@
+First Nim conference
+====================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 16/10/2015
+
+.. raw::html
+
+  <img src="../assets/zeo/banner.jpg" alt="First Nim conference in Ukraine!" width="682"/>
+
+This Autumn you have the unique opportunity to take part in the first Nim event
+held in Kyiv and to meet the creator of the Nim programming language -
+Andreas Rumpf. The event is hosted by Zeo Alliance and is taking place between
+14-15 November 2015 in Kyiv, Ukraine.
+
+During the workshop you will learn:
+
+- The basics of the language including its safe and unsafe subsets.
+- How to use Nim to develop web applications.
+- How Nim's meta programming capabilities make Nim the ultimate glue language,
+  excellent at interoperability with C++, JavaScript, Java and others.
+- Games in Nim and the ability to rapidly prototype without sacrificing speed.
+
+Registration is free, but the number of places is limited. More details
+can be found `here <https://nimworkshop.splashthat.com/>`_.
diff --git a/web/news/2015_10_27_version_0_12_0_released.rst b/web/news/2015_10_27_version_0_12_0_released.rst
new file mode 100644
index 000000000..63088f9e2
--- /dev/null
+++ b/web/news/2015_10_27_version_0_12_0_released.rst
@@ -0,0 +1,403 @@
+2015-10-27 Version 0.12.0 released
+==================================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 27/10/2015
+
+The Nim community of developers is proud to announce the new version of the
+Nim compiler. This has been a long time coming as the last release has been
+made over 5 months ago!
+
+This release includes some changes which affect backwards compatibility,
+one major change is that now the hash table ``[]`` operators now raise a
+``KeyError`` exception when the key does not exist.
+
+Some of the more exciting new features include: the ability to unpack tuples
+in any assignment context, the introduction of `NimScript <docs/nims.html>`_,
+and improvements to the type inference of lambdas.
+
+There are of course many many many bug fixes included with this release.
+We are getting closer and closer to a 1.0 release and are hoping that only
+a few 0.x releases will be necessary before we are happy to release version 1.0.
+
+As always you can download the latest version of Nim from the
+`download <download.html>`_ page.
+
+For a more detailed list of changes look below. Some of the upcoming breaking
+changes are also documented in this forum
+`thread <http://forum.nim-lang.org/t/1708>`_.
+
+Changes affecting backwards compatibility
+-----------------------------------------
+- The regular expression modules, ``re`` and ``nre`` now depend on version
+  8.36 of PCRE. If you have an older version you may see a message similar
+  to ``could not import: pcre_free_study`` output when you start your
+  program. See `this issue <https://github.com/docopt/docopt.nim/issues/13>`_
+  for more information.
+- ``tables.[]``, ``strtabs.[]``, ``critbits.[]`` **now raise**
+  the ``KeyError`` **exception when the key does not exist**! Use the
+  new ``getOrDefault`` instead to get the old behaviour. Compile all your
+  code with ``-d:nimTableGet`` to get a listing of where your code
+  uses ``[]``!
+- The ``rawsockets`` module has been renamed to ``nativesockets`` to avoid
+  confusion with TCP/IP raw sockets, so ``newNativeSocket`` should be used
+  instead of ``newRawSocket``.
+- The ``miliseconds`` property of ``times.TimeInterval`` is now ``milliseconds``.
+  Code accessing that property is deprecated and code using ``miliseconds``
+  during object initialization or as a named parameter of ``initInterval()``
+  will need to be updated.
+- ``std.logging`` functions no longer do formatting and semantically treat
+  their arguments just like ``echo`` does. Affected functions: ``log``,
+  ``debug``, ``info``, ``warn``, ``error``, ``fatal``. Custom subtypes of
+  ``Logger`` also need to be adjusted accordingly.
+- Floating point numbers can now look like ``2d`` (float64)
+  and ``2f`` (float32) which means imports like ``import scene/2d/sprite``
+  do not work anymore. Instead quotes have to be
+  used: ``import "scene/2d/sprite"``. The former code never was valid Nim.
+- The Windows API wrapper (``windows.nim``) is now not part of the official
+  distribution anymore. Instead use the ``oldwinapi`` Nimble package.
+- There is now a clear distinction between ``--os:standalone``
+  and ``--gc:none``. So if you use ``--os:standalone`` ensure you also use
+  ``--gc:none``. ``--os:standalone`` without ``--gc:none`` is now a version
+  that doesn't depend on any OS but includes the GC. However this version
+  is currently untested!
+- All procedures which construct a ``Socket``/``AsyncSocket`` now need to
+  specify the socket domain, type and protocol. The param name
+  ``typ: SockType`` (in ``newSocket``/``newAsyncSocket`` procs) was also
+  renamed to ``sockType``. The param ``af`` in the ``connect`` procs was
+  removed. This affects ``asyncnet``, ``asyncdispatch``, ``net``, and
+  ``rawsockets``.
+- ``varargs[typed]`` and ``varargs[untyped]`` have been refined and now work
+  as expected. However ``varargs[untyped]`` is not an alias anymore for
+  ``varargs[expr]``. So if your code breaks for ``varargs[untyped]``, use
+  ``varargs[expr]`` instead. The same applies to ``varargs[typed]`` vs
+  ``varargs[stmt]``.
+- ``sequtils.delete`` doesn't take confusing default arguments anymore.
+- ``system.free`` was an error-prone alias to ``system.dealloc`` and has
+  been removed.
+- ``macros.high`` never worked and the manual says ``high`` cannot be
+  overloaded, so we removed it with no deprecation cycle.
+- To use the ``parallel`` statement you now have to
+  use the ``--experimental`` mode.
+- Toplevel procs of calling convention ``closure`` never worked reliably
+  and are now deprecated and will be removed from the language. Instead you
+  have to insert type conversions
+  like ``(proc (a, b: int) {.closure.})(myToplevelProc)`` if necessary.
+- The modules ``libffi``, ``sdl``, ``windows``, ``zipfiles``, ``libzip``,
+  ``zlib``, ``zzip``, ``dialogs``, ``expat``, ``graphics``, ``libcurl``,
+  ``sphinx`` have been moved out of the stdlib and are Nimble packages now.
+- The constant fights between 32 and 64 bit DLLs on Windows have been put to
+  an end: The standard distribution now ships with 32 and 64 bit versions
+  of all the DLLs the standard library needs. This means that the following
+  DLLs are now split into 32 and 64 versions:
+
+  * ``pcre.dll``: Split into ``pcre32.dll`` and ``pcre64.dll``.
+  * ``pdcurses.dll``: Split into ``pdcurses32.dll`` and ``pdcurses64.dll``.
+  * ``sqlite3.dll``: Split into ``sqlite3_32.dll`` and ``sqlite3_64.dll``.
+  * ``ssleay32.dll``: Split into ``ssleay32.dll`` and ``ssleay64.dll``.
+  * ``libeay32.dll``: Split into ``libeay32.dll`` and ``libeay64.dll``.
+
+  Compile with ``-d:nimOldDLLs`` to make the stdlib use the old DLL names.
+- Nim VM now treats objects as ``nkObjConstr`` nodes, and not ``nkPar`` nodes
+  as it was previously. Macros that generate ``nkPar`` nodes when object is
+  expected are likely to break. Macros that expect ``nkPar`` nodes to which
+  objects are passed are likely to break as well.
+- Base methods now need to be annotated with the ``base`` pragma. This makes
+  multi methods less error-prone to use with the effect system.
+- Nim's parser directive ``#!`` is now ``#?`` in order to produce no conflicts
+  with Unix's ``#!``.
+- An implicit return type for an iterator is now deprecated. Use ``auto`` if
+  you want more type inference.
+- The type ``auto`` is now a "multi-bind" metatype, so the following compiles:
+
+  .. code-block:: nim
+    proc f(x, y: auto): auto =
+      result = $x & y
+
+    echo f(0, "abc")
+- The ``ftpclient`` module is now deprecated in favour of the
+  ``asyncftpclient`` module.
+- In sequtils.nim renamed ``repeat`` function to ``cycle`` (concatenating
+  a sequence by itself the given times), and also introduced ``repeat``,
+  which repeats an element the given times.
+- The function ``map`` is moved to sequtils.nim. The inplace ``map`` version
+  is renamed to ``apply``.
+- The template ``mapIt`` now doesn't require the result's type parameter.
+  Also the inplace ``mapIt`` is renamed to ``apply``.
+- The compiler is now stricter with what is allowed as a case object
+  discriminator. The following code used to compile but was not supported
+  completely and so now fails:
+
+.. code-block:: nim
+    type
+        DataType* {.pure.} = enum
+            Char = 1,
+            Int8 = 2,
+            Int16 = 3,
+            Int32 = 4,
+            Int64 = 5,
+            Float32 = 6,
+            Float64 = 7
+
+        DataSeq* = object
+            case kind* : DataType
+            of DataType.Char: charSeq* : seq[char]
+            of DataType.Int8: int8Seq* : seq[int8]
+            of DataType.Int16: int16Seq* : seq[int16]
+            of DataType.Int32: int32Seq* : seq[int32]
+            of DataType.Int64: int64Seq* : seq[int64]
+            of DataType.Float32: float32Seq* : seq[float32]
+            of DataType.Float64: float64Seq* : seq[float64]
+
+            length* : int
+
+
+
+Library Additions
+-----------------
+
+- The nre module has been added, providing a better interface to PCRE than re.
+- The ``expandSymlink`` proc has been added to the ``os`` module.
+- The ``tailDir`` proc has been added to the ``os`` module.
+- Define ``nimPinToCpu`` to make the ``threadpool`` use explicit thread
+  affinities. This can speed up or slow down the thread pool; it's up to you
+  to benchmark it.
+- ``strutils.formatFloat`` and ``formatBiggestFloat`` do not depend on the C
+  locale anymore and now take an optional ``decimalSep = '.'`` parameter.
+- Added ``unicode.lastRune``, ``unicode.graphemeLen``.
+
+
+Compiler Additions
+------------------
+
+- The compiler now supports a new configuration system based on
+  `NimScript <docs/nims.html>`_.
+- The compiler finally considers symbol binding rules in templates and
+  generics for overloaded ``[]``, ``[]=``, ``{}``, ``{}=`` operators
+  (issue `#2599 <https://github.com/nim-lang/Nim/issues/2599>`_).
+- The compiler now supports a `bitsize pragma <docs/manual.html#pragmas-bitsize-pragma>`_
+  for constructing bitfields.
+- Added a new ``--reportConceptFailures`` switch for better debugging of
+  concept related type mismatches. This can also be used to debug
+  ``system.compiles`` failures.
+
+
+Language Additions
+------------------
+
+- ``system.unsafeAddr`` can be used to access the address of a ``let``
+  variable or parameter for C interoperability. Since technically this
+  makes parameters and ``let`` variables mutable, it is considered even more
+  unsafe than the ordinary ``addr`` builtin.
+- Added ``macros.getImpl`` that can be used to access the implementation of
+  a routine or a constant. This allows for example for user-defined inlining
+  of function calls.
+- Tuple unpacking finally works in a non-var/let context: ``(x, y) = f()``
+  is allowed. Note that this doesn't declare ``x`` and ``y`` variables, for
+  this ``let (x, y) = f()`` still needs to be used.
+- ``when nimvm`` can now be used for compiletime versions of some code
+  sections. Click `here <docs/manual.html#when-nimvm-statement>`_ for details.
+- Usage of the type ``NimNode`` in a proc now implicitly annotates the proc
+  with ``.compileTime``. This means generics work much better for ``NimNode``.
+
+
+Bugfixes
+--------
+- Fixed "Compiler internal error on iterator it(T: typedesc[Base]) called with it(Child), where Child = object of Base"
+  (`#2662 <https://github.com/Araq/Nim/issues/2662>`_)
+- Fixed "repr() misses base object field in 2nd level derived object"
+  (`#2749 <https://github.com/Araq/Nim/issues/2749>`_)
+- Fixed "nimsuggest doesn't work more than once on the non-main file"
+  (`#2694 <https://github.com/Araq/Nim/issues/2694>`_)
+- Fixed "JS Codegen. Passing arguments by var in certain cases leads to invalid JS."
+  (`#2798 <https://github.com/Araq/Nim/issues/2798>`_)
+- Fixed ""check" proc in unittest.nim prevents the propagation of changes to var parameters."
+  (`#964 <https://github.com/Araq/Nim/issues/964>`_)
+- Fixed "Excessive letters in integer literals are not an error"
+  (`#2523 <https://github.com/Araq/Nim/issues/2523>`_)
+- Fixed "Unicode dashes as "lisp'ish" alternative to hump and snake notation"
+  (`#2811 <https://github.com/Araq/Nim/issues/2811>`_)
+- Fixed "Bad error message when trying to construct an object incorrectly"
+  (`#2584 <https://github.com/Araq/Nim/issues/2584>`_)
+- Fixed "Determination of GC safety of globals is broken "
+  (`#2854 <https://github.com/Araq/Nim/issues/2854>`_)
+- Fixed "v2 gc crashes compiler"
+  (`#2687 <https://github.com/Araq/Nim/issues/2687>`_)
+- Fixed "Compile error using object in const array"
+  (`#2774 <https://github.com/Araq/Nim/issues/2774>`_)
+- Fixed "httpclient async requests with method httpPOST isn't sending Content-Length header"
+  (`#2884 <https://github.com/Araq/Nim/issues/2884>`_)
+- Fixed "Streams module not working with JS backend"
+  (`#2148 <https://github.com/Araq/Nim/issues/2148>`_)
+- Fixed "Sign of certain short constants is wrong"
+  (`#1179 <https://github.com/Araq/Nim/issues/1179>`_)
+- Fixed "Symlinks to directories reported as symlinks to files"
+  (`#1985 <https://github.com/Araq/Nim/issues/1985>`_)
+- Fixed "64-bit literals broken on x86"
+  (`#2909 <https://github.com/Araq/Nim/issues/2909>`_)
+- Fixed "import broken for certain names"
+  (`#2904 <https://github.com/Araq/Nim/issues/2904>`_)
+- Fixed "Invalid UTF-8 strings in JavaScript"
+  (`#2917 <https://github.com/Araq/Nim/issues/2917>`_)
+- Fixed "[JS][Codegen] Initialising object doesn't create unmentioned fields."
+
+  (`#2617 <https://github.com/Araq/Nim/issues/2617>`_)
+- Fixed "Table returned from proc computed at compile time is missing keys:"
+  (`#2297 <https://github.com/Araq/Nim/issues/2297>`_)
+- Fixed "Clarify copyright status for some files"
+  (`#2949 <https://github.com/Araq/Nim/issues/2949>`_)
+- Fixed "math.nim: trigonometry: radians to degrees conversion"
+  (`#2881 <https://github.com/Araq/Nim/issues/2881>`_)
+- Fixed "xoring unsigned integers yields RangeError in certain conditions"
+  (`#2979 <https://github.com/Araq/Nim/issues/2979>`_)
+- Fixed "Directly checking equality between procs"
+  (`#2985 <https://github.com/Araq/Nim/issues/2985>`_)
+- Fixed "Compiler crashed, but there have to be meaningful error message"
+  (`#2974 <https://github.com/Araq/Nim/issues/2974>`_)
+- Fixed "repr is broken"
+  (`#2992 <https://github.com/Araq/Nim/issues/2992>`_)
+- Fixed "Ipv6 devel - add IPv6 support for asyncsockets, make AF_INET6 a default"
+  (`#2976 <https://github.com/Araq/Nim/issues/2976>`_)
+- Fixed "Compilation broken on windows"
+  (`#2996 <https://github.com/Araq/Nim/issues/2996>`_)
+- Fixed "'u64 literal conversion compiler error"
+  (`#2731 <https://github.com/Araq/Nim/issues/2731>`_)
+- Fixed "Importing 'impure' libraries while using threads causes segfaults"
+  (`#2672 <https://github.com/Araq/Nim/issues/2672>`_)
+- Fixed "Uncatched exception in async procedure on raise statement"
+  (`#3014 <https://github.com/Araq/Nim/issues/3014>`_)
+- Fixed "nim doc2 fails in Mac OS X due to system.nim (possibly related to #1898)"
+  (`#3005 <https://github.com/Araq/Nim/issues/3005>`_)
+- Fixed "IndexError when rebuilding Nim on iteration 2"
+  (`#3018 <https://github.com/Araq/Nim/issues/3018>`_)
+- Fixed "Assigning large const set to variable looses some information"
+  (`#2880 <https://github.com/Araq/Nim/issues/2880>`_)
+- Fixed "Inconsistent generics behavior"
+  (`#3022 <https://github.com/Araq/Nim/issues/3022>`_)
+- Fixed "Compiler breaks on float64 division"
+  (`#3028 <https://github.com/Araq/Nim/issues/3028>`_)
+- Fixed "Confusing error message comparing string to nil "
+  (`#2935 <https://github.com/Araq/Nim/issues/2935>`_)
+- Fixed "convert 64bit number to float on 32bit"
+  (`#1463 <https://github.com/Araq/Nim/issues/1463>`_)
+- Fixed "Type redefinition and construction will break nim check"
+  (`#3032 <https://github.com/Araq/Nim/issues/3032>`_)
+- Fixed "XmlParser fails on very large XML files without new lines"
+  (`#2429 <https://github.com/Araq/Nim/issues/2429>`_)
+- Fixed "Error parsing arguments with whitespaces"
+  (`#2874 <https://github.com/Araq/Nim/issues/2874>`_)
+- Fixed "Crash when missing one arg and used a named arg"
+  (`#2993 <https://github.com/Araq/Nim/issues/2993>`_)
+- Fixed "Wrong number of arguments in assert will break nim check"
+  (`#3044 <https://github.com/Araq/Nim/issues/3044>`_)
+- Fixed "Wrong const definition will break nim check"
+  (`#3041 <https://github.com/Araq/Nim/issues/3041>`_)
+- Fixed "Wrong set declaration will break nim check"
+  (`#3040 <https://github.com/Araq/Nim/issues/3040>`_)
+- Fixed "Compiler segfault (type section)"
+  (`#2540 <https://github.com/Araq/Nim/issues/2540>`_)
+- Fixed "Segmentation fault when compiling this code"
+  (`#3038 <https://github.com/Araq/Nim/issues/3038>`_)
+- Fixed "Kill nim i"
+  (`#2633 <https://github.com/Araq/Nim/issues/2633>`_)
+- Fixed "Nim check will break on wrong array declaration"
+  (`#3048 <https://github.com/Araq/Nim/issues/3048>`_)
+- Fixed "boolVal seems to be broken"
+  (`#3046 <https://github.com/Araq/Nim/issues/3046>`_)
+- Fixed "Nim check crashes on wrong set/array declaration inside ref object"
+  (`#3062 <https://github.com/Araq/Nim/issues/3062>`_)
+- Fixed "Nim check crashes on incorrect generic arg definition"
+  (`#3051 <https://github.com/Araq/Nim/issues/3051>`_)
+- Fixed "Nim check crashes on iterating nonexistent var"
+  (`#3053 <https://github.com/Araq/Nim/issues/3053>`_)
+- Fixed "Nim check crashes on wrong param set declaration + iteration"
+  (`#3054 <https://github.com/Araq/Nim/issues/3054>`_)
+- Fixed "Wrong sharing of static_t instantations"
+  (`#3112 <https://github.com/Araq/Nim/issues/3112>`_)
+- Fixed "Automatically generated proc conflicts with user-defined proc when .exportc.'ed"
+  (`#3134 <https://github.com/Araq/Nim/issues/3134>`_)
+- Fixed "getTypeInfo call crashes nim"
+  (`#3099 <https://github.com/Araq/Nim/issues/3099>`_)
+- Fixed "Array ptr dereference"
+  (`#2963 <https://github.com/Araq/Nim/issues/2963>`_)
+- Fixed "Internal error when `repr`-ing a type directly"
+  (`#3079 <https://github.com/Araq/Nim/issues/3079>`_)
+- Fixed "unknown type name 'TNimType' after importing typeinfo module"
+  (`#2841 <https://github.com/Araq/Nim/issues/2841>`_)
+- Fixed "Can export a template twice and from inside a block"
+  (`#1738 <https://github.com/Araq/Nim/issues/1738>`_)
+- Fixed "C Codegen: C Types are defined after their usage in certain cases"
+  (`#2823 <https://github.com/Araq/Nim/issues/2823>`_)
+- Fixed "s.high refers to the current seq instead of the old one"
+  (`#1832 <https://github.com/Araq/Nim/issues/1832>`_)
+- Fixed "Error while unmarshaling null values"
+  (`#3149 <https://github.com/Araq/Nim/issues/3149>`_)
+- Fixed "Inference of `static[T]` in sequences"
+  (`#3144 <https://github.com/Araq/Nim/issues/3144>`_)
+- Fixed "Argument named "closure" to proc inside template interfere with closure pragma"
+  (`#3171 <https://github.com/Araq/Nim/issues/3171>`_)
+- Fixed "Internal error with aliasing inside template"
+  (`#3158 <https://github.com/Araq/Nim/issues/3158>`_)
+- Fixed "Cardinality of sets prints unexpected value"
+  (`#3135 <https://github.com/Araq/Nim/issues/3135>`_)
+- Fixed "Nim crashes on const assignment from function returning var ref object"
+  (`#3103 <https://github.com/Araq/Nim/issues/3103>`_)
+- Fixed "`repr` cstring"
+  (`#3080 <https://github.com/Araq/Nim/issues/3080>`_)
+- Fixed "Nim check crashes on wrong enum declaration"
+  (`#3052 <https://github.com/Araq/Nim/issues/3052>`_)
+- Fixed "Compiler assertion when evaluating template with static[T]"
+  (`#1858 <https://github.com/Araq/Nim/issues/1858>`_)
+- Fixed "Erroneous overflow in iterators when compiler built with overflowChecks enabled"
+  (`#3140 <https://github.com/Araq/Nim/issues/3140>`_)
+- Fixed "Unicode dashes as "lisp'ish" alternative to hump and snake notation"
+  (`#2811 <https://github.com/Araq/Nim/issues/2811>`_)
+- Fixed "Calling discardable proc from a defer is an error."
+  (`#3185 <https://github.com/Araq/Nim/issues/3185>`_)
+- Fixed "Defer statement at the end of a block produces ICE"
+  (`#3186 <https://github.com/Araq/Nim/issues/3186>`_)
+- Fixed "Call to `createU` fails to compile"
+  (`#3193 <https://github.com/Araq/Nim/issues/3193>`_)
+- Fixed "VM crash when accessing array's element"
+  (`#3192 <https://github.com/Araq/Nim/issues/3192>`_)
+- Fixed "Unexpected proc invoked when different modules add procs to a type from a 3rd module"
+  (`#2664 <https://github.com/Araq/Nim/issues/2664>`_)
+- Fixed "Nim crashes on conditional declaration inside a template"
+  (`#2670 <https://github.com/Araq/Nim/issues/2670>`_)
+- Fixed "Iterator names conflict within different scopes"
+  (`#2752 <https://github.com/Araq/Nim/issues/2752>`_)
+- Fixed "VM: Cannot assign int value to ref variable"
+  (`#1329 <https://github.com/Araq/Nim/issues/1329>`_)
+- Fixed "Incorrect code generated for tagged unions with enums not starting at zero"
+  (`#3096 <https://github.com/Araq/Nim/issues/3096>`_)
+- Fixed "Compile time procs using forward declarations are silently ignored"
+  (`#3066 <https://github.com/Araq/Nim/issues/3066>`_)
+- Fixed "re binding error in generic"
+  (`#1965 <https://github.com/Araq/Nim/issues/1965>`_)
+- Fixed "os.getCreationTime is incorrect/impossible on Posix systems"
+  (`#1058 <https://github.com/Araq/Nim/issues/1058>`_)
+- Fixed "Improve error message for osproc.startProcess when command does not exist"
+  (`#2183 <https://github.com/Araq/Nim/issues/2183>`_)
+- Fixed "gctest segfaults with --gc:markandsweep on x86_64"
+  (`#2305 <https://github.com/Araq/Nim/issues/2305>`_)
+- Fixed "Coroutine changes break compilation on unsupported architectures"
+  (`#3245 <https://github.com/Araq/Nim/issues/3245>`_)
+- Fixed "Bugfix: Windows 32bit  TinyCC support issue fixed"
+  (`#3237 <https://github.com/Araq/Nim/issues/3237>`_)
+- Fixed "db_mysql getValue() followed by exec() causing error"
+  (`#3220 <https://github.com/Araq/Nim/issues/3220>`_)
+- Fixed "xmltree.newEntity creates xnCData instead of xnEntity"
+  (`#3282 <https://github.com/Araq/Nim/issues/3282>`_)
+- Fixed "Methods and modules don't work together"
+  (`#2590 <https://github.com/Araq/Nim/issues/2590>`_)
+- Fixed "String slicing not working in the vm"
+  (`#3300 <https://github.com/Araq/Nim/issues/3300>`_)
+- Fixed "internal error: evalOp(mTypeOf)"
+  (`#3230 <https://github.com/Araq/Nim/issues/3230>`_)
+- Fixed "#! source code prefix collides with Unix Shebang"
+  (`#2559 <https://github.com/Araq/Nim/issues/2559>`_)
+- Fixed "wrong codegen for constant object"
+  (`#3195 <https://github.com/Araq/Nim/issues/3195>`_)
+- Fixed "Doc comments inside procs with implicit returns don't work"
+  (`#1528 <https://github.com/Araq/Nim/issues/1528>`_)
diff --git a/web/news/2016_01_18_andreas_rumpfs_talk_at_oscon_amsterdam.rst b/web/news/2016_01_18_andreas_rumpfs_talk_at_oscon_amsterdam.rst
new file mode 100644
index 000000000..fcb4a8794
--- /dev/null
+++ b/web/news/2016_01_18_andreas_rumpfs_talk_at_oscon_amsterdam.rst
@@ -0,0 +1,13 @@
+Andreas Rumpf's talk at OSCON Amsterdam
+==================================================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 18/01/2016
+
+In case you have missed it, here is Andreas' Nim: An Overview talk at
+OSCON Amsterdam.
+
+.. raw:: html
+
+  <iframe width="560" height="315" src="https://www.youtube.com/embed/4rJEBs_Nnaw" frameborder="0" allowfullscreen></iframe>
diff --git a/web/news/2016_01_18_version_0_13_0_released.rst b/web/news/2016_01_18_version_0_13_0_released.rst
new file mode 100644
index 000000000..2c8e66fa3
--- /dev/null
+++ b/web/news/2016_01_18_version_0_13_0_released.rst
@@ -0,0 +1,182 @@
+Version 0.13.0 released
+=======================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 18/01/2016
+
+Once again we are proud to announce the latest release of the Nim compiler
+and related tools. This release comes just 3 months after the last
+release!
+
+A new version of Nimble which depends on this release, has also been
+released. See `this <http://forum.nim-lang.org/t/1912>`_ forum thread for
+more information about the Nimble release.
+
+This release of Nim includes over 116 bug fixes, many of which are related
+to closures. The lambda lifting algorithm in the compiler has been completely
+rewritten, and some changes have been made to the semantics of closures in
+Nim as a result. These changes may affect backwards compatibility and are all
+described in the section below.
+
+With this release, we are one step closer to Nim version 1.0.
+The 1.0 release will be a big milestone for Nim, because after that version
+is released there will be no more breaking changes made to the language
+or the standard library.
+
+That being said, the next release will likely be Nim 0.14. It will focus on
+improvements to the GC and concurrency. We will in particular be looking at
+ways to add multi-core support to async await. Standard library improvements
+are also on our roadmap but may not make it for Nim 0.14.
+
+As always you can download the latest version of Nim from the
+`download <download.html>`_ page.
+
+Happy coding!
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- ``macros.newLit`` for ``bool`` now produces false/true symbols which
+  actually work with the bool datatype.
+- When compiling to JS: ``Node``, ``NodeType`` and ``Document`` are no longer
+  defined. Use the types defined in ``dom.nim`` instead.
+- The check ``x is iterator`` (used for instance in concepts) was always a
+  weird special case (you could not use ``x is proc``) and was removed from
+  the language.
+- Top level routines cannot have the calling convention ``closure``
+  anymore.
+- The ``redis`` module has been moved out of the standard library. It can
+  now be installed via Nimble and is located here:
+  https://github.com/nim-lang/redis
+- ``math.RunningStat`` and its associated procs have been moved from
+  the ``math`` module to a new ``stats`` module.
+
+
+Syntax changes
+~~~~~~~~~~~~~~
+
+The parser now considers leading whitespace in front of operators
+to determine if an operator is used in prefix or infix position.
+This means that finally ``echo $foo`` is parsed as people expect,
+which is as ``echo($foo)``. It used to be parsed as ``(echo) $ (foo)``.
+
+``echo $ foo`` continues to be parsed as ``(echo) $ (foo)``.
+
+This also means that ``-1`` is always parsed as prefix operator so
+code like ``0..kArraySize div 2 -1`` needs to be changed to
+``0..kArraySize div 2 - 1``.
+
+This release also adds multi-line comments to Nim. The syntax for them is:
+``#[ comment here ]#``. For more details read the section of
+the `manual <docs/manual.html#lexical-analysis-multiline-comments>`_.
+
+Iterator changes
+~~~~~~~~~~~~~~~~
+
+Implicit return type inference for iterators has been removed from the language. The following used to work:
+
+.. code-block:: nim
+  iterator it =
+    yield 7
+
+This was a strange special case and has been removed. Now you need to write it like so which is consistent with procs:
+
+.. code-block:: nim
+  iterator it: auto =
+    yield 7
+
+
+Closure changes
+~~~~~~~~~~~~~~~
+
+The semantics of closures changed: Capturing variables that are in loops do not produce a new environment. Nim closures behave like JavaScript closures now.
+
+The following used to work as the environment creation used to be attached to the loop body:
+
+.. code-block:: nim
+
+  proc outer =
+    var s: seq[proc(): int {.closure.}] = @[]
+    for i in 0 ..< 30:
+      let ii = i
+      s.add(proc(): int = return ii*ii)
+
+This behaviour has changed in 0.13.0 and now needs to be written as:
+
+.. code-block:: nim
+
+  proc outer =
+    var s: seq[proc(): int {.closure.}] = @[]
+    for i in 0 ..< 30:
+      (proc () =
+        let ii = i
+        s.add(proc(): int = return ii*ii))()
+
+The reason is that environment creations are now only performed once
+per proc call. This change is subtle and unfortunate, but:
+
+1. Affects almost no code out there.
+2. Is easier to implement and we are at a point in Nim's development process where simple+stable wins over perfect-in-theory+unstable-in-practice.
+3. Implies programmers are more in control of where memory is allocated which is beneficial for a systems programming language.
+
+Bugfixes
+--------
+
+The list below has been generated based on the commits in Nim's git
+repository. As such it lists only the issues which have been closed
+via a commit, for a full list see
+`this link on Github <https://github.com/nim-lang/Nim/issues?utf8=%E2%9C%93&q=is%3Aissue+closed%3A%222015-10-27+..+2016-01-19%22+>`_.
+
+- Fixed "Generic arguments cannot be used in templates (raising undeclared identifier)"
+  (`#3498 <https://github.com/nim-lang/Nim/issues/3498>`_)
+- Fixed "multimethods: Error: internal error: cgmeth.genConv"
+  (`#3550 <https://github.com/nim-lang/Nim/issues/3550>`_)
+- Fixed "nimscript - SIGSEGV in except block"
+  (`#3546 <https://github.com/nim-lang/Nim/issues/3546>`_)
+- Fixed "Bool literals in macros do not work."
+  (`#3541 <https://github.com/nim-lang/Nim/issues/3541>`_)
+- Fixed "Docs: nativesocket.html - 404"
+  (`#3582 <https://github.com/nim-lang/Nim/issues/3582>`_)
+- Fixed ""not nil" return types never trigger an error or warning"
+  (`#2285 <https://github.com/nim-lang/Nim/issues/2285>`_)
+- Fixed "No warning or error is raised even if not nil is specified "
+  (`#3222 <https://github.com/nim-lang/Nim/issues/3222>`_)
+- Fixed "Incorrect fsmonitor add() filter logic"
+  (`#3611 <https://github.com/nim-lang/Nim/issues/3611>`_)
+- Fixed ""nimble install nimsuggest" failed"
+  (`#3622 <https://github.com/nim-lang/Nim/issues/3622>`_)
+- Fixed "compile time `excl ` cause SIGSEGV"
+  (`#3639 <https://github.com/nim-lang/Nim/issues/3639>`_)
+- Fixed "Unable to echo unsigned ints at compile-time"
+  (`#2514 <https://github.com/nim-lang/Nim/issues/2514>`_)
+- Fixed "Nested closure iterator produces internal error"
+  (`#1725 <https://github.com/nim-lang/Nim/issues/1725>`_)
+- Fixed "C Error on walkDirRec closure"
+  (`#3636 <https://github.com/nim-lang/Nim/issues/3636>`_)
+- Fixed "Error in generated c code"
+  (`#3201 <https://github.com/nim-lang/Nim/issues/3201>`_)
+- Fixed "C Compile-time error with generic proc type."
+  (`#2659 <https://github.com/nim-lang/Nim/issues/2659>`_)
+- Fixed "ICE dereferencing array pointer"
+  (`#2240 <https://github.com/nim-lang/Nim/issues/2240>`_)
+- Fixed "Lambda lifting crash"
+  (`#2007 <https://github.com/nim-lang/Nim/issues/2007>`_)
+- Fixed "Can't reference outer variables from a closure in an iterator"
+  (`#2604 <https://github.com/nim-lang/Nim/issues/2604>`_)
+- Fixed "M&S collector breaks with nested for loops."
+  (`#603 <https://github.com/nim-lang/Nim/issues/603>`_)
+- Fixed "Regression: bad C codegen"
+  (`#3723 <https://github.com/nim-lang/Nim/issues/3723>`_)
+- Fixed "JS backend - handle bool type in case statement"
+  (`#3722 <https://github.com/nim-lang/Nim/issues/3722>`_)
+- Fixed "linenoise compilation with cpp"
+  (`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_)
+- Fixed "(???,???) duplicate case label"
+  (`#3665 <https://github.com/nim-lang/Nim/issues/3665>`_)
+- Fixed "linenoise compilation with cpp"
+  (`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_)
+- Fixed "Update list of backward incompatibilities for Nim 0.12.0 in the main site"
+  (`#3689 <https://github.com/nim-lang/Nim/issues/3689>`_)
+- Fixed "Can't compile nimble with latest devel - codegen bug"
+  (`#3730 <https://github.com/nim-lang/Nim/issues/3730>`_)
diff --git a/web/news/2016_01_27_nim_in_action_is_now_available.rst b/web/news/2016_01_27_nim_in_action_is_now_available.rst
new file mode 100644
index 000000000..33bcb7947
--- /dev/null
+++ b/web/news/2016_01_27_nim_in_action_is_now_available.rst
@@ -0,0 +1,32 @@
+Nim in Action is now available!
+===============================
+
+.. container:: metadata
+
+  Posted by Dominik Picheta on 27/01/2016
+
+.. raw::html
+
+  <a href="https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81">
+    <img src="../assets/niminaction/banner.jpg" alt="New in Manning Early Access Program: Nim in Action!" width="682"/>
+  </a>
+
+We are proud to announce that *Nim in Action*, a book about the Nim programming
+language, is now available!
+
+The book is available at this URL:
+`https://www.manning.com/books/nim-in-action <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_
+
+The first three chapters are available for download
+as an eBook through Manning's Early Access program. You can download a free
+sample of the book containing the first chapter as well!
+
+*Nim in Action* is currently being written and is expected to be completed by
+Summer 2016. If you purchase the eBook you will start receiving new chapters
+as they become available. You can also purchase the printed book together with
+the eBook for a slightly higher price.
+
+If you do read the book, even if it's just the first chapter, then please share
+any comments, suggestions and questions on the
+`Nim forum <http://forum.nim-lang.org/t/1978>`_ or in
+Manning's own `Author Online forum! <https://forums.manning.com/forums/nim-in-action>`_
diff --git a/web/news/version_0_14_released.rst b/web/news/version_0_14_released.rst
new file mode 100644
index 000000000..293178f7d
--- /dev/null
+++ b/web/news/version_0_14_released.rst
@@ -0,0 +1,98 @@
+2016-XX-XX Version 0.14.0 released
+==================================
+
+Changes affecting backwards compatibility
+-----------------------------------------
+
+- ``--out`` and ``--nimcache`` command line arguments are now relative to
+  current directory. Previously they were relative to project directory.
+- The json module now stores the name/value pairs in objects internally as a
+  hash table of type ``fields*: Table[string, JsonNode]`` instead of a
+  sequence. This means that order is no longer preserved. When using the
+  ``table.mpairs`` iterator only the returned values can be modified, no
+  longer the keys.
+- The deprecated Nim shebang notation ``#!`` was removed from the language. Use ``#?`` instead.
+- The ``using`` statement now means something completely different. You can use the
+  new experimental ``this`` pragma to achieve a similar effect to what the old ``using`` statement tried to achieve.
+- Typeless parameters have been removed from the language since it would
+  clash with ``using``.
+- Procedures in ``mersenne.nim`` (Mersenne Twister implementation) no longer
+  accept and produce ``int`` values which have platform-dependent size -
+  they use ``uint32`` instead.
+- The ``strutils.unindent`` procedure has been rewritten. Its parameters now
+  match the parameters of ``strutils.indent``. See issue [#4037](https://github.com/nim-lang/Nim/issues/4037)
+  for more details.
+- The ``matchers`` module has been deprecated. See issue [#2446](https://github.com/nim-lang/Nim/issues/2446)
+  for more details.
+- The ``json.[]`` no longer returns ``nil`` when a key is not found. Instead it
+  raises a ``KeyError`` exception. You can compile with the ``-d:nimJsonGet``
+  flag to get a list of usages of ``[]``, as well as to restore the operator's
+  previous behaviour.
+- When using ``useMalloc``, an additional header containing the size of the
+  allocation will be allocated, to support zeroing memory on realloc as expected
+  by the language. With this change, ``alloc`` and ``dealloc`` are no longer
+  aliases for ``malloc`` and ``free`` - use ``c_malloc`` and ``c_free`` if
+  you need that.
+- The ``json.%`` operator is now overloaded for ``object``, ``ref object`` and
+  ``openarray[T]``.
+- The procs related to ``random`` number generation in ``math.nim`` have
+  been moved to its own ``random`` module and been reimplemented in pure
+  Nim.
+- The path handling changed. The project directory is not added to the
+  search path automatically anymore. Add this line to your project's
+  config to get back the old behaviour: ``--path:"$projectdir"``.
+- The ``round`` function in ``math.nim`` now returns a float and has been
+  corrected such that the C implementation always rounds up from .5 rather
+  than changing the operation for even and odd numbers.
+- The ``round`` function now accepts a ``places`` argument to round to a
+  given number of places (e.g. round 4.35 to 4.4 if ``places`` is 1).
+- In ``strutils.nim``, ``formatSize`` now returns a number representing the
+  size in conventional decimal format (e.g. 2.234GB meaning 2.234 GB rather
+  than meaning 2.285 GB as in the previous implementation).  By default it
+  also uses IEC prefixes (KiB, MiB) etc and optionally uses colloquial names
+  (kB, MB etc) and the (SI-preferred) space.
+- The ``==`` operator for ``cstring`` now implements a value comparision
+  for the C backend (using ``strcmp``), not reference comparisons anymore.
+  Convert the cstrings to pointers if you really want reference equality
+  for speed.
+- HTTP headers are now stored in a ``HttpHeaders`` object instead of a
+  ``StringTableRef``. This object allows multiple values to be associated with
+  a single key. A new ``httpcore`` module implements it and it is used by
+  both ``asynchttpserver`` and ``httpclient``.
+
+
+Library Additions
+-----------------
+
+- The rlocks module has been added providing reentrant lock synchronization
+  primitive.
+- A generic "sink operator" written as ``&=`` has been added to the ``system`` and the ``net`` modules.
+- Added ``strscans`` module that implements a ``scanf`` for easy input extraction.
+- Added a version of ``parseutils.parseUntil`` that can deal with a string ``until`` token. The other
+  versions are for ``char`` and ``set[char]``.
+- Added ``splitDecimal`` to ``math.nim`` to split a floating point value
+  into an integer part and a floating part (in the range -1<x<1).
+- Added ``trimZeros`` to ```strutils.nim`` to trim trailing zeros in a
+  floating point number.
+- Added ``formatEng`` to ``strutils.nim`` to format numbers using engineering
+  notation.
+
+
+Compiler Additions
+------------------
+
+- Added a new ``--noCppExceptions`` switch that allows to use default exception
+  handling (no ``throw`` or ``try``/``catch`` generated) when compiling to C++
+  code.
+
+Language Additions
+------------------
+
+- Nim now supports a ``.this`` pragma for more notational convenience.
+- Nim now supports a different ``using`` statement for more convenience.
+- ``include`` statements are not restricted to top level statements anymore.
+
+..
+  - Nim now supports ``partial`` object declarations to mitigate the problems
+    that arise when types are mutually dependent and yet should be kept in
+    different modules.
diff --git a/web/question.txt b/web/question.rst
index b3a357bb8..b3a357bb8 100644
--- a/web/question.txt
+++ b/web/question.rst
diff --git a/web/support.txt b/web/support.rst
index 9a526605e..9a526605e 100644
--- a/web/support.txt
+++ b/web/support.rst
diff --git a/web/ticker.html b/web/ticker.html
new file mode 100644
index 000000000..842f0113f
--- /dev/null
+++ b/web/ticker.html
@@ -0,0 +1,21 @@
+<a class="news" href="$1news/2016_01_27_nim_in_action_is_now_available.html">
+  <h4>January 27, 2016</h4>
+  <p>Nim in Action is now available!</p>
+</a>
+
+<a class="news" href="$1news/2016_01_18_version_0_13_0_released.html">
+  <h4>January 18, 2016</h4>
+  <p>Nim version 0.13.0 has been released!</p>
+</a>
+
+<a class="news" href="$1news/2016_01_18_andreas_rumpfs_talk_at_oscon_amsterdam.html">
+  <h4>January 18, 2016</h4>
+  <p>Andreas Rumpf's talk at OSCON Amsterdam</p>
+</a>
+
+<a class="news" href="$1news/2015_10_27_version_0_12_0_released.html">
+  <h4>October 27, 2015</h4>
+  <p>Nim version 0.12.0 has been released!</p>
+</a>
+
+<a href="$1news.html" class="blue">See All News...</a>
diff --git a/web/ticker.txt b/web/ticker.txt
deleted file mode 100644
index 7e917e0f2..000000000
--- a/web/ticker.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-<a class="news" href="news.html#Z2016-01-27-nim-in-action-is-now-available">
-  <h4>January 27, 2016</h4>
-  <p>Nim in Action is now available!</p>
-</a>
-
-<a class="news" href="news.html#Z2016-01-18-version-0-13-0-released">
-  <h4>January 18, 2016</h4>
-  <p>Nim version 0.13.0 has been released!</p>
-</a>
-
-<a class="news" href="news.html#Z2016-01-18-andreas-rumpf-s-talk-at-oscon-amsterdam">
-  <h4>January 18, 2016</h4>
-  <p>Andreas Rumpf's talk at OSCON Amsterdam</p>
-</a>
-
-<a class="news" href="news.html#Z2015-10-27-version-0-12-0-released">
-  <h4>October 27, 2015</h4>
-  <p>Nim version 0.12.0 has been released!</p>
-</a>
-
-<a class="news" href="news.html#Z2015-10-16-first-nim-conference">
-  <h4>October 16, 2015</h4>
-  <p>First official Nim conference will be in Kyiv!</p>
-</a>
-
-<a href="news.html" class="blue">See All News...</a>
diff --git a/web/website.ini b/web/website.ini
index 58207a1c0..38bf22e2c 100644
--- a/web/website.ini
+++ b/web/website.ini
@@ -26,7 +26,7 @@ community: community
 news: news
 
 [Ticker]
-file: ticker.txt
+file: ticker.html
 
 [Documentation]
 doc: "endb;intern;apis;lib;manual.txt;tut1;tut2;nimc;overview;filters"