Prep for v0.12.0
This commit is contained in:
parent
b186493f01
commit
30cc353831
5 changed files with 399 additions and 348 deletions
|
|
@ -1808,10 +1808,10 @@ const
|
||||||
NimMajor*: int = 0
|
NimMajor*: int = 0
|
||||||
## is the major number of Nim's version.
|
## is the major number of Nim's version.
|
||||||
|
|
||||||
NimMinor*: int = 11
|
NimMinor*: int = 12
|
||||||
## is the minor number of Nim's version.
|
## is the minor number of Nim's version.
|
||||||
|
|
||||||
NimPatch*: int = 3
|
NimPatch*: int = 0
|
||||||
## is the patch number of Nim's version.
|
## is the patch number of Nim's version.
|
||||||
|
|
||||||
NimVersion*: string = $NimMajor & "." & $NimMinor & "." & $NimPatch
|
NimVersion*: string = $NimMajor & "." & $NimMinor & "." & $NimPatch
|
||||||
|
|
|
||||||
712
web/news.txt
712
web/news.txt
|
|
@ -2,6 +2,374 @@
|
||||||
News
|
News
|
||||||
====
|
====
|
||||||
|
|
||||||
|
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
|
||||||
|
`downloads <downloads.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
|
||||||
|
-----------------------------------------
|
||||||
|
- ``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``.
|
||||||
|
|
||||||
|
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
|
2015-10-16 First Nim conference
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
|
|
@ -30,350 +398,6 @@ can be found `here <https://nimworkshop.splashthat.com/>`_.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
..
|
|
||||||
2015-xx-xx Version 0.11.4 released
|
|
||||||
==================================
|
|
||||||
|
|
||||||
Changes affecting backwards compatibility
|
|
||||||
-----------------------------------------
|
|
||||||
- ``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``.
|
|
||||||
|
|
||||||
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-05-04 Version 0.11.2 released
|
2015-05-04 Version 0.11.2 released
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,27 @@ General FAQ
|
||||||
shared memory heap is also provided for the increased efficiency that results
|
shared memory heap is also provided for the increased efficiency that results
|
||||||
from that model.
|
from that model.
|
||||||
|
|
||||||
|
..
|
||||||
|
|
||||||
|
.. container:: standout
|
||||||
|
|
||||||
|
Why should I use Nim?
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
It's a conservative language in a sense that we stick to features that have
|
||||||
|
proven themselves for larger scale programming. But it's revolutionary by
|
||||||
|
the features which have been laid on top.
|
||||||
|
|
||||||
|
One of Nim's goals is to increase developer productivity without sacrificing
|
||||||
|
the produced software's stability. The way that this is done is by providing
|
||||||
|
|
||||||
|
Depending on your use case.
|
||||||
|
|
||||||
|
Nim is one of the few programming languages in the world which allows you to
|
||||||
|
|
||||||
|
|
||||||
|
The language inventor describes it as the ultimate programming language
|
||||||
|
with features which make it perfect for just about any problem.
|
||||||
|
|
||||||
.. container:: standout
|
.. container:: standout
|
||||||
|
|
||||||
|
|
@ -124,7 +145,8 @@ General FAQ
|
||||||
*Procedure* used to be the common term as opposed to a *function* which is a
|
*Procedure* used to be the common term as opposed to a *function* which is a
|
||||||
mathematical entity that has no side effects. It is planned to have ``func``
|
mathematical entity that has no side effects. It is planned to have ``func``
|
||||||
as syntactic sugar for ``proc {.noSideEffect.}`` and ``func`` is already a
|
as syntactic sugar for ``proc {.noSideEffect.}`` and ``func`` is already a
|
||||||
keyword.
|
keyword. Naming it ``def`` would not make sense because Nim also provides a
|
||||||
|
``iterator`` and ``method`` keywords, whereas ``def`` stands for ``define``.
|
||||||
|
|
||||||
|
|
||||||
Compilation FAQ
|
Compilation FAQ
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
<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">
|
<a class="news" href="news.html#Z2015-10-16-first-nim-conference">
|
||||||
<h4>October 16, 2015</h4>
|
<h4>October 16, 2015</h4>
|
||||||
<p>First official Nim conference will be in Kyiv!</p>
|
<p>First official Nim conference will be in Kyiv!</p>
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ srcdoc2: "packages/docutils/rst;packages/docutils/rstast"
|
||||||
srcdoc2: "packages/docutils/rstgen;pure/logging;pure/asyncdispatch;pure/asyncnet"
|
srcdoc2: "packages/docutils/rstgen;pure/logging;pure/asyncdispatch;pure/asyncnet"
|
||||||
srcdoc2: "deprecated/pure/rawsockets;pure/asynchttpserver;pure/net;pure/selectors;pure/future"
|
srcdoc2: "deprecated/pure/rawsockets;pure/asynchttpserver;pure/net;pure/selectors;pure/future"
|
||||||
srcdoc2: "deprecated/pure/ftpclient"
|
srcdoc2: "deprecated/pure/ftpclient"
|
||||||
srcdoc2: "pure/asyncfile"
|
srcdoc2: "pure/asyncfile;pure/asyncftpclient"
|
||||||
srcdoc2: "pure/md5;pure/rationals"
|
srcdoc2: "pure/md5;pure/rationals"
|
||||||
srcdoc2: "posix/posix"
|
srcdoc2: "posix/posix"
|
||||||
srcdoc2: "pure/fenv"
|
srcdoc2: "pure/fenv"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue