mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-31 18:32:11 +00:00
Prep for v0.12.0
This commit is contained in:
@@ -1808,10 +1808,10 @@ const
|
||||
NimMajor*: int = 0
|
||||
## is the major number of Nim's version.
|
||||
|
||||
NimMinor*: int = 11
|
||||
NimMinor*: int = 12
|
||||
## is the minor number of Nim's version.
|
||||
|
||||
NimPatch*: int = 3
|
||||
NimPatch*: int = 0
|
||||
## is the patch number of Nim's version.
|
||||
|
||||
NimVersion*: string = $NimMajor & "." & $NimMinor & "." & $NimPatch
|
||||
|
||||
712
web/news.txt
712
web/news.txt
@@ -2,6 +2,374 @@
|
||||
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
|
||||
===============================
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -23,6 +23,27 @@ General FAQ
|
||||
shared memory heap is also provided for the increased efficiency that results
|
||||
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
|
||||
|
||||
@@ -124,7 +145,8 @@ General FAQ
|
||||
*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``
|
||||
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
|
||||
|
||||
@@ -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">
|
||||
<h4>October 16, 2015</h4>
|
||||
<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: "deprecated/pure/rawsockets;pure/asynchttpserver;pure/net;pure/selectors;pure/future"
|
||||
srcdoc2: "deprecated/pure/ftpclient"
|
||||
srcdoc2: "pure/asyncfile"
|
||||
srcdoc2: "pure/asyncfile;pure/asyncftpclient"
|
||||
srcdoc2: "pure/md5;pure/rationals"
|
||||
srcdoc2: "posix/posix"
|
||||
srcdoc2: "pure/fenv"
|
||||
|
||||
Reference in New Issue
Block a user