123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- Version 0.16.0 released
- =======================
- .. container:: metadata
- Posted by The Nim Team on 08/01/2017
- We're happy to announce that the latest release of Nim, version 0.16.0, is now
- available!
- As always, you can grab the latest version from the
- `downloads page <http://nim-lang.org/download.html>`_.
- This release includes over 80 bug fixes and improvements. To see a full list
- of changes, take a look at the detailed changelog
- `below <#changelog>`_.
- Some of the most significant changes in this release include: a major new
- Nimble release, an improved import syntax, and the stabilisation of
- name mangling rules enabling faster compile times.
- The new Nimble release that is included with Nim 0.16.0 includes a variety of
- new features and bug fixes. The most prominent of which is the improved output
- system, as shown in the figure below.
- .. raw::html
- <a href="../assets/news/images/0.16.0/nimble.png">
- <img src="../assets/news/images/0.16.0/nimble.png" alt="Nimble 0.8.0" style="width:100%"/>
- </a>
- For a full list of changes in Nimble, see its
- `changelog <https://github.com/nim-lang/nimble/blob/master/changelog.markdown#080---05012017>`_.
- The new import syntax makes it easier to import multiple modules from the same
- package or directory. For example:
- .. code-block:: nim
- import compiler/ast, compiler/parser, compiler/lexer
- import compiler / [ast, parser, lexer]
- The two are equivalent, but the new latter syntax is less redundant.
- Finally, the code responsible for name mangling in the generated C and C++ code
- has been improved to reduce compile times. In particular, compile-time for
- the common edit-compile-run cycles have been reduced.
- Changelog
- ~~~~~~~~~
- Changes affecting backwards compatibility
- -----------------------------------------
- - ``staticExec`` now uses the directory of the nim file that contains the
- ``staticExec`` call as the current working directory.
- - ``TimeInfo.tzname`` has been removed from ``times`` module because it was
- broken. Because of this, the option ``"ZZZ"`` will no longer work in format
- strings for formatting and parsing.
- Library Additions
- -----------------
- - Added new parameter to ``error`` proc of ``macro`` module to provide better
- error message
- - Added new ``deques`` module intended to replace ``queues``.
- ``deques`` provides a superset of ``queues`` API with clear naming.
- ``queues`` module is now deprecated and will be removed in the future.
- - Added ``hideCursor``, ``showCursor``, ``terminalWidth``,
- ``terminalWidthIoctl`` and ``terminalSize`` to the ``terminal``
- `(doc) <http://nim-lang.org/docs/terminal.html>`_ module.
- - Added new module ``distros``
- `(doc) <http://nim-lang.org/docs/distros.html>`_ that can be used in Nimble
- packages to aid in supporting the OS's native package managers.
- Tool Additions
- --------------
- Compiler Additions
- ------------------
- - The C/C++ code generator has been rewritten to use stable
- name mangling rules. This means that compile times for
- edit-compile-run cycles are much reduced.
- Language Additions
- ------------------
- - The ``emit`` pragma now takes a list of Nim expressions instead
- of a single string literal. This list can easily contain non-strings
- like template parameters. This means ``emit`` works out of the
- box with templates and no new quoting rules needed to be introduced.
- The old way with backtick quoting is still supported but will be
- deprecated.
- .. code-block:: nim
- type Vector* {.importcpp: "std::vector", header: "<vector>".}[T] = object
- template `[]=`*[T](v: var Vector[T], key: int, val: T) =
- {.emit: [v, "[", key, "] = ", val, ";"].}
- proc setLen*[T](v: var Vector[T]; size: int) {.importcpp: "resize", nodecl.}
- proc `[]`*[T](v: var Vector[T], key: int): T {.importcpp: "(#[#])", nodecl.}
- proc main =
- var v: Vector[float]
- v.setLen 1
- v[0] = 6.0
- echo v[0]
- - The ``import`` statement now supports importing multiple modules from
- the same directory:
- .. code-block:: nim
- import compiler / [ast, parser, lexer]
- Is a shortcut for:
- .. code-block:: nim
- import compiler / ast, compiler / parser, compiler / lexer
- 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%222016-10-23+..+2017-01-07%22+>`_.
- - Fixed "staticRead and staticExec have different working directories"
- (`#4871 <https://github.com/nim-lang/Nim/issues/4871>`_)
- - Fixed "CountTable doesn't support the '==' operator"
- (`#4901 <https://github.com/nim-lang/Nim/issues/4901>`_)
- - Fixed "documentation for module sequtls apply proc"
- (`#4386 <https://github.com/nim-lang/Nim/issues/4386>`_)
- - Fixed "Operator `==` for CountTable does not work."
- (`#4946 <https://github.com/nim-lang/Nim/issues/4946>`_)
- - Fixed "sysFatal (IndexError) with parseUri and the / operator"
- (`#4959 <https://github.com/nim-lang/Nim/issues/4959>`_)
- - Fixed "initialSize parameter does not work in OrderedTableRef"
- (`#4940 <https://github.com/nim-lang/Nim/issues/4940>`_)
- - Fixed "error proc from macro library could have a node parameter"
- (`#4915 <https://github.com/nim-lang/Nim/issues/4915>`_)
- - Fixed "Segfault when comparing OrderedTableRef with nil"
- (`#4974 <https://github.com/nim-lang/Nim/issues/4974>`_)
- - Fixed "Bad codegen when comparing isNil results"
- (`#4975 <https://github.com/nim-lang/Nim/issues/4975>`_)
- - Fixed "OrderedTable cannot delete entry with empty string or 0 key"
- (`#5035 <https://github.com/nim-lang/Nim/issues/5035>`_)
- - Fixed "Deleting specific keys from ordered table leaves it in invalid state."
- (`#5057 <https://github.com/nim-lang/Nim/issues/5057>`_)
- - Fixed "Paths are converted to lowercase on Windows"
- (`#5076 <https://github.com/nim-lang/Nim/issues/5076>`_)
- - Fixed "toTime(getGMTime(...)) doesn't work correctly when local timezone is not UTC"
- (`#5065 <https://github.com/nim-lang/Nim/issues/5065>`_)
- - Fixed "out of memory error from `test=` type proc call when parameter is a call to a table's `[]` proc"
- (`#5079 <https://github.com/nim-lang/Nim/issues/5079>`_)
- - Fixed "Incorrect field order in object construction"
- (`#5055 <https://github.com/nim-lang/Nim/issues/5055>`_)
- - Fixed "Incorrect codegen when importing nre with C++ backend (commit 8494338)"
- (`#5081 <https://github.com/nim-lang/Nim/issues/5081>`_)
- - Fixed "Templates, {.emit.}, and backtick interpolation do not work together"
- (`#4730 <https://github.com/nim-lang/Nim/issues/4730>`_)
- - Fixed "Regression: getType fails in certain cases"
- (`#5129 <https://github.com/nim-lang/Nim/issues/5129>`_)
- - Fixed "CreateThread doesn't accept functions with generics"
- (`#43 <https://github.com/nim-lang/Nim/issues/43>`_)
- - Fixed "No instantiation information when template has error"
- (`#4308 <https://github.com/nim-lang/Nim/issues/4308>`_)
- - Fixed "realloc leaks"
- (`#4818 <https://github.com/nim-lang/Nim/issues/4818>`_)
- - Fixed "Regression: getType"
- (`#5131 <https://github.com/nim-lang/Nim/issues/5131>`_)
- - Fixed "Code generation for generics broken by sighashes"
- (`#5135 <https://github.com/nim-lang/Nim/issues/5135>`_)
- - Fixed "Regression: importc functions are not declared in generated C code"
- (`#5136 <https://github.com/nim-lang/Nim/issues/5136>`_)
- - Fixed "Calling split("") on string hangs program"
- (`#5119 <https://github.com/nim-lang/Nim/issues/5119>`_)
- - Fixed "Building dynamic library: undefined references (Linux)"
- (`#4775 <https://github.com/nim-lang/Nim/issues/4775>`_)
- - Fixed "Bad codegen for distinct + importc - sighashes regression"
- (`#5137 <https://github.com/nim-lang/Nim/issues/5137>`_)
- - Fixed "C++ codegen regression: memset called on a result variable of `importcpp` type"
- (`#5140 <https://github.com/nim-lang/Nim/issues/5140>`_)
- - Fixed "C++ codegen regression: using channels leads to broken C++ code"
- (`#5142 <https://github.com/nim-lang/Nim/issues/5142>`_)
- - Fixed "Ambiguous call when overloading var and non-var with generic type"
- (`#4519 <https://github.com/nim-lang/Nim/issues/4519>`_)
- - Fixed "[Debian]: build.sh error: unknown processor: aarch64"
- (`#2147 <https://github.com/nim-lang/Nim/issues/2147>`_)
- - Fixed "RFC: asyncdispatch.poll behaviour"
- (`#5155 <https://github.com/nim-lang/Nim/issues/5155>`_)
- - Fixed "Can't access enum members through alias (possible sighashes regression)"
- (`#5148 <https://github.com/nim-lang/Nim/issues/5148>`_)
- - Fixed "Type, declared in generic proc body, leads to incorrect codegen (sighashes regression)"
- (`#5147 <https://github.com/nim-lang/Nim/issues/5147>`_)
- - Fixed "Compiler SIGSEGV when mixing method and proc"
- (`#5161 <https://github.com/nim-lang/Nim/issues/5161>`_)
- - Fixed "Compile-time SIGSEGV when declaring .importcpp method with return value "
- (`#3848 <https://github.com/nim-lang/Nim/issues/3848>`_)
- - Fixed "Variable declaration incorrectly parsed"
- (`#2050 <https://github.com/nim-lang/Nim/issues/2050>`_)
- - Fixed "Invalid C code when naming a object member "linux""
- (`#5171 <https://github.com/nim-lang/Nim/issues/5171>`_)
- - Fixed "[Windows] MinGW within Nim install is missing libraries"
- (`#2723 <https://github.com/nim-lang/Nim/issues/2723>`_)
- - Fixed "async: annoying warning for future.finished"
- (`#4948 <https://github.com/nim-lang/Nim/issues/4948>`_)
- - Fixed "new import syntax doesn't work?"
- (`#5185 <https://github.com/nim-lang/Nim/issues/5185>`_)
- - Fixed "Fixes #1994"
- (`#4874 <https://github.com/nim-lang/Nim/issues/4874>`_)
- - Fixed "Can't tell return value of programs with staticExec"
- (`#1994 <https://github.com/nim-lang/Nim/issues/1994>`_)
- - Fixed "startProcess() on Windows with poInteractive: Second call fails ("Alle Pipeinstanzen sind ausgelastet")"
- (`#5179 <https://github.com/nim-lang/Nim/issues/5179>`_)
|