updated news for upcoming release

This commit is contained in:
Araq 2016-01-18 16:24:20 +01:00
commit e9537f48f3
2 changed files with 154 additions and 153 deletions

View file

@ -2,100 +2,100 @@
News News
==== ====
..
2016-01-XX Version 0.13.0 released
==================================
Once again we are proud to announce the latest release of the Nim compiler 2016-01-18 Version 0.13.0 released
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 Once again we are proud to announce the latest release of the Nim compiler
released. See `this <http://forum.nim-lang.org/t/1912>`_ forum thread for and related tools. This release comes just 3 months after the last
more information about the Nimble release. release!
This release of Nim includes over 116 bug fixes, many of which are related A new version of Nimble which depends on this release, has also been
to closures. The lambda lifting algorithm in the compiler has been completely released. See `this <http://forum.nim-lang.org/t/1912>`_ forum thread for
rewritten, and some changes have been made to the semantics of closures in more information about the Nimble release.
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. This release of Nim includes over 116 bug fixes, many of which are related
The 1.0 release will be a big milestone for Nim, because after that version to closures. The lambda lifting algorithm in the compiler has been completely
is released there will be no more breaking changes made to the language rewritten, and some changes have been made to the semantics of closures in
or the standard library. Nim as a result. These changes may affect backwards compatibility and are all
described in the section below.
That being said, the next release will likely be Nim 0.14. It will focus on With this release, we are one step closer to Nim version 1.0.
improvements to the GC and concurrency. We will in particular be looking at The 1.0 release will be a big milestone for Nim, because after that version
ways to add multi-core support to async await. Standard library improvements is released there will be no more breaking changes made to the language
are also on our roadmap but may not make it for Nim 0.14. or the standard library.
As always you can download the latest version of Nim from the That being said, the next release will likely be Nim 0.14. It will focus on
`download <download.html>`_ page. 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.
Happy coding! As always you can download the latest version of Nim from the
`download <download.html>`_ page.
Changes affecting backwards compatibility Happy coding!
-----------------------------------------
- ``macros.newLit`` for ``bool`` now produces false/true symbols which Changes affecting backwards compatibility
-----------------------------------------
- ``macros.newLit`` for ``bool`` now produces false/true symbols which
actually work with the bool datatype. actually work with the bool datatype.
- When compiling to JS: ``Node``, ``NodeType`` and ``Document`` are no longer - When compiling to JS: ``Node``, ``NodeType`` and ``Document`` are no longer
defined. Use the types defined in ``dom.nim`` instead. defined. Use the types defined in ``dom.nim`` instead.
- The check ``x is iterator`` (used for instance in concepts) was always a - 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 weird special case (you could not use ``x is proc``) and was removed from
the language. the language.
- Top level routines cannot have the calling convention ``closure`` - Top level routines cannot have the calling convention ``closure``
anymore. anymore.
- The ``redis`` module has been moved out of the standard library. It can - The ``redis`` module has been moved out of the standard library. It can
now be installed via Nimble and is located here: now be installed via Nimble and is located here:
https://github.com/nim-lang/redis https://github.com/nim-lang/redis
- ``math.RunningStat`` and its associated procs have been moved from - ``math.RunningStat`` and its associated procs have been moved from
the ``math`` module to a new ``stats`` module. the ``math`` module to a new ``stats`` module.
Syntax changes Syntax changes
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
The parser now considers leading whitespace in front of operators The parser now considers leading whitespace in front of operators
to determine if an operator is used in prefix or infix position. to determine if an operator is used in prefix or infix position.
This means that finally ``echo $foo`` is parsed as people expect, This means that finally ``echo $foo`` is parsed as people expect,
which is as ``echo($foo)``. It used to be parsed as ``(echo) $ (foo)``. which is as ``echo($foo)``. It used to be parsed as ``(echo) $ (foo)``.
``echo $ foo`` continues 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 This also means that ``-1`` is always parsed as prefix operator so
code like ``0..kArraySize div 2 -1`` needs to be changed to code like ``0..kArraySize div 2 -1`` needs to be changed to
``0..kArraySize div 2 - 1``. ``0..kArraySize div 2 - 1``.
This release also adds multi-line comments to Nim. The syntax for them is: This release also adds multi-line comments to Nim. The syntax for them is:
``#[ comment here ]#``. For more details read the section of ``#[ comment here ]#``. For more details read the section of
the `manual <manual#multiline-comments>`_. the `manual <manual#multiline-comments>`_.
Iterator changes Iterator changes
~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
Implicit return type inference for iterators has been removed from the language. The following used to work: Implicit return type inference for iterators has been removed from the language. The following used to work:
.. code-block:: nim .. code-block:: nim
iterator it = iterator it =
yield 7 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: 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 .. code-block:: nim
iterator it: auto = iterator it: auto =
yield 7 yield 7
Closure changes 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 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: The following used to work as the environment creation used to be attached to the loop body:
.. code-block:: nim .. code-block:: nim
proc outer = proc outer =
var s: seq[proc(): int {.closure.}] = @[] var s: seq[proc(): int {.closure.}] = @[]
@ -103,9 +103,9 @@ News
let ii = i let ii = i
s.add(proc(): string = return ii*ii)) s.add(proc(): string = return ii*ii))
This behaviour has changed in 0.13.0 and now needs to be written as: This behaviour has changed in 0.13.0 and now needs to be written as:
.. code-block:: nim .. code-block:: nim
proc outer = proc outer =
var s: seq[proc(): int {.closure.}] = @[] var s: seq[proc(): int {.closure.}] = @[]
@ -114,76 +114,77 @@ News
let ii = i let ii = i
s.add(proc(): int = return ii*ii))() s.add(proc(): int = return ii*ii))()
The reason is that environment creations are now only performed once The reason is that environment creations are now only performed once
per proc call. This change is subtle and unfortunate, but: per proc call. This change is subtle and unfortunate, but:
1. Affects almost no code out there. 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. 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 benefitical for a systems programming language. 3. Implies programmers are more in control of where memory is allocated which is benefitical for a systems programming language.
Bugfixes Bugfixes
-------- --------
The list below has been generated based on the commits in Nim's git 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 repository. As such it lists only the issues which have been closed
via a commit, for a full list see 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+>`_. `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)" - Fixed "Generic arguments cannot be used in templates (raising undeclared identifier)"
(`#3498 <https://github.com/nim-lang/Nim/issues/3498>`_) (`#3498 <https://github.com/nim-lang/Nim/issues/3498>`_)
- Fixed "multimethods: Error: internal error: cgmeth.genConv" - Fixed "multimethods: Error: internal error: cgmeth.genConv"
(`#3550 <https://github.com/nim-lang/Nim/issues/3550>`_) (`#3550 <https://github.com/nim-lang/Nim/issues/3550>`_)
- Fixed "multimethods: Error: internal error: cgmeth.genConv" - Fixed "multimethods: Error: internal error: cgmeth.genConv"
(`#3550 <https://github.com/nim-lang/Nim/issues/3550>`_) (`#3550 <https://github.com/nim-lang/Nim/issues/3550>`_)
- Fixed "nimscript - SIGSEGV in except block" - Fixed "nimscript - SIGSEGV in except block"
(`#3546 <https://github.com/nim-lang/Nim/issues/3546>`_) (`#3546 <https://github.com/nim-lang/Nim/issues/3546>`_)
- Fixed "Bool literals in macros do not work." - Fixed "Bool literals in macros do not work."
(`#3541 <https://github.com/nim-lang/Nim/issues/3541>`_) (`#3541 <https://github.com/nim-lang/Nim/issues/3541>`_)
- Fixed "Docs: nativesocket.html - 404" - Fixed "Docs: nativesocket.html - 404"
(`#3582 <https://github.com/nim-lang/Nim/issues/3582>`_) (`#3582 <https://github.com/nim-lang/Nim/issues/3582>`_)
- Fixed ""not nil" return types never trigger an error or warning" - Fixed ""not nil" return types never trigger an error or warning"
(`#2285 <https://github.com/nim-lang/Nim/issues/2285>`_) (`#2285 <https://github.com/nim-lang/Nim/issues/2285>`_)
- Fixed "No warning or error is raised even if not nil is specified " - Fixed "No warning or error is raised even if not nil is specified "
(`#3222 <https://github.com/nim-lang/Nim/issues/3222>`_) (`#3222 <https://github.com/nim-lang/Nim/issues/3222>`_)
- Fixed "Incorrect fsmonitor add() filter logic" - Fixed "Incorrect fsmonitor add() filter logic"
(`#3611 <https://github.com/nim-lang/Nim/issues/3611>`_) (`#3611 <https://github.com/nim-lang/Nim/issues/3611>`_)
- Fixed ""nimble install nimsuggest" failed" - Fixed ""nimble install nimsuggest" failed"
(`#3622 <https://github.com/nim-lang/Nim/issues/3622>`_) (`#3622 <https://github.com/nim-lang/Nim/issues/3622>`_)
- Fixed "compile time `excl ` cause SIGSEGV" - Fixed "compile time `excl ` cause SIGSEGV"
(`#3639 <https://github.com/nim-lang/Nim/issues/3639>`_) (`#3639 <https://github.com/nim-lang/Nim/issues/3639>`_)
- Fixed "Unable to echo unsigned ints at compile-time" - Fixed "Unable to echo unsigned ints at compile-time"
(`#2514 <https://github.com/nim-lang/Nim/issues/2514>`_) (`#2514 <https://github.com/nim-lang/Nim/issues/2514>`_)
- Fixed "Nested closure iterator produces internal error" - Fixed "Nested closure iterator produces internal error"
(`#1725 <https://github.com/nim-lang/Nim/issues/1725>`_) (`#1725 <https://github.com/nim-lang/Nim/issues/1725>`_)
- Fixed "C Error on walkDirRec closure" - Fixed "C Error on walkDirRec closure"
(`#3636 <https://github.com/nim-lang/Nim/issues/3636>`_) (`#3636 <https://github.com/nim-lang/Nim/issues/3636>`_)
- Fixed "Error in generated c code" - Fixed "Error in generated c code"
(`#3201 <https://github.com/nim-lang/Nim/issues/3201>`_) (`#3201 <https://github.com/nim-lang/Nim/issues/3201>`_)
- Fixed "C Compile-time error with generic proc type." - Fixed "C Compile-time error with generic proc type."
(`#2659 <https://github.com/nim-lang/Nim/issues/2659>`_) (`#2659 <https://github.com/nim-lang/Nim/issues/2659>`_)
- Fixed "ICE dereferencing array pointer" - Fixed "ICE dereferencing array pointer"
(`#2240 <https://github.com/nim-lang/Nim/issues/2240>`_) (`#2240 <https://github.com/nim-lang/Nim/issues/2240>`_)
- Fixed "Lambda lifting crash" - Fixed "Lambda lifting crash"
(`#2007 <https://github.com/nim-lang/Nim/issues/2007>`_) (`#2007 <https://github.com/nim-lang/Nim/issues/2007>`_)
- Fixed "Can't reference outer variables from a closure in an iterator" - Fixed "Can't reference outer variables from a closure in an iterator"
(`#2604 <https://github.com/nim-lang/Nim/issues/2604>`_) (`#2604 <https://github.com/nim-lang/Nim/issues/2604>`_)
- Fixed "M&S collector breaks with nested for loops." - Fixed "M&S collector breaks with nested for loops."
(`#603 <https://github.com/nim-lang/Nim/issues/603>`_) (`#603 <https://github.com/nim-lang/Nim/issues/603>`_)
- Fixed "Regression: bad C codegen" - Fixed "Regression: bad C codegen"
(`#3723 <https://github.com/nim-lang/Nim/issues/3723>`_) (`#3723 <https://github.com/nim-lang/Nim/issues/3723>`_)
- Fixed "JS backend - handle bool type in case statement" - Fixed "JS backend - handle bool type in case statement"
(`#3722 <https://github.com/nim-lang/Nim/issues/3722>`_) (`#3722 <https://github.com/nim-lang/Nim/issues/3722>`_)
- Fixed "linenoise compilation with cpp" - Fixed "linenoise compilation with cpp"
(`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_) (`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_)
- Fixed "(???,???) duplicate case label" - Fixed "(???,???) duplicate case label"
(`#3665 <https://github.com/nim-lang/Nim/issues/3665>`_) (`#3665 <https://github.com/nim-lang/Nim/issues/3665>`_)
- Fixed "linenoise compilation with cpp" - Fixed "linenoise compilation with cpp"
(`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_) (`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_)
- Fixed "Update list of backward incompatibilities for Nim 0.12.0 in the main site" - Fixed "Update list of backward incompatibilities for Nim 0.12.0 in the main site"
(`#3689 <https://github.com/nim-lang/Nim/issues/3689>`_) (`#3689 <https://github.com/nim-lang/Nim/issues/3689>`_)
- Fixed "Can't compile nimble with latest devel - codegen bug" - Fixed "Can't compile nimble with latest devel - codegen bug"
(`#3730 <https://github.com/nim-lang/Nim/issues/3730>`_) (`#3730 <https://github.com/nim-lang/Nim/issues/3730>`_)
2015-10-27 Version 0.12.0 released 2015-10-27 Version 0.12.0 released
================================== ==================================

View file

@ -1,3 +1,8 @@
<a class="news" href="news.html#Z2016-01-18-version-0-13-0-released">
<h4>Jan 18, 2016</h4>
<p>Nim version 0.13.0 has been released!</p>
</a>
<a class="news" href="news.html#Z2015-10-27-version-0-12-0-released"> <a class="news" href="news.html#Z2015-10-27-version-0-12-0-released">
<h4>October 27, 2015</h4> <h4>October 27, 2015</h4>
<p>Nim version 0.12.0 has been released!</p> <p>Nim version 0.12.0 has been released!</p>
@ -13,9 +18,4 @@
<p>Nim version 0.11.2 has been released!</p> <p>Nim version 0.11.2 has been released!</p>
</a> </a>
<a class="news" href="news.html#Z2014-12-29-version-0-10-2-released">
<h4>Dec 29, 2014</h4>
<p>Nim version 0.10.2 has been released!</p>
</a>
<a href="news.html" class="blue">See All News...</a> <a href="news.html" class="blue">See All News...</a>