preparations for version 0.11.0

This commit is contained in:
Araq 2015-04-30 02:01:38 +02:00
commit a4f8a89c85
8 changed files with 467 additions and 349 deletions

View file

@ -126,12 +126,108 @@ Files: "examples/*.txt"
Files: "examples/*.cfg" Files: "examples/*.cfg"
Files: "examples/*.tmpl" Files: "examples/*.tmpl"
Files: "tests/actiontable/*.nim"
Files: "tests/alias/*.nim"
Files: "tests/ambsym/*.nim"
Files: "tests/array/*.nim"
Files: "tests/assign/*.nim"
Files: "tests/astoverload/*.nim"
Files: "tests/async/*.nim"
Files: "tests/benchmarks/*.nim"
Files: "tests/bind/*.nim"
Files: "tests/borrow/*.nim"
Files: "tests/casestmt/*.nim"
Files: "tests/ccgbugs/*.nim"
Files: "tests/clearmsg/*.nim"
Files: "tests/closure/*.nim"
Files: "tests/cnstseq/*.nim"
Files: "tests/collections/*.nim"
Files: "tests/compiles/*.nim"
Files: "tests/concat/*.nim"
Files: "tests/concepts/*.nim"
Files: "tests/constr/*.nim"
Files: "tests/constraints/*.nim"
Files: "tests/controlflow/*.nim"
Files: "tests/converter/*.nim"
Files: "tests/cpp/*.nim"
Files: "tests/defaultprocparam/*.nim"
Files: "tests/deprecated/*.nim"
Files: "tests/destructor/*.nim"
Files: "tests/dir with space/*.nim"
Files: "tests/discard/*.nim"
Files: "tests/distinct/*.nim"
Files: "tests/dll/*.nim"
Files: "tests/effects/*.nim"
Files: "tests/enum/*.nim"
Files: "tests/exception/*.nim"
Files: "tests/exprs/*.nim"
Files: "tests/fields/*.nim"
Files: "tests/float/*.nim"
Files: "tests/friends/*.nim"
Files: "tests/gc/*.nim"
Files: "tests/generics/*.nim"
Files: "tests/gensym/*.nim"
Files: "tests/global/*.nim"
Files: "tests/implicit/*.nim"
Files: "tests/init/*.nim"
Files: "tests/iter/*.nim"
Files: "tests/js/*.nim"
Files: "tests/js/*.cfg"
Files: "tests/let/*.nim"
Files: "tests/lexer/*.nim"
Files: "tests/lookups/*.nim"
Files: "tests/macros/*.nim"
Files: "tests/magics/*.nim"
Files: "tests/metatype/*.nim"
Files: "tests/method/*.nim"
Files: "tests/misc/*.nim"
Files: "tests/modules/*.nim"
Files: "tests/namedparams/*.nim"
Files: "tests/notnil/*.nim"
Files: "tests/objects/*.nim"
Files: "tests/objvariant/*.nim"
Files: "tests/openarray/*.nim"
Files: "tests/osproc/*.nim"
Files: "tests/overflw/*.nim"
Files: "tests/overload/*.nim"
Files: "tests/parallel/*.nim"
Files: "tests/parallel/*.cfg"
Files: "tests/parser/*.nim"
Files: "tests/pragmas/*.nim"
Files: "tests/proc/*.nim"
Files: "tests/procvar/*.nim"
Files: "tests/range/*.nim"
Files: "tests/rodfiles/*.nim"
Files: "tests/seq/*.nim"
Files: "tests/sets/*.nim"
Files: "tests/showoff/*.nim"
Files: "tests/specialops/*.nim"
Files: "tests/stdlib/*.nim"
Files: "tests/system/*.nim"
Files: "tests/template/*.nim"
Files: "tests/testament/*.nim"
Files: "tests/testdata/*.nim"
Files: "tests/threads/*.nim"
Files: "tests/threads/*.cfg"
Files: "tests/trmacros/*.nim"
Files: "tests/tuples/*.nim"
Files: "tests/typerel/*.nim"
Files: "tests/types/*.nim"
Files: "tests/usingstmt/*.nim"
Files: "tests/varres/*.nim"
Files: "tests/varstmt/*.nim"
Files: "tests/vm/*.nim"
Files: "tests/readme.txt"
Files: "tests/testament/css/*.css"
Files: "lib/pure/unidecode/unidecode.dat"
[Windows] [Windows]
Files: "bin/nim.exe" Files: "bin/nim.exe"
Files: "bin/nim_debug.exe"
Files: "bin/c2nim.exe" Files: "bin/c2nim.exe"
Files: "bin/nimgrep.exe" Files: "bin/nimgrep.exe"
Files: "bin/nimsuggest.exe"
Files: "bin/nimble.exe"
Files: "bin/*.dll"
Files: "dist/*.dll" Files: "dist/*.dll"
Files: "koch.exe" Files: "koch.exe"
@ -142,7 +238,7 @@ BinPath: r"bin;dist\mingw\bin;dist"
; Section | dir | zipFile | size hint (in KB) | url | exe start menu entry ; Section | dir | zipFile | size hint (in KB) | url | exe start menu entry
Download: r"Documentation|doc|docs.zip|13824|http://nim-lang.org/download/docs-${version}.zip|overview.html" Download: r"Documentation|doc|docs.zip|13824|http://nim-lang.org/download/docs-${version}.zip|overview.html"
Download: r"C Compiler (MingW)|dist|mingw.zip|82944|http://nim-lang.org/download/${mingw}.zip" Download: r"C Compiler (MingW)|dist|mingw.zip|82944|http://nim-lang.org/download/${mingw}.zip"
Download: r"Aporia IDE|dist|aporia.zip|97997|http://nim-lang.org/download/aporia-0.1.3.zip|aporia\bin\aporia.exe" Download: r"Aporia IDE|dist|aporia.zip|97997|http://nim-lang.org/download/aporia-0.3.0.zip|aporia\bin\aporia.exe"
; for now only NSIS supports optional downloads ; for now only NSIS supports optional downloads
[UnixBin] [UnixBin]

View file

@ -119,7 +119,7 @@ proc buildTool(toolname, args: string) =
proc nsis(args: string) = proc nsis(args: string) =
# make sure we have generated the niminst executables: # make sure we have generated the niminst executables:
buildTool("tools/niminst/niminst", args) buildTool("tools/niminst/niminst", args)
buildTool("tools/nimgrep", args) #buildTool("tools/nimgrep", args)
# produce 'nim_debug.exe': # produce 'nim_debug.exe':
exec "nim c compiler" / "nim.nim" exec "nim c compiler" / "nim.nim"
copyExe("compiler/nim".exe, "bin/nim_debug".exe) copyExe("compiler/nim".exe, "bin/nim_debug".exe)

View file

@ -1532,10 +1532,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 = 10 NimMinor*: int = 11
## 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

View file

@ -593,8 +593,9 @@ proc targzDist(c: var ConfigData) =
let oldDir = getCurrentDir() let oldDir = getCurrentDir()
setCurrentDir(tmpDir) setCurrentDir(tmpDir)
try: try:
if execShellCmd("7z a -ttar $1.tar $1" % proj) != 0 or #if execShellCmd("7z a -ttar $1.tar $1" % proj) != 0 or
execShellCmd("7z a -tgzip $1.tar.gz $1.tar" % proj) != 0: # execShellCmd("7z a -tgzip $1.tar.gz $1.tar" % proj) != 0 or
if execShellCmd("7z a -tzip $1.zip $1" % proj) != 0:
echo("External program failed") echo("External program failed")
finally: finally:
setCurrentDir(oldDir) setCurrentDir(oldDir)

View file

@ -1,5 +1,5 @@
#! stdtmpl(subsChar='?') | standard #! stdtmpl(subsChar='?') | standard
#proc generateNsisSetup(c: ConfigData): string = #proc generateNsisSetup(c: ConfigData): string =
# result = "; NSIS script generated by niminst\n" & # result = "; NSIS script generated by niminst\n" &
# "; To regenerate run ``niminst nsis`` or ``koch nsis``\n" # "; To regenerate run ``niminst nsis`` or ``koch nsis``\n"
@ -35,8 +35,8 @@
; Default installation folder ; Default installation folder
; This is changed later (in .onInit) to the root directory, if possible. ; This is changed later (in .onInit) to the root directory, if possible.
InstallDir "$LOCALAPPDATA\?{c.name}" InstallDir "$LOCALAPPDATA\?{c.name}-?{c.version}"
; Get installation folder from registry if available ; Get installation folder from registry if available
InstallDirRegKey HKCU "Software\c.name\c.version" "" InstallDirRegKey HKCU "Software\c.name\c.version" ""
@ -86,14 +86,14 @@
!insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH !insertmacro MUI_PAGE_FINISH
; Setup the uninstaller pages ; Setup the uninstaller pages
!insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_INSTFILES
;-------------------------------- ;--------------------------------
;Languages ;Languages
!insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "English"
;-------------------------------- ;--------------------------------
@ -104,7 +104,7 @@
; Nim binary. ; Nim binary.
Section "Core Files" CoreSection Section "Core Files" CoreSection
; This is a mandotory section ; This is a mandotory section
SectionIn RO SectionIn RO
; Output files to the base installation directory ; Output files to the base installation directory
SetOutPath "$INSTDIR" SetOutPath "$INSTDIR"
@ -164,7 +164,7 @@
; The downloadable sections. These sections are automatically generated by ; The downloadable sections. These sections are automatically generated by
; niminst and the template filters. ; niminst and the template filters.
#var i = 0 #var i = 0
#for download in c.downloads: #for download in c.downloads:
# inc i # inc i
# let d = download.split('|') # let d = download.split('|')
@ -207,7 +207,7 @@
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\?{e}.lnk" "$INSTDIR\?dir\?{startMenuEntry.toWin}" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\?{e}.lnk" "$INSTDIR\?dir\?{startMenuEntry.toWin}"
!insertmacro MUI_STARTMENU_WRITE_END !insertmacro MUI_STARTMENU_WRITE_END
# end if # end if
ignore: ignore:
SectionEnd SectionEnd
#end #end

View file

@ -13,8 +13,8 @@ Binaries
-------- --------
Unfortunately for now we only provide builds for Windows. Unfortunately for now we only provide builds for Windows.
* 32 bit: `nim-0.10.2_x32.exe <download/nim-0.10.2_x32.exe>`_ * 32 bit: `nim-0.11.0_x32.exe <download/nim-0.11.0_x32.exe>`_
* 64 bit: `nim-0.10.2_x64.exe <download/nim-0.10.2_x64.exe>`_ * 64 bit: `nim-0.11.0_x64.exe <download/nim-0.11.0_x64.exe>`_
Installation based on generated C code Installation based on generated C code
@ -24,8 +24,8 @@ This installation method is the preferred way for Linux, Mac OS X, and other Uni
like systems. Binary packages may be provided later. like systems. Binary packages may be provided later.
Download `nim-0.10.2.zip <download/nim-0.10.2.zip>`_, extract it and follow Download `nim-0.11.0.zip <download/nim-0.11.0.zip>`_, extract it and
these instructions: follow these instructions:
* sh build.sh * sh build.sh
* Add ``$your_install_dir/bin`` to your PATH. * Add ``$your_install_dir/bin`` to your PATH.

View file

@ -2,349 +2,370 @@
News News
==== ====
..
2015-03-01 Version 0.11.0 released 2015-04-30 Version 0.11.0 released
================================== ==================================
Changes affecting backwards compatibility What's left to be done
----------------------------------------- ~~~~~~~~~~~~~~~~~~~~~~
- Parameter names are finally properly ``gensym``'ed. This can break The 1.0 release is expected by the end of this year. Rumors say it will be in
templates though that used to rely on the fact that they are not. summer 2015. What's left:
(Bug #1915.) This means this doesn't compile anymore:
.. code-block:: nim * Bug fixes, bug fixes, bug fixes!
* ``immediate`` templates and macros will be deprecated as these will soon be
template doIt(body: stmt) {.immediate.} = completely unnecessary, instead the ``typed`` or ``untyped`` metatypes can
# this used to inject the 'str' parameter: be used.
proc res(str: string) = * The standard library needs cleanups and use the features we have for
body concurrency and parallelism.
doIt:
echo str # Error: undeclared identifier: 'str'
Declare the ``doIt`` template as ``immediate, dirty`` to get the old
behaviour.
- Tuple field names are not ignored anymore, this caused too many problems
in practice so now the behaviour as it was for version 0.9.6: If field
names exist for the tuple type, they are checked.
- ``logging.level`` and ``logging.handlers`` are no longer exported.
``addHandler``, ``getHandlers``, ``setLogFilter`` and ``getLogFilter``
should be used instead.
- ``nim idetools`` has been replaced by a separate tool `nimsuggest`_.
- *arrow like* operators are not right associative anymore.
- *arrow like* operators are now required to end with either ``->``, ``~>`` or
``=>``, not just ``>``. Examples of operators still considered arrow like:
``->``, ``==>``, ``+=>``. On the other hand, the following operators are now
considered regular operators again: ``|>``, ``-+>``, etc.
- Typeless parameters are now only allowed in templates and macros. The old
way turned out to be too error-prone.
- The 'addr' and 'type' operators are now parsed as unary function
application. This means ``type(x).name`` is now parsed as ``(type(x)).name``
and not as ``type((x).name)``. Note that this also affects the AST
structure; for immediate macro parameters ``nkCall('addr', 'x')`` is
produced instead of ``nkAddr('x')``.
- ``concept`` is now a keyword and is used instead of ``generic``.
- The ``inc``, ``dec``, ``+=``, ``-=`` builtins now produce OverflowError
exceptions. This means code like the following:
.. code-block:: nim
var x = low(T)
while x <= high(T):
echo x
inc x
Needs to be replaced by something like this:
.. code-block:: nim
var x = low(T).int
while x <= high(T).int:
echo x.T
inc x
- **Negative indexing for slicing does not work anymore!** Instead
of ``a[0.. -1]`` you can
use ``a[0.. ^1]``. This also works with accessing a single
element ``a[^1]``. Note that we cannot detect this reliably as it is
determined at **runtime** whether negative indexing is used!
``a[0.. -1]`` now produces the empty string/sequence.
- The compiler now warns about code like ``foo +=1`` which uses inconsistent
spacing around binary operators. Later versions of the language will parse
these as unary operators instead so that ``echo $foo`` finally can do what
people expect it to do.
- ``system.untyped`` and ``system.typed`` have been introduced as aliases
for ``expr`` and ``stmt``. The new names capture the semantics much better
and most likely ``expr`` and ``stmt`` will be deprecated in favor of the
new names.
- The ``split`` method in module ``re`` has changed. It now handles the case
of matches having a length of 0, and empty strings being yielded from the
iterator. A notable change might be that a pattern being matched at the
beginning and end of a string, will result in an empty string being produced
at the start and the end of the iterator.
Language Additions
------------------
- For empty ``case object`` branches ``discard`` can finally be used instead
of ``nil``.
- Automatic dereferencing is now done for the first argument of a routine
call if overloading resolution produces no match otherwise. This feature
has to be enabled with the `experimental`_ pragma.
- Objects that do not use inheritance nor ``case`` can be put into ``const``
sections. This means that finally this is possible and produces rather
nice code:
.. code-block:: nim
import tables
const
foo = {"ah": "finally", "this": "is", "possible.": "nice!"}.toTable()
- Ordinary parameters can follow after a varargs parameter. This means the
following is finally accepted by the compiler:
.. code-block:: nim Changes affecting backwards compatibility
template takesBlock(a, b: int, x: varargs[expr]; blck: stmt) = -----------------------------------------
blck
echo a, b
takesBlock 1, 2, "some", 0.90, "random stuff": - Parameter names are finally properly ``gensym``'ed. This can break
echo "yay" templates though that used to rely on the fact that they are not.
(Bug #1915.) This means this doesn't compile anymore:
- Overloading by 'var T' is now finally possible: .. code-block:: nim
.. code-block:: nim template doIt(body: stmt) {.immediate.} =
proc varOrConst(x: var int) = echo "var" # this used to inject the 'str' parameter:
proc varOrConst(x: int) = echo "const" proc res(str: string) =
body
var x: int doIt:
varOrConst(x) # "var" echo str # Error: undeclared identifier: 'str'
varOrConst(45) # "const"
- Array and seq indexing can now use the builtin ``^`` operator to access Declare the ``doIt`` template as ``immediate, dirty`` to get the old
things from backwards: ``a[^1]`` is like Python's ``a[-1]``. behaviour.
- A first version of the specification and implementation of the overloading - Tuple field names are not ignored anymore, this caused too many problems
of the assignment operator has arrived! in practice so now the behaviour as it was for version 0.9.6: If field
- ``system.len`` for strings and sequences now returns 0 for nil. names exist for the tuple type, they are checked.
- ``logging.level`` and ``logging.handlers`` are no longer exported.
``addHandler``, ``getHandlers``, ``setLogFilter`` and ``getLogFilter``
should be used instead.
- ``nim idetools`` has been replaced by a separate tool `nimsuggest`_.
- *arrow like* operators are not right associative anymore.
- *arrow like* operators are now required to end with either ``->``, ``~>`` or
``=>``, not just ``>``. Examples of operators still considered arrow like:
``->``, ``==>``, ``+=>``. On the other hand, the following operators are now
considered regular operators again: ``|>``, ``-+>``, etc.
- Typeless parameters are now only allowed in templates and macros. The old
way turned out to be too error-prone.
- The 'addr' and 'type' operators are now parsed as unary function
application. This means ``type(x).name`` is now parsed as ``(type(x)).name``
and not as ``type((x).name)``. Note that this also affects the AST
structure; for immediate macro parameters ``nkCall('addr', 'x')`` is
produced instead of ``nkAddr('x')``.
- ``concept`` is now a keyword and is used instead of ``generic``.
- The ``inc``, ``dec``, ``+=``, ``-=`` builtins now produce OverflowError
exceptions. This means code like the following:
- A single underscore can now be used to discard values when unpacking tuples. .. code-block:: nim
- ``marshal.$$`` and ``marshal.to`` can be executed at compile-time. var x = low(T)
- Interoperability with C++ improved tremendously; C++'s templates and while x <= high(T):
operators can be wrapped directly. See `this <nimc.html#ImportCpp-pragma>`_ echo x
for more information. inc x
Needs to be replaced by something like this:
.. code-block:: nim
var x = low(T).int
while x <= high(T).int:
echo x.T
inc x
- **Negative indexing for slicing does not work anymore!** Instead
of ``a[0.. -1]`` you can
use ``a[0.. ^1]``. This also works with accessing a single
element ``a[^1]``. Note that we cannot detect this reliably as it is
determined at **runtime** whether negative indexing is used!
``a[0.. -1]`` now produces the empty string/sequence.
- The compiler now warns about code like ``foo +=1`` which uses inconsistent
spacing around binary operators. Later versions of the language will parse
these as unary operators instead so that ``echo $foo`` finally can do what
people expect it to do.
- ``system.untyped`` and ``system.typed`` have been introduced as aliases
for ``expr`` and ``stmt``. The new names capture the semantics much better
and most likely ``expr`` and ``stmt`` will be deprecated in favor of the
new names.
- The ``split`` method in module ``re`` has changed. It now handles the case
of matches having a length of 0, and empty strings being yielded from the
iterator. A notable change might be that a pattern being matched at the
beginning and end of a string, will result in an empty string being produced
at the start and the end of the iterator.
Language Additions
------------------
- For empty ``case object`` branches ``discard`` can finally be used instead
of ``nil``.
- Automatic dereferencing is now done for the first argument of a routine
call if overloading resolution produces no match otherwise. This feature
has to be enabled with the `experimental`_ pragma.
- Objects that do not use inheritance nor ``case`` can be put into ``const``
sections. This means that finally this is possible and produces rather
nice code:
.. code-block:: nim
import tables
const
foo = {"ah": "finally", "this": "is", "possible.": "nice!"}.toTable()
Library additions - Ordinary parameters can follow after a varargs parameter. This means the
----------------- following is finally accepted by the compiler:
- ``reversed`` proc added to the ``unicode`` module. .. code-block:: nim
- Added multipart param to httpclient's ``post`` and ``postContent`` together template takesBlock(a, b: int, x: varargs[expr]; blck: stmt) =
with a ``newMultipartData`` proc. blck
- Added `%*` operator for JSON. echo a, b
- The compiler is now available as Nimble package for c2nim.
- Added ``..^`` and ``..<`` templates to system so that the rather annoying takesBlock 1, 2, "some", 0.90, "random stuff":
space between ``.. <`` and ``.. ^`` is not necessary anymore. echo "yay"
- Added ``system.xlen`` for strings and sequences to get back the old ``len``
operation that doesn't check for ``nil`` for efficiency. - Overloading by 'var T' is now finally possible:
.. code-block:: nim
proc varOrConst(x: var int) = echo "var"
proc varOrConst(x: int) = echo "const"
var x: int
varOrConst(x) # "var"
varOrConst(45) # "const"
- Array and seq indexing can now use the builtin ``^`` operator to access
things from backwards: ``a[^1]`` is like Python's ``a[-1]``.
- A first version of the specification and implementation of the overloading
of the assignment operator has arrived!
- ``system.len`` for strings and sequences now returns 0 for nil.
- A single underscore can now be used to discard values when unpacking tuples:
.. code-block:: nim
let (path, _, _) = os.splitFile("path/file.ext")
Bugfixes - ``marshal.$$`` and ``marshal.to`` can be executed at compile-time.
-------- - Interoperability with C++ improved tremendously; C++'s templates and
operators can be wrapped directly. See
`this <nimc.html#additional-features-importcpp-pragma>`_
for more information.
Library additions
-----------------
- ``reversed`` proc added to the ``unicode`` module.
- Added multipart param to httpclient's ``post`` and ``postContent`` together
with a ``newMultipartData`` proc.
- Added `%*` operator for JSON.
- The compiler is now available as Nimble package for c2nim.
- Added ``..^`` and ``..<`` templates to system so that the rather annoying
space between ``.. <`` and ``.. ^`` is not necessary anymore.
- Added ``system.xlen`` for strings and sequences to get back the old ``len``
operation that doesn't check for ``nil`` for efficiency.
Bugfixes
--------
- Fixed internal compiler error when using ``char()`` in an echo call
(`#1788 <https://github.com/Araq/Nim/issues/1788>`_).
- Fixed Windows cross-compilation on Linux.
- Overload resolution now works for types distinguished only by a
``static[int]`` param
(`#1056 <https://github.com/Araq/Nim/issues/1056>`_).
- Other fixes relating to generic types and static params.
- Fixed some compiler crashes with unnamed tuples
(`#1774 <https://github.com/Araq/Nim/issues/1774>`_).
- Fixed ``channels.tryRecv`` blocking
(`#1816 <https://github.com/Araq/Nim/issues/1816>`_).
- Fixed generic instantiation errors with ``typedesc``
(`#419 <https://github.com/Araq/Nim/issues/419>`_).
- Fixed generic regression where the compiler no longer detected constant
expressions properly (`#544 <https://github.com/Araq/Nim/issues/544>`_).
- Fixed internal error with generic proc using ``static[T]`` in a specific
way (`#1049 <https://github.com/Araq/Nim/issues/1049>`_).
- More fixes relating to generics (`#1820 <https://github.com/Araq/Nim/issues/1820>`_,
`#1050 <https://github.com/Araq/Nim/issues/1050>`_,
`#1859 <https://github.com/Araq/Nim/issues/1859>`_,
`#1858 <https://github.com/Araq/Nim/issues/1858>`_).
- Fixed httpclient to properly encode queries.
- Many fixes to the ``uri`` module.
- Async sockets are now closed on error.
- Fixes to httpclient's handling of multipart data.
- Fixed GC segfaults with asynchronous sockets
(`#1796 <https://github.com/Araq/Nim/issues/1796>`_).
- Added more versions to openssl's DLL version list
(`076f993 <https://github.com/Araq/Nim/commit/076f993>`_).
- Fixed shallow copy in iterators being broken
(`#1803 <https://github.com/Araq/Nim/issues/1803>`_).
- ``nil`` can now be inserted into tables with the ``db_sqlite`` module
(`#1866 <https://github.com/Araq/Nim/issues/1866>`_).
- Fixed "Incorrect assembler generated"
(`#1907 <https://github.com/Araq/Nim/issues/1907>`_)
- Fixed "Expression templates that define macros are unusable in some contexts"
(`#1903 <https://github.com/Araq/Nim/issues/1903>`_)
- Fixed "a second level generic subclass causes the compiler to crash"
(`#1919 <https://github.com/Araq/Nim/issues/1919>`_)
- Fixed "nim 0.10.2 generates invalid AsyncHttpClient C code for MSVC "
(`#1901 <https://github.com/Araq/Nim/issues/1901>`_)
- Fixed "1 shl n produces wrong C code"
(`#1928 <https://github.com/Araq/Nim/issues/1928>`_)
- Fixed "Internal error on tuple yield"
(`#1838 <https://github.com/Araq/Nim/issues/1838>`_)
- Fixed "ICE with template"
(`#1915 <https://github.com/Araq/Nim/issues/1915>`_)
- Fixed "include the tool directory in the installer as it is required by koch"
(`#1947 <https://github.com/Araq/Nim/issues/1947>`_)
- Fixed "Can't compile if file location contains spaces on Windows"
(`#1955 <https://github.com/Araq/Nim/issues/1955>`_)
- Fixed "List comprehension macro only supports infix checks as guards"
(`#1920 <https://github.com/Araq/Nim/issues/1920>`_)
- Fixed "wrong field names of compatible tuples in generic types"
(`#1910 <https://github.com/Araq/Nim/issues/1910>`_)
- Fixed "Macros within templates no longer work as expected"
(`#1944 <https://github.com/Araq/Nim/issues/1944>`_)
- Fixed "Compiling for Standalone AVR broken in 0.10.2"
(`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
- Fixed "Compiling for Standalone AVR broken in 0.10.2"
(`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
- Fixed "Code generation for mitems with tuple elements"
(`#1833 <https://github.com/Araq/Nim/issues/1833>`_)
- Fixed "httpclient.HttpMethod should not be an enum"
(`#1962 <https://github.com/Araq/Nim/issues/1962>`_)
- Fixed "terminal / eraseScreen() throws an OverflowError"
(`#1906 <https://github.com/Araq/Nim/issues/1906>`_)
- Fixed "setControlCHook(nil) disables registered quit procs"
(`#1546 <https://github.com/Araq/Nim/issues/1546>`_)
- Fixed "Unexpected idetools behaviour"
(`#325 <https://github.com/Araq/Nim/issues/325>`_)
- Fixed "Unused lifted lambda does not compile"
(`#1642 <https://github.com/Araq/Nim/issues/1642>`_)
- Fixed "'low' and 'high' don't work with cstring asguments"
(`#2030 <https://github.com/Araq/Nim/issues/2030>`_)
- Fixed "Converting to int does not round in JS backend"
(`#1959 <https://github.com/Araq/Nim/issues/1959>`_)
- Fixed "Internal error genRecordField 2 when adding region to pointer."
(`#2039 <https://github.com/Araq/Nim/issues/2039>`_)
- Fixed "Macros fail to compile when compiled with --os:standalone"
(`#2041 <https://github.com/Araq/Nim/issues/2041>`_)
- Fixed "Reading from {.compileTime.} variables can cause code generation to fail"
(`#2022 <https://github.com/Araq/Nim/issues/2022>`_)
- Fixed "Passing overloaded symbols to templates fails inside generic procedures"
(`#1988 <https://github.com/Araq/Nim/issues/1988>`_)
- Fixed "Compiling iterator with object assignment in release mode causes "var not init""
(`#2023 <https://github.com/Araq/Nim/issues/2023>`_)
- Fixed "calling a large number of macros doing some computation fails"
(`#1989 <https://github.com/Araq/Nim/issues/1989>`_)
- Fixed "Can't get Koch to install nim under Windows"
(`#2061 <https://github.com/Araq/Nim/issues/2061>`_)
- Fixed "Template with two stmt parameters segfaults compiler"
(`#2057 <https://github.com/Araq/Nim/issues/2057>`_)
- Fixed "`noSideEffect` not affected by `echo`"
(`#2011 <https://github.com/Araq/Nim/issues/2011>`_)
- Fixed "Compiling with the cpp backend ignores --passc"
(`#1601 <https://github.com/Araq/Nim/issues/1601>`_)
- Fixed "Put untyped procedure parameters behind the experimental pragma"
(`#1956 <https://github.com/Araq/Nim/issues/1956>`_)
- Fixed "generic regression"
(`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
- Fixed "generic regression"
(`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
- Fixed "Regression in template lookup with generics"
(`#2004 <https://github.com/Araq/Nim/issues/2004>`_)
- Fixed "GC's growObj is wrong for edge cases"
(`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
- Fixed "Compiler internal error when creating an array out of a typeclass"
(`#1131 <https://github.com/Araq/Nim/issues/1131>`_)
- Fixed "GC's growObj is wrong for edge cases"
(`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
- Fixed "Invalid Objective-C code generated when calling class method"
(`#2068 <https://github.com/Araq/Nim/issues/2068>`_)
- Fixed "walkDirRec Error"
(`#2116 <https://github.com/Araq/Nim/issues/2116>`_)
- Fixed "Typo in code causes compiler SIGSEGV in evalAtCompileTime"
(`#2113 <https://github.com/Araq/Nim/issues/2113>`_)
- Fixed "Regression on exportc"
(`#2118 <https://github.com/Araq/Nim/issues/2118>`_)
- Fixed "Error message"
(`#2102 <https://github.com/Araq/Nim/issues/2102>`_)
- Fixed "hint[path] = off not working in nim.cfg"
(`#2103 <https://github.com/Araq/Nim/issues/2103>`_)
- Fixed "compiler crashes when getting a tuple from a sequence of generic tuples"
(`#2121 <https://github.com/Araq/Nim/issues/2121>`_)
- Fixed "nim check hangs with when"
(`#2123 <https://github.com/Araq/Nim/issues/2123>`_)
- Fixed "static[T] param in nested type resolve/caching issue"
(`#2125 <https://github.com/Araq/Nim/issues/2125>`_)
- Fixed "repr should display ``\0``"
(`#2124 <https://github.com/Araq/Nim/issues/2124>`_)
- Fixed "'nim check' never ends in case of recursive dependency "
(`#2051 <https://github.com/Araq/Nim/issues/2051>`_)
- Fixed "From macros: Error: unhandled exception: sons is not accessible"
(`#2167 <https://github.com/Araq/Nim/issues/2167>`_)
- Fixed "`fieldPairs` doesn't work inside templates"
(`#1902 <https://github.com/Araq/Nim/issues/1902>`_)
- Fixed "fields iterator misbehavior on break statement"
(`#2134 <https://github.com/Araq/Nim/issues/2134>`_)
- Fixed "Fix for compiler not building anymore since #c3244ef1ff"
(`#2193 <https://github.com/Araq/Nim/issues/2193>`_)
- Fixed "JSON parser fails in cpp output mode"
(`#2199 <https://github.com/Araq/Nim/issues/2199>`_)
- Fixed "macros.getType mishandles void return"
(`#2211 <https://github.com/Araq/Nim/issues/2211>`_)
- Fixed "Regression involving templates instantiated within generics"
(`#2215 <https://github.com/Araq/Nim/issues/2215>`_)
- Fixed ""Error: invalid type" for 'not nil' on generic type."
(`#2216 <https://github.com/Araq/Nim/issues/2216>`_)
- Fixed "--threads:on breaks async"
(`#2074 <https://github.com/Araq/Nim/issues/2074>`_)
- Fixed "Type mismatch not always caught, can generate bad code for C backend."
(`#2169 <https://github.com/Araq/Nim/issues/2169>`_)
- Fixed "Failed C compilation when storing proc to own type in object"
(`#2233 <https://github.com/Araq/Nim/issues/2233>`_)
- Fixed "Unknown line/column number in constant declaration type conversion error"
(`#2252 <https://github.com/Araq/Nim/issues/2252>`_)
- Fixed "Adding {.compile.} fails if nimcache already exists."
(`#2247 <https://github.com/Araq/Nim/issues/2247>`_)
- Fixed "Two different type names generated for a single type (C backend)"
(`#2250 <https://github.com/Araq/Nim/issues/2250>`_)
- Fixed "Ambigous call when it should not be"
(`#2229 <https://github.com/Araq/Nim/issues/2229>`_)
- Fixed "Make sure we can load root urls"
(`#2227 <https://github.com/Araq/Nim/issues/2227>`_)
- Fixed "Failure to slice a string with an int subrange type"
(`#794 <https://github.com/Araq/Nim/issues/794>`_)
- Fixed "documentation error"
(`#2205 <https://github.com/Araq/Nim/issues/2205>`_)
- Fixed "Code growth when using `const`"
(`#1940 <https://github.com/Araq/Nim/issues/1940>`_)
- Fixed "Instances of generic types confuse overload resolution"
(`#2220 <https://github.com/Araq/Nim/issues/2220>`_)
- Fixed "Compiler error when initializing sdl2's EventType"
(`#2316 <https://github.com/Araq/Nim/issues/2316>`_)
- Fixed "Parallel disjoint checking can't handle `<`, `items`, or arrays"
(`#2287 <https://github.com/Araq/Nim/issues/2287>`_)
- Fixed "Strings aren't copied in parallel loop"
(`#2286 <https://github.com/Araq/Nim/issues/2286>`_)
- Fixed "JavaScript compiler crash with tables"
(`#2298 <https://github.com/Araq/Nim/issues/2298>`_)
- Fixed "Range checker too restrictive"
(`#1845 <https://github.com/Araq/Nim/issues/1845>`_)
- Fixed "Failure to slice a string with an int subrange type"
(`#794 <https://github.com/Araq/Nim/issues/794>`_)
- Fixed "Remind user when compiling in debug mode"
(`#1868 <https://github.com/Araq/Nim/issues/1868>`_)
- Fixed "Compiler user guide has jumbled options/commands."
(`#1819 <https://github.com/Araq/Nim/issues/1819>`_)
- Fixed "using `method`: 1 in a objects constructor fails when compiling"
(`#1791 <https://github.com/Araq/Nim/issues/1791>`_)
- Fixed internal compiler error when using ``char()`` in an echo call
(`#1788 <https://github.com/Araq/Nim/issues/1788>`_).
- Fixed Windows cross-compilation on Linux.
- Overload resolution now works for types distinguished only by a
``static[int]`` param
(`#1056 <https://github.com/Araq/Nim/issues/1056>`_).
- Other fixes relating to generic types and static params.
- Fixed some compiler crashes with unnamed tuples
(`#1774 <https://github.com/Araq/Nim/issues/1774>`_).
- Fixed ``channels.tryRecv`` blocking
(`#1816 <https://github.com/Araq/Nim/issues/1816>`_).
- Fixed generic instantiation errors with ``typedesc``
(`#419 <https://github.com/Araq/Nim/issues/419>`_).
- Fixed generic regression where the compiler no longer detected constant
expressions properly (`#544 <https://github.com/Araq/Nim/issues/544>`_).
- Fixed internal error with generic proc using ``static[T]`` in a specific
way (`#1049 <https://github.com/Araq/Nim/issues/1049>`_).
- More fixes relating to generics
(`#1820 <https://github.com/Araq/Nim/issues/1820>`_,
`#1050 <https://github.com/Araq/Nim/issues/1050>`_,
`#1859 <https://github.com/Araq/Nim/issues/1859>`_,
`#1858 <https://github.com/Araq/Nim/issues/1858>`_).
- Fixed httpclient to properly encode queries.
- Many fixes to the ``uri`` module.
- Async sockets are now closed on error.
- Fixes to httpclient's handling of multipart data.
- Fixed GC segfaults with asynchronous sockets
(`#1796 <https://github.com/Araq/Nim/issues/1796>`_).
- Added more versions to openssl's DLL version list
(`076f993 <https://github.com/Araq/Nim/commit/076f993>`_).
- Fixed shallow copy in iterators being broken
(`#1803 <https://github.com/Araq/Nim/issues/1803>`_).
- ``nil`` can now be inserted into tables with the ``db_sqlite`` module
(`#1866 <https://github.com/Araq/Nim/issues/1866>`_).
- Fixed "Incorrect assembler generated"
(`#1907 <https://github.com/Araq/Nim/issues/1907>`_)
- Fixed "Expression templates that define macros are unusable in some contexts"
(`#1903 <https://github.com/Araq/Nim/issues/1903>`_)
- Fixed "a second level generic subclass causes the compiler to crash"
(`#1919 <https://github.com/Araq/Nim/issues/1919>`_)
- Fixed "nim 0.10.2 generates invalid AsyncHttpClient C code for MSVC "
(`#1901 <https://github.com/Araq/Nim/issues/1901>`_)
- Fixed "1 shl n produces wrong C code"
(`#1928 <https://github.com/Araq/Nim/issues/1928>`_)
- Fixed "Internal error on tuple yield"
(`#1838 <https://github.com/Araq/Nim/issues/1838>`_)
- Fixed "ICE with template"
(`#1915 <https://github.com/Araq/Nim/issues/1915>`_)
- Fixed "include the tool directory in the installer as it is required by koch"
(`#1947 <https://github.com/Araq/Nim/issues/1947>`_)
- Fixed "Can't compile if file location contains spaces on Windows"
(`#1955 <https://github.com/Araq/Nim/issues/1955>`_)
- Fixed "List comprehension macro only supports infix checks as guards"
(`#1920 <https://github.com/Araq/Nim/issues/1920>`_)
- Fixed "wrong field names of compatible tuples in generic types"
(`#1910 <https://github.com/Araq/Nim/issues/1910>`_)
- Fixed "Macros within templates no longer work as expected"
(`#1944 <https://github.com/Araq/Nim/issues/1944>`_)
- Fixed "Compiling for Standalone AVR broken in 0.10.2"
(`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
- Fixed "Compiling for Standalone AVR broken in 0.10.2"
(`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
- Fixed "Code generation for mitems with tuple elements"
(`#1833 <https://github.com/Araq/Nim/issues/1833>`_)
- Fixed "httpclient.HttpMethod should not be an enum"
(`#1962 <https://github.com/Araq/Nim/issues/1962>`_)
- Fixed "terminal / eraseScreen() throws an OverflowError"
(`#1906 <https://github.com/Araq/Nim/issues/1906>`_)
- Fixed "setControlCHook(nil) disables registered quit procs"
(`#1546 <https://github.com/Araq/Nim/issues/1546>`_)
- Fixed "Unexpected idetools behaviour"
(`#325 <https://github.com/Araq/Nim/issues/325>`_)
- Fixed "Unused lifted lambda does not compile"
(`#1642 <https://github.com/Araq/Nim/issues/1642>`_)
- Fixed "'low' and 'high' don't work with cstring asguments"
(`#2030 <https://github.com/Araq/Nim/issues/2030>`_)
- Fixed "Converting to int does not round in JS backend"
(`#1959 <https://github.com/Araq/Nim/issues/1959>`_)
- Fixed "Internal error genRecordField 2 when adding region to pointer."
(`#2039 <https://github.com/Araq/Nim/issues/2039>`_)
- Fixed "Macros fail to compile when compiled with --os:standalone"
(`#2041 <https://github.com/Araq/Nim/issues/2041>`_)
- Fixed "Reading from {.compileTime.} variables can cause code generation to fail"
(`#2022 <https://github.com/Araq/Nim/issues/2022>`_)
- Fixed "Passing overloaded symbols to templates fails inside generic procedures"
(`#1988 <https://github.com/Araq/Nim/issues/1988>`_)
- Fixed "Compiling iterator with object assignment in release mode causes "var not init""
(`#2023 <https://github.com/Araq/Nim/issues/2023>`_)
- Fixed "calling a large number of macros doing some computation fails"
(`#1989 <https://github.com/Araq/Nim/issues/1989>`_)
- Fixed "Can't get Koch to install nim under Windows"
(`#2061 <https://github.com/Araq/Nim/issues/2061>`_)
- Fixed "Template with two stmt parameters segfaults compiler"
(`#2057 <https://github.com/Araq/Nim/issues/2057>`_)
- Fixed "`noSideEffect` not affected by `echo`"
(`#2011 <https://github.com/Araq/Nim/issues/2011>`_)
- Fixed "Compiling with the cpp backend ignores --passc"
(`#1601 <https://github.com/Araq/Nim/issues/1601>`_)
- Fixed "Put untyped procedure parameters behind the experimental pragma"
(`#1956 <https://github.com/Araq/Nim/issues/1956>`_)
- Fixed "generic regression"
(`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
- Fixed "generic regression"
(`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
- Fixed "Regression in template lookup with generics"
(`#2004 <https://github.com/Araq/Nim/issues/2004>`_)
- Fixed "GC's growObj is wrong for edge cases"
(`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
- Fixed "Compiler internal error when creating an array out of a typeclass"
(`#1131 <https://github.com/Araq/Nim/issues/1131>`_)
- Fixed "GC's growObj is wrong for edge cases"
(`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
- Fixed "Invalid Objective-C code generated when calling class method"
(`#2068 <https://github.com/Araq/Nim/issues/2068>`_)
- Fixed "walkDirRec Error"
(`#2116 <https://github.com/Araq/Nim/issues/2116>`_)
- Fixed "Typo in code causes compiler SIGSEGV in evalAtCompileTime"
(`#2113 <https://github.com/Araq/Nim/issues/2113>`_)
- Fixed "Regression on exportc"
(`#2118 <https://github.com/Araq/Nim/issues/2118>`_)
- Fixed "Error message"
(`#2102 <https://github.com/Araq/Nim/issues/2102>`_)
- Fixed "hint[path] = off not working in nim.cfg"
(`#2103 <https://github.com/Araq/Nim/issues/2103>`_)
- Fixed "compiler crashes when getting a tuple from a sequence of generic tuples"
(`#2121 <https://github.com/Araq/Nim/issues/2121>`_)
- Fixed "nim check hangs with when"
(`#2123 <https://github.com/Araq/Nim/issues/2123>`_)
- Fixed "static[T] param in nested type resolve/caching issue"
(`#2125 <https://github.com/Araq/Nim/issues/2125>`_)
- Fixed "repr should display ``\0``"
(`#2124 <https://github.com/Araq/Nim/issues/2124>`_)
- Fixed "'nim check' never ends in case of recursive dependency "
(`#2051 <https://github.com/Araq/Nim/issues/2051>`_)
- Fixed "From macros: Error: unhandled exception: sons is not accessible"
(`#2167 <https://github.com/Araq/Nim/issues/2167>`_)
- Fixed "`fieldPairs` doesn't work inside templates"
(`#1902 <https://github.com/Araq/Nim/issues/1902>`_)
- Fixed "fields iterator misbehavior on break statement"
(`#2134 <https://github.com/Araq/Nim/issues/2134>`_)
- Fixed "Fix for compiler not building anymore since #c3244ef1ff"
(`#2193 <https://github.com/Araq/Nim/issues/2193>`_)
- Fixed "JSON parser fails in cpp output mode"
(`#2199 <https://github.com/Araq/Nim/issues/2199>`_)
- Fixed "macros.getType mishandles void return"
(`#2211 <https://github.com/Araq/Nim/issues/2211>`_)
- Fixed "Regression involving templates instantiated within generics"
(`#2215 <https://github.com/Araq/Nim/issues/2215>`_)
- Fixed ""Error: invalid type" for 'not nil' on generic type."
(`#2216 <https://github.com/Araq/Nim/issues/2216>`_)
- Fixed "--threads:on breaks async"
(`#2074 <https://github.com/Araq/Nim/issues/2074>`_)
- Fixed "Type mismatch not always caught, can generate bad code for C backend."
(`#2169 <https://github.com/Araq/Nim/issues/2169>`_)
- Fixed "Failed C compilation when storing proc to own type in object"
(`#2233 <https://github.com/Araq/Nim/issues/2233>`_)
- Fixed "Unknown line/column number in constant declaration type conversion error"
(`#2252 <https://github.com/Araq/Nim/issues/2252>`_)
- Fixed "Adding {.compile.} fails if nimcache already exists."
(`#2247 <https://github.com/Araq/Nim/issues/2247>`_)
- Fixed "Two different type names generated for a single type (C backend)"
(`#2250 <https://github.com/Araq/Nim/issues/2250>`_)
- Fixed "Ambigous call when it should not be"
(`#2229 <https://github.com/Araq/Nim/issues/2229>`_)
- Fixed "Make sure we can load root urls"
(`#2227 <https://github.com/Araq/Nim/issues/2227>`_)
- Fixed "Failure to slice a string with an int subrange type"
(`#794 <https://github.com/Araq/Nim/issues/794>`_)
- Fixed "documentation error"
(`#2205 <https://github.com/Araq/Nim/issues/2205>`_)
- Fixed "Code growth when using `const`"
(`#1940 <https://github.com/Araq/Nim/issues/1940>`_)
- Fixed "Instances of generic types confuse overload resolution"
(`#2220 <https://github.com/Araq/Nim/issues/2220>`_)
- Fixed "Compiler error when initializing sdl2's EventType"
(`#2316 <https://github.com/Araq/Nim/issues/2316>`_)
- Fixed "Parallel disjoint checking can't handle `<`, `items`, or arrays"
(`#2287 <https://github.com/Araq/Nim/issues/2287>`_)
- Fixed "Strings aren't copied in parallel loop"
(`#2286 <https://github.com/Araq/Nim/issues/2286>`_)
- Fixed "JavaScript compiler crash with tables"
(`#2298 <https://github.com/Araq/Nim/issues/2298>`_)
- Fixed "Range checker too restrictive"
(`#1845 <https://github.com/Araq/Nim/issues/1845>`_)
- Fixed "Failure to slice a string with an int subrange type"
(`#794 <https://github.com/Araq/Nim/issues/794>`_)
- Fixed "Remind user when compiling in debug mode"
(`#1868 <https://github.com/Araq/Nim/issues/1868>`_)
- Fixed "Compiler user guide has jumbled options/commands."
(`#1819 <https://github.com/Araq/Nim/issues/1819>`_)
- Fixed "using `method`: 1 in a objects constructor fails when compiling"
(`#1791 <https://github.com/Araq/Nim/issues/1791>`_)
2014-12-29 Version 0.10.2 released 2014-12-29 Version 0.10.2 released
================================== ==================================

View file

@ -1,13 +1,13 @@
<a class="news" href="news.html#Z2015-04-30-version-0-11-0-released">
<h4>Apr 30, 2015</h4>
<p>Nim version 0.11.0 has been released!</p>
</a>
<a class="news" href="news.html#Z2014-12-29-version-0-10-2-released"> <a class="news" href="news.html#Z2014-12-29-version-0-10-2-released">
<h4>Dec 29, 2014</h4> <h4>Dec 29, 2014</h4>
<p>Nim version 0.10.2 has been released!</p> <p>Nim version 0.10.2 has been released!</p>
</a> </a>
<a class="news" href="news.html#Z2014-12-09-new-website-design">
<h4>Dec 9, 2014</h4>
<p>The new website design and forum are now online!</p>
</a>
<a class="news" href="news.html#Z2014-02-11-nimrod-featured-in-dr-dobb-s-journal"> <a class="news" href="news.html#Z2014-02-11-nimrod-featured-in-dr-dobb-s-journal">
<h4>Feb 11, 2014</h4> <h4>Feb 11, 2014</h4>
<p>Nimrod featured in Dr. Dobb's Journal</p> <p>Nimrod featured in Dr. Dobb's Journal</p>