diff options
Diffstat (limited to 'web/news/e031_version_0_16_2.rst')
-rw-r--r-- | web/news/e031_version_0_16_2.rst | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/web/news/e031_version_0_16_2.rst b/web/news/e031_version_0_16_2.rst deleted file mode 100644 index a0d727fe1..000000000 --- a/web/news/e031_version_0_16_2.rst +++ /dev/null @@ -1,201 +0,0 @@ -Version 0.17.0 released -======================= - -This release fixes the most important regressions introduced in 0.16.0. In -particular memory manager and channel bugs have been fixed. The NSIS based -installer is not provided anymore as the Nim website moved to ``https`` and -this causes NSIS downloads to fail. - - -Changelog -~~~~~~~~~ - -Changes affecting backwards compatibility ------------------------------------------ - -- There are now two different HTTP response types, ``Response`` and - ``AsyncResponse``. ``AsyncResponse``'s ``body`` accessor returns a - ``Future[string]``! -- ``httpclient.request`` now respects ``maxRedirects`` option. Previously - redirects were handled only by ``get`` and ``post`` procs. -- The IO routines now raise ``EOFError`` for the "end of file" condition. - ``EOFError`` is a subtype of ``IOError`` and so it's easier to distinguish - between "error during read" and "error due to EOF". -- A hash procedure has been added for ``cstring`` type in ``hashes`` module. - Previously, hash of a ``cstring`` would be calculated as a hash of the - pointer. Now the hash is calculated from the contents of the string, assuming - ``cstring`` is a null-terminated string. Equal ``string`` and ``cstring`` - values produce an equal hash value. -- Macros accepting `varargs` arguments will now receive a node having the - `nkArgList` node kind. Previous code expecting the node kind to be `nkBracket` - may have to be updated. -- ``memfiles.open`` now closes file handleds/fds by default. Passing - ``allowRemap=true`` to ``memfiles.open`` recovers the old behavior. The old - behavior is only needed to call ``mapMem`` on the resulting ``MemFile``. -- ``posix.nim``: For better C++ interop the field - ``sa_sigaction*: proc (x: cint, y: var SigInfo, z: pointer) {.noconv.}`` was - changed - to ``sa_sigaction*: proc (x: cint, y: ptr SigInfo, z: pointer) {.noconv.}``. -- The compiler doesn't infer effects for ``.base`` methods anymore. This means - you need to annotate them with ``.gcsafe`` or similar to clearly declare - upfront every implementation needs to fullfill these contracts. -- ``system.getAst templateCall(x, y)`` now typechecks the ``templateCall`` - properly. You need to patch your code accordingly. -- ``macros.getType`` and ``macros.getTypeImpl`` for an enum will now return an - AST that is the same as what is used to define an enum. Previously the AST - returned had a repeated ``EnumTy`` node and was missing the initial pragma - node (which is currently empty for an enum). -- If the dispatcher parameter's value used in multi method is ``nil``, - a ``NilError`` exception is raised. The old behavior was that the method - would be a ``nop`` then. -- ``posix.nim``: the family of ``ntohs`` procs now takes unsigned integers - instead of signed integers. -- In Nim identifiers en-dash (Unicode point U+2013) is not an alias for the - underscore anymore. Use underscores and fix your programming font instead. -- When the ``requiresInit`` pragma is applied to a record type, future versions - of Nim will also require you to initialize all the fields of the type during - object construction. For now, only a warning will be produced. -- The Object construction syntax now performs a number of additional safety - checks. When fields within case objects are initialiazed, the compiler will - now demand that the respective discriminator field has a matching known - compile-time value. -- On posix, the results of `waitForExit`, `peekExitCode`, `execCmd` will return - 128 + signal number if the application terminates via signal. -- ``ospaths.getConfigDir`` now conforms to the XDG Base Directory specification - on non-Windows OSs. It returns the value of the XDG_CONFIG_DIR environment - variable if it is set, and returns the default configuration directory, - "~/.config/", otherwise. - -Library Additions ------------------ - -- Added ``system.onThreadDestruction``. - - -Tool Additions --------------- - -- The ``finish`` tool can now download MingW for you should it not find a - working MingW installation. - - -Compiler Additions ------------------- - -- The name mangling rules used by the C code generator changed. Most of the time - local variables and parameters are not mangled at all anymore. This improves - debugging experience. -- The compiler produces explicit name mangling files when ``--debugger:native`` - is enabled. Debuggers can read these ``.ndi`` files in order to improve - debugging Nim code. - - -Language Additions ------------------- - -- The ``try`` statement's ``except`` branches now support the binding of a -caught exception to a variable: - -.. code-block:: nim - try: - raise newException(Exception, "Hello World") - except Exception as exc: - echo(exc.msg) - -This replaces the ``getCurrentException`` and ``getCurrentExceptionMsg()`` -procedures, although these procedures will remain in the stdlib for the -foreseeable future. This new language feature is actually implemented using -these procedures. - -In the near future we will be converting all exception types to refs to -remove the need for the ``newException`` template. - -- A new pragma ``.used`` can be used for symbols to prevent -the "declared but not used" warning. More details can be -found `here <http://nim-lang.org/docs/manual.html#pragmas-used-pragma>`_. -- The popular "colon block of statements" syntax is now also supported for - ``let`` and ``var`` statements and assignments: - -.. code-block:: nim - template ve(value, effect): untyped = - effect - val - - let x = ve(4): - echo "welcome to Nim!" - -This is particularly useful for DSLs that help in tree construction. - - -Language changes ----------------- - -- The ``.procvar`` annotation is not required anymore. That doesn't mean you - can pass ``system.$`` to ``map`` just yet though. - - -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%222017-01-07+..+2017-02-06%22+>`_. - -- Fixed "Weird compilation bug" - (`#4884 <https://github.com/nim-lang/Nim/issues/4884>`_) -- Fixed "Return by arg optimization does not set result to default value" - (`#5098 <https://github.com/nim-lang/Nim/issues/5098>`_) -- Fixed "upcoming asyncdispatch doesn't remove recv callback if remote side closed socket" - (`#5128 <https://github.com/nim-lang/Nim/issues/5128>`_) -- Fixed "compiler bug, executable writes into wrong memory" - (`#5218 <https://github.com/nim-lang/Nim/issues/5218>`_) -- Fixed "Module aliasing fails when multiple modules have the same original name" - (`#5112 <https://github.com/nim-lang/Nim/issues/5112>`_) -- Fixed "JS: var argument + case expr with arg = bad codegen" - (`#5244 <https://github.com/nim-lang/Nim/issues/5244>`_) -- Fixed "compiler reject proc's param shadowing inside template" - (`#5225 <https://github.com/nim-lang/Nim/issues/5225>`_) -- Fixed "const value not accessible in proc" - (`#3434 <https://github.com/nim-lang/Nim/issues/3434>`_) -- Fixed "Compilation regression 0.13.0 vs 0.16.0 in compile-time evaluation" - (`#5237 <https://github.com/nim-lang/Nim/issues/5237>`_) -- Fixed "Regression: JS: wrong field-access codegen" - (`#5234 <https://github.com/nim-lang/Nim/issues/5234>`_) -- Fixed "fixes #5234" - (`#5240 <https://github.com/nim-lang/Nim/issues/5240>`_) -- Fixed "JS Codegen: duplicated fields in object constructor" - (`#5271 <https://github.com/nim-lang/Nim/issues/5271>`_) -- Fixed "RFC: improving JavaScript FFI" - (`#4873 <https://github.com/nim-lang/Nim/issues/4873>`_) -- Fixed "Wrong result type when using bitwise and" - (`#5216 <https://github.com/nim-lang/Nim/issues/5216>`_) -- Fixed "upcoming.asyncdispatch is prone to memory leaks" - (`#5290 <https://github.com/nim-lang/Nim/issues/5290>`_) -- Fixed "Using threadvars leads to crash on Windows when threads are created/destroyed" - (`#5301 <https://github.com/nim-lang/Nim/issues/5301>`_) -- Fixed "Type inferring templates do not work with non-ref types." - (`#4973 <https://github.com/nim-lang/Nim/issues/4973>`_) -- Fixed "Nimble package list no longer works on lib.html" - (`#5318 <https://github.com/nim-lang/Nim/issues/5318>`_) -- Fixed "Missing file name and line number in error message" - (`#4992 <https://github.com/nim-lang/Nim/issues/4992>`_) -- Fixed "ref type can't be converted to var parameter in VM" - (`#5327 <https://github.com/nim-lang/Nim/issues/5327>`_) -- Fixed "nimweb ignores the value of --parallelBuild" - (`#5328 <https://github.com/nim-lang/Nim/issues/5328>`_) -- Fixed "Cannot unregister/close AsyncEvent from within its handler" - (`#5331 <https://github.com/nim-lang/Nim/issues/5331>`_) -- Fixed "name collision with template instanciated generic inline function with inlined iterator specialization used from different modules" - (`#5285 <https://github.com/nim-lang/Nim/issues/5285>`_) -- Fixed "object in VM does not have value semantic" - (`#5269 <https://github.com/nim-lang/Nim/issues/5269>`_) -- Fixed "Unstable tuple destructuring behavior in Nim VM" - (`#5221 <https://github.com/nim-lang/Nim/issues/5221>`_) -- Fixed "nre module breaks os templates" - (`#4996 <https://github.com/nim-lang/Nim/issues/4996>`_) -- Fixed "Cannot implement distinct seq with setLen" - (`#5090 <https://github.com/nim-lang/Nim/issues/5090>`_) -- Fixed "await inside array/dict literal produces invalid code" - (`#5314 <https://github.com/nim-lang/Nim/issues/5314>`_) - |