From e9537f48f3b5b425079925424da7570ba183fbbb Mon Sep 17 00:00:00 2001 From: Araq Date: Mon, 18 Jan 2016 16:24:20 +0100 Subject: [PATCH] updated news for upcoming release --- web/news.txt | 297 +++++++++++++++++++++++++------------------------ web/ticker.txt | 10 +- 2 files changed, 154 insertions(+), 153 deletions(-) diff --git a/web/news.txt b/web/news.txt index fd92e1ad20..491b0254a1 100644 --- a/web/news.txt +++ b/web/news.txt @@ -2,187 +2,188 @@ News ==== -.. - 2016-01-XX 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! +2016-01-18 Version 0.13.0 released +================================== - A new version of Nimble which depends on this release, has also been - released. See `this `_ forum thread for - more information about the Nimble release. +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! - 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. +A new version of Nimble which depends on this release, has also been +released. See `this `_ forum thread for +more information about the Nimble release. - 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. +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. - 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. +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. - As always you can download the latest version of Nim from the - `download `_ page. +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. - Happy coding! +As always you can download the latest version of Nim from the +`download `_ page. - Changes affecting backwards compatibility - ----------------------------------------- +Happy coding! - - ``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. +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 - ~~~~~~~~~~~~~~ +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)``. +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)``. +``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 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 `_. +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 `_. - 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 - iterator it = - yield 7 +.. 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: +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 +.. code-block:: nim + iterator it: auto = + 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 = - var s: seq[proc(): int {.closure.}] = @[] - for i in 0 ..< 30: + proc outer = + var s: seq[proc(): int {.closure.}] = @[] + for i in 0 ..< 30: + let ii = i + s.add(proc(): string = 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(): string = return ii*ii)) + s.add(proc(): int = return ii*ii))() - This behaviour has changed in 0.13.0 and now needs to be written as: +The reason is that environment creations are now only performed once +per proc call. This change is subtle and unfortunate, but: - .. code-block:: nim +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 benefitical for a systems programming language. - proc outer = - var s: seq[proc(): int {.closure.}] = @[] - for i in 0 ..< 30: - (proc () = - let ii = i - s.add(proc(): int = return ii*ii))() +Bugfixes +-------- - The reason is that environment creations are now only performed once - per proc call. This change is subtle and unfortunate, but: +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 `_. - 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 benefitical for a systems programming language. +- Fixed "Generic arguments cannot be used in templates (raising undeclared identifier)" + (`#3498 `_) +- Fixed "multimethods: Error: internal error: cgmeth.genConv" + (`#3550 `_) +- Fixed "multimethods: Error: internal error: cgmeth.genConv" + (`#3550 `_) +- Fixed "nimscript - SIGSEGV in except block" + (`#3546 `_) +- Fixed "Bool literals in macros do not work." + (`#3541 `_) +- Fixed "Docs: nativesocket.html - 404" + (`#3582 `_) +- Fixed ""not nil" return types never trigger an error or warning" + (`#2285 `_) +- Fixed "No warning or error is raised even if not nil is specified " + (`#3222 `_) +- Fixed "Incorrect fsmonitor add() filter logic" + (`#3611 `_) +- Fixed ""nimble install nimsuggest" failed" + (`#3622 `_) +- Fixed "compile time `excl ` cause SIGSEGV" + (`#3639 `_) +- Fixed "Unable to echo unsigned ints at compile-time" + (`#2514 `_) +- Fixed "Nested closure iterator produces internal error" + (`#1725 `_) +- Fixed "C Error on walkDirRec closure" + (`#3636 `_) +- Fixed "Error in generated c code" + (`#3201 `_) +- Fixed "C Compile-time error with generic proc type." + (`#2659 `_) +- Fixed "ICE dereferencing array pointer" + (`#2240 `_) +- Fixed "Lambda lifting crash" + (`#2007 `_) +- Fixed "Can't reference outer variables from a closure in an iterator" + (`#2604 `_) +- Fixed "M&S collector breaks with nested for loops." + (`#603 `_) +- Fixed "Regression: bad C codegen" + (`#3723 `_) +- Fixed "JS backend - handle bool type in case statement" + (`#3722 `_) +- Fixed "linenoise compilation with cpp" + (`#3720 `_) +- Fixed "(???,???) duplicate case label" + (`#3665 `_) +- Fixed "linenoise compilation with cpp" + (`#3720 `_) +- Fixed "Update list of backward incompatibilities for Nim 0.12.0 in the main site" + (`#3689 `_) +- Fixed "Can't compile nimble with latest devel - codegen bug" + (`#3730 `_) - 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 `_. - - - Fixed "Generic arguments cannot be used in templates (raising undeclared identifier)" - (`#3498 `_) - - Fixed "multimethods: Error: internal error: cgmeth.genConv" - (`#3550 `_) - - Fixed "multimethods: Error: internal error: cgmeth.genConv" - (`#3550 `_) - - Fixed "nimscript - SIGSEGV in except block" - (`#3546 `_) - - Fixed "Bool literals in macros do not work." - (`#3541 `_) - - Fixed "Docs: nativesocket.html - 404" - (`#3582 `_) - - Fixed ""not nil" return types never trigger an error or warning" - (`#2285 `_) - - Fixed "No warning or error is raised even if not nil is specified " - (`#3222 `_) - - Fixed "Incorrect fsmonitor add() filter logic" - (`#3611 `_) - - Fixed ""nimble install nimsuggest" failed" - (`#3622 `_) - - Fixed "compile time `excl ` cause SIGSEGV" - (`#3639 `_) - - Fixed "Unable to echo unsigned ints at compile-time" - (`#2514 `_) - - Fixed "Nested closure iterator produces internal error" - (`#1725 `_) - - Fixed "C Error on walkDirRec closure" - (`#3636 `_) - - Fixed "Error in generated c code" - (`#3201 `_) - - Fixed "C Compile-time error with generic proc type." - (`#2659 `_) - - Fixed "ICE dereferencing array pointer" - (`#2240 `_) - - Fixed "Lambda lifting crash" - (`#2007 `_) - - Fixed "Can't reference outer variables from a closure in an iterator" - (`#2604 `_) - - Fixed "M&S collector breaks with nested for loops." - (`#603 `_) - - Fixed "Regression: bad C codegen" - (`#3723 `_) - - Fixed "JS backend - handle bool type in case statement" - (`#3722 `_) - - Fixed "linenoise compilation with cpp" - (`#3720 `_) - - Fixed "(???,???) duplicate case label" - (`#3665 `_) - - Fixed "linenoise compilation with cpp" - (`#3720 `_) - - Fixed "Update list of backward incompatibilities for Nim 0.12.0 in the main site" - (`#3689 `_) - - Fixed "Can't compile nimble with latest devel - codegen bug" - (`#3730 `_) 2015-10-27 Version 0.12.0 released ================================== diff --git a/web/ticker.txt b/web/ticker.txt index 106f8f008a..a7ad73bc46 100644 --- a/web/ticker.txt +++ b/web/ticker.txt @@ -1,3 +1,8 @@ + +

Jan 18, 2016

+

Nim version 0.13.0 has been released!

+
+

October 27, 2015

Nim version 0.12.0 has been released!

@@ -13,9 +18,4 @@

Nim version 0.11.2 has been released!

- -

Dec 29, 2014

-

Nim version 0.10.2 has been released!

-
- See All News...