diff options
Diffstat (limited to 'web/news')
31 files changed, 0 insertions, 4850 deletions
diff --git a/web/news/e001_version_0_8_6.rst b/web/news/e001_version_0_8_6.rst deleted file mode 100644 index 019168a44..000000000 --- a/web/news/e001_version_0_8_6.rst +++ /dev/null @@ -1,54 +0,0 @@ -2009-12-21 Version 0.8.6 released -================================= - -.. container:: metadata - - Posted by Andreas Rumpf on 21/12/2009 - -The version jump from 0.8.2 to 0.8.6 acknowledges the fact that all development -of the compiler is now done in Nimrod. - - -Bugfixes --------- -- The pragmas ``hint[X]:off`` and ``warning[X]:off`` now work. -- Method call syntax for iterators works again (``for x in lines.split()``). -- Fixed a typo in ``removeDir`` for POSIX that lead to an infinite recursion. -- The compiler now checks that module filenames are valid identifiers. -- Empty patterns for the ``dynlib`` pragma are now possible. -- ``os.parseCmdLine`` returned wrong results for trailing whitespace. -- Inconsequent tuple usage (using the same tuple with and without named fields) - does not crash the code generator anymore. -- A better error message is provided when the loading of a proc within a - dynamic lib fails. - - -Additions ---------- -- Added ``system.contains`` for open arrays. -- The PEG module now supports the *search loop operator* ``@``. -- Grammar/parser: ``SAD|IND`` is allowed before any kind of closing bracket. - This allows for more flexible source code formating. -- The compiler now uses a *bind* table for symbol lookup within a ``bind`` - context. (See `<manual.html#templates>`_ for details.) -- ``discard """my long comment"""`` is now optimized away. -- New ``--floatChecks: on|off`` switches and pragmas for better debugging - of floating point operations. (See - `<manual.html#pre-defined-floating-point-types>`_ for details.) -- The manual has been improved. (Many thanks to Philippe Lhoste!) - - -Changes affecting backwards compatibility ------------------------------------------ -- The compiler does not skip the linking step anymore even if no file - has changed. -- ``os.splitFile(".xyz")`` now returns ``("", ".xyz", "")`` instead of - ``("", "", ".xyz")``. So filenames starting with a dot are handled - differently. -- ``strutils.split(s: string, seps: set[char])`` never yields the empty string - anymore. This behaviour is probably more appropriate for whitespace splitting. -- The compiler now stops after the ``--version`` command line switch. -- Removed support for enum inheritance in the parser; enum inheritance has - never been documented anyway. -- The ``msg`` field of ``system.E_base`` has now the type ``string``, instead - of ``cstring``. This improves memory safety. diff --git a/web/news/e002_version_0_8_8.rst b/web/news/e002_version_0_8_8.rst deleted file mode 100644 index 2df476814..000000000 --- a/web/news/e002_version_0_8_8.rst +++ /dev/null @@ -1,82 +0,0 @@ -Version 0.8.8 released -====================== - -.. container:: metadata - - Posted by Andreas Rumpf on 14/03/2010 - -Bugfixes --------- -- The Posix version of ``os.copyFile`` has better error handling. -- Fixed bug #502670 (underscores in identifiers). -- Fixed a bug in the ``parsexml`` module concerning the parsing of - ``<tag attr="value" />``. -- Fixed a bug in the ``parsexml`` module concerning the parsing of - enities like ``<XX``. -- ``system.write(f: TFile, s: string)`` now works even if ``s`` contains binary - zeros. -- Fixed a bug in ``os.setFilePermissions`` for Windows. -- An overloadable symbol can now have the same name as an imported module. -- Fixed a serious bug in ``strutils.cmpIgnoreCase``. -- Fixed ``unicode.toUTF8``. -- The compiler now rejects ``'\n'`` (use ``"\n"`` instead). -- ``times.getStartMilsecs()`` now works on Mac OS X. -- Fixed a bug in ``pegs.match`` concerning start offsets. -- Lots of other little bugfixes. - - -Additions ---------- -- Added ``system.cstringArrayToSeq``. -- Added ``system.lines(f: TFile)`` iterator. -- Added ``system.delete``, ``system.del`` and ``system.insert`` for sequences. -- Added ``system./`` for int. -- Exported ``system.newException`` template. -- Added ``cgi.decodeData(data: string): tuple[key, value: string]``. -- Added ``strutils.insertSep``. -- Added ``math.trunc``. -- Added ``ropes`` module. -- Added ``sockets`` module. -- Added ``browsers`` module. -- Added ``httpserver`` module. -- Added ``httpclient`` module. -- Added ``parseutils`` module. -- Added ``unidecode`` module. -- Added ``xmldom`` module. -- Added ``xmldomparser`` module. -- Added ``xmltree`` module. -- Added ``xmlparser`` module. -- Added ``htmlparser`` module. -- Added ``re`` module. -- Added ``graphics`` module. -- Added ``colors`` module. -- Many wrappers now do not contain redundant name prefixes (like ``GTK_``, - ``lua``). The old wrappers are still available in ``lib/oldwrappers``. - You can change your configuration file to use these. -- Triple quoted strings allow for ``"`` in more contexts. -- ``""`` within raw string literals stands for a single quotation mark. -- Arguments to ``openArray`` parameters can be left out. -- More extensive subscript operator overloading. (To be documented.) -- The documentation generator supports the ``.. raw:: html`` directive. -- The Pegs module supports back references via the notation ``$capture_index``. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Overloading of the subscript operator only works if the type does not provide - a built-in one. -- The search order for libraries which is affected by the ``path`` option - has been reversed, so that the project's path is searched before - the standard library's path. -- The compiler does not include a Pascal parser for bootstrapping purposes any - more. Instead there is a ``pas2nim`` tool that contains the old functionality. -- The procs ``os.copyFile`` and ``os.moveFile`` have been deprecated - temporarily, so that the compiler warns about their usage. Use them with - named arguments only, because the parameter order will change the next - version! -- ``atomic`` and ``let`` are now keywords. -- The ``\w`` character class for pegs now includes the digits ``'0'..'9'``. -- Many wrappers now do not contain redundant name prefixes (like ``GTK_``, - ``lua``) anymore. -- Arguments to ``openArray`` parameters can be left out. diff --git a/web/news/e003_version_0_8_10.rst b/web/news/e003_version_0_8_10.rst deleted file mode 100644 index f72c0076c..000000000 --- a/web/news/e003_version_0_8_10.rst +++ /dev/null @@ -1,70 +0,0 @@ -Version 0.8.10 released -======================= - -.. container:: metadata - - Posted by Andreas Rumpf on 20/10/2010 - -Bugfixes --------- - -- Bugfix: Command line parsing on Windows and ``os.parseCmdLine`` now adheres - to the same parsing rules as Microsoft's C/C++ startup code. -- Bugfix: Passing a ``ref`` pointer to the untyped ``pointer`` type is invalid. -- Bugfix: Updated ``keyval`` example. -- Bugfix: ``system.splitChunk`` still contained code for debug output. -- Bugfix: ``dialogs.ChooseFileToSave`` uses ``STOCK_SAVE`` instead of - ``STOCK_OPEN`` for the GTK backend. -- Bugfix: Various bugs concerning exception handling fixed. -- Bugfix: ``low(somestring)`` crashed the compiler. -- Bugfix: ``strutils.endsWith`` lacked range checking. -- Bugfix: Better detection for AMD64 on Mac OS X. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Reversed parameter order for ``os.copyFile`` and ``os.moveFile``!!! -- Procs not marked as ``procvar`` cannot only be passed to a procvar anymore, - unless they are used in the same module. -- Deprecated ``times.getStartMilsecs``: Use ``epochTime`` or ``cpuTime`` - instead. -- Removed ``system.OpenFile``. -- Removed ``system.CloseFile``. -- Removed ``strutils.replaceStr``. -- Removed ``strutils.deleteStr``. -- Removed ``strutils.splitLinesSeq``. -- Removed ``strutils.splitSeq``. -- Removed ``strutils.toString``. -- If a DLL cannot be loaded (via the ``dynlib`` pragma) ``EInvalidLibrary`` - is not raised anymore. Instead ``system.quit()`` is called. This is because - raising an exception requires heap allocations. However the memory manager - might be contained in the DLL that failed to load. -- The ``re`` module (and the ``pcre`` wrapper) now depend on the pcre dll. - - -Additions ---------- - -- The ``{.compile: "file.c".}`` pragma uses a CRC check to see if the file - needs to be recompiled. -- Added ``system.reopen``. -- Added ``system.getCurrentException``. -- Added ``system.appType``. -- Added ``system.compileOption``. -- Added ``times.epochTime`` and ``times.cpuTime``. -- Implemented explicit type arguments for generics. -- Implemented ``{.size: sizeof(cint).}`` pragma for enum types. This is useful - for interfacing with C. -- Implemented ``{.pragma.}`` pragma for user defined pragmas. -- Implemented ``{.extern.}`` pragma for better control of name mangling. -- The ``importc`` and ``exportc`` pragmas support format strings: - ``proc p{.exportc: "nim_$1".}`` exports ``p`` as ``nim_p``. This is useful - for user defined pragmas. -- The standard library can be built as a DLL. Generating DLLs has been - improved. -- Added ``expat`` module. -- Added ``json`` module. -- Added support for a *Tiny C* backend. Currently this only works on Linux. - You need to bootstrap with ``-d:tinyc`` to enable Tiny C support. Nimrod - can then execute code directly via ``nimrod run myfile``. diff --git a/web/news/e004_version_0_8_12.rst b/web/news/e004_version_0_8_12.rst deleted file mode 100644 index 5f154b2db..000000000 --- a/web/news/e004_version_0_8_12.rst +++ /dev/null @@ -1,122 +0,0 @@ -Version 0.8.12 released -================================== - -.. container:: metadata - - Posted by Andreas Rumpf on 10/07/2011 - -Bugfixes --------- - -- Bugfix: ``httpclient`` correct passes the path starting with ``/``. -- Bugfixes for the ``htmlparser`` module. -- Bugfix: ``pegs.find`` did not respect ``start`` parameter. -- Bugfix: ``dialogs.ChooseFilesToOpen`` did not work if only one file is - selected. -- Bugfix: niminst: ``nimrod`` is not default dir for *every* project. -- Bugfix: Multiple yield statements in iterators did not cause local vars to be - copied. -- Bugfix: The compiler does not emit very inaccurate floating point literals - anymore. -- Bugfix: Subclasses are taken into account for ``try except`` matching. -- Bugfix: Generics and macros are more stable. There are still known bugs left - though. -- Bugfix: Generated type information for tuples was sometimes wrong, causing - random crashes. -- Lots of other bugfixes: Too many to list them all. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Operators starting with ``^`` are now right-associative and have the highest - priority. -- Deprecated ``os.getApplicationFilename``: Use ``os.getAppFilename`` instead. -- Deprecated ``os.getApplicationDir``: Use ``os.getAppDir`` instead. -- Deprecated ``system.copy``: Use ``substr`` or string slicing instead. -- Changed and documented how generalized string literals work: The syntax - ``module.re"abc"`` is now supported. -- Changed the behaviour of ``strutils.%``, ``ropes.%`` - if both notations ``$#`` and ``$i`` are involved. -- The ``pegs`` and ``re`` modules distinguish between ``replace`` - and ``replacef`` operations. -- The pointer dereference operation ``p^`` is deprecated and might become - ``^p`` in later versions or be dropped entirely since it is rarely used. - Use the new notation ``p[]`` in the rare cases where you need to - dereference a pointer explicitly. -- ``system.readFile`` does not return ``nil`` anymore but raises an ``EIO`` - exception instead. -- Unsound co-/contravariance for procvars has been removed. - - -Language Additions ------------------- - -- Source code filters are now documented. -- Added the ``linearScanEnd``, ``unroll``, ``shallow`` pragmas. -- Added ``emit`` pragma for direct code generator control. -- Case statement branches support constant sets for programming convenience. -- Tuple unpacking is not enforced in ``for`` loops anymore. -- The compiler now supports array, sequence and string slicing. -- A field in an ``enum`` may be given an explicit string representation. - This yields more maintainable code than using a constant - ``array[TMyEnum, string]`` mapping. -- Indices in array literals may be explicitly given, enhancing readability: - ``[enumValueA: "a", enumValueB: "b"]``. -- Added thread support via the ``threads`` core module and - the ``--threads:on`` command line switch. -- The built-in iterators ``system.fields`` and ``system.fieldPairs`` can be - used to iterate over any field of a tuple. With this mechanism operations - like ``==`` and ``hash`` are lifted to tuples. -- The slice ``..`` is now a first-class operator, allowing code like: - ``x in 1000..100_000``. - - -Compiler Additions ------------------- - -- The compiler supports IDEs via the new group of ``idetools`` command line - options. -- The *interactive mode* (REPL) has been improved and documented for the - first time. -- The compiler now might use hashing for string case statements depending - on the number of string literals in the case statement. - - -Library Additions ------------------ - -- Added ``lists`` module which contains generic linked lists. -- Added ``sets`` module which contains generic hash sets. -- Added ``tables`` module which contains generic hash tables. -- Added ``queues`` module which contains generic sequence based queues. -- Added ``intsets`` module which contains a specialized int set data type. -- Added ``scgi`` module. -- Added ``smtp`` module. -- Added ``encodings`` module. -- Added ``re.findAll``, ``pegs.findAll``. -- Added ``os.findExe``. -- Added ``parseutils.parseUntil`` and ``parseutils.parseWhile``. -- Added ``strutils.align``, ``strutils.tokenize``, ``strutils.wordWrap``. -- Pegs support a *captured search loop operator* ``{@}``. -- Pegs support new built-ins: ``\letter``, ``\upper``, ``\lower``, - ``\title``, ``\white``. -- Pegs support the new built-in ``\skip`` operation. -- Pegs support the ``$`` and ``^`` anchors. -- Additional operations were added to the ``complex`` module. -- Added ``strutils.formatFloat``, ``strutils.formatBiggestFloat``. -- Added unary ``<`` for nice looking excluding upper bounds in ranges. -- Added ``math.floor``. -- Added ``system.reset`` and a version of ``system.open`` that - returns a ``TFile`` and raises an exception in case of an error. -- Added a wrapper for ``redis``. -- Added a wrapper for ``0mq`` via the ``zmq`` module. -- Added a wrapper for ``sphinx``. -- Added ``system.newStringOfCap``. -- Added ``system.raiseHook`` and ``system.outOfMemHook``. -- Added ``system.writeFile``. -- Added ``system.shallowCopy``. -- ``system.echo`` is guaranteed to be thread-safe. -- Added ``prelude`` include file for scripting convenience. -- Added ``typeinfo`` core module for access to runtime type information. -- Added ``marshal`` module for JSON serialization. diff --git a/web/news/e005_version_0_8_14.rst b/web/news/e005_version_0_8_14.rst deleted file mode 100644 index 4050c8b93..000000000 --- a/web/news/e005_version_0_8_14.rst +++ /dev/null @@ -1,168 +0,0 @@ -2012-02-09 Version 0.8.14 released -================================== - -.. container:: metadata - - Posted by Andreas Rumpf on 09/02/2012 - -Version 0.8.14 has been released! - -Bugfixes --------- - -- Fixed a serious memory corruption concerning message passing. -- Fixed a serious bug concerning different instantiations of a generic proc. -- Fixed a newly introduced bug where a wrong ``EIO`` exception was raised for - the end of file for text files that do not end with a newline. -- Bugfix c2nim, c2pas: the ``--out`` option has never worked properly. -- Bugfix: forwarding of generic procs never worked. -- Some more bugfixes for macros and compile-time evaluation. -- The GC now takes into account interior pointers on the stack which may be - introduced by aggressive C optimizers. -- Nimrod's native allocator/GC now works on PowerPC. -- Lots of other bugfixes: Too many to list them all. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Removed deprecated ``os.AppendFileExt``, ``os.executeShellCommand``, - ``os.iterOverEnvironment``, ``os.pcDirectory``, ``os.pcLinkToDirectory``, - ``os.SplitPath``, ``os.extractDir``, ``os.SplitFilename``, - ``os.extractFileTrunk``, ``os.extractFileExt``, ``osproc.executeProcess``, - ``osproc.executeCommand``. -- Removed deprecated ``parseopt.init``, ``parseopt.getRestOfCommandLine``. -- Moved ``strutils.validEmailAddress`` to ``matchers.validEmailAddress``. -- The pointer dereference operator ``^`` has been removed, so that ``^`` - can now be a user-defined operator. -- ``implies`` is no keyword anymore. -- The ``is`` operator is now the ``of`` operator. -- The ``is`` operator is now used to check type equivalence in generic code. -- The ``pure`` pragma for procs has been renamed to ``noStackFrame``. -- The threading API has been completely redesigned. -- The ``unidecode`` module is now thread-safe and its interface has changed. -- The ``bind`` expression is deprecated, use a ``bind`` declaration instead. -- ``system.raiseHook`` is now split into ``system.localRaiseHook`` and - ``system.globalRaiseHook`` to distinguish between thread local and global - raise hooks. -- Changed exception handling/error reporting for ``os.removeFile`` and - ``os.removeDir``. -- The algorithm for searching and loading configuration files has been changed. -- Operators now have diffent precedence rules: Assignment-like operators - (like ``*=``) are now special-cased. -- The fields in ``TStream`` have been renamed to have an ``Impl`` suffix - because they should not be used directly anymore. - Wrapper procs have been created that should be used instead. -- ``export`` is now a keyword. -- ``assert`` is now implemented in pure Nimrod as a template; it's easy - to implement your own assertion templates with ``system.astToStr``. - - -Language Additions ------------------- - -- Added new ``is`` and ``of`` operators. -- The built-in type ``void`` can be used to denote the absence of any type. - This is useful in generic code. -- Return types may be of the type ``var T`` to return an l-value. -- The error pragma can now be used to mark symbols whose *usage* should trigger - a compile-time error. -- There is a new ``discardable`` pragma that can be used to mark a routine - so that its result can be discarded implicitly. -- Added a new ``noinit`` pragma to prevent automatic initialization to zero - of variables. -- Constants can now have the type ``seq``. -- There is a new user-definable syntactic construct ``a{i, ...}`` - that has no semantics yet for built-in types and so can be overloaded to your - heart's content. -- ``bind`` (used for symbol binding in templates and generics) is now a - declarative statement. -- Nimrod now supports single assignment variables via the ``let`` statement. -- Iterators named ``items`` and ``pairs`` are implicitly invoked when - an explicit iterator is missing. -- The slice assignment ``a[i..j] = b`` where ``a`` is a sequence or string - now supports *splicing*. - - -Compiler Additions ------------------- - -- The compiler can generate C++ code for easier interfacing with C++. -- The compiler can generate Objective C code for easier interfacing with - Objective C. -- The new pragmas ``importcpp`` and ``importobjc`` make interfacing with C++ - and Objective C somewhat easier. -- Added a new pragma ``incompleteStruct`` to deal with incomplete C struct - definitions. -- Added a ``--nimcache:PATH`` configuration option for control over the output - directory for generated code. -- The ``--genScript`` option now produces different compilation scripts - which do not contain absolute paths. -- Added ``--cincludes:dir``, ``--clibdir:lib`` configuration options for - modifying the C compiler's header/library search path in cross-platform way. -- Added ``--clib:lib`` configuration option for specifying additional - C libraries to be linked. -- Added ``--mainmodule:file`` configuration options for specifying the main - project file. This is intended to be used in project configuration files to - allow commands like ``nimrod c`` or ``nimrod check`` to be executed anywhere - within the project's directory structure. -- Added a ``--app:staticlib`` option for creating static libraries. -- Added a ``--tlsEmulation:on|off`` switch for control over thread local - storage emulation. -- The compiler and standard library now support a *taint mode*. Input strings - are declared with the ``TaintedString`` string type. If the taint - mode is turned on it is a distinct string type which helps to detect input - validation errors. -- The compiler now supports the compilation cache via ``--symbolFiles:on``. - This potentially speeds up compilations by an order of magnitude, but is - still highly experimental! -- Added ``--import:file`` and ``--include:file`` configuration options - for specifying modules that will be automatically imported/incluced. -- ``nimrod i`` can now optionally be given a module to execute. -- The compiler now performs a simple alias analysis to generate better code. -- The compiler and ENDB now support *watchpoints*. -- The compiler now supports proper compile time expressions of type ``bool`` - for ``on|off`` switches in pragmas. In order to not break existing code, - ``on`` and ``off`` are now aliases for ``true`` and ``false`` and declared - in the system module. -- The compiler finally supports **closures**. This is a preliminary - implementation, which does not yet support nestings deeper than 1 level - and still has many known bugs. - - -Library Additions ------------------ - -- Added ``system.allocShared``, ``system.allocShared0``, - ``system.deallocShared``, ``system.reallocShared``. -- Slicing as implemented by the system module now supports *splicing*. -- Added explicit channels for thread communication. -- Added ``matchers`` module for email address etc. matching. -- Added ``strutils.unindent``, ``strutils.countLines``, - ``strutils.replaceWord``. -- Added ``system.slurp`` for easy resource embedding. -- Added ``system.running`` for threads. -- Added ``system.programResult``. -- Added ``xmltree.innerText``. -- Added ``os.isAbsolute``, ``os.dynLibFormat``, ``os.isRootDir``, - ``os.parentDirs``. -- Added ``parseutils.interpolatedFragments``. -- Added ``macros.treeRepr``, ``macros.lispRepr``, ``macros.dumpTree``, - ``macros.dumpLisp``, ``macros.parseExpr``, ``macros.parseStmt``, - ``macros.getAst``. -- Added ``locks`` core module for more flexible locking support. -- Added ``irc`` module. -- Added ``ftpclient`` module. -- Added ``memfiles`` module. -- Added ``subexes`` module. -- Added ``critbits`` module. -- Added ``asyncio`` module. -- Added ``actors`` module. -- Added ``algorithm`` module for generic ``sort``, ``reverse`` etc. operations. -- Added ``osproc.startCmd``, ``osproc.execCmdEx``. -- The ``osproc`` module now uses ``posix_spawn`` instead of ``fork`` - and ``exec`` on Posix systems. Define the symbol ``useFork`` to revert to - the old implementation. -- Added ``intsets.assign``. -- Added ``system.astToStr`` and ``system.rand``, ``system.doAssert``. -- Added ``system.pairs`` for built-in types like arrays and strings. diff --git a/web/news/e006_version_0_9_0.rst b/web/news/e006_version_0_9_0.rst deleted file mode 100644 index 5635ca94c..000000000 --- a/web/news/e006_version_0_9_0.rst +++ /dev/null @@ -1,182 +0,0 @@ -Version 0.9.0 released -====================== - -.. container:: metadata - - Posted by Andreas Rumpf on 23/09/2012 - -Summary -------- - -* Unsigned integers have been added. -* The integer type promotion rules changed. -* The template and macro system evolved. -* Closures have been implemented. -* Term rewriting macros have been implemented. -* First steps to unify expressions and statements have been taken. -* Symbol lookup rules in generics have become stricter to catch more errors. - - -Bugfixes --------- - -- Fixed a bug where the compiler would "optimize away" valid constant parts of - a string concatenation. -- Fixed a bug concerning implicit type conversions in ``case`` statements. -- Fixed a serious code generation bug that caused ``algorithm.sort`` to - produce segmentation faults. -- Fixed ambiguity in recvLine which meant that receiving ``\r\L`` was - indistinguishable from disconnections. -- Many more bugfixes, too many to list them all. - - -Library Additions ------------------ - -- Added the (already existing) module ``htmlgen`` to the documentation. -- Added the (already existing) module ``cookies`` to the documentation. -- Added ``system.shallow`` that can be used to speed up string and sequence - assignments. -- Added ``system.eval`` that can execute an anonymous block of code at - compile time as if was a macro. -- Added ``system.staticExec`` and ``system.gorge`` for compile-time execution - of external programs. -- Added ``system.staticRead`` as a synonym for ``system.slurp``. -- Added ``macros.emit`` that can emit an arbitrary computed string as nimrod - code during compilation. -- Added ``strutils.parseEnum``. -- Added ``json.%`` constructor operator. -- The stdlib can now be avoided to a point where C code generation for 16bit - micro controllers is feasible. -- Added module ``oids``. -- Added module ``endians``. -- Added a new OpenGL wrapper that supports OpenGL up to version 4.2. -- Added a wrapper for ``libsvm``. -- Added a wrapper for ``mongodb``. -- Added ``terminal.isatty``. -- Added an overload for ``system.items`` that can be used to iterate over the - values of an enum. -- Added ``system.TInteger`` and ``system.TNumber`` type classes matching - any of the corresponding types available in Nimrod. -- Added ``system.clamp`` to limit a value within an interval ``[a, b]``. -- Added ``strutils.continuesWith``. -- Added ``system.getStackTrace``. -- Added ``system.||`` for parallel ``for`` loop support. -- The GC supports (soft) realtime systems via ``GC_setMaxPause`` - and ``GC_step`` procs. -- The sockets module now supports ssl through the OpenSSL library, ``recvLine`` - is now much more efficient thanks to the newly implemented sockets buffering. -- The httpclient module now supports ssl/tls. -- Added ``times.format`` as well as many other utility functions - for managing time. -- Added ``system.@`` for converting an ``openarray`` to a ``seq`` (it used to - only support fixed length arrays). -- Added ``system.compiles`` which can be used to check whether a type supports - some operation. -- Added ``strutils.format``, ``subexes.format`` which use the - new ``varargs`` type. -- Added module ``fsmonitor``. - -Changes affecting backwards compatibility ------------------------------------------ - -- On Windows filenames and paths are supposed to be in UTF-8. - The ``system``, ``os``, ``osproc`` and ``memfiles`` modules use the wide - string versions of the WinAPI. Use the ``-d:useWinAnsi`` switch to revert - back to the old behaviour which uses the Ansi string versions. -- ``static``, ``do``, ``interface`` and ``mixin`` are now keywords. -- Templates now participate in overloading resolution which can break code that - uses templates in subtle ways. Use the new ``immediate`` pragma for templates - to get a template of old behaviour. -- There is now a proper distinction in the type system between ``expr`` and - ``PNimrodNode`` which unfortunately breaks the old macro system. -- ``pegs.@`` has been renamed to ``pegs.!*`` and ``pegs.@@`` has been renamed - to ``pegs.!*\`` as ``@`` operators now have different precedence. -- The type ``proc`` (without any params or return type) is now considered a - type class matching all proc types. Use ``proc ()`` to get the old meaning - denoting a proc expecing no arguments and returing no value. -- Deprecated ``system.GC_setStrategy``. -- ``re.findAll`` and ``pegs.findAll`` don't return *captures* anymore but - matching *substrings*. -- RTTI and thus the ``marshall`` module don't contain the proper field names - of tuples anymore. This had to be changed as the old behaviour never - produced consistent results. -- Deprecated the ``ssl`` module. -- Deprecated ``nimrod pretty`` as it never worked good enough and has some - inherent problems. -- The integer promotion rules changed; the compiler is now less picky in some - situations and more picky in other situations: In particular implicit - conversions from ``int`` to ``int32`` are now forbidden. -- ``system.byte`` is now an alias for ``uint8``; it used to be an alias - to ``int8``. -- ``bind`` expressions in templates are not properly supported anymore. Use - the declarative ``bind`` statement instead. -- The default calling convention for a procedural **type** is now ``closure``, - for procs it remains ``nimcall`` (which is compatible to ``closure``). - Activate the warning ``ImplicitClosure`` to make the compiler list the - occurrences of proc types which are affected. -- The Nimrod type system now distinguishes ``openarray`` from ``varargs``. -- Templates are now ``hygienic``. Use the ``dirty`` pragma to get the old - behaviour. -- Objects that have no ancestor are now implicitly ``final``. Use - the ``inheritable`` pragma to introduce new object roots apart - from ``TObject``. -- Macros now receive parameters like templates do; use the ``callsite`` builtin - to gain access to the invocation AST. -- Symbol lookup rules in generics have become stricter to catch more errors. - - -Compiler Additions ------------------- - -- Win64 is now an officially supported target. -- The Nimrod compiler works on BSD again, but has some issues - as ``os.getAppFilename`` and ``os.getAppDir`` cannot work reliably on BSD. -- The compiler can detect and evaluate calls that can be evaluated at compile - time for optimization purposes with the ``--implicitStatic`` command line - option or pragma. -- The compiler now generates marker procs that the GC can use instead of RTTI. - This speeds up the GC quite a bit. -- The compiler now includes a new advanced documentation generator - via the ``doc2`` command. This new generator uses all of the semantic passes - of the compiler and can thus generate documentation for symbols hiding in - macros. -- The compiler now supports the ``dynlib`` pragma for variables. -- The compiler now supports ``bycopy`` and ``byref`` pragmas that affect how - objects/tuples are passed. -- The embedded profiler became a stack trace profiler and has been documented. - - -Language Additions ------------------- - -- Added explicit ``static`` sections for enforced compile time evaluation. -- Added an alternative notation for lambdas with ``do``. -- ``addr`` is now treated like a prefix operator syntactically. -- Added ``global`` pragma that can be used to introduce new global variables - from within procs. -- ``when`` expressions are now allowed just like ``if`` expressions. -- The precedence for operators starting with ``@`` is different now - allowing for *sigil-like* operators. -- Stand-alone ``finally`` and ``except`` blocks are now supported. -- Macros and templates can now be invoked as pragmas. -- The apostrophe in type suffixes for numerical literals is now optional. -- Unsigned integer types have been added. -- The integer promotion rules changed. -- Nimrod now tracks proper intervals for ``range`` over some built-in operators. -- In parameter lists a semicolon instead of a comma can be used to improve - readability: ``proc divmod(a, b: int; resA, resB: var int)``. -- A semicolon can now be used to have multiple simple statements on a single - line: ``inc i; inc j``. -- ``bind`` supports overloaded symbols and operators. -- A ``distinct`` type can now borrow from generic procs. -- Added the pragmas ``gensym``, ``inject`` and ``dirty`` for hygiene - in templates. -- Comments can be continued with a backslash continuation character so that - comment pieces don't have to align on the same column. -- Enums can be annotated with ``pure`` so that their field names do not pollute - the current scope. -- A proc body can consist of an expression that has a type. This is rewritten - to ``result = expression`` then. -- Term rewriting macros (see `trmacros <http://nimrod-code.org/trmacros.html>`_) - have been implemented but are still in alpha. diff --git a/web/news/e007_version_0_9_2.rst b/web/news/e007_version_0_9_2.rst deleted file mode 100644 index 89352c06c..000000000 --- a/web/news/e007_version_0_9_2.rst +++ /dev/null @@ -1,118 +0,0 @@ -Version 0.9.2 released -====================== - -.. container:: metadata - - Posted by Dominik Picheta on 20/05/2013 - -We are pleased to announce that version 0.9.2 of the Nimrod compiler has been -released. This release has attracted by far the most contributions in comparison -to any other release. - -This release brings with it many new features and bug fixes, a list of which -can be seen later. One of the major new features is the effect system together -with exception tracking which allows for checked exceptions and more, -for further details check out the `manual <manual.html#effect-system>`_. -Another major new feature is the introduction of statement list expressions, -more details on these can be found `here <manual.html#statement-list-expression>`_. -The ability to exclude symbols from modules has also been -implemented, this feature can be used like so: ``import module except symbol``. - -Thanks to all `contributors <https://github.com/Araq/Nimrod/contributors>`_! - -Bugfixes --------- - -- The old GC never collected cycles correctly. Fixed but it can cause - performance regressions. However you can deactivate the cycle collector - with ``GC_disableMarkAndSweep`` and run it explicitly at an appropriate time - or not at all. There is also a new GC you can activate - with ``--gc:markAndSweep`` which does not have this problem but is slower in - general and has no realtime guarantees. -- ``cast`` for floating point types now does the bitcast as specified in the - manual. This breaks code that erroneously uses ``cast`` to convert different - floating point values. -- SCGI module's performance has been improved greatly, it will no longer block - on many concurrent requests. -- In total fixed over 70 github issues and merged over 60 pull requests. - - -Library Additions ------------------ - -- There is a new experimental mark&sweep GC which can be faster (or much - slower) than the default GC. Enable with ``--gc:markAndSweep``. -- Added ``system.onRaise`` to support a condition system. -- Added ``system.locals`` that provides access to a proc's locals. -- Added ``macros.quote`` for AST quasi-quoting. -- Added ``system.unsafeNew`` to support hacky variable length objects. -- ``system.fields`` and ``system.fieldPairs`` support ``object`` too; they - used to only support tuples. -- Added ``system.CurrentSourcePath`` returning the full file-system path of - the current source file. -- The ``macros`` module now contains lots of useful helpers for building up - abstract syntax trees. - - -Changes affecting backwards compatibility ------------------------------------------ - -- ``shared`` is a keyword now. -- Deprecated ``sockets.recvLine`` and ``asyncio.recvLine``, added - ``readLine`` instead. -- The way indentation is handled in the parser changed significantly. However, - this affects very little (if any) real world code. -- The expression/statement unification has been implemented. Again this - only affects edge cases and no known real world code. -- Changed the async interface of the ``scgi`` module. -- WideStrings are now garbage collected like other string types. - - -Compiler Additions ------------------- - -- The ``doc2`` command does not generate output for the whole project anymore. - Use the new ``--project`` switch to enable this behaviour. -- The compiler can now warn about shadowed local variables. However, this needs - to be turned on explicitly via ``--warning[ShadowIdent]:on``. -- The compiler now supports almost every pragma in a ``push`` pragma. -- Generic converters have been implemented. -- Added a **highly experimental** ``noforward`` pragma enabling a special - compilation mode that largely eliminates the need for forward declarations. - -Language Additions ------------------- - -- ``case expressions`` are now supported. -- Table constructors now mimic more closely the syntax of the ``case`` - statement. -- Nimrod can now infer the return type of a proc from its body. -- Added a ``mixin`` declaration to affect symbol binding rules in generics. -- Exception tracking has been added and the ``doc2`` command annotates possible - exceptions for you. -- User defined effects ("tags") tracking has been added and the ``doc2`` - command annotates possible tags for you. -- Types can be annotated with the new syntax ``not nil`` to explicitly state - that ``nil`` is not allowed. However currently the compiler performs no - advanced static checking for this; for now it's merely for documentation - purposes. -- An ``export`` statement has been added to the language: It can be used for - symbol forwarding so client modules don't have to import a module's - dependencies explicitly. -- Overloading based on ASTs has been implemented. -- Generics are now supported for multi methods. -- Objects can be initialized via an *object constructor expression*. -- There is a new syntactic construct ``(;)`` unifying expressions and - statements. -- You can now use ``from module import nil`` if you want to import the module - but want to enforce fully qualified access to every symbol in ``module``. - - -Notes for the future --------------------- - -- The scope rules of ``if`` statements will change in 0.9.4. This affects the - ``=~`` pegs/re templates. -- The ``sockets`` module will become a low-level wrapper of OS-specific socket - functions. All the high-level features of the current ``sockets`` module - will be moved to a ``network`` module. diff --git a/web/news/e008_new_website.rst b/web/news/e008_new_website.rst deleted file mode 100644 index b36cc99dd..000000000 --- a/web/news/e008_new_website.rst +++ /dev/null @@ -1,13 +0,0 @@ -New website design! -=================== - -.. container:: metadata - - Posted by Andreas Rumpf on 09/12/2014 - -A brand new website including an improved forum is now live. -All thanks go to Philip Witte and -Dominik Picheta, Philip Witte for the design of the website (together with -the logo) as well as the HTML and CSS code for his template, and Dominik Picheta -for integrating Philip's design with Nim's forum. We're sure you will -agree that Philip's design is beautiful. diff --git a/web/news/e009_andreas_rumpfs_talk.rst b/web/news/e009_andreas_rumpfs_talk.rst deleted file mode 100644 index 00cc5e101..000000000 --- a/web/news/e009_andreas_rumpfs_talk.rst +++ /dev/null @@ -1,11 +0,0 @@ -2014-01-15 Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online -============================================================================ - -.. container:: metadata - - Posted by Dominik Picheta on 12/01/2014 - -Andreas Rumpf presented *Nimrod: A New Approach to Metaprogramming* at -`Strange Loop 2013<https://thestrangeloop.com/sessions/nimrod-a-new-approach-to-meta-programming>`_. -The `video and slides<http://www.infoq.com/presentations/nimrod>`_ -of the talk are now available. diff --git a/web/news/e010_dr_dobbs_journal.rst b/web/news/e010_dr_dobbs_journal.rst deleted file mode 100644 index b48ccf31f..000000000 --- a/web/news/e010_dr_dobbs_journal.rst +++ /dev/null @@ -1,9 +0,0 @@ -Nimrod Featured in Dr. Dobb's Journal -===================================== - -.. container:: metadata - - Posted by Dominik Picheta on 11/02/2014 - -Nimrod has been `featured<http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321>`_ -as the cover story in the February 2014 issue of Dr. Dobb's Journal. diff --git a/web/news/e011_version_0_9_4.rst b/web/news/e011_version_0_9_4.rst deleted file mode 100644 index 2714c5c78..000000000 --- a/web/news/e011_version_0_9_4.rst +++ /dev/null @@ -1,179 +0,0 @@ -2014-04-21 Version 0.9.4 released -================================= - -.. container:: metadata - - Posted by Dominik Picheta on 21/04/2014 - -The Nimrod development community is proud to announce the release of version -0.9.4 of the Nimrod compiler and tools. **Note: This release has to be -considered beta quality! Lots of new features have been implemented but -unfortunately some do not fulfill our quality standards yet.** - -Prebuilt binaries and instructions for building from source are available -on the `download page <download.html>`_. - -This release includes about -`1400 changes <https://github.com/Araq/Nimrod/compare/v0.9.2...v0.9.4>`_ -in total including various bug -fixes, new languages features and standard library additions and improvements. -This release brings with it support for user-defined type classes, a brand -new VM for executing Nimrod code at compile-time and new symbol binding -rules for clean templates. - -It also introduces support for the brand new -`Babel package manager <https://github.com/nimrod-code/babel>`_ which -has itself seen its first release recently. Many of the wrappers that were -present in the standard library have been moved to separate repositories -and should now be installed using Babel. - -Apart from that a new **experimental** Asynchronous IO API has been added via -the ``asyncdispatch`` and ``asyncnet`` modules. The ``net`` and ``rawsockets`` -modules have also been added and they will likely replace the sockets -module in the next release. The Asynchronous IO API has been designed to -take advantage of Linux's epoll and Windows' IOCP APIs, support for BSD's -kqueue has not been implemented yet but will be in the future. -The Asynchronous IO API provides both -a callback interface and an interface which allows you to write code as you -would if you were writing synchronous code. The latter is done through -the use of an ``await`` macro which behaves similar to C#'s await. The -following is a very simple chat server demonstrating Nimrod's new async -capabilities. - -.. code-block::nim - import asyncnet, asyncdispatch - - var clients: seq[PAsyncSocket] = @[] - - proc processClient(client: PAsyncSocket) {.async.} = - while true: - let line = await client.recvLine() - for c in clients: - await c.send(line & "\c\L") - - proc serve() {.async.} = - var server = newAsyncSocket() - server.bindAddr(TPort(12345)) - server.listen() - - while true: - let client = await server.accept() - clients.add client - - processClient(client) - - serve() - runForever() - - -Note that this feature has been implemented with Nimrod's macro system and so -``await`` and ``async`` are no keywords. - -Syntactic sugar for anonymous procedures has also been introduced. It too has -been implemented as a macro. The following shows some simple usage of the new -syntax: - -.. code-block::nim - import future - - var s = @[1, 2, 3, 4, 5] - echo(s.map((x: int) => x * 5)) - -A list of changes follows, for a comprehensive list of changes take a look -`here <https://github.com/Araq/Nimrod/compare/v0.9.2...v0.9.4>`_. - -Library Additions ------------------ - -- Added ``macros.genSym`` builtin for AST generation. -- Added ``macros.newLit`` procs for easier AST generation. -- Added module ``logging``. -- Added module ``asyncdispatch``. -- Added module ``asyncnet``. -- Added module ``net``. -- Added module ``rawsockets``. -- Added module ``selectors``. -- Added module ``asynchttpserver``. -- Added support for the new asynchronous IO in the ``httpclient`` module. -- Added a Python-inspired ``future`` module that features upcoming additions - to the ``system`` module. - - -Changes affecting backwards compatibility ------------------------------------------ - -- The scoping rules for the ``if`` statement changed for better interaction - with the new syntactic construct ``(;)``. -- ``OSError`` family of procedures has been deprecated. Procedures with the same - name but which take different parameters have been introduced. These procs now - require an error code to be passed to them. This error code can be retrieved - using the new ``OSLastError`` proc. -- ``os.parentDir`` now returns "" if there is no parent dir. -- In CGI scripts stacktraces are shown to the user only - if ``cgi.setStackTraceStdout`` is used. -- The symbol binding rules for clean templates changed: ``bind`` for any - symbol that's not a parameter is now the default. ``mixin`` can be used - to require instantiation scope for a symbol. -- ``quoteIfContainsWhite`` now escapes argument in such way that it can be safely - passed to shell, instead of just adding double quotes. -- ``macros.dumpTree`` and ``macros.dumpLisp`` have been made ``immediate``, - ``dumpTreeImm`` and ``dumpLispImm`` are now deprecated. -- The ``nil`` statement has been deprecated, use an empty ``discard`` instead. -- ``sockets.select`` now prunes sockets that are **not** ready from the list - of sockets given to it. -- The ``noStackFrame`` pragma has been renamed to ``asmNoStackFrame`` to - ensure you only use it when you know what you're doing. -- Many of the wrappers that were present in the standard library have been - moved to separate repositories and should now be installed using Babel. - - -Compiler Additions ------------------- - -- The compiler can now warn about "uninitialized" variables. (There are no - real uninitialized variables in Nimrod as they are initialized to binary - zero). Activate via ``{.warning[Uninit]:on.}``. -- The compiler now enforces the ``not nil`` constraint. -- The compiler now supports a ``codegenDecl`` pragma for even more control - over the generated code. -- The compiler now supports a ``computedGoto`` pragma to support very fast - dispatching for interpreters and the like. -- The old evaluation engine has been replaced by a proper register based - virtual machine. This fixes numerous bugs for ``nimrod i`` and for macro - evaluation. -- ``--gc:none`` produces warnings when code uses the GC. -- A ``union`` pragma for better C interoperability is now supported. -- A ``packed`` pragma to control the memory packing/alignment of fields in - an object. -- Arrays can be annotated to be ``unchecked`` for easier low level - manipulations of memory. -- Support for the new Babel package manager. - - -Language Additions ------------------- - -- Arrays can now be declared with a single integer literal ``N`` instead of a - range; the range is then ``0..N-1``. -- Added ``requiresInit`` pragma to enforce explicit initialization. -- Exported templates are allowed to access hidden fields. -- The ``using statement`` enables you to more easily author domain-specific - languages and libraries providing OOP-like syntactic sugar. -- Added the possibility to override various dot operators in order to handle - calls to missing procs and reads from undeclared fields at compile-time. -- The overload resolution now supports ``static[T]`` params that must be - evaluable at compile-time. -- Support for user-defined type classes has been added. -- The *command syntax* is supported in a lot more contexts. -- Anonymous iterators are now supported and iterators can capture variables - of an outer proc. -- The experimental ``strongSpaces`` parsing mode has been implemented. -- You can annotate pointer types with regions for increased type safety. -- Added support for the builtin ``spawn`` for easy thread pool usage. - - -Tools improvements ------------------- - -- c2nim can deal with a subset of C++. Use the ``--cpp`` command line option - to activate. diff --git a/web/news/e012_version_0_9_6.rst b/web/news/e012_version_0_9_6.rst deleted file mode 100644 index 7a148aaa5..000000000 --- a/web/news/e012_version_0_9_6.rst +++ /dev/null @@ -1,65 +0,0 @@ -Version 0.9.6 released -================================= - -.. container:: metadata - - Posted by Andreas Rumpf on 19/10/2014 - -**Note: 0.9.6 is the last release of Nimrod. The language is being renamed to -Nim. Nim slightly breaks compatibility.** - -This is a maintenance release. The upcoming 0.10.0 release has -the new features and exciting developments. - - -Changes affecting backwards compatibility ------------------------------------------ - -- ``spawn`` now uses an elaborate self-adapting thread pool and as such - has been moved into its own module. So to use it, you now have to import - ``threadpool``. -- The symbol binding rules in generics changed: ``bar`` in ``foo.bar`` is - now considered for implicit early binding. -- ``c2nim`` moved into its own repository and is now a Babel package. -- ``pas2nim`` moved into its own repository and is now a Babel package. -- ``system.$`` for floating point types now produces a human friendly string - representation. -- ``uri.TUrl`` as well as the ``parseurl`` module are now deprecated in favour - of the new ``TUri`` type in the ``uri`` module. -- The ``destructor`` pragma has been deprecated. Use the ``override`` pragma - instead. The destructor's name has to be ``destroy`` now. -- ``lambda`` is not a keyword anymore. -- **system.defined has been split into system.defined and system.declared**. - You have to use ``--symbol`` to declare new conditional symbols that can be - set via ``--define``. -- ``--threadanalysis:on`` is now the default. To make your program compile - you can disable it but this is only a temporary solution as this option - will disappear soon! - - -Compiler improvements ---------------------- - -- Multi method dispatching performance has been improved by a factor of 10x for - pathological cases. - - -Language Additions ------------------- - -- This version introduces the ``deprecated`` pragma statement that is used - to handle the upcoming massive amount of symbol renames. -- ``spawn`` can now wrap proc that has a return value. It then returns a data - flow variable of the wrapped return type. - - -Library Additions ------------------ - -- Added module ``cpuinfo``. -- Added module ``threadpool``. -- ``sequtils.distnct`` has been renamed to ``sequtils.deduplicate``. -- Added ``algorithm.reversed`` -- Added ``uri.combine`` and ``uri.parseUri``. -- Some sockets procedures now support a ``SafeDisconn`` flag which causes - them to handle disconnection errors and not raise them. diff --git a/web/news/e013_version_0_10_2.rst b/web/news/e013_version_0_10_2.rst deleted file mode 100644 index ad8afa3bf..000000000 --- a/web/news/e013_version_0_10_2.rst +++ /dev/null @@ -1,198 +0,0 @@ -Version 0.10.2 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta on 29/12/2014 - -This release marks the completion of a very important change to the project: -the official renaming from Nimrod to Nim. Version 0.10.2 contains many language -changes, some of which may break your existing code. For your convenience, we -added a new tool called `nimfix <nimfix.html>`_ that will help you convert your -existing projects so that it works with the latest version of the compiler. - -Progress towards version 1.0 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Although Nim is still pre-1.0, we were able to keep the number of breaking -changes to a minimum so far. Starting with version 1.0, we will not introduce -any breaking changes between major release versions. -One of Nim's goals is to ensure that the compiler is as efficient as possible. -Take a look at the -`latest benchmarks <https://github.com/logicchains/LPATHBench/blob/master/writeup.md>`_, -which show that Nim is consistently near -the top and already nearly as fast as C and C++. Recent developments, such as -the new ``asyncdispatch`` module will allow you to write efficient web server -applications using non-blocking code. Nim now also has a built-in thread pool -for lightweight threading through the use of ``spawn``. - -The unpopular "T" and "P" prefixes on types have been deprecated. Nim also -became more expressive by weakening the distinction between statements and -expressions. We also added a new and searchable forum, a new website, and our -documentation generator ``docgen`` has seen major improvements. Many thanks to -Nick Greenfield for the much more beautiful documentation! - - - -What's left to be done -~~~~~~~~~~~~~~~~~~~~~~ - -The 1.0 release is actually very close. Apart from bug fixes, there are -two major features missing or incomplete: - -* ``static[T]`` needs to be defined precisely and the bugs in the - implementation need to be fixed. -* Overloading of the assignment operator is required for some generic - containers and needs to be implemented. - -This means that fancy matrix libraries will finally start to work, which used -to be a major point of pain in the language. - - -Nimble and other Nim tools -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Outside of the language and the compiler itself many Nim tools have seen -considerable improvements. - -Babel the Nim package manager has been renamed to Nimble. Nimble's purpose -is the installation of packages containing libraries and/or applications -written in Nim. -Even though Nimble is still very young it already is very -functional. It can install packages by name, it does so by accessing a -packages repository which is hosted on a GitHub repo. Packages can also be -installed via a Git repo URL or Mercurial repo URL. The package repository -is searchable through Nimble. Anyone is free to add their own packages to -the package repository by forking the -`nim-lang/packages <https://github.com/nim-lang/packages>`_ repo and creating -a pull request. Nimble is fully cross-platform and should be fully functional -on all major operating systems. -It is of course completely written in Nim. - -Changelog -~~~~~~~~~ - -Changes affecting backwards compatibility ------------------------------------------ - -- **The language has been renamed from Nimrod to Nim.** The name of the - compiler changed from ``nimrod`` to ``nim`` too. -- ``system.fileHandle`` has been renamed to ``system.getFileHandle`` to - prevent name conflicts with the new type ``FileHandle``. -- Comments are now not part of the AST anymore, as such you cannot use them - in place of ``discard``. -- Large parts of the stdlib got rid of the T/P type prefixes. Instead most - types now simply start with an uppercased letter. The - so called "partial case sensitivity" rule is now active allowing for code - like ``var foo: Foo`` in more contexts. -- String case (or any non-ordinal case) statements - without 'else' are deprecated. -- Recursive tuple types are not allowed anymore. Use ``object`` instead. -- The PEGS module returns ``nil`` instead of ``""`` when an optional capture - fails to match. -- The re module returns ``nil`` instead of ``""`` when an optional capture - fails to match. -- The "symmetric set difference" operator (``-+-``) never worked and has been - removed. -- ``defer`` is a keyword now. -- ``func`` is a keyword now. -- The ``using`` language feature now needs to be activated via the new - ``{.experimental.}`` pragma that enables experimental language features. -- Destructors are now officially *experimental*. -- Standalone ``except`` and ``finally`` statements are deprecated now. - The standalone ``finally`` can be replaced with ``defer``, - standalone ``except`` requires an explicit ``try``. -- Operators ending in ``>`` are considered as "arrow like" and have their - own priority level and are right associative. This means that - the ``=>`` and ``->`` operators from the `future <future.html>`_ module - work better. -- Field names in tuples are now ignored for type comparisons. This allows - for greater interoperability between different modules. -- Statement lists are not converted to an implicit ``do`` block anymore. This - means the confusing ``nnkDo`` nodes when working with macros are gone for - good. - - -Language Additions ------------------- - -- The new concurrency model has been implemented including ``locks`` sections, - lock levels and object field ``guards``. -- The ``parallel`` statement has been implemented. -- ``deepCopy`` has been added to the language. -- The builtin ``procCall`` can be used to get ``super``-like functionality - for multi methods. -- There is a new pragma ``{.experimental.}`` that enables experimental - language features per module, or you can enable these features on a global - level with the ``--experimental`` command line option. - - -Compiler Additions ------------------- - -- The compiler now supports *mixed* Objective C / C++ / C code generation: - The modules that use ``importCpp`` or ``importObjc`` are compiled to C++ - or Objective C code, any other module is compiled to C code. This - improves interoperability. -- There is a new ``parallel`` statement for safe fork&join parallel computing. -- ``guard`` and ``lock`` pragmas have been implemented to support safer - concurrent programming. -- The following procs are now available at compile-time:: - - math.sqrt, math.ln, math.log10, math.log2, math.exp, math.round, - math.arccos, math.arcsin, math.arctan, math.arctan2, math.cos, - math.cosh, math.hypot, math.sinh, math.sin, math.tan, math.tanh, - math.pow, math.trunc, math.floor, math.ceil, math.fmod, - os.getEnv, os.existsEnv, os.dirExists, os.fileExists, - system.writeFile - -- Two backticks now produce a single backtick within an ``emit`` or ``asm`` - statement. -- There is a new tool, `nimfix <nimfix.html>`_ to help you in updating your - code from Nimrod to Nim. -- The compiler's output has been prettified. - -Library Additions ------------------ - -- Added module ``fenv`` to control the handling of floating-point rounding and - exceptions (overflow, division by zero, etc.). -- ``system.setupForeignThreadGc`` can be used for better interaction with - foreign libraries that create threads and run a Nim callback from these - foreign threads. -- List comprehensions have been implemented as a macro in the ``future`` - module. -- The new Async module (``asyncnet``) now supports SSL. -- The ``smtp`` module now has an async implementation. -- Added module ``asyncfile`` which implements asynchronous file reading - and writing. -- ``osproc.kill`` has been added. -- ``asyncnet`` and ``asynchttpserver`` now support ``SO_REUSEADDR``. - -Bugfixes --------- - -- ``nil`` and ``NULL`` are now preserved between Nim and databases in the - ``db_*`` modules. -- Fixed issue with OS module in non-unicode mode on Windows. -- Fixed issue with ``x.low`` - (`#1366 <https://github.com/Araq/Nim/issues/1366>`_). -- Fixed tuple unpacking issue inside closure iterators - (`#1067 <https://github.com/Araq/Nim/issues/1067>`_). -- Fixed ENDB compilation issues. -- Many ``asynchttpserver`` fixes. -- Macros can now keep global state across macro calls - (`#903 <https://github.com/Araq/Nim/issues/903>`_). -- ``osproc`` fixes on Windows. -- ``osproc.terminate`` fixed. -- Improvements to exception handling in async procedures. - (`#1487 <https://github.com/Araq/Nim/issues/1487>`_). -- ``try`` now works at compile-time. -- Fixes ``T = ref T`` to be an illegal recursive type. -- Self imports are now disallowed. -- Improved effect inference. -- Fixes for the ``math`` module on Windows. -- User defined pragmas will now work for generics that have - been instantiated in different modules. -- Fixed queue exhaustion bug. -- Many, many more. diff --git a/web/news/e014_version_0_11_0.rst b/web/news/e014_version_0_11_0.rst deleted file mode 100644 index a8a58f2ae..000000000 --- a/web/news/e014_version_0_11_0.rst +++ /dev/null @@ -1,396 +0,0 @@ -Version 0.11.0 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta on 30/04/2015 - -With this release we are one step closer to reaching version 1.0 and by -extension the persistence of the Nim specification. As mentioned in the -previous release notes, starting with version 1.0, we will not be introducing -any more breaking changes to Nim. - -The *language* itself is very close to 1.0, the primary area that requires -more work is the standard library. - -Take a look at the `download <download.html>`_ page for binaries (Windows-only) -and 0.11.0 snapshots of the source code. The Windows installer now also -includes `Aporia <https://github.com/nim-lang/aporia>`_, -`Nimble <https://github.com/nim-lang/nimble>`_ and other useful tools to get -you started with Nim. - -What's left to be done -~~~~~~~~~~~~~~~~~~~~~~ - -The 1.0 release is expected by the end of this year. Rumors say it will be in -summer 2015. What's left: - -* Bug fixes, bug fixes, bug fixes, in particular: - - The remaining bugs of the lambda lifting pass that is responsible to enable - closures and closure iterators need to be fixed. - - ``concept`` needs to be refined, a nice name for the feature is not enough. - - Destructors need to be refined. - - ``static[T]`` needs to be fixed. - - Finish the implementation of the 'parallel' statement. -* ``immediate`` templates and macros will be deprecated as these will soon be - completely unnecessary, instead the ``typed`` or ``untyped`` metatypes can - be used. -* More of the standard library should be moved to Nimble packages and what's - left should use the features we have for concurrency and parallelism. - - - -Changes affecting backwards compatibility ------------------------------------------ - -- Parameter names are finally properly ``gensym``'ed. This can break - templates though that used to rely on the fact that they are not. - (Bug #1915.) This means this doesn't compile anymore: - -.. code-block:: nim - - template doIt(body: stmt) {.immediate.} = - # this used to inject the 'str' parameter: - proc res(str: string) = - body - - doIt: - echo str # Error: undeclared identifier: 'str' -.. - - This used to inject the ``str`` parameter into the scope of the body. - 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 is 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 <0.11.0/nimsuggest.html>`_. -- *arrow like* operators are not right associative anymore and are 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. -- The compiler and nimsuggest now count columns starting with 1, not 0 for - consistency with the rest of the world. - - -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 <0.11.0/manual.html#pragmas-experimental-pragma>`_ 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 - template takesBlock(a, b: int, x: varargs[expr]; blck: stmt) = - blck - echo a, b - - takesBlock 1, 2, "some", 0.90, "random stuff": - echo "yay" - -- 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") - - -- ``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 <0.11.0/nimc.html#additional-features-importcpp-pragma>`_ - for more information. -- ``macros.getType`` can be used to query an AST's type at compile-time. This - enables more powerful macros, for instance *currying* can now be done with - a macro. - - -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. -- Added sexp.nim to parse and generate sexp. - - -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>`_) diff --git a/web/news/e015_version_0_11_2.rst b/web/news/e015_version_0_11_2.rst deleted file mode 100644 index 273182340..000000000 --- a/web/news/e015_version_0_11_2.rst +++ /dev/null @@ -1,12 +0,0 @@ -Version 0.11.2 released -================================== - -.. container:: metadata - - Posted by Andreas Rumpf on 04/05/2015 - -This is just a bugfix release that fixes the most pressing regressions we -introduced with version 0.11.0. The way types are computed was -changed significantly causing all sort of problems. Sorry for the -inconvenience; we grew overconfident our large test suite would prevent these -things. diff --git a/web/news/e016_nim_conf1.rst b/web/news/e016_nim_conf1.rst deleted file mode 100644 index 228bffd28..000000000 --- a/web/news/e016_nim_conf1.rst +++ /dev/null @@ -1,26 +0,0 @@ -First Nim conference -==================== - -.. container:: metadata - - Posted by Dominik Picheta on 16/10/2015 - -.. raw::html - - <img src="../assets/zeo/banner.jpg" alt="First Nim conference in Ukraine!" width="682"/> - -This Autumn you have the unique opportunity to take part in the first Nim event -held in Kyiv and to meet the creator of the Nim programming language - -Andreas Rumpf. The event is hosted by Zeo Alliance and is taking place between -14-15 November 2015 in Kyiv, Ukraine. - -During the workshop you will learn: - -- The basics of the language including its safe and unsafe subsets. -- How to use Nim to develop web applications. -- How Nim's meta programming capabilities make Nim the ultimate glue language, - excellent at interoperability with C++, JavaScript, Java and others. -- Games in Nim and the ability to rapidly prototype without sacrificing speed. - -Registration is free, but the number of places is limited. More details -can be found `here <https://nimworkshop.splashthat.com/>`_. diff --git a/web/news/e017_version_0_12_0.rst b/web/news/e017_version_0_12_0.rst deleted file mode 100644 index 63088f9e2..000000000 --- a/web/news/e017_version_0_12_0.rst +++ /dev/null @@ -1,403 +0,0 @@ -2015-10-27 Version 0.12.0 released -================================== - -.. container:: metadata - - Posted by Dominik Picheta on 27/10/2015 - -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 -`download <download.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 ------------------------------------------ -- The regular expression modules, ``re`` and ``nre`` now depend on version - 8.36 of PCRE. If you have an older version you may see a message similar - to ``could not import: pcre_free_study`` output when you start your - program. See `this issue <https://github.com/docopt/docopt.nim/issues/13>`_ - for more information. -- ``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``. -- The compiler is now stricter with what is allowed as a case object - discriminator. The following code used to compile but was not supported - completely and so now fails: - -.. code-block:: nim - type - DataType* {.pure.} = enum - Char = 1, - Int8 = 2, - Int16 = 3, - Int32 = 4, - Int64 = 5, - Float32 = 6, - Float64 = 7 - - DataSeq* = object - case kind* : DataType - of DataType.Char: charSeq* : seq[char] - of DataType.Int8: int8Seq* : seq[int8] - of DataType.Int16: int16Seq* : seq[int16] - of DataType.Int32: int32Seq* : seq[int32] - of DataType.Int64: int64Seq* : seq[int64] - of DataType.Float32: float32Seq* : seq[float32] - of DataType.Float64: float64Seq* : seq[float64] - - length* : int - - - -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>`_) diff --git a/web/news/e018_oscon_amsterdam.rst b/web/news/e018_oscon_amsterdam.rst deleted file mode 100644 index fcb4a8794..000000000 --- a/web/news/e018_oscon_amsterdam.rst +++ /dev/null @@ -1,13 +0,0 @@ -Andreas Rumpf's talk at OSCON Amsterdam -================================================== - -.. container:: metadata - - Posted by Dominik Picheta on 18/01/2016 - -In case you have missed it, here is Andreas' Nim: An Overview talk at -OSCON Amsterdam. - -.. raw:: html - - <iframe width="560" height="315" src="https://www.youtube.com/embed/4rJEBs_Nnaw" frameborder="0" allowfullscreen></iframe> diff --git a/web/news/e019_version_0_13_0.rst b/web/news/e019_version_0_13_0.rst deleted file mode 100644 index 2c8e66fa3..000000000 --- a/web/news/e019_version_0_13_0.rst +++ /dev/null @@ -1,182 +0,0 @@ -Version 0.13.0 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta on 18/01/2016 - -Once again we are proud to announce the latest release of the Nim compiler -and related tools. This release comes just 3 months after the last -release! - -A new version of Nimble which depends on this release, has also been -released. See `this <http://forum.nim-lang.org/t/1912>`_ forum thread for -more information about the Nimble release. - -This release of Nim includes over 116 bug fixes, many of which are related -to closures. The lambda lifting algorithm in the compiler has been completely -rewritten, and some changes have been made to the semantics of closures in -Nim as a result. These changes may affect backwards compatibility and are all -described in the section below. - -With this release, we are one step closer to Nim version 1.0. -The 1.0 release will be a big milestone for Nim, because after that version -is released there will be no more breaking changes made to the language -or the standard library. - -That being said, the next release will likely be Nim 0.14. It will focus on -improvements to the GC and concurrency. We will in particular be looking at -ways to add multi-core support to async await. Standard library improvements -are also on our roadmap but may not make it for Nim 0.14. - -As always you can download the latest version of Nim from the -`download <download.html>`_ page. - -Happy coding! - -Changes affecting backwards compatibility ------------------------------------------ - -- ``macros.newLit`` for ``bool`` now produces false/true symbols which - actually work with the bool datatype. -- When compiling to JS: ``Node``, ``NodeType`` and ``Document`` are no longer - defined. Use the types defined in ``dom.nim`` instead. -- The check ``x is iterator`` (used for instance in concepts) was always a - weird special case (you could not use ``x is proc``) and was removed from - the language. -- Top level routines cannot have the calling convention ``closure`` - anymore. -- The ``redis`` module has been moved out of the standard library. It can - now be installed via Nimble and is located here: - https://github.com/nim-lang/redis -- ``math.RunningStat`` and its associated procs have been moved from - the ``math`` module to a new ``stats`` module. - - -Syntax changes -~~~~~~~~~~~~~~ - -The parser now considers leading whitespace in front of operators -to determine if an operator is used in prefix or infix position. -This means that finally ``echo $foo`` is parsed as people expect, -which is as ``echo($foo)``. It used to be parsed as ``(echo) $ (foo)``. - -``echo $ foo`` continues to be parsed as ``(echo) $ (foo)``. - -This also means that ``-1`` is always parsed as prefix operator so -code like ``0..kArraySize div 2 -1`` needs to be changed to -``0..kArraySize div 2 - 1``. - -This release also adds multi-line comments to Nim. The syntax for them is: -``#[ comment here ]#``. For more details read the section of -the `manual <docs/manual.html#lexical-analysis-multiline-comments>`_. - -Iterator changes -~~~~~~~~~~~~~~~~ - -Implicit return type inference for iterators has been removed from the language. The following used to work: - -.. code-block:: nim - iterator it = - yield 7 - -This was a strange special case and has been removed. Now you need to write it like so which is consistent with procs: - -.. code-block:: nim - iterator it: auto = - yield 7 - - -Closure changes -~~~~~~~~~~~~~~~ - -The semantics of closures changed: Capturing variables that are in loops do not produce a new environment. Nim closures behave like JavaScript closures now. - -The following used to work as the environment creation used to be attached to the loop body: - -.. code-block:: nim - - proc outer = - var s: seq[proc(): int {.closure.}] = @[] - for i in 0 ..< 30: - let ii = i - s.add(proc(): int = return ii*ii) - -This behaviour has changed in 0.13.0 and now needs to be written as: - -.. code-block:: nim - - proc outer = - var s: seq[proc(): int {.closure.}] = @[] - for i in 0 ..< 30: - (proc () = - let ii = i - s.add(proc(): int = return ii*ii))() - -The reason is that environment creations are now only performed once -per proc call. This change is subtle and unfortunate, but: - -1. Affects almost no code out there. -2. Is easier to implement and we are at a point in Nim's development process where simple+stable wins over perfect-in-theory+unstable-in-practice. -3. Implies programmers are more in control of where memory is allocated which is beneficial for a systems programming language. - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github <https://github.com/nim-lang/Nim/issues?utf8=%E2%9C%93&q=is%3Aissue+closed%3A%222015-10-27+..+2016-01-19%22+>`_. - -- Fixed "Generic arguments cannot be used in templates (raising undeclared identifier)" - (`#3498 <https://github.com/nim-lang/Nim/issues/3498>`_) -- Fixed "multimethods: Error: internal error: cgmeth.genConv" - (`#3550 <https://github.com/nim-lang/Nim/issues/3550>`_) -- Fixed "nimscript - SIGSEGV in except block" - (`#3546 <https://github.com/nim-lang/Nim/issues/3546>`_) -- Fixed "Bool literals in macros do not work." - (`#3541 <https://github.com/nim-lang/Nim/issues/3541>`_) -- Fixed "Docs: nativesocket.html - 404" - (`#3582 <https://github.com/nim-lang/Nim/issues/3582>`_) -- Fixed ""not nil" return types never trigger an error or warning" - (`#2285 <https://github.com/nim-lang/Nim/issues/2285>`_) -- Fixed "No warning or error is raised even if not nil is specified " - (`#3222 <https://github.com/nim-lang/Nim/issues/3222>`_) -- Fixed "Incorrect fsmonitor add() filter logic" - (`#3611 <https://github.com/nim-lang/Nim/issues/3611>`_) -- Fixed ""nimble install nimsuggest" failed" - (`#3622 <https://github.com/nim-lang/Nim/issues/3622>`_) -- Fixed "compile time `excl ` cause SIGSEGV" - (`#3639 <https://github.com/nim-lang/Nim/issues/3639>`_) -- Fixed "Unable to echo unsigned ints at compile-time" - (`#2514 <https://github.com/nim-lang/Nim/issues/2514>`_) -- Fixed "Nested closure iterator produces internal error" - (`#1725 <https://github.com/nim-lang/Nim/issues/1725>`_) -- Fixed "C Error on walkDirRec closure" - (`#3636 <https://github.com/nim-lang/Nim/issues/3636>`_) -- Fixed "Error in generated c code" - (`#3201 <https://github.com/nim-lang/Nim/issues/3201>`_) -- Fixed "C Compile-time error with generic proc type." - (`#2659 <https://github.com/nim-lang/Nim/issues/2659>`_) -- Fixed "ICE dereferencing array pointer" - (`#2240 <https://github.com/nim-lang/Nim/issues/2240>`_) -- Fixed "Lambda lifting crash" - (`#2007 <https://github.com/nim-lang/Nim/issues/2007>`_) -- Fixed "Can't reference outer variables from a closure in an iterator" - (`#2604 <https://github.com/nim-lang/Nim/issues/2604>`_) -- Fixed "M&S collector breaks with nested for loops." - (`#603 <https://github.com/nim-lang/Nim/issues/603>`_) -- Fixed "Regression: bad C codegen" - (`#3723 <https://github.com/nim-lang/Nim/issues/3723>`_) -- Fixed "JS backend - handle bool type in case statement" - (`#3722 <https://github.com/nim-lang/Nim/issues/3722>`_) -- Fixed "linenoise compilation with cpp" - (`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_) -- Fixed "(???,???) duplicate case label" - (`#3665 <https://github.com/nim-lang/Nim/issues/3665>`_) -- Fixed "linenoise compilation with cpp" - (`#3720 <https://github.com/nim-lang/Nim/issues/3720>`_) -- Fixed "Update list of backward incompatibilities for Nim 0.12.0 in the main site" - (`#3689 <https://github.com/nim-lang/Nim/issues/3689>`_) -- Fixed "Can't compile nimble with latest devel - codegen bug" - (`#3730 <https://github.com/nim-lang/Nim/issues/3730>`_) diff --git a/web/news/e020_nim_in_action.rst b/web/news/e020_nim_in_action.rst deleted file mode 100644 index 33bcb7947..000000000 --- a/web/news/e020_nim_in_action.rst +++ /dev/null @@ -1,32 +0,0 @@ -Nim in Action is now available! -=============================== - -.. container:: metadata - - Posted by Dominik Picheta on 27/01/2016 - -.. raw::html - - <a href="https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81"> - <img src="../assets/niminaction/banner.jpg" alt="New in Manning Early Access Program: Nim in Action!" width="682"/> - </a> - -We are proud to announce that *Nim in Action*, a book about the Nim programming -language, is now available! - -The book is available at this URL: -`https://www.manning.com/books/nim-in-action <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_ - -The first three chapters are available for download -as an eBook through Manning's Early Access program. You can download a free -sample of the book containing the first chapter as well! - -*Nim in Action* is currently being written and is expected to be completed by -Summer 2016. If you purchase the eBook you will start receiving new chapters -as they become available. You can also purchase the printed book together with -the eBook for a slightly higher price. - -If you do read the book, even if it's just the first chapter, then please share -any comments, suggestions and questions on the -`Nim forum <http://forum.nim-lang.org/t/1978>`_ or in -Manning's own `Author Online forum! <https://forums.manning.com/forums/nim-in-action>`_ diff --git a/web/news/e021_meet_sponsors.rst b/web/news/e021_meet_sponsors.rst deleted file mode 100644 index 0bfb472c5..000000000 --- a/web/news/e021_meet_sponsors.rst +++ /dev/null @@ -1,30 +0,0 @@ -Meet our BountySource sponsors -============================== - -.. container:: metadata - - Posted by Dominik Picheta on 04/06/2016 - - -.. raw::html - - <a href="../sponsors.html"> - <img src="../assets/bountysource/meet_sponsors.png" alt="Meet our BountySource sponsors!" width="400"/> - </a> - -It has now been two months since we began our -`BountySource fundraiser <https://salt.bountysource.com/teams/nim>`_. We -promised to create a "Current sponsors" page and are happy to announce that -it is now live `here <http://nim-lang.org/sponsors.html>`_. - -We are happy to say that last month we raised more than in the previous month! -A staggering $862 was raised during that month and we thank each and every one -of you once again for your generous contributions. - -We are gearing up for a brand new release of Nim that includes many bug fixes -and some new features. In the meantime, as always, feel free to get in -touch with us via `Twitter <https://twitter.com/nim_lang>`_, the -`#nim channel on Freenode <http://webchat.freenode.net/?channels=nim>`_ -or via email at contact@nim-lang.org. - -Thanks for reading! diff --git a/web/news/e022_version_0_14_0.rst b/web/news/e022_version_0_14_0.rst deleted file mode 100644 index 6634d0053..000000000 --- a/web/news/e022_version_0_14_0.rst +++ /dev/null @@ -1,476 +0,0 @@ -Version 0.14.0 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta on 07/06/2016 - -It's been a while since the last release, but we've been very busy in the -meantime. In -addition to working on Nim we have started a -`BountySource campaign <https://salt.bountysource.com/teams/nim>`_ and -announced the pre-release of a new Nim book titled -`Nim in Action <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_. -Our BountySource campaign has already been very successful, helping us raise -enough funds to surpass 4 of our monthly goals. The companies and individuals -that made this possible are listed on our brand new -`sponsors page <http://nim-lang.org/sponsors.html>`_. - -This release includes over 260 bug fixes. As mentioned in the previous release -announcement, one of the focuses of this release was going to be improvements -to the GC. Indeed, the most prominent fixes are related to the GC not collecting -cycles properly. This was a major problem that was triggered typically when -applications using asynchronous I/O were left running for long periods of time. - -There have also been many fixes to the way that the compiler sources are -installed. Some applications such as Nimble depend on these sources and they -are now included in the release tarballs. This should fix many of the problems -that users experienced trying to compile the Nimble package manager. - -Finally, you will find multiple changes in the standard library. Some of which -unfortunately affects backwards compatibility. This includes the ``random`` -procedures being moved to a new ``random`` module, HTTP headers being stored -in a new ``HttpHeaders`` object and the ``round`` procedure in the ``math`` module -being changed to return a ``float`` instead of an ``int``. You can find a full -list of such changes below. - -Together with the new release of Nim, we are also releasing a new version of -Nimble. The release notes for it are available on -`GitHub <https://github.com/nim-lang/nimble/blob/master/changelog.markdown#074---06062016>`_. - -As always you can download the latest version of Nim from the -`download <http://nim-lang.org/download.html>`_ page. - -We hope that you will like this new release. Let us know if you run into -any trouble, have any questions or want to give some feedback. You can get -in touch with us on the `Forum <http://forum.nim-lang.org/>`_, -`IRC <http://webchat.freenode.net/?channels=nim>`_, -`Twitter <http://twitter.com/nim_lang>`_, -or via email contact@nim-lang.org. - -Happy coding! - -Changes affecting backwards compatibility ------------------------------------------ - -- ``--out`` and ``--nimcache`` command line arguments are now relative to - current directory. Previously they were relative to project directory. -- The json module now stores the name/value pairs in objects internally as a - hash table of type ``fields*: Table[string, JsonNode]`` instead of a - sequence. This means that order is no longer preserved. When using the - ``table.mpairs`` iterator only the returned values can be modified, no - longer the keys. -- The deprecated Nim shebang notation ``#!`` was removed from the language. Use ``#?`` instead. -- Typeless parameters have been removed from the language since it would - clash with ``using``. -- Procedures in ``mersenne.nim`` (Mersenne Twister implementation) no longer - accept and produce ``int`` values which have platform-dependent size - - they use ``uint32`` instead. -- The ``strutils.unindent`` procedure has been rewritten. Its parameters now - match the parameters of ``strutils.indent``. See issue `#4037 <https://github.com/nim-lang/Nim/issues/4037>`_ - for more details. -- The ``matchers`` module has been deprecated. See issue `#2446 <https://github.com/nim-lang/Nim/issues/2446>`_ - for more details. -- The ``json.[]`` no longer returns ``nil`` when a key is not found. Instead it - raises a ``KeyError`` exception. You can compile with the ``-d:nimJsonGet`` - flag to get a list of usages of ``[]``, as well as to restore the operator's - previous behaviour. -- When using ``useMalloc``, an additional header containing the size of the - allocation will be allocated, to support zeroing memory on realloc as expected - by the language. With this change, ``alloc`` and ``dealloc`` are no longer - aliases for ``malloc`` and ``free`` - use ``c_malloc`` and ``c_free`` if - you need that. -- The ``json.%`` operator is now overloaded for ``object``, ``ref object`` and - ``openarray[T]``. -- The procs related to ``random`` number generation in ``math.nim`` have - been moved to its own ``random`` module and been reimplemented in pure - Nim. -- The path handling changed. The project directory is not added to the - search path automatically anymore. Add this line to your project's - config to get back the old behaviour: ``--path:"$projectdir"``. (The compiler - replaces ``$projectdir`` with your project's absolute directory when compiling, - so you don't need to replace ``$projectdir`` by your project's actual - directory!). See issue `#546 <https://github.com/nim-lang/Nim/issues/546>`_ - and `this forum thread <http://forum.nim-lang.org/t/2277>`_ for more - information. -- The ``round`` function in ``math.nim`` now returns a float and has been - corrected such that the C implementation always rounds up from .5 rather - than changing the operation for even and odd numbers. -- The ``round`` function now accepts a ``places`` argument to round to a - given number of places (e.g. round 4.35 to 4.4 if ``places`` is 1). -- In ``strutils.nim``, ``formatSize`` now returns a number representing the - size in conventional decimal format (e.g. 2.234GB meaning 2.234 GB rather - than meaning 2.285 GB as in the previous implementation). By default it - also uses IEC prefixes (KiB, MiB) etc and optionally uses colloquial names - (kB, MB etc) and the (SI-preferred) space. -- The ``==`` operator for ``cstring`` now implements a value comparison - for the C backend (using ``strcmp``), not reference comparisons anymore. - Convert the cstrings to pointers if you really want reference equality - for speed. -- HTTP headers are now stored in a ``HttpHeaders`` object instead of a - ``StringTableRef``. This object allows multiple values to be associated with - a single key. A new ``httpcore`` module implements it and it is used by - both ``asynchttpserver`` and ``httpclient``. - -The ``using`` statement -~~~~~~~~~~~~~~~~~~~~~~~ - -The ``using`` statement now has a different meaning. - -In version 0.13.0, it -was used to provide syntactic convenience for procedures that heavily use -a single contextual parameter. For example: - -.. code-block:: nim - var socket = newSocket() - using socket - - connect("google.com", Port(80)) - send("GET / HTTP/1.1\c\l") - - -The ``connect`` and ``send`` calls are both transformed so that they pass -``socket`` as the first argument: - -.. code-block:: nim - var socket = newSocket() - - socket.connect("google.com", Port(80)) - socket.send("GET / HTTP/1.1\c\l") - -Take a look at the old version of the -`manual <http://nim-lang.org/0.13.0/manual.html#statements-and-expressions-using-statement>`_ -to learn more about the old behaviour. - -In 0.14.0, -the ``using`` statement -instead provides a syntactic convenience for procedure definitions where the -same parameter names and types are used repeatedly. For example, instead of -writing: - -.. code-block:: nim - proc foo(c: Context; n: Node) = ... - proc bar(c: Context; n: Node, counter: int) = ... - proc baz(c: Context; n: Node) = ... - - -You can simply write: - -.. code-block:: nim - {.experimental.} - using - c: Context - n: Node - counter: int - - proc foo(c, n) = ... - proc bar(c, n, counter) = ... - proc baz(c, n) = ... - -Again, the -`manual <http://nim-lang.org/docs/manual.html#statements-and-expressions-using-statement>`_ -has more details. - -You can still achieve a similar effect to what the old ``using`` statement -tried to achieve by using the new experimental ``this`` pragma, documented -`here <http://nim-lang.org/docs/manual.html#overloading-resolution-automatic-self-insertions>`_. - -Generic type classes -~~~~~~~~~~~~~~~~~~~~ - -Generic type classes are now handled properly in the compiler, but this -means code like the following does not compile any longer: - -.. code-block:: nim - type - Vec3[T] = distinct array[3, T] - - proc vec3*[T](a, b, c: T): Vec3[T] = Vec3([a, b, c]) - -While every ``Vec3[T]`` is part of the ``Vec3`` type class, the reverse -is not true, not every ``Vec3`` is a ``Vec3[T]``. Otherwise there would -be a subtype relation between ``Vec3[int]`` and ``Vec3[float]`` and there -is none for Nim. The fix is to write this instead: - -.. code-block:: nim - type - Vec3[T] = distinct array[3, T] - - proc vec3*[T](a, b, c: T): Vec3[T] = Vec3[T]([a, b, c]) - -Note that in general we don't advise to use ``distinct array``, -use ``object`` instead. - - -Library Additions ------------------ - -- The rlocks module has been added providing a reentrant lock synchronization - primitive. -- A generic "sink operator" written as ``&=`` has been added to the -``system`` and the ``net`` modules. This operator is similar to the C++ -``<<`` operator which writes data to a stream. -- Added ``strscans`` module that implements a ``scanf`` for easy input extraction. -- Added a version of ``parseutils.parseUntil`` that can deal with a string - ``until`` token. The other versions are for ``char`` and ``set[char]``. -- Added ``splitDecimal`` to ``math.nim`` to split a floating point value - into an integer part and a floating part (in the range -1<x<1). -- Added ``trimZeros`` to ``strutils.nim`` to trim trailing zeros in a - floating point number. -- Added ``formatEng`` to ``strutils.nim`` to format numbers using engineering - notation. - - -Compiler Additions ------------------- - -- Added a new ``--noCppExceptions`` switch that allows to use default exception - handling (no ``throw`` or ``try``/``catch`` generated) when compiling to C++ - code. - -Language Additions ------------------- - -- Nim now supports a ``.this`` pragma for more notational convenience. - See `automatic-self-insertions <../docs/manual.html#overloading-resolution-automatic-self-insertions>`_ for more information. -- Nim now supports a different ``using`` statement for more convenience. - Consult `using-statement <../docs/manual.html#statements-and-expressions-using-statement>`_ for more information. -- ``include`` statements are not restricted to top level statements anymore. - -.. - - Nim now supports ``partial`` object declarations to mitigate the problems - that arise when types are mutually dependent and yet should be kept in - different modules. - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github <https://github.com/nim-lang/Nim/issues?utf8=%E2%9C%93&q=is%3Aissue+closed%3A%222016-01-19+..+2016-06-06%22+>`_. - - - - Fixed "Calling generic templates with explicit generic arguments crashes compiler" - (`#3496 <https://github.com/nim-lang/Nim/issues/3496>`_) - - Fixed "JS backend - strange utf-8 handling" - (`#3714 <https://github.com/nim-lang/Nim/issues/3714>`_) - - Fixed "execvpe is glibc specific" - (`#3759 <https://github.com/nim-lang/Nim/issues/3759>`_) - - Fixed "GC stack overflow with in data structures with circular references." - (`#1895 <https://github.com/nim-lang/Nim/issues/1895>`_) - - Fixed "Internal compiler error in genTraverseProc" - (`#3794 <https://github.com/nim-lang/Nim/issues/3794>`_) - - Fixed "unsafeAddr fails in generic context" - (`#3736 <https://github.com/nim-lang/Nim/issues/3736>`_) - - Fixed "Generic converters produce internal errors" - (`#3799 <https://github.com/nim-lang/Nim/issues/3799>`_) - - Fixed "Cannot have two anonymous iterators in one proc" - (`#3788 <https://github.com/nim-lang/Nim/issues/3788>`_) - - Fixed "pure/net.nim fails to compile with --taintMode:on on HEAD" - (`#3789 <https://github.com/nim-lang/Nim/issues/3789>`_) - - Fixed "Using break inside iterator may produce memory/resource leak" - (`#3802 <https://github.com/nim-lang/Nim/issues/3802>`_) - - - Fixed "--out and --nimcache wrong paths" - (`#3871 <https://github.com/nim-lang/Nim/issues/3871>`_) - - Fixed "Release 0.13.0: documentation build failure" - (`#3823 <https://github.com/nim-lang/Nim/issues/3823>`_) - - Fixed "https post request" - (`#3895 <https://github.com/nim-lang/Nim/issues/3895>`_) - - Fixed "writeFile regression in nimscript" - (`#3901 <https://github.com/nim-lang/Nim/issues/3901>`_) - - Fixed "Cannot convert variables to int16 at compile time" - (`#3916 <https://github.com/nim-lang/Nim/issues/3916>`_) - - Fixed "Error in concepts when using functions on typedesc" - (`#3686 <https://github.com/nim-lang/Nim/issues/3686>`_) - - Fixed "Multiple generic table types with different type signatures lead to compilation errors." - (`#3669 <https://github.com/nim-lang/Nim/issues/3669>`_) - - Fixed "Explicit arguments with overloaded procedure?" - (`#3836 <https://github.com/nim-lang/Nim/issues/3836>`_) - - Fixed "doc2 generates strange output for proc generated by template" - (`#3868 <https://github.com/nim-lang/Nim/issues/3868>`_) - - Fixed "Passing const value as static[] argument to immediate macro leads to infinite memory consumption by compiler" - (`#3872 <https://github.com/nim-lang/Nim/issues/3872>`_) - - Fixed "`..<` is not happy with `BiggestInt` from `intVal`" - (`#3767 <https://github.com/nim-lang/Nim/issues/3767>`_) - - Fixed "stdtmpl filter does not support anything apart from '#' metachar" - (`#3924 <https://github.com/nim-lang/Nim/issues/3924>`_) - - Fixed "lib/pure/net: Can't bind to ports >= 32768" - (`#3484 <https://github.com/nim-lang/Nim/issues/3484>`_) - - Fixed "int and float assignment compatibility badly broken for generics" - (`#3998 <https://github.com/nim-lang/Nim/issues/3998>`_) - - Fixed "Adding echo statement causes "type mismatch" error" - (`#3975 <https://github.com/nim-lang/Nim/issues/3975>`_) - - Fixed "Dynlib error messages should be written to stderr, not stdout" - (`#3987 <https://github.com/nim-lang/Nim/issues/3987>`_) - - Fixed "Tests regressions while using the devel branch" - (`#4005 <https://github.com/nim-lang/Nim/issues/4005>`_) - - - Fixed "Lambda lifting bug: wrong c code generation" - (`#3995 <https://github.com/nim-lang/Nim/issues/3995>`_) - - Fixed "VM crashes in asgnComplex" - (`#3973 <https://github.com/nim-lang/Nim/issues/3973>`_) - - Fixed "Unknown opcode opcNGetType" - (`#1152 <https://github.com/nim-lang/Nim/issues/1152>`_) - - Fixed "`&` operator mutates first operand when used in compileTime proc while assigning result to seq" - (`#3804 <https://github.com/nim-lang/Nim/issues/3804>`_) - - Fixed "''nil' statement is deprecated' in macro" - (`#3561 <https://github.com/nim-lang/Nim/issues/3561>`_) - - Fixed "vm crash when accessing seq with mitems iterator" - (`#3731 <https://github.com/nim-lang/Nim/issues/3731>`_) - - Fixed "`mitems` or `mpairs` does not work for `seq[NimNode]` or `array[T,NimNode]` in a macro" - (`#3859 <https://github.com/nim-lang/Nim/issues/3859>`_) - - Fixed "passing "proc `,`()" to nim check causes an infinite loop" - (`#4036 <https://github.com/nim-lang/Nim/issues/4036>`_) - - Fixed "--dynlibOverride does not work with {.push dynlib: name.}" - (`#3646 <https://github.com/nim-lang/Nim/issues/3646>`_) - - Fixed "system.readChars fails on big len" - (`#3752 <https://github.com/nim-lang/Nim/issues/3752>`_) - - Fixed "strutils.unindent" - (`#4037 <https://github.com/nim-lang/Nim/issues/4037>`_) - - Fixed "Compiler's infinite recursion in generic resolution" - (`#2006 <https://github.com/nim-lang/Nim/issues/2006>`_) - - Fixed "Linux: readLineFromStdin calls quit(0) upon EOF" - (`#3159 <https://github.com/nim-lang/Nim/issues/3159>`_) - - Fixed "Forum sign up not possible" - (`#2446 <https://github.com/nim-lang/Nim/issues/2446>`_) - - Fixed "Json module - SIGSEGV if key not exists" - (`#3107 <https://github.com/nim-lang/Nim/issues/3107>`_) - - Fixed "About asyncdispatch.await and exception" - (`#3964 <https://github.com/nim-lang/Nim/issues/3964>`_) - - Fixed "Need testcase for JS backend to ensure closure callbacks don't break" - (`#3132 <https://github.com/nim-lang/Nim/issues/3132>`_) - - Fixed "Unexpected behaviour of C++ templates in conjunction with N_NIMCALL" - (`#4093 <https://github.com/nim-lang/Nim/issues/4093>`_) - - Fixed "SIGSEGV at compile time when using a compileTime variable as counter" - (`#4097 <https://github.com/nim-lang/Nim/issues/4097>`_) - - Fixed "Compiler crash issue on 32-bit machines only" - (`#4089 <https://github.com/nim-lang/Nim/issues/4089>`_) - - Fixed "type mismatch: got (<type>) but expected 'outType' in mapIt" - (`#4124 <https://github.com/nim-lang/Nim/issues/4124>`_) - - Fixed "Generic type constraints broken?" - (`#4084 <https://github.com/nim-lang/Nim/issues/4084>`_) - - Fixed "Invalid C code generated" - (`#3544 <https://github.com/nim-lang/Nim/issues/3544>`_) - - Fixed "An exit variable in proc shadows exit function called by quit()" - (`#3471 <https://github.com/nim-lang/Nim/issues/3471>`_) - - Fixed "ubuntu 16.04 build error" - (`#4144 <https://github.com/nim-lang/Nim/issues/4144>`_) - - Fixed "Ambiguous identifier error should list all possible qualifiers" - (`#177 <https://github.com/nim-lang/Nim/issues/177>`_) - - Fixed "Parameters are not captured inside closures inside closure iterators" - (`#4070 <https://github.com/nim-lang/Nim/issues/4070>`_) - - Fixed "`$` For array crashes the compiler when assigned to const" - (`#4040 <https://github.com/nim-lang/Nim/issues/4040>`_) - - - Fixed "Default value for .importcpp enum is initialized incorrectly" - (`#4034 <https://github.com/nim-lang/Nim/issues/4034>`_) - - Fixed "Nim doesn't instantiate template parameter in cgen when using procedure return value in for-in loop" - (`#4110 <https://github.com/nim-lang/Nim/issues/4110>`_) - - Fixed "Compile-time SIGSEGV when invoking procedures that cannot be evaluated at compile time from a macro" - (`#3956 <https://github.com/nim-lang/Nim/issues/3956>`_) - - Fixed "Backtricks inside .emit pragma output incorrect name for types" - (`#3992 <https://github.com/nim-lang/Nim/issues/3992>`_) - - Fixed "typedef is generated for .importcpp enums" - (`#4145 <https://github.com/nim-lang/Nim/issues/4145>`_) - - Fixed "Incorrect C code generated for nnkEmpty node" - (`#950 <https://github.com/nim-lang/Nim/issues/950>`_) - - Fixed "Syntax error in config file appears as general exception without useful info" - (`#3763 <https://github.com/nim-lang/Nim/issues/3763>`_) - - Fixed "Converting .importcpp enum to string doesn't work when done inside procs" - (`#4147 <https://github.com/nim-lang/Nim/issues/4147>`_) - - Fixed "Enum template specifiers do not work for .importcpp enums when they are used as a parameter" - (`#4146 <https://github.com/nim-lang/Nim/issues/4146>`_) - - Fixed "Providing template specifier recursively for .importcpp type doesn't work" - (`#4148 <https://github.com/nim-lang/Nim/issues/4148>`_) - - Fixed "sizeof doesn't work for generics in vm" - (`#4153 <https://github.com/nim-lang/Nim/issues/4153>`_) - - Fixed "Creating list-like structures in a loop leaks memory indefinitely" - (`#3793 <https://github.com/nim-lang/Nim/issues/3793>`_) - - Fixed "Creating list-like structures in a loop leaks memory indefinitely" - (`#3793 <https://github.com/nim-lang/Nim/issues/3793>`_) - - Fixed "Enum items generated by a macro have wrong type." - (`#4066 <https://github.com/nim-lang/Nim/issues/4066>`_) - - Fixed "Memory leak with default GC" - (`#3184 <https://github.com/nim-lang/Nim/issues/3184>`_) - - Fixed "Rationals Overflow Error on 32-bit machine" - (`#4194 <https://github.com/nim-lang/Nim/issues/4194>`_) - - - Fixed "osproc waitForExit() is ignoring the timeout parameter" - (`#4200 <https://github.com/nim-lang/Nim/issues/4200>`_) - - Fixed "Regression: exception parseFloat("-0.0") " - (`#4212 <https://github.com/nim-lang/Nim/issues/4212>`_) - - Fixed "JS Codegen: Bad constant initialization order" - (`#4222 <https://github.com/nim-lang/Nim/issues/4222>`_) - - Fixed "Term-rewriting macros gives Error: wrong number of arguments" - (`#4227 <https://github.com/nim-lang/Nim/issues/4227>`_) - - Fixed "importcpp allowed in body of proc after push" - (`#4225 <https://github.com/nim-lang/Nim/issues/4225>`_) - - Fixed "pragma SIGSEGV" - (`#4001 <https://github.com/nim-lang/Nim/issues/4001>`_) - - Fixed "Restrict hints to the current project" - (`#2159 <https://github.com/nim-lang/Nim/issues/2159>`_) - - Fixed "`unlikely`/`likely` should be no-ops for the Javascript backend" - (`#3882 <https://github.com/nim-lang/Nim/issues/3882>`_) - - Fixed ".this pragma doesn't work for fields and procs defined for parent type" - (`#4177 <https://github.com/nim-lang/Nim/issues/4177>`_) - - Fixed "VM SIGSEV with compile-time Table" - (`#3729 <https://github.com/nim-lang/Nim/issues/3729>`_) - - Fixed "Error during compilation with cpp option on FreeBSD " - (`#3059 <https://github.com/nim-lang/Nim/issues/3059>`_) - - Fixed "Compiler doesn't keep type bounds" - (`#1713 <https://github.com/nim-lang/Nim/issues/1713>`_) - - Fixed "Stdlib: future: Shortcut proc definition doesn't support, varargs, seqs, arrays, or openarrays" - (`#4238 <https://github.com/nim-lang/Nim/issues/4238>`_) - - Fixed "Why don't ``asynchttpserver`` support request-body when ``put`` ``delete``?" - (`#4221 <https://github.com/nim-lang/Nim/issues/4221>`_) - - Fixed "Paths for includes in Nim documentation" - (`#2640 <https://github.com/nim-lang/Nim/issues/2640>`_) - - Fixed "Compile pragma doesn't work with relative import" - (`#1262 <https://github.com/nim-lang/Nim/issues/1262>`_) - - Fixed "Slurp doesn't work with relative imports" - (`#765 <https://github.com/nim-lang/Nim/issues/765>`_) - - Fixed "Make tilde expansion consistent" - (`#786 <https://github.com/nim-lang/Nim/issues/786>`_) - - Fixed "koch expects nim to be in path for tests?" - (`#3290 <https://github.com/nim-lang/Nim/issues/3290>`_) - - Fixed "Don't use relative imports for non relative modules (aka babel libs)" - (`#546 <https://github.com/nim-lang/Nim/issues/546>`_) - - Fixed ""echo" on general structs does not work" - (`#4236 <https://github.com/nim-lang/Nim/issues/4236>`_) - - Fixed "Changing math.round() and adding math.integer()" - (`#3473 <https://github.com/nim-lang/Nim/issues/3473>`_) - - Fixed "Mathematics module missing modf" - (`#4195 <https://github.com/nim-lang/Nim/issues/4195>`_) - - Fixed "Passing method to macro causes seg fault" - (`#1611 <https://github.com/nim-lang/Nim/issues/1611>`_) - - Fixed "Internal error with "discard quit"" - (`#3532 <https://github.com/nim-lang/Nim/issues/3532>`_) - - Fixed "SIGSEGV when using object variant in compile time" - (`#4207 <https://github.com/nim-lang/Nim/issues/4207>`_) - - Fixed "formatSize has incorrect prefix" - (`#4198 <https://github.com/nim-lang/Nim/issues/4198>`_) - - Fixed "Add compiler parameter to generate output from source code filters" - (`#375 <https://github.com/nim-lang/Nim/issues/375>`_) - - Fixed "Add engineering notation to string formatting functions" - (`#4197 <https://github.com/nim-lang/Nim/issues/4197>`_) - - Fixed "Very minor error in json documentation" - (`#4255 <https://github.com/nim-lang/Nim/issues/4255>`_) - - Fixed "can't compile when checking if closure == nil" - (`#4186 <https://github.com/nim-lang/Nim/issues/4186>`_) - - Fixed "Strange code gen for procs returning arrays" - (`#2259 <https://github.com/nim-lang/Nim/issues/2259>`_) - - Fixed "asynchttpserver may consume unbounded memory reading headers" - (`#3847 <https://github.com/nim-lang/Nim/issues/3847>`_) - - - Fixed "download page still implies master is default branch" - (`#4022 <https://github.com/nim-lang/Nim/issues/4022>`_) - - Fixed "Use standard compiler flags in build script" - (`#2128 <https://github.com/nim-lang/Nim/issues/2128>`_) - - Fixed "CentOS 6 (gcc-4.4.7) compilation failed (redefinition of typedef)" - (`#4272 <https://github.com/nim-lang/Nim/issues/4272>`_) - - Fixed "doc2 has issues with httpclient" - (`#4278 <https://github.com/nim-lang/Nim/issues/4278>`_) - - Fixed "tuples/tuple_with_nil fails without unsigned module" - (`#3579 <https://github.com/nim-lang/Nim/issues/3579>`_) diff --git a/web/news/e023_version_0_14_2.rst b/web/news/e023_version_0_14_2.rst deleted file mode 100644 index cbfe52713..000000000 --- a/web/news/e023_version_0_14_2.rst +++ /dev/null @@ -1,14 +0,0 @@ -Version 0.14.2 released -======================= - -.. container:: metadata - - Posted by Andreas Rumpf on 09/06/2016 - -Version 0.14.2 is just a bugfix release that fixes the most pressing -regressions. In particular, the ``tar.xz`` now supports documentation -generation, and the Windows installers bundle the latest stable nimble -release. - -The news about the 0.14.0 release are still relevant, so check them out -`here <http://nim-lang.org/news/2016_06_07_version_0_14_0_released.html>`_. diff --git a/web/news/e024_survey.rst b/web/news/e024_survey.rst deleted file mode 100644 index 0b87577aa..000000000 --- a/web/news/e024_survey.rst +++ /dev/null @@ -1,29 +0,0 @@ -Launching the 2016 Nim Community Survey -======================================= - -.. container:: metadata - - Posted by Dominik Picheta on 23/06/2016 - -We are proud to announce the official -`2016 Nim Community Survey <http://goo.gl/forms/XJ3TPsaiIQe5HlTB2>`_! No matter -whether you use Nim today, have used Nim previously, or never used Nim before; -we want to know your opinions. -Your feedback will help the Nim project understand its strengths and -weaknesses, and to determine development priorities for the future. - -It shouldn't take you much longer than 5 to 10 minutes to complete this survey. -Submissions will be accepted until around the 23rd of July, depending on the -response rates. If you have any questions or feedback, please don't hesitate -to get in touch with us via email at survey@nim-lang.org or on the -`Nim Forum <http://forum.nim-lang.org>`_. - -We would appreciate your help in spreading the word about this survey. Share -the above link on your social network feeds, with your colleagues and in -other communities. - -Thank you to everyone that helped develop and test the survey! Once the -submission period ends, the results will be shown here and publicised via -Twitter, the Nim Forum and IRC. - -Thanks for your time! diff --git a/web/news/e025_bountysource_update.rst b/web/news/e025_bountysource_update.rst deleted file mode 100644 index 00ca7022e..000000000 --- a/web/news/e025_bountysource_update.rst +++ /dev/null @@ -1,73 +0,0 @@ -BountySource Update: The Road to v1.0 -===================================== - -.. container:: metadata - - Cross posted by Dominik Picheta on 06/08/2016 from - `Update #4 on BountySource <https://salt.bountysource.com/teams/nim/updates/4-the-road-to-v1-0>`_ - -We are now in the fourth month of the -`Nim BountySource fundraiser <https://salt.bountysource.com/teams/nim>`_ and -here is -this month's update[1]. Once again this month, we have beat our previous -donation record of $1280 having raised over $1600 over the course of July! -That's now 4 months in a row that your monthly donations have been increasing. -As always we are absolutely blown away by your contributions, -`myself <https://github.com/dom96>`_ and the -rest of the Nim team are extremely thankful for them. It's not only helping us -pay for the necessary expenses (like for example the server that -http://nim-lang.org runs on) but it also inspires us to keep going and to make -Nim the best programming language that it can be. - -As mentioned in -`last month's update <https://salt.bountysource.com/teams/nim/updates/3-engaging-with-our-community>`_, we have begun the process of engaging with -the Nim community through a survey. This survey has now been open for more than -a month and will be closing very soon (in about 2 days), so if you haven't -answered it yet, now would be a perfect time to do so. You can find the survey -here: http://nim-lang.org/survey. - -The survey itself has been designed for three types of people: Nim users, -ex-Nim users and people who have never used Nim before. This means that you -have no excuse not to answer it[2]. There are almost 700 submissions and after -the survey is finalised, a blog post will be written with a thorough analysis. - -It is my hope that the survey analysis will give the Nim team a good idea of -what needs to be implemented before version 1.0 can be released. Personally, I -hope to make a thorough review of the standard library to ensure that it is -ready for the "1.0 backwards compatibility lock"[3]. Although I myself have -been very busy lately[4], `Araq <http://github.com/Araq>`_ has been working very hard to fix -`High Priority <https://github.com/nim-lang/Nim/issues?q=is%3Aissue+is%3Aopen+label%3A%22High+Priority%22>`_ -issues, ahead of the 1.0 release. And as always, there has also been a -`lot of pull requests <https://github.com/nim-lang/Nim/pulse>`_ -from a wide range of Nim users. - -Lastly, I would like to mention -`Nim in Action <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_ once again. I have recently -finished the final chapter. All that remains now are corrections (based mainly -on your feedback, huge thanks to everyone for reading!) and a final review. -The book will then be put into production[5] with an estimated print date of -around the 20th of January (as usual delays are very much possible). If you -have not yet picked up the book, now would be a perfect time to do so. There -is still time for you to give feedback about the book, and for me to improve it -based on your remarks. It is not often that you can influence a book in this -way, and it is my hope that you will help me make this book one of the best -resources for learning Nim! - -As always, many thanks for reading and if you have any questions or feedback -feel free to get in touch via email at contact@nim-lang.org or via -`Twitter <https://twitter.com/nim_lang>`_. - -1 - These updates have so far been fairly regular and it is my hope to write -at least one a month. Yep, I am patting myself on the back :) - -2 - I joke of course, don't worry about if you don't have the time :) - -3 - After version 1.0, it is typical for a piece of software (especially -a programming language) to ensure that backwards compatibility is not broken -between further minor versions until a new major version such as 2.0 is released. - -4 - Writing a book, moving to Switzerland to start a new job, and playing -`Pokemon Go <https://pokemongostatus.org/>`_ has certainly kept me busy. - -5 - Basically the brilliant guys at `Manning <https://manning.com>`_ will -process the book so that it looks good in a printed format. diff --git a/web/news/e026_survey_results.rst b/web/news/e026_survey_results.rst deleted file mode 100644 index 106dce0e4..000000000 --- a/web/news/e026_survey_results.rst +++ /dev/null @@ -1,699 +0,0 @@ -Nim Community Survey Results -============================ - -.. container:: metadata - - Posted by Dominik Picheta on 3 September 2016 - -We have recently closed the 2016 Nim Community Survey. I am happy to -say that we have received exactly 790 responses, huge thanks go to the people -that took the time to respond. We're incredibly thankful for this very valuable -feedback. - -This survey was inspired in part by the -`2016 State of Rust <https://blog.rust-lang.org/2016/06/30/State-of-Rust-Survey-2016.html>`_ -survey. You will note that many of the questions were modelled after -Rust's survey. One of the reasons for doing this was to allow us to easily -compare our results against the results obtained in the Rust survey. In -addition, we of course also liked many of their questions. - -Our survey ran from the 23rd of June 2016 until the 8th of August 2016. The -response numbers are impressive considering Nim's community size; at 790 they -make up just over 25% of the Rust survey's responses. - -The goal of this survey was to primarily determine how our community is using -Nim, in order to better understand how we should be improving it. In particular, -we wanted to know what people feel is missing from Nim in the lead up to -version 1.0. We have also asked our respondents about how well the Nim tools -worked, the challenges of adopting Nim, the resources that they used to learn -Nim and more. - -It is my hope that we will be able to run a similar survey in a years time, -doing so should give us an idea of whether we are improving. -With these general facts in mind, let's begin looking at specific questions. - -How did you find out about Nim? -------------------------------- - -The rationale for the first question was simple, we wanted to know where our -respondents found out about Nim. This is an interesting question for us, as -we do occassionally get users asking us why it took so long for them to hear -about Nim. It allows us to see how effective each website is at spreading the -word about Nim. - -.. raw::html - - <a href="../assets/news/images/survey/nim_found.png"> - <img src="../assets/news/images/survey/nim_found.png" alt="How did you find out about Nim?" style="width:100%"/> - </a> - -The majority of our respondents found Nim via Reddit, HackerNews or a search -engine such as Google. These results are not altogether surprising. There were -also a lot of "Other" responses, some of which were a bit more -interesting. These included multiple mentions of habrahabr.ru, Dr. Dobb's, -and lobste.rs. - -Do you use Nim? ---------------- - -Just like the Rust survey creators, we wanted to ensure that our survey was -open to both Nim users as well people who never used Nim. In addition to -those two groups, we have also included a third group of people: ex-Nim -users. All three are interesting, for many different reasons. -Nim users can tell us how they are using Nim and also how Nim's -tooling can improve. Ex-Nim users give us an -idea of why they stopped using Nim. Finally, respondents who never used Nim -can tell us the reasons for not adopting it. - -.. raw::html - - <a href="../assets/news/images/survey/do_you_use_nim.png"> - <img src="../assets/news/images/survey/do_you_use_nim.png" alt="Do you use Nim?" style="width:100%"/> - </a> - -It's nice to see that we have such a good range of respondents. The Rust survey -had a much larger number of Rust users amongst their respondents, with -no distinction between users that never used Rust and users that stopped using -Rust. - -Should we consider your answers to be invalid? ----------------------------------------------- - -This was something I thought would be interesting to have, after I saw it -being used in another survey. While it does pinpoint possibly -invalid respondents, I have opted against filtering those out. Mainly because -that would require re-creating each of the charts generated by Google Forms -manually. - -.. raw::html - - <a href="../assets/news/images/survey/reliability.png"> - <img src="../assets/news/images/survey/reliability.png" alt="Should we consider your answers to be invalid?" style="width:100%"/> - </a> - -According to the responses to this question, around 94% of our responses -can be considered reliable. - -Nim users ---------- - -The following questions were answered only by the 38.9% of our respondents -who identified themselves as Nim users. - -How long have you been using Nim? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. raw::html - - <a href="../assets/news/images/survey/nim_time.png"> - <img src="../assets/news/images/survey/nim_time.png" alt="How long have you been using Nim?" style="width:100%"/> - </a> - -A large proportion of our Nim users were new. This is good news as it means that -our community is growing, with a large proportion of new Nim users that could -become long-term Nimians. In total, more than 35% of Nim users can be considered -new having used Nim for less than 3 months. With 18% of Nim users that can -be considered very new having used Nim for less than a month. -This could suggest that 18% of our users have only just found out about Nim in -the last week or so and have not yet got the chance to use it extensively. - -The high percentages of long term Nim users are encouraging. -They suggest -that many users are continuing to use Nim after making it through the first -few months. The sharp drop at 7-9 months is interesting, but may simply be -due to the fact that there were fewer newcomers during that period, or it -could be because our respondents are more likely to estimate that they have -been using Nim for a year or half a year rather than the awkward 7-9 months. - -.. raw::html - - <a href="../assets/news/images/survey/nim_time_rust.png"> - <img src="../assets/news/images/survey/nim_time_rust.png" alt="Time using Nim and Rust" style="width:100%"/> - </a> - -The results for Nim and Rust are actually remarkably similar. They both show a -drop at 7-9 months, although Rust's isn't as dramatic. Nim on the other hand -has a significantly higher percentage of new Nim users. - -Do you use Nim at work? -~~~~~~~~~~~~~~~~~~~~~~~ - -An important aspect of a language's adoption is whether it is being used for -"real" work. We wanted to know how many people are using Nim in their day -jobs and under what circumstances it is used. - -.. raw::html - - <a href="../assets/news/images/survey/nim_at_work.png"> - <img src="../assets/news/images/survey/nim_at_work.png" alt="Do you use Nim at work?" style="width:100%"/> - </a> - -While a vast majority of our users are not using Nim at work, more than 25% -of them are. It's encouraging to see such a high number already, even before -we have released version 1.0. In fact, this percentage is likely close to 30%, -because many of the "Other" responses mention using Nim for the likes of -internal tools or small scripts to help with the respondent's work. - -.. raw::html - - <a href="https://blog.rust-lang.org/images/2016-06-Survey/rust_at_work.png"> - <img src="https://blog.rust-lang.org/images/2016-06-Survey/rust_at_work.png" alt="Do you use Rust at work?" style="width:100%"/> - </a> - -Interestingly, a larger percentage of Nim users are using Nim at work than -Rust users. The sample sizes are of course vastly different, but it's still an -interesting result. Combined, nearly 1/5th of Rust users are using Rust -commercially whereas more than a quarter of Nim users are using Nim -commercially. - -Approximately how large are all the Nim projects that you work on? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Finding out how large the Nim projects worked on by Nim users are is also -very valuable. - -.. raw::html - - <a href="../assets/news/images/survey/project_size.png"> - <img src="../assets/news/images/survey/project_size.png" alt="Nim project size for all users" style="width:100%"/> - </a> - -This shows us that currently Nim is primarily being used for small scripts and -applications, with nearly 60% of the projects consisting of less than 1,000 -lines of code. This makes sense as many of our users are not using Nim -professionally, but are doing so in their spare time. - -.. raw::html - - <a href="../assets/news/images/survey/project_size_work.png"> - <img src="../assets/news/images/survey/project_size_work.png" alt="Nim project size for work users" style="width:100%"/> - </a> - -The numbers for part-time and full-time work users of Nim tell a different -story. Over 70% of the projects written by full-time users are between 10,001 -and 100,000 lines of code. Part-time users show a slightly different trend, -with many more small projects, the majority being between 1,000 and -10,000 lines of code. - -Overall it's good to see that there is a few large projects out there which are -composed of more than 100,000 lines of code. We expect to see the amount of -large projects to grow with time, especially with version 1.0 on the way. - -.. raw::html - - <a href="../assets/news/images/survey/project_size_nim_rust.png"> - <img src="../assets/news/images/survey/project_size_nim_rust.png" alt="Nim project size for work users (Nim vs. Rust)" style="width:100%"/> - </a> - -In comparison to Rust the proportion of project sizes for full-time users is -vastly different. This is likely due to our small sample size. Project sizes for -part-time users between Rust and Nim are somewhat similar, with differences of -around 10% for each project size. - -Do you plan to try to use Nim at work? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. raw::html - - <a href="../assets/news/images/survey/planning_to_use_at_work.png"> - <img src="../assets/news/images/survey/planning_to_use_at_work.png" alt="Planning to use Nim at work?" style="width:100%"/> - </a> - -It's also encouraging to see that over 50% of Nim users are planning to use -Nim at work! This is slightly more than Rust's 40% and should help Nim's -adoption into even more areas. - -Nim and its tools -~~~~~~~~~~~~~~~~~ - -In this section of the survey, we wanted to find out the tools that Nim -users are utilising when developing Nim applications. - -What editor(s) do you use when writing Nim? -___________________________________________ - -Programmers are very specific when it comes to their editor of choice, because -of that it's good to know which editor is most popular among our community. - -.. raw::html - - <a href="../assets/news/images/survey/editors.png"> - <img src="../assets/news/images/survey/editors.png" alt="Editors used by Nim users" style="width:100%"/> - </a> - -Looks like Vim is the winner with almost 30%. Followed by Sublime Text and -Emacs. Aporia, the Nim IDE, gets a respectable 15.5%. There was -also more than -17% of answers which included "Other" editors, such as: Notepad++, Geany, gedit, -and Kate. - -What operating system(s) do you compile for and run your Nim projects on? -_________________________________________________________________________ - -This question gave us information about the most popular target operating -systems, as well as some of the more obscure ones. We have asked this question -to find out the platforms on which Nim applications run on most frequently. - -.. raw::html - - <a href="../assets/news/images/survey/target_os.png"> - <img src="../assets/news/images/survey/target_os.png" alt="Target operating systems" style="width:100%"/> - </a> - -This question allowed multiple choices, so each percentage is out of the total -number of respondents for this question. For example, 80.7% of the -respondents selected "Linux" but only 26.6% selected OS X. - -This makes Linux by far the most popular target for Nim applications. -Some "Other" targets included: BSD (OpenBSD, FreeBSD), iOS, Android, and -JavaScript. -It's great to see Nim being used on such a wide variety of platforms. - -What operating system(s) do you develop Nim projects on? -________________________________________________________ - -With this question, we wanted to know what operating systems are used for -development. - -.. raw::html - - <a href="../assets/news/images/survey/dev_os.png"> - <img src="../assets/news/images/survey/dev_os.png" alt="Development operating systems" style="width:100%"/> - </a> - -This question also allowed multiple choices and ended up with very similar -results. - -You can see that Linux is also the most popular developmental -platform for Nim. But it's more popular as a target platform. - -Which version(s) of Nim do you use for your applications? -_________________________________________________________ - -.. raw::html - - <a href="../assets/news/images/survey/nim_versions.png"> - <img src="../assets/news/images/survey/nim_versions.png" alt="Version use" style="width:100%"/> - </a> - -At the time of this survey, version 0.14.2 was the latest stable release. -It's no wonder that it is the most commonly used release of Nim. It's good to -see that the older versions are not used as often. The high use of ``Git HEAD (devel)`` -(nightly builds) isn't surprising, Nim is still evolving rapidly and our -release schedule is not regular or frequent. - -Once we go past the 1.0 release, we expect to see much less use of the unstable -``devel`` branch. - -Has upgrading to a new version of the Nim compiler broken your code? -____________________________________________________________________ - -.. raw::html - - <a href="../assets/news/images/survey/breakage.png"> - <img src="../assets/news/images/survey/breakage.png" alt="Breakage" style="width:100%"/> - </a> - -Despite the unstable nature of Nim in the lead up to version 1.0, whenever -we make breaking changes we do our best to deprecate things and ensure that -old code continues to work for our users. Of course sometimes this is not -possible and other times it is simply easier to add a breaking change. - -This question was asked to determine how much our user base is affected by -breaking changes between Nim versions. We decided to have three possible -answers for this question in order to give us an idea how frequent the -breakage was. - -It's incredible to see that over 50% of our users have not experienced any -breakage after upgrading. We expect this number to increase significantly -after version 1.0 is released. Of the users that did experience breakage, -over 80% of them said that it was a rare occurrence. - -In comparison to Rust, our results show that there was a higher percentage of -users experiencing breakage as a result of an upgrade. This is to be expected, -because Nim is still in its pre-1.0 period, whereas Rust 1.0 has been released -over a year ago now. - -Unfortunately while we are still in this pre-1.0 period, releases will likely -introduce breaking changes as we refine certain aspects of Nim such as its -standard library, so the number of users experiencing breaking changes may -increase. - -If so, how much work did it take to fix it? -___________________________________________ - -.. raw::html - - <a href="../assets/news/images/survey/difficulty_fixing_breakage.png"> - <img src="../assets/news/images/survey/difficulty_fixing_breakage.png" alt="difficulty fixing breakage" style="width:100%"/> - </a> - -Thankfully most of the breakage experienced by Nim users was very easy to fix. - - -If you used Nimble, do you like it? -___________________________________ - -.. raw::html - - <a href="../assets/news/images/survey/nimble_opinion.png"> - <img src="../assets/news/images/survey/nimble_opinion.png" alt="Do you like Nimble?" style="width:100%"/> - </a> - -Nimble is the Nim package manager, a tool that is very important in Nim's -ecosystem as it allows developers to easily install dependencies for their -software. - -The majority of respondents rated it as a 4, showing us that the majority does -like Nimble. With over 55% rating it a 4 or 5. This percentage isn't as -overwhelming as the 94.1% of users that rated Cargo a 4 or 5 in the Rust -survey. Based on these results I think that we definitely need to do a -better job with Nimble. - -In our next survey, it might be a good idea to ask more questions about Nimble -to determine how exactly it can be improved. - -What aspects of Nim do you find most appealing? -_______________________________________________ - -.. raw::html - - <a href="../assets/news/images/survey/nim_appeal.png"> - <img src="../assets/news/images/survey/nim_appeal.png" alt="What aspects of Nim do you find most appealing?" style="width:100%"/> - </a> - -We were interested to know the features of Nim that appeal most to our users. -More than 80% of our respondents selected "Execution Speed" as one of the -features that appeal to them. With "Development Speed" and "Readability" -tying for second place and "Metaprogramming" at third place. - -The options given to our respondents are rather predictable, -they do show us which of these features have the highest appeal though. -What's more interesting are the "Other" answers. - -By far the most popular "Other" answer was related to Nim's compilation to C. -Many users mentioned that they like how easy it is to interface with C -libraries and the great portability that compiling to C offers. - -What aspects of Nim do you find most displeasing? -_________________________________________________ - -.. raw::html - - <a href="../assets/news/images/survey/nim_displeasing.png"> - <img src="../assets/news/images/survey/nim_displeasing.png" alt="What aspects of Nim do you find most displeasing?" style="width:100%"/> - </a> - -It was only natural to ask this question. The results are almost perfectly -opposite to the previous question's answers, with almost 50% of respondents -selecting "Debugging Tools" -as the most displeasing aspect of Nim. With "Documentation" and "Testing Tools" -in second and third place respectively. There is also a much larger number of -"Other" answers to this question. - -The "Other" answers for this question vary a lot. Here is a selection of -them, ordered by frequency: - -* Small community size. -* Lack of in-depth tutorials. -* Quality of error messages. -* Forward declarations and no cyclic imports. -* Bugs in the standard library. -* No good IDE. -* No REPL. -* No major version. -* Bugs in the compiler. -* Lack of libraries. -* Difficulty installing on Windows. -* Non-intuitive semantics of various constructs. -* Lack of immutable collections. -* Async/await not being production ready. -* Lack of shared collections for threads. -* No Haxe target. -* Memory safety. - -We hope that we can improve these things with time. Many of these issues are -already being worked on, including the removal of the need for forward -declarations. Some of these issues like our small community size are difficult -to fix, but we will nonetheless do our best. - - -Previous Nim users -~~~~~~~~~~~~~~~~~~ - -For users that have used Nim before but decided against using it, we asked just -one specific question. The proportion of our respondents that answered it -was 24%. - -Why did you stop using Nim? -___________________________ - -.. raw::html - - <a href="../assets/news/images/survey/ex_nim.png"> - <img src="../assets/news/images/survey/ex_nim.png" alt="I stopped using Nim because..." style="width:100%"/> - </a> - -Again, this question got a lot of "Other" answers. Apart from that, the -most popular reason for leaving Nim is that it is not stable. Followed by the -a lack of needed libraries and packages and the instability of the -standard library. - -* Lack of IDE support. -* Style insensitive. -* Documentation. -* Dislike the syntax. -* Community is too small. -* Missing language features (for example RAII). -* No opportunities to use it at work. -* Messy standard library. - -The first item, "Lack of IDE support", was mentioned by multiple respondents. -In the future we should look into ensuring that major IDEs have plugins which -enable easy Nim development. - -Based on some of the "Other" answers, it seems that many of the respondents -have not used Nim for very long, for example many respondents complained about -installation issues which they would have run into before getting a chance to -use Nim. Because of this I would consider them not -ex-Nim users but developers that have not had a chance to try Nim fully. -Next time we should also ask how long the respondent has used Nim for to get a -better idea of whether they had a chance to use Nim for extended periods of -time. - -Non-Nim users -~~~~~~~~~~~~~ - -We also wanted to know the reasons why developers decided against using Nim. - -Why do you not use Nim? -_______________________ - -.. raw::html - - <a href="../assets/news/images/survey/non_user.png"> - <img src="../assets/news/images/survey/non_user.png" alt="I don't use Nim because..." style="width:100%"/> - </a> - -The most common reason that people have for not using Nim is that it is -not yet ready for production. Thankfully this will improve with time. -IDE support is also a prominent factor just as we've seen in previous results. - -There is also a lot of "Other" answers, let's have a look at a selection of -them. Some of the most prominent ones, in order of frequency, include: - -* No time to use/learn it -* Syntax -* Documentation is incomplete -* Garbage Collection -* Prefer functional paradigm -* Small community -* Style insensitivity/Case insensitivity - -One respondent made a very good suggestion: they said that the -"Do you use Nim?" question should have included "No, but I intend to" as -an answer. Definitely something we will do in the next survey. Indeed, many -respondents mentioned that they were planning on trying out Nim but that they -just have no time to do so, this is very encouraging! - -Learning Resources -~~~~~~~~~~~~~~~~~~ - -We wanted to get an idea of how Nim users are learning Nim. Every respondent -answered this question, no matter what they answered for the "Do you use Nim?" -question. - -Which learning resources, if any, did you use to learn Nim? -___________________________________________________________ - -.. raw::html - - <a href="../assets/news/images/survey/learning_resources.png"> - <img src="../assets/news/images/survey/learning_resources.png" alt="learning resources" style="width:100%"/> - </a> - -The idea behind this question was to understand which learning resources -were most popular among our user base. The -`Nim tutorial <http://nim-lang.org/docs/tut1.html>`_ is by far the most -popular. In previous questions, we saw respondents mentioning that the Nim -tutorial does not go into enough detail about Nim. Thanks to this information -we can come to the conclusion that the tutorial needs to be improved -significantly to make sure that it gives our users the necessary information -to use Nim effectively. - -Indeed, many users also use the -`Nim manual <http://nim-lang.org/docs/manual.html>`_ to learn Nim. -This manual has been -written as a specification and so is not ideal for teaching Nim. Many of -the concepts in the Nim manual need to be explained in a lot more detail in -the Nim tutorial. - -Of course, it's exciting to see our respondents using other materials to learn -Nim. In particular I am excited to see that over 15% of the respondents have -used -`Nim in Action <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_ -to learn Nim. I expect that more and more users will pick up the book after it -is fully published. - -Nim in Action -_____________ - -As the author of -`Nim in Action <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_, -I wanted to get some statistics surrounding -my book. With this in mind, I have created some questions relating to it. - -Have you read Nim in Action? -____________________________ - -.. raw::html - - <a href="../assets/news/images/survey/book.png"> - <img src="../assets/news/images/survey/book.png" alt="Have you read Nim in Action?" style="width:100%"/> - </a> - -It's good to see that over 50% of respondents have read the book or are at least -planning to read it. Keep in mind that this question was answered by all -respondents, not just Nim users. - -.. container:: standout - - Are you interested in purchasing a copy of - `Nim in Action <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_? - If so, you can use code ``wm090416lt`` to get 50% off the printed book today only! - If you purchase it now you will get access to an early access copy of - Nim in Action in eBook form and will be able to take part in the development - of this book. - -Did you enjoy Nim in Action? -____________________________ - -.. raw::html - - <a href="../assets/news/images/survey/book_opinion.png"> - <img src="../assets/news/images/survey/book_opinion.png" alt="Did you enjoy Nim in Action?" style="width:100%"/> - </a> - -Of the people that read Nim in Action it's nice to see that almost 70% have -enjoyed it. - -Nim's future -~~~~~~~~~~~~ - -What improvements are needed before Nim v1.0 can be released? -_____________________________________________________________ - -We were interested to know what our users believe is needed before -Nim version 1.0 can be released. - -.. raw::html - - <a href="../assets/news/images/survey/10_needs.png"> - <img src="../assets/news/images/survey/10_needs.png" alt="What is needed before 1.0 can be released?" style="width:100%"/> - </a> - -It appears that the standard library is the biggest concern. With more than half -of all respondents selecting "The standard library needs to reviewed and -any problems with it fixed". This is in fact something we are already planning -to address, so it's good to see that the majority agrees with us. - -A large proportion of users also believes that the language is great as-is -and that we should focus on stabilising the compiler. This somewhat contradicts -the majority. But perhaps most of them thought that "The language" excludes the -standard library. - -For this question, we decided to give our respondents a dedicated place to -give general feedback about what they feel is needed before v1.0 can be -released. We received over 200 responses to that. Many of these responses -reflect what we have already seen: that the documentation needs to improve, -that we need a good Nim IDE, stability for experimental features such as -concepts, the standard library needs to be cleaned up. - -Unfortunately many respondents used this question to say what needs to be fixed -in Nim in general, not what is definitely necessary before 1.0 can be released. - -Community demographics -~~~~~~~~~~~~~~~~~~~~~~ - -What domain do you work in currently? -_____________________________________ - -.. raw::html - - <a href="../assets/news/images/survey/domains.png"> - <img src="../assets/news/images/survey/domains.png" alt="Work domains" style="width:100%"/> - </a> - - -Nim users are working in a wide variety of domains. It is encouraging to see -people from so many different backgrounds taking part in this survey. - -What programming languages are you most comfortable with? -_________________________________________________________ - - -.. raw::html - - <a href="../assets/news/images/survey/languages.png"> - <img src="../assets/news/images/survey/languages.png" alt="Programming languages" style="width:100%"/> - </a> - -Python and C are the top two programming languages that our respondents are -most comfortable with. This is not altogether surprising. - -Last words -~~~~~~~~~~ - -At the end of the survey we gave our respondents a chance to speak their mind -about anything they wish, with a simple question: "Anything else you'd like -to tell us?" - -There was a lot of great feedback given in this question from people who -obviously really care deeply about Nim. There is too much to outline here, -but rest assurred that we will take it all into account and do our best to -act on it. - -In addition to feedback, we were also overwhelmed by the amount of positive -comments in the answers to this -question. There was a lot of support from the community thanking us for our -work and determination. - -I'll let some quotes speak for themselves: - -.. raw::html - - <blockquote>You rock, seriously.</blockquote> - <blockquote>Nim rocks! Keep it up! Thank you very much!</blockquote> - <blockquote>You've made great progress on the language without any corporate backing, that is amazing. I wish Nim becomes one of the top used languages in a few years.</blockquote> - <blockquote>Nim is elegant and wonderful! Keep at it!</blockquote> - -Our community is truly brilliant. We thank each and every one of you for -filling out this survey and hope that you will help us tackle some of the -challenges that face Nim. - -This survey was a good place to give us feedback, but please don't wait for -the next one. We are always looking to hear more from you and we hope that you -will participate in discussions relating to this survey as well the future -of Nim. - -Thanks for reading, and have a good day! diff --git a/web/news/e027_version_0_15_0.rst b/web/news/e027_version_0_15_0.rst deleted file mode 100644 index 47c02e9e4..000000000 --- a/web/news/e027_version_0_15_0.rst +++ /dev/null @@ -1,517 +0,0 @@ -Version 0.15.0 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta and Andreas Rumpf on 30/09/2016 - -We're happy to announce that the latest release of Nim, version 0.15.0, is now -available! - -As always, you can grab the latest version from the -`downloads page <http://nim-lang.org/download.html>`_. - -This release includes almost 180 bug fixes and improvements. To see a full list -of changes, take a look at the detailed changelog -`below <#changelog>`_. - -Some of the most significant changes in this release include: improvements to -the documentation, addition of a new ``multisync`` macro, and a new -``HttpClient`` implementation. - -Documentation -~~~~~~~~~~~~~ - -All pages in the documentation now contain a search box and a drop down to -select how procedures should be sorted. This allows you to search for -procedures, types, macros and more from any documentation page. - -.. raw::html - - <a href="../assets/news/images/0.15.0/doc_search.gif"> - <img src="../assets/news/images/0.15.0/doc_search.gif" alt="Doc search" style="width:100%"/> - </a> - -Sorting the procedures by type shows a more natural table of contents. This -should also help you to find procedures and other identifiers. - -.. raw::html - - <a href="../assets/news/images/0.15.0/doc_sort.gif"> - <img src="../assets/news/images/0.15.0/doc_sort.gif" alt="Doc sort" style="width:100%"/> - </a> - -Multisync macro -~~~~~~~~~~~~~~~ - -The ``multisync`` macro was implemented to enable you to define both -synchronous and asynchronous IO procedures without having to duplicate a -lot of code. - -As an example, consider the ``recvTwice`` procedure below: - -.. code-block:: nim - proc recvTwice(socket: Socket | AsyncSocket): Future[string] {.multisync.} = - result = "" - result.add(await socket.recv(25)) - result.add(await socket.recv(20)) - -The ``multisync`` macro will transform this procedure into the following: - -.. code-block:: nim - proc recvTwice(socket: Socket): string = - result = "" - result.add(socket.recv(25)) - result.add(socket.recv(20)) - - proc recvTwice(socket: AsyncSocket): Future[string] {.async.} = - result = "" - result.add(await socket.recv(25)) - result.add(await socket.recv(20)) - -Allowing you to use ``recvTwice`` with both synchronous and asynchronous sockets. - -HttpClient -~~~~~~~~~~ - -Many of the ``httpclient`` module's procedures have been deprecated in -favour of a new implementation using the ``multisync`` macro. There are now -two types: ``HttpClient`` and ``AsyncHttpClient``. Both of these implement the -same procedures and functionality, the only difference is timeout support and -whether they are blocking or not. - -See the `httpclient <http://nim-lang.org/docs/httpclient.html>`_ module -documentation for more information. - -Changelog -~~~~~~~~~ - -Changes affecting backwards compatibility ------------------------------------------ - -- The ``json`` module now uses an ``OrderedTable`` rather than a ``Table`` - for JSON objects. - -- The ``split`` `(doc) <http://nim-lang.org/docs/strutils.html#split,string,set[char],int>`_ - procedure in the ``strutils`` module (with a delimiter of type - ``set[char]``) no longer strips and splits characters out of the target string - by the entire set of characters. Instead, it now behaves in a - similar fashion to ``split`` with ``string`` and ``char`` - delimiters. Use ``splitWhitespace`` to get the old behaviour. - -- The command invocation syntax will soon apply to open brackets - and curlies too. This means that code like ``a [i]`` will be - interpreted as ``a([i])`` and not as ``a[i]`` anymore. Likewise - ``f (a, b)`` means that the tuple ``(a, b)`` is passed to ``f``. - The compiler produces a warning for ``a [i]``:: - - Warning: a [b] will be parsed as command syntax; spacing is deprecated - - See `Issue #3898 <https://github.com/nim-lang/Nim/issues/3898>`_ for the - relevant discussion. - -- Overloading the special operators ``.``, ``.()``, ``.=``, ``()`` now - needs to be enabled via the ``{.experimental.}`` pragma. - -- ``immediate`` templates and macros are now deprecated. - Use ``untyped`` `(doc) <http://nim-lang.org/docs/manual.html#templates-typed-vs-untyped-parameters>`_ - parameters instead. - -- The metatype ``expr`` is deprecated. Use ``untyped`` - `(doc) <http://nim-lang.org/docs/manual.html#templates-typed-vs-untyped-parameters>`_ instead. - -- The metatype ``stmt`` is deprecated. Use ``typed`` - `(doc) <http://nim-lang.org/docs/manual.html#templates-typed-vs-untyped-parameters>`_ instead. - -- The compiler is now more picky when it comes to ``tuple`` types. The - following code used to compile, now it's rejected: - -.. code-block:: nim - - import tables - var rocketaims = initOrderedTable[string, Table[tuple[k: int8, v: int8], int64]]() - rocketaims["hi"] = {(-1.int8, 0.int8): 0.int64}.toTable() - -Instead be consistent in your tuple usage and use tuple names for named tuples: - -.. code-block:: nim - - import tables - var rocketaims = initOrderedTable[string, Table[tuple[k: int8, v: int8], int64]]() - rocketaims["hi"] = {(k: -1.int8, v: 0.int8): 0.int64}.toTable() - -- Now when you compile console applications for Windows, console output - encoding is automatically set to UTF-8. - -- Unhandled exceptions in JavaScript are now thrown regardless of whether - ``noUnhandledHandler`` is defined. But the stack traces should be much more - readable now. - -- In JavaScript, the ``system.alert`` procedure has been deprecated. - Use ``dom.alert`` instead. - -- De-deprecated ``re.nim`` because there is too much code using it - and it got the basic API right. - -- The type of ``headers`` field in the ``AsyncHttpClient`` type - `(doc) <http://nim-lang.org/docs/httpclient.html#AsyncHttpClient>`_ - has been changed - from a string table to the specialised ``HttpHeaders`` type. - -- The ``httpclient.request`` - `(doc) <http://nim-lang.org/docs/httpclient.html#request,AsyncHttpClient,string,string,string>`_ - procedure which takes the ``httpMethod`` as a string - value no longer requires it to be prefixed with ``"http"`` - (or similar). - -- Converting a ``HttpMethod`` - `(doc) <nim-lang.org/docs/httpcore.html#HttpMethod>`_ - value to a string using the ``$`` operator will - give string values without the ``"Http"`` prefix now. - -- The ``Request`` - `(doc) <http://nim-lang.org/docs/asynchttpserver.html#Request>`_ - object defined in the ``asynchttpserver`` module now uses - the ``HttpMethod`` type for the request method. - -Library Additions ------------------ - -- Added ``readHeaderRow`` and ``rowEntry`` to the ``parsecsv`` - `(doc) <http://nim-lang.org/docs/parsecsv.html>`_ module - to provide - a lightweight alternative to python's ``csv.DictReader``. - -- Added ``setStdIoUnbuffered`` proc to the ``system`` module to enable - unbuffered I/O. - -- Added ``center`` and ``rsplit`` to the ``strutils`` - `(doc) <http://nim-lang.org/docs/strutils.html>`_ module - to provide similar Python functionality for Nim's strings. - -- Added ``isTitle``, ``title``, ``swapCase``, ``isUpper``, ``toUpper``, - ``isLower``, ``toLower``, ``isAlpha``, ``isSpace``, and ``capitalize`` - to the ``unicode.nim`` - `(doc) <http://nim-lang.org/docs/unicode.html>`_ module - to provide unicode aware case manipulation and case - testing. - -- Added a new module ``strmisc`` - `(doc) <http://nim-lang.org/docs/strmisc.html>`_ - to hold uncommon string - operations. Currently contains ``partition``, ``rpartition`` - and ``expandTabs``. - -- Split out ``walkFiles`` in the ``os`` - `(doc) <http://nim-lang.org/docs/os.html>`_ module to three separate procs - in order to make a clear distinction of functionality. ``walkPattern`` iterates - over both files and directories, while ``walkFiles`` now only iterates - over files and ``walkDirs`` only iterates over directories. - -- Added a synchronous ``HttpClient`` in the ``httpclient`` - `(doc) <http://nim-lang.org/docs/httpclient.html>`_ - module. The old - ``get``, ``post`` and similar procedures are now deprecated in favour of it. - -- Added a new macro called ``multisync`` allowing you to write procedures for - synchronous and asynchronous sockets with no duplication. - -- The ``async`` macro will now complete ``FutureVar[T]`` parameters - automatically unless they have been completed already. - -Tool Additions --------------- - -- The documentation is now searchable and sortable by type. -- Pragmas are now hidden by default in the documentation to reduce noise. -- Edit links are now present in the documentation. - - -Compiler Additions ------------------- - -- The ``-d/--define`` flag can now optionally take a value to be used - by code at compile time. - `(doc) <http://nim-lang.org/docs/manual.html#implementation-specific-pragmas-compile-time-define-pragmas>`_ - -Nimscript Additions -------------------- - -- It's possible to enable and disable specific hints and warnings in - Nimscript via the ``warning`` and ``hint`` procedures. - -- Nimscript exports a proc named ``patchFile`` which can be used to - patch modules or include files for different Nimble packages, including - the ``stdlib`` package. - -Language Additions ------------------- - -- Added ``{.intdefine.}`` and ``{.strdefine.}`` macros to make use of - (optional) compile time defines. - `(doc) <http://nim-lang.org/docs/manual.html#implementation-specific-pragmas-compile-time-define-pragmas>`_ - -- If the first statement is an ``import system`` statement then ``system`` - is not imported implicitly anymore. This allows for code like - ``import system except echo`` or ``from system import nil``. - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github <https://github.com/nim-lang/Nim/issues?utf8=%E2%9C%93&q=is%3Aissue+closed%3A%222016-06-22+..+2016-09-30%22+>`_. - -- Fixed "RFC: should startsWith and endsWith work with characters?" - (`#4252 <https://github.com/nim-lang/Nim/issues/4252>`_) - -- Fixed "Feature request: unbuffered I/O" - (`#2146 <https://github.com/nim-lang/Nim/issues/2146>`_) -- Fixed "clear() not implemented for CountTableRef" - (`#4325 <https://github.com/nim-lang/Nim/issues/4325>`_) -- Fixed "Cannot close file opened async" - (`#4334 <https://github.com/nim-lang/Nim/issues/4334>`_) -- Fixed "Feature Request: IDNA support" - (`#3045 <https://github.com/nim-lang/Nim/issues/3045>`_) -- Fixed "Async: wrong behavior of boolean operations on futures" - (`#4333 <https://github.com/nim-lang/Nim/issues/4333>`_) -- Fixed "os.walkFiles yields directories" - (`#4280 <https://github.com/nim-lang/Nim/issues/4280>`_) -- Fixed "Fix #4392 and progress on #4170" - (`#4393 <https://github.com/nim-lang/Nim/issues/4393>`_) -- Fixed "Await unable to wait futures from objects fields" - (`#4390 <https://github.com/nim-lang/Nim/issues/4390>`_) -- Fixed "TMP variable name generation should be more stable" - (`#4364 <https://github.com/nim-lang/Nim/issues/4364>`_) -- Fixed "nativesockets doesn't compile for Android 4.x (API v19 or older) because of gethostbyaddr" - (`#4376 <https://github.com/nim-lang/Nim/issues/4376>`_) -- Fixed "no generic parameters allowed for ref" - (`#4395 <https://github.com/nim-lang/Nim/issues/4395>`_) -- Fixed "split proc in strutils inconsistent for set[char]" - (`#4305 <https://github.com/nim-lang/Nim/issues/4305>`_) -- Fixed "Problem with sets in devel" - (`#4412 <https://github.com/nim-lang/Nim/issues/4412>`_) -- Fixed "Compiler crash when using seq[PNimrodNode] in macros" - (`#537 <https://github.com/nim-lang/Nim/issues/537>`_) -- Fixed "ospaths should be marked for nimscript use only" - (`#4249 <https://github.com/nim-lang/Nim/issues/4249>`_) -- Fixed "Repeated deepCopy() on a recursive data structure eventually crashes" - (`#4340 <https://github.com/nim-lang/Nim/issues/4340>`_) -- Fixed "Analyzing destructor" - (`#4371 <https://github.com/nim-lang/Nim/issues/4371>`_) -- Fixed "getType does not work anymore on a typedesc" - (`#4462 <https://github.com/nim-lang/Nim/issues/4462>`_) -- Fixed "Error in rendering empty JSON array" - (`#4399 <https://github.com/nim-lang/Nim/issues/4399>`_) -- Fixed "Segmentation fault when using async pragma on generic procs" - (`#2377 <https://github.com/nim-lang/Nim/issues/2377>`_) -- Fixed "Forwarding does not work for generics, | produces an implicit generic" - (`#3055 <https://github.com/nim-lang/Nim/issues/3055>`_) -- Fixed "Inside a macro, the length of the `seq` data inside a `queue` does not increase and crashes" - (`#4422 <https://github.com/nim-lang/Nim/issues/4422>`_) -- Fixed "compiler sigsegv while processing varargs" - (`#4475 <https://github.com/nim-lang/Nim/issues/4475>`_) -- Fixed "JS codegen - strings are assigned by reference" - (`#4471 <https://github.com/nim-lang/Nim/issues/4471>`_) -- Fixed "when statement doesn't verify syntax" - (`#4301 <https://github.com/nim-lang/Nim/issues/4301>`_) -- Fixed ".this pragma doesn't work with .async procs" - (`#4358 <https://github.com/nim-lang/Nim/issues/4358>`_) -- Fixed "type foo = range(...) crashes compiler" - (`#4429 <https://github.com/nim-lang/Nim/issues/4429>`_) -- Fixed "Compiler crash" - (`#2730 <https://github.com/nim-lang/Nim/issues/2730>`_) -- Fixed "Crash in compiler with static[int]" - (`#3706 <https://github.com/nim-lang/Nim/issues/3706>`_) -- Fixed "Bad error message "could not resolve"" - (`#3548 <https://github.com/nim-lang/Nim/issues/3548>`_) -- Fixed "Roof operator on string in template crashes compiler (Error: unhandled exception: sons is not accessible [FieldError])" - (`#3545 <https://github.com/nim-lang/Nim/issues/3545>`_) -- Fixed "SIGSEGV during compilation with parallel block" - (`#2758 <https://github.com/nim-lang/Nim/issues/2758>`_) -- Fixed "Codegen error with template and implicit dereference" - (`#4478 <https://github.com/nim-lang/Nim/issues/4478>`_) -- Fixed "@ in importcpp should work with no-argument functions" - (`#4496 <https://github.com/nim-lang/Nim/issues/4496>`_) -- Fixed "Regression: findExe raises" - (`#4497 <https://github.com/nim-lang/Nim/issues/4497>`_) -- Fixed "Linking error - repeated symbols when splitting into modules" - (`#4485 <https://github.com/nim-lang/Nim/issues/4485>`_) -- Fixed "Error: method is not a base" - (`#4428 <https://github.com/nim-lang/Nim/issues/4428>`_) -- Fixed "Casting from function returning a tuple fails" - (`#4345 <https://github.com/nim-lang/Nim/issues/4345>`_) -- Fixed "clang error with default nil parameter" - (`#4328 <https://github.com/nim-lang/Nim/issues/4328>`_) -- Fixed "internal compiler error: openArrayLoc" - (`#888 <https://github.com/nim-lang/Nim/issues/888>`_) -- Fixed "Can't forward declare async procs" - (`#1970 <https://github.com/nim-lang/Nim/issues/1970>`_) -- Fixed "unittest.check and sequtils.allIt do not work together" - (`#4494 <https://github.com/nim-lang/Nim/issues/4494>`_) -- Fixed "httpclient package can't make SSL requests over an HTTP proxy" - (`#4520 <https://github.com/nim-lang/Nim/issues/4520>`_) -- Fixed "False positive warning "declared but not used" for enums." - (`#4510 <https://github.com/nim-lang/Nim/issues/4510>`_) -- Fixed "Explicit conversions not using converters" - (`#4432 <https://github.com/nim-lang/Nim/issues/4432>`_) - -- Fixed "Unclear error message when importing" - (`#4541 <https://github.com/nim-lang/Nim/issues/4541>`_) -- Fixed "Change console encoding to UTF-8 by default" - (`#4417 <https://github.com/nim-lang/Nim/issues/4417>`_) - -- Fixed "Typedesc ~= Generic notation does not work anymore!" - (`#4534 <https://github.com/nim-lang/Nim/issues/4534>`_) -- Fixed "unittest broken?" - (`#4555 <https://github.com/nim-lang/Nim/issues/4555>`_) -- Fixed "Operator "or" in converter types seems to crash the compiler." - (`#4537 <https://github.com/nim-lang/Nim/issues/4537>`_) -- Fixed "nimscript failed to compile/run -- Error: cannot 'importc' variable at compile time" - (`#4561 <https://github.com/nim-lang/Nim/issues/4561>`_) -- Fixed "Regression: identifier expected, but found ..." - (`#4564 <https://github.com/nim-lang/Nim/issues/4564>`_) -- Fixed "varargs with transformation that takes var argument creates invalid c code" - (`#4545 <https://github.com/nim-lang/Nim/issues/4545>`_) -- Fixed "Type mismatch when using empty tuple as generic parameter" - (`#4550 <https://github.com/nim-lang/Nim/issues/4550>`_) -- Fixed "strscans" - (`#4562 <https://github.com/nim-lang/Nim/issues/4562>`_) -- Fixed "getTypeImpl crashes (SIGSEGV) on variant types" - (`#4526 <https://github.com/nim-lang/Nim/issues/4526>`_) -- Fixed "Wrong result of sort in VM" - (`#4065 <https://github.com/nim-lang/Nim/issues/4065>`_) -- Fixed "I can't call the random[T](x: Slice[T]): T" - (`#4353 <https://github.com/nim-lang/Nim/issues/4353>`_) -- Fixed "invalid C code generated (function + block + empty tuple)" - (`#4505 <https://github.com/nim-lang/Nim/issues/4505>`_) - -- Fixed "performance issue: const Table make a copy at runtime lookup." - (`#4354 <https://github.com/nim-lang/Nim/issues/4354>`_) -- Fixed "Compiler issue: libraries without absolute paths cannot be found correctly" - (`#4568 <https://github.com/nim-lang/Nim/issues/4568>`_) -- Fixed "Cannot use math.`^` with non-int types." - (`#4574 <https://github.com/nim-lang/Nim/issues/4574>`_) -- Fixed "C codegen fails when constructing an array using an object constructor." - (`#4582 <https://github.com/nim-lang/Nim/issues/4582>`_) -- Fixed "Visual Studio 10 unresolved external symbol _trunc(should we support VS2010?)" - (`#4532 <https://github.com/nim-lang/Nim/issues/4532>`_) -- Fixed "Cannot pass generic subtypes to proc for generic supertype" - (`#4528 <https://github.com/nim-lang/Nim/issues/4528>`_) -- Fixed "Lamda-lifting bug leading to crash." - (`#4551 <https://github.com/nim-lang/Nim/issues/4551>`_) -- Fixed "First-class iterators declared as inline are compiled at Nim side (no error message) and fail at C" - (`#2094 <https://github.com/nim-lang/Nim/issues/2094>`_) -- Fixed "VS2010-warning C4090 : 'function' : different 'const' qualifiers" - (`#4590 <https://github.com/nim-lang/Nim/issues/4590>`_) -- Fixed "Regression: type mismatch with generics" - (`#4589 <https://github.com/nim-lang/Nim/issues/4589>`_) -- Fixed "„can raise an unlisted exception“ when assigning nil as default value" - (`#4593 <https://github.com/nim-lang/Nim/issues/4593>`_) -- Fixed "upcoming asyncdispatch.closeSocket is not GC-safe" - (`#4606 <https://github.com/nim-lang/Nim/issues/4606>`_) -- Fixed "Visual Studio 10.0 compiler errors, 12.0 warning" - (`#4459 <https://github.com/nim-lang/Nim/issues/4459>`_) -- Fixed "Exception of net.newContext: result.extraInternalIndex == 0 [AssertionError]" - (`#4406 <https://github.com/nim-lang/Nim/issues/4406>`_) -- Fixed "error: redeclaration of 'result_115076' with no linkage" - (`#3221 <https://github.com/nim-lang/Nim/issues/3221>`_) -- Fixed "Compiler crashes on conversion from int to float at compile time" - (`#4619 <https://github.com/nim-lang/Nim/issues/4619>`_) -- Fixed "wrong number of arguments regression in devel" - (`#4600 <https://github.com/nim-lang/Nim/issues/4600>`_) -- Fixed "importc $ has broken error message (and is not documented)" - (`#4579 <https://github.com/nim-lang/Nim/issues/4579>`_) -- Fixed "Compiler segfaults on simple importcpp in js mode [regression]" - (`#4632 <https://github.com/nim-lang/Nim/issues/4632>`_) -- Fixed "Critical reference counting codegen problem" - (`#4653 <https://github.com/nim-lang/Nim/issues/4653>`_) -- Fixed "tables.nim needs lots of {.noSideEffect.}" - (`#4254 <https://github.com/nim-lang/Nim/issues/4254>`_) -- Fixed "Capture variable error when using ``=>`` macro" - (`#4658 <https://github.com/nim-lang/Nim/issues/4658>`_) -- Fixed "Enum from char: internal error getInt" - (`#3606 <https://github.com/nim-lang/Nim/issues/3606>`_) -- Fixed "Compiler crashes in debug mode (no error in release mode) with Natural discriminant in object variants" - (`#2865 <https://github.com/nim-lang/Nim/issues/2865>`_) -- Fixed "SIGSEGV when access field in const object variants" - (`#4253 <https://github.com/nim-lang/Nim/issues/4253>`_) -- Fixed "varargs cannot be used with template converter." - (`#4292 <https://github.com/nim-lang/Nim/issues/4292>`_) -- Fixed "Compiler crashes when borrowing $" - (`#3928 <https://github.com/nim-lang/Nim/issues/3928>`_) -- Fixed "internal error: genMagicExpr: mArrPut" - (`#4491 <https://github.com/nim-lang/Nim/issues/4491>`_) -- Fixed "Unhelpful error message on importc namespace collision" - (`#4580 <https://github.com/nim-lang/Nim/issues/4580>`_) -- Fixed "Problem with openarrays and slices" - (`#4179 <https://github.com/nim-lang/Nim/issues/4179>`_) -- Fixed "Removing lines from end of file then rebuilding does not rebuild [js only?]" - (`#4656 <https://github.com/nim-lang/Nim/issues/4656>`_) -- Fixed "getCurrentException and getCurrentExceptionMsg do not work with JS" - (`#4635 <https://github.com/nim-lang/Nim/issues/4635>`_) -- Fixed "generic proc parameter is not inferred if type parameter has specifier" - (`#4672 <https://github.com/nim-lang/Nim/issues/4672>`_) -- Fixed "Cannot instantiate generic parameter when it is parent type parameter" - (`#4673 <https://github.com/nim-lang/Nim/issues/4673>`_) -- Fixed "deepCopy doesn't work with inheritance after last commit" - (`#4693 <https://github.com/nim-lang/Nim/issues/4693>`_) -- Fixed "Multi-methods don't work when passing ref to a different thread" - (`#4689 <https://github.com/nim-lang/Nim/issues/4689>`_) -- Fixed "Infinite loop in effect analysis on generics" - (`#4677 <https://github.com/nim-lang/Nim/issues/4677>`_) -- Fixed "SIGSEGV when compiling NimYAML tests" - (`#4699 <https://github.com/nim-lang/Nim/issues/4699>`_) - -- Fixed "Closing AsyncEvent now also unregisters it on non-Windows platforms" - (`#4694 <https://github.com/nim-lang/Nim/issues/4694>`_) -- Fixed "Don't update handle in upcoming/asyncdispatch poll() if it was closed" - (`#4697 <https://github.com/nim-lang/Nim/issues/4697>`_) -- Fixed "generated local variables declared outside block" - (`#4721 <https://github.com/nim-lang/Nim/issues/4721>`_) -- Fixed "Footer Documentation links, & Community link point to the wrong place under news entries" - (`#4529 <https://github.com/nim-lang/Nim/issues/4529>`_) -- Fixed "Jester's macro magic leads to incorrect C generation" - (`#4088 <https://github.com/nim-lang/Nim/issues/4088>`_) -- Fixed "cas bug in atomics.nim" - (`#3279 <https://github.com/nim-lang/Nim/issues/3279>`_) -- Fixed "nimgrep PEG not capturing the pattern 'A'" - (`#4751 <https://github.com/nim-lang/Nim/issues/4751>`_) -- Fixed "GC assert triggers when assigning TableRef threadvar" - (`#4640 <https://github.com/nim-lang/Nim/issues/4640>`_) -- Fixed ".this pragma conflicts with experimental ptr dereferencing when names conflict" - (`#4671 <https://github.com/nim-lang/Nim/issues/4671>`_) -- Fixed "Generic procs accepting var .importcpp type do not work [regression]" - (`#4625 <https://github.com/nim-lang/Nim/issues/4625>`_) -- Fixed "C Error on tuple assignment with array" - (`#4626 <https://github.com/nim-lang/Nim/issues/4626>`_) -- Fixed "module securehash not gcsafe" - (`#4760 <https://github.com/nim-lang/Nim/issues/4760>`_) - -- Fixed "Nimble installation failed on Windows x86." - (`#4764 <https://github.com/nim-lang/Nim/issues/4764>`_) -- Fixed "Recent changes to marshal module break old marshalled data" - (`#4779 <https://github.com/nim-lang/Nim/issues/4779>`_) -- Fixed "tnewasyncudp.nim test loops forever" - (`#4777 <https://github.com/nim-lang/Nim/issues/4777>`_) -- Fixed "Wrong poll timeout behavior in asyncdispatch" - (`#4262 <https://github.com/nim-lang/Nim/issues/4262>`_) -- Fixed "Standalone await shouldn't read future" - (`#4170 <https://github.com/nim-lang/Nim/issues/4170>`_) -- Fixed "Regression: httpclient fails to compile without -d:ssl" - (`#4797 <https://github.com/nim-lang/Nim/issues/4797>`_) -- Fixed "C Error on declaring array of heritable objects with bitfields" - (`#3567 <https://github.com/nim-lang/Nim/issues/3567>`_) -- Fixed "Corruption when using Channels and Threads" - (`#4776 <https://github.com/nim-lang/Nim/issues/4776>`_) -- Fixed "Sometimes Channel tryRecv() erroneously reports no messages available on the first call on Windows" - (`#4746 <https://github.com/nim-lang/Nim/issues/4746>`_) -- Fixed "Improve error message of functions called without parenthesis" - (`#4813 <https://github.com/nim-lang/Nim/issues/4813>`_) -- Fixed "Docgen doesn't find doc comments in macro generated procs" - (`#4803 <https://github.com/nim-lang/Nim/issues/4803>`_) -- Fixed "asynchttpserver may consume unbounded memory reading headers" - (`#3847 <https://github.com/nim-lang/Nim/issues/3847>`_) -- Fixed "TLS connection to api.clashofclans.com hangs forever." - (`#4587 <https://github.com/nim-lang/Nim/issues/4587>`_) diff --git a/web/news/e028_version_0_15_2.rst b/web/news/e028_version_0_15_2.rst deleted file mode 100644 index 601a26646..000000000 --- a/web/news/e028_version_0_15_2.rst +++ /dev/null @@ -1,77 +0,0 @@ -Version 0.15.2 released -======================= - -.. container:: metadata - - Posted by Andreas Rumpf on 23/10/2016 - -We're happy to announce that the latest release of Nim, version 0.15.2, is now -available! - -As always, you can grab the latest version from the -`downloads page <http://nim-lang.org/download.html>`_. - -This release is a pure bugfix release fixing the most pressing issues and -regressions of 0.15.0. For Windows we now provide zipfiles in addition to the -NSIS based installer which proves to be hard to maintain and after all these -months still has serious issues. So we encourage you download the .zip -file instead of the .exe file! Unzip it somewhere, run ``finish.exe`` to -detect your MingW installation, done. ``finish.exe`` can also set your PATH -environment variable. - - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github <https://github.com/nim-lang/Nim/issues?utf8=%E2%9C%93&q=is%3Aissue+closed%3A%222016-09-30+..+2016-10-23%22+>`_. - - -- Fixed "`NimMain` not exported in DLL, but `NimMainInner` is" - (`#4840 <https://github.com/nim-lang/Nim/issues/4840>`_) -- Fixed "Tables clear seems to be broken" - (`#4844 <https://github.com/nim-lang/Nim/issues/4844>`_) -- Fixed "compiler: internal error" - (`#4845 <https://github.com/nim-lang/Nim/issues/4845>`_) -- Fixed "trivial macro breaks type checking in the compiler" - (`#4608 <https://github.com/nim-lang/Nim/issues/4608>`_) -- Fixed "derived generic types with static[T] breaks type checking in v0.15.0 (worked in v0.14.2)" - (`#4863 <https://github.com/nim-lang/Nim/issues/4863>`_) -- Fixed "xmlparser.parseXml is not recognised as GC-safe" - (`#4899 <https://github.com/nim-lang/Nim/issues/4899>`_) -- Fixed "async makes generics instantiate only once" - (`#4856 <https://github.com/nim-lang/Nim/issues/4856>`_) -- Fixed "db_common docs aren't generated" - (`#4895 <https://github.com/nim-lang/Nim/issues/4895>`_) -- Fixed "rdstdin disappeared from documentation index" - (`#3755 <https://github.com/nim-lang/Nim/issues/3755>`_) -- Fixed "ICE on template call resolution" - (`#4875 <https://github.com/nim-lang/Nim/issues/4875>`_) -- Fixed "Invisible code-block" - (`#3078 <https://github.com/nim-lang/Nim/issues/3078>`_) -- Fixed "nim doc does not generate doc comments correctly" - (`#4913 <https://github.com/nim-lang/Nim/issues/4913>`_) -- Fixed "nim doc2 fails on ARM when running against lib/pure/coro.nim" - (`#4879 <https://github.com/nim-lang/Nim/issues/4879>`_) -- Fixed "xmlparser does not unescape correctly" - (`#1518 <https://github.com/nim-lang/Nim/issues/1518>`_) -- Fixed "[docs] mysterious "raise hook"" - (`#3485 <https://github.com/nim-lang/Nim/issues/3485>`_) -- Fixed "assertion failure in non-release Nim when compiling NimYAML" - (`#4869 <https://github.com/nim-lang/Nim/issues/4869>`_) -- Fixed "A closure causes nimscript to fail with unhandled exception" - (`#4906 <https://github.com/nim-lang/Nim/issues/4906>`_) -- Fixed "startProcess changes working directory" - (`#4867 <https://github.com/nim-lang/Nim/issues/4867>`_) -- Fixed "bindsym to void template produces ICE" - (`#4808 <https://github.com/nim-lang/Nim/issues/4808>`_) -- Fixed "readline(TFile, var string) segfaults if second argument is nil" - (`#564 <https://github.com/nim-lang/Nim/issues/564>`_) -- Fixed "times.parse gives the wrong day of the week for the first hour of the day." - (`#4922 <https://github.com/nim-lang/Nim/issues/4922>`_) -- Fixed "Internal error when passing parameter proc inside .gcsafe closure" - (`#4927 <https://github.com/nim-lang/Nim/issues/4927>`_) -- Fixed "Upcoming asyncdispatch doesn't compile with C++ backend on OS X" - (`#4928 <https://github.com/nim-lang/Nim/issues/4928>`_) diff --git a/web/news/e029_version_0_16_0.rst b/web/news/e029_version_0_16_0.rst deleted file mode 100644 index 4b204cfd0..000000000 --- a/web/news/e029_version_0_16_0.rst +++ /dev/null @@ -1,222 +0,0 @@ -Version 0.16.0 released -======================= - -.. container:: metadata - - Posted by The Nim Team on 08/01/2017 - -We're happy to announce that the latest release of Nim, version 0.16.0, is now -available! - -As always, you can grab the latest version from the -`downloads page <http://nim-lang.org/download.html>`_. - -This release includes over 80 bug fixes and improvements. To see a full list -of changes, take a look at the detailed changelog -`below <#changelog>`_. - -Some of the most significant changes in this release include: a major new -Nimble release, an improved import syntax, and the stabilisation of -name mangling rules enabling faster compile times. - -The new Nimble release that is included with Nim 0.16.0 includes a variety of -new features and bug fixes. The most prominent of which is the improved output -system, as shown in the figure below. - -.. raw::html - - <a href="../assets/news/images/0.16.0/nimble.png"> - <img src="../assets/news/images/0.16.0/nimble.png" alt="Nimble 0.8.0" style="width:100%"/> - </a> - -For a full list of changes in Nimble, see its -`changelog <https://github.com/nim-lang/nimble/blob/master/changelog.markdown#080---05012017>`_. - -The new import syntax makes it easier to import multiple modules from the same -package or directory. For example: - -.. code-block:: nim - import compiler/ast, compiler/parser, compiler/lexer - import compiler / [ast, parser, lexer] - -The two are equivalent, but the new latter syntax is less redundant. - -Finally, the code responsible for name mangling in the generated C and C++ code -has been improved to reduce compile times. In particular, compile-time for -the common edit-compile-run cycles have been reduced. - -Changelog -~~~~~~~~~ - -Changes affecting backwards compatibility ------------------------------------------ - -- ``staticExec`` now uses the directory of the nim file that contains the - ``staticExec`` call as the current working directory. -- ``TimeInfo.tzname`` has been removed from ``times`` module because it was - broken. Because of this, the option ``"ZZZ"`` will no longer work in format - strings for formatting and parsing. - -Library Additions ------------------ - -- Added new parameter to ``error`` proc of ``macro`` module to provide better - error message -- Added new ``deques`` module intended to replace ``queues``. - ``deques`` provides a superset of ``queues`` API with clear naming. - ``queues`` module is now deprecated and will be removed in the future. - -- Added ``hideCursor``, ``showCursor``, ``terminalWidth``, - ``terminalWidthIoctl`` and ``terminalSize`` to the ``terminal`` - `(doc) <http://nim-lang.org/docs/terminal.html>`_ module. - -- Added new module ``distros`` - `(doc) <http://nim-lang.org/docs/distros.html>`_ that can be used in Nimble - packages to aid in supporting the OS's native package managers. - - -Tool Additions --------------- - - -Compiler Additions ------------------- - -- The C/C++ code generator has been rewritten to use stable - name mangling rules. This means that compile times for - edit-compile-run cycles are much reduced. - - -Language Additions ------------------- - -- The ``emit`` pragma now takes a list of Nim expressions instead - of a single string literal. This list can easily contain non-strings - like template parameters. This means ``emit`` works out of the - box with templates and no new quoting rules needed to be introduced. - The old way with backtick quoting is still supported but will be - deprecated. - -.. code-block:: nim - type Vector* {.importcpp: "std::vector", header: "<vector>".}[T] = object - - template `[]=`*[T](v: var Vector[T], key: int, val: T) = - {.emit: [v, "[", key, "] = ", val, ";"].} - - proc setLen*[T](v: var Vector[T]; size: int) {.importcpp: "resize", nodecl.} - proc `[]`*[T](v: var Vector[T], key: int): T {.importcpp: "(#[#])", nodecl.} - - proc main = - var v: Vector[float] - v.setLen 1 - v[0] = 6.0 - echo v[0] - -- The ``import`` statement now supports importing multiple modules from - the same directory: - -.. code-block:: nim - import compiler / [ast, parser, lexer] - -Is a shortcut for: - -.. code-block:: nim - import compiler / ast, compiler / parser, compiler / lexer - - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github <https://github.com/nim-lang/Nim/issues?utf8=%E2%9C%93&q=is%3Aissue+closed%3A%222016-10-23+..+2017-01-07%22+>`_. - -- Fixed "staticRead and staticExec have different working directories" - (`#4871 <https://github.com/nim-lang/Nim/issues/4871>`_) -- Fixed "CountTable doesn't support the '==' operator" - (`#4901 <https://github.com/nim-lang/Nim/issues/4901>`_) -- Fixed "documentation for module sequtls apply proc" - (`#4386 <https://github.com/nim-lang/Nim/issues/4386>`_) -- Fixed "Operator `==` for CountTable does not work." - (`#4946 <https://github.com/nim-lang/Nim/issues/4946>`_) -- Fixed "sysFatal (IndexError) with parseUri and the / operator" - (`#4959 <https://github.com/nim-lang/Nim/issues/4959>`_) -- Fixed "initialSize parameter does not work in OrderedTableRef" - (`#4940 <https://github.com/nim-lang/Nim/issues/4940>`_) -- Fixed "error proc from macro library could have a node parameter" - (`#4915 <https://github.com/nim-lang/Nim/issues/4915>`_) -- Fixed "Segfault when comparing OrderedTableRef with nil" - (`#4974 <https://github.com/nim-lang/Nim/issues/4974>`_) -- Fixed "Bad codegen when comparing isNil results" - (`#4975 <https://github.com/nim-lang/Nim/issues/4975>`_) -- Fixed "OrderedTable cannot delete entry with empty string or 0 key" - (`#5035 <https://github.com/nim-lang/Nim/issues/5035>`_) -- Fixed "Deleting specific keys from ordered table leaves it in invalid state." - (`#5057 <https://github.com/nim-lang/Nim/issues/5057>`_) -- Fixed "Paths are converted to lowercase on Windows" - (`#5076 <https://github.com/nim-lang/Nim/issues/5076>`_) -- Fixed "toTime(getGMTime(...)) doesn't work correctly when local timezone is not UTC" - (`#5065 <https://github.com/nim-lang/Nim/issues/5065>`_) -- Fixed "out of memory error from `test=` type proc call when parameter is a call to a table's `[]` proc" - (`#5079 <https://github.com/nim-lang/Nim/issues/5079>`_) -- Fixed "Incorrect field order in object construction" - (`#5055 <https://github.com/nim-lang/Nim/issues/5055>`_) -- Fixed "Incorrect codegen when importing nre with C++ backend (commit 8494338)" - (`#5081 <https://github.com/nim-lang/Nim/issues/5081>`_) -- Fixed "Templates, {.emit.}, and backtick interpolation do not work together" - (`#4730 <https://github.com/nim-lang/Nim/issues/4730>`_) -- Fixed "Regression: getType fails in certain cases" - (`#5129 <https://github.com/nim-lang/Nim/issues/5129>`_) -- Fixed "CreateThread doesn't accept functions with generics" - (`#43 <https://github.com/nim-lang/Nim/issues/43>`_) -- Fixed "No instantiation information when template has error" - (`#4308 <https://github.com/nim-lang/Nim/issues/4308>`_) -- Fixed "realloc leaks" - (`#4818 <https://github.com/nim-lang/Nim/issues/4818>`_) -- Fixed "Regression: getType" - (`#5131 <https://github.com/nim-lang/Nim/issues/5131>`_) -- Fixed "Code generation for generics broken by sighashes" - (`#5135 <https://github.com/nim-lang/Nim/issues/5135>`_) -- Fixed "Regression: importc functions are not declared in generated C code" - (`#5136 <https://github.com/nim-lang/Nim/issues/5136>`_) -- Fixed "Calling split("") on string hangs program" - (`#5119 <https://github.com/nim-lang/Nim/issues/5119>`_) -- Fixed "Building dynamic library: undefined references (Linux)" - (`#4775 <https://github.com/nim-lang/Nim/issues/4775>`_) -- Fixed "Bad codegen for distinct + importc - sighashes regression" - (`#5137 <https://github.com/nim-lang/Nim/issues/5137>`_) -- Fixed "C++ codegen regression: memset called on a result variable of `importcpp` type" - (`#5140 <https://github.com/nim-lang/Nim/issues/5140>`_) -- Fixed "C++ codegen regression: using channels leads to broken C++ code" - (`#5142 <https://github.com/nim-lang/Nim/issues/5142>`_) -- Fixed "Ambiguous call when overloading var and non-var with generic type" - (`#4519 <https://github.com/nim-lang/Nim/issues/4519>`_) -- Fixed "[Debian]: build.sh error: unknown processor: aarch64" - (`#2147 <https://github.com/nim-lang/Nim/issues/2147>`_) -- Fixed "RFC: asyncdispatch.poll behaviour" - (`#5155 <https://github.com/nim-lang/Nim/issues/5155>`_) -- Fixed "Can't access enum members through alias (possible sighashes regression)" - (`#5148 <https://github.com/nim-lang/Nim/issues/5148>`_) -- Fixed "Type, declared in generic proc body, leads to incorrect codegen (sighashes regression)" - (`#5147 <https://github.com/nim-lang/Nim/issues/5147>`_) -- Fixed "Compiler SIGSEGV when mixing method and proc" - (`#5161 <https://github.com/nim-lang/Nim/issues/5161>`_) -- Fixed "Compile-time SIGSEGV when declaring .importcpp method with return value " - (`#3848 <https://github.com/nim-lang/Nim/issues/3848>`_) -- Fixed "Variable declaration incorrectly parsed" - (`#2050 <https://github.com/nim-lang/Nim/issues/2050>`_) -- Fixed "Invalid C code when naming a object member "linux"" - (`#5171 <https://github.com/nim-lang/Nim/issues/5171>`_) -- Fixed "[Windows] MinGW within Nim install is missing libraries" - (`#2723 <https://github.com/nim-lang/Nim/issues/2723>`_) -- Fixed "async: annoying warning for future.finished" - (`#4948 <https://github.com/nim-lang/Nim/issues/4948>`_) -- Fixed "new import syntax doesn't work?" - (`#5185 <https://github.com/nim-lang/Nim/issues/5185>`_) -- Fixed "Fixes #1994" - (`#4874 <https://github.com/nim-lang/Nim/issues/4874>`_) -- Fixed "Can't tell return value of programs with staticExec" - (`#1994 <https://github.com/nim-lang/Nim/issues/1994>`_) -- Fixed "startProcess() on Windows with poInteractive: Second call fails ("Alle Pipeinstanzen sind ausgelastet")" - (`#5179 <https://github.com/nim-lang/Nim/issues/5179>`_) diff --git a/web/news/e030_nim_in_action_in_production.rst b/web/news/e030_nim_in_action_in_production.rst deleted file mode 100644 index b68b82801..000000000 --- a/web/news/e030_nim_in_action_in_production.rst +++ /dev/null @@ -1,53 +0,0 @@ -Nim in Action is going into production! -======================================= - -.. container:: metadata - - Posted by Dominik Picheta on 20/11/2016 - -.. raw::html - - <a href="https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81"> - <img src="../assets/niminaction/banner2.png" alt="A printed copy of Nim in Action should be available in March 2017!" width="682"/> - </a> - -I am very happy to say that just last week I have put the finishing touches -on Nim in Action. The final manuscript has been submitted to Manning (the book's -publisher), and the printed version is expected to start shipping in March -2017 (give or take 1 month). - -The eBook is still available and now contains all of the book's chapters, -including new ones dealing with the foreign function interface and -metaprogramming. -That said, it may still take some time before the eBook is updated with the -latest corrections. - -I am incredibly thankful to everyone that purchased the book already. Many of -you have also given me a lot of `brilliant <http://forum.nim-lang.org/t/1978>`_ -`feedback <https://forums.manning.com/forums/nim-in-action>`_, -thank you very much for -taking the time to do so. I have done my best to act on this -feedback and I hope you will agree that the book has risen in quality as a -result. - -Writing this book has been both exhausting and incredible at the same time. -I look forward -to having a physical copy of it in my hands, and I'm sure many of you do as -well. I can safely say that without your support this book would not have -happened, even if you did not purchase a copy your interest in Nim has made it -possible and I thank you for that. - -As always, you can make a purchase on -`Manning's website <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_. -Both eBook's and printed books are available, and purchasing a printed book will -get you an eBook for free. -You can now also pre-order Nim in Action on -`Amazon <https://www.amazon.co.uk/Nim-Action-Dominik-Picheta/dp/1617293431/ref=sr_1_1?ie=UTF8&qid=1479663850&sr=8-1&keywords=nim+in+action>`_! - -If you would like updates about the book then please feel free to -follow either `myself <https://twitter.com/d0m96>`_ or -`@nim_lang <https://twitter.com/nim_lang>`_ on Twitter. Finally, if you have any -questions, do get in touch via `Twitter, NimForum, -IRC or Gitter <http://nim-lang.org/community.html>`_. - -Thanks for reading! diff --git a/web/news/e031_version_0_16_2.rst b/web/news/e031_version_0_16_2.rst deleted file mode 100644 index 3458ac83e..000000000 --- a/web/news/e031_version_0_16_2.rst +++ /dev/null @@ -1,325 +0,0 @@ -Version 0.17.0 released -======================= - -This release fixes the most important regressions introduced in 0.16.0. In -particular memory manager and channel bugs have been fixed. The NSIS based -installer is not provided anymore as the Nim website moved to ``https`` and -this causes NSIS downloads to fail. - - -Changelog -~~~~~~~~~ - -Changes affecting backwards compatibility ------------------------------------------ - -- There are now two different HTTP response types, ``Response`` and - ``AsyncResponse``. ``AsyncResponse``'s ``body`` accessor returns a - ``Future[string]``! -- ``httpclient.request`` now respects ``maxRedirects`` option. Previously - redirects were handled only by ``get`` and ``post`` procs. -- The IO routines now raise ``EOFError`` for the "end of file" condition. - ``EOFError`` is a subtype of ``IOError`` and so it's easier to distinguish - between "error during read" and "error due to EOF". -- A hash procedure has been added for ``cstring`` type in ``hashes`` module. - Previously, hash of a ``cstring`` would be calculated as a hash of the - pointer. Now the hash is calculated from the contents of the string, assuming - ``cstring`` is a null-terminated string. Equal ``string`` and ``cstring`` - values produce an equal hash value. -- Macros accepting `varargs` arguments will now receive a node having the - `nkArgList` node kind. Previous code expecting the node kind to be `nkBracket` - may have to be updated. -- ``memfiles.open`` now closes file handleds/fds by default. Passing - ``allowRemap=true`` to ``memfiles.open`` recovers the old behavior. The old - behavior is only needed to call ``mapMem`` on the resulting ``MemFile``. -- ``posix.nim``: For better C++ interop the field - ``sa_sigaction*: proc (x: cint, y: var SigInfo, z: pointer) {.noconv.}`` was - changed - to ``sa_sigaction*: proc (x: cint, y: ptr SigInfo, z: pointer) {.noconv.}``. -- The compiler doesn't infer effects for ``.base`` methods anymore. This means - you need to annotate them with ``.gcsafe`` or similar to clearly declare - upfront every implementation needs to fullfill these contracts. -- ``system.getAst templateCall(x, y)`` now typechecks the ``templateCall`` - properly. You need to patch your code accordingly. -- ``macros.getType`` and ``macros.getTypeImpl`` for an enum will now return an - AST that is the same as what is used to define an enum. Previously the AST - returned had a repeated ``EnumTy`` node and was missing the initial pragma - node (which is currently empty for an enum). -- ``macros.getTypeImpl`` now correctly returns the implementation for a symbol - of type ``tyGenericBody``. -- If the dispatcher parameter's value used in multi method is ``nil``, - a ``NilError`` exception is raised. The old behavior was that the method - would be a ``nop`` then. -- ``posix.nim``: the family of ``ntohs`` procs now takes unsigned integers - instead of signed integers. -- In Nim identifiers en-dash (Unicode point U+2013) is not an alias for the - underscore anymore. Use underscores and fix your programming font instead. -- When the ``requiresInit`` pragma is applied to a record type, future versions - of Nim will also require you to initialize all the fields of the type during - object construction. For now, only a warning will be produced. -- The Object construction syntax now performs a number of additional safety - checks. When fields within case objects are initialiazed, the compiler will - now demand that the respective discriminator field has a matching known - compile-time value. -- On posix, the results of `waitForExit`, `peekExitCode`, `execCmd` will return - 128 + signal number if the application terminates via signal. -- ``ospaths.getConfigDir`` now conforms to the XDG Base Directory specification - on non-Windows OSs. It returns the value of the XDG_CONFIG_DIR environment - variable if it is set, and returns the default configuration directory, - "~/.config/", otherwise. - -Library Additions ------------------ - -- Added ``system.onThreadDestruction``. -- Added ``dial`` procedure to networking modules: ``net``, ``asyncdispatch``, - ``asyncnet``. It merges socket creation, address resolution, and connection - into single step. When using ``dial``, you don't have to worry about - IPv4 vs IPv6 problem. ``httpclient`` now supports IPv6. - -Tool Additions --------------- - -- The ``finish`` tool can now download MingW for you should it not find a - working MingW installation. - - -Compiler Additions ------------------- - -- The name mangling rules used by the C code generator changed. Most of the time - local variables and parameters are not mangled at all anymore. This improves - debugging experience. -- The compiler produces explicit name mangling files when ``--debugger:native`` - is enabled. Debuggers can read these ``.ndi`` files in order to improve - debugging Nim code. - - -Language Additions ------------------- - -- The ``try`` statement's ``except`` branches now support the binding of a -caught exception to a variable: - -.. code-block:: nim - try: - raise newException(Exception, "Hello World") - except Exception as exc: - echo(exc.msg) - -This replaces the ``getCurrentException`` and ``getCurrentExceptionMsg()`` -procedures, although these procedures will remain in the stdlib for the -foreseeable future. This new language feature is actually implemented using -these procedures. - -In the near future we will be converting all exception types to refs to -remove the need for the ``newException`` template. - -- A new pragma ``.used`` can be used for symbols to prevent -the "declared but not used" warning. More details can be -found `here <http://nim-lang.org/docs/manual.html#pragmas-used-pragma>`_. -- The popular "colon block of statements" syntax is now also supported for - ``let`` and ``var`` statements and assignments: - -.. code-block:: nim - template ve(value, effect): untyped = - effect - val - - let x = ve(4): - echo "welcome to Nim!" - -This is particularly useful for DSLs that help in tree construction. - - -Language changes ----------------- - -- The ``.procvar`` annotation is not required anymore. That doesn't mean you - can pass ``system.$`` to ``map`` just yet though. - - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github <https://github.com/nim-lang/Nim/issues?utf8=%E2%9C%93&q=is%3Aissue+closed%3A%222017-01-07+..+2017-02-06%22+>`_. - -- Fixed "Weird compilation bug" - (`#4884 <https://github.com/nim-lang/Nim/issues/4884>`_) -- Fixed "Return by arg optimization does not set result to default value" - (`#5098 <https://github.com/nim-lang/Nim/issues/5098>`_) -- Fixed "upcoming asyncdispatch doesn't remove recv callback if remote side closed socket" - (`#5128 <https://github.com/nim-lang/Nim/issues/5128>`_) -- Fixed "compiler bug, executable writes into wrong memory" - (`#5218 <https://github.com/nim-lang/Nim/issues/5218>`_) -- Fixed "Module aliasing fails when multiple modules have the same original name" - (`#5112 <https://github.com/nim-lang/Nim/issues/5112>`_) -- Fixed "JS: var argument + case expr with arg = bad codegen" - (`#5244 <https://github.com/nim-lang/Nim/issues/5244>`_) -- Fixed "compiler reject proc's param shadowing inside template" - (`#5225 <https://github.com/nim-lang/Nim/issues/5225>`_) -- Fixed "const value not accessible in proc" - (`#3434 <https://github.com/nim-lang/Nim/issues/3434>`_) -- Fixed "Compilation regression 0.13.0 vs 0.16.0 in compile-time evaluation" - (`#5237 <https://github.com/nim-lang/Nim/issues/5237>`_) -- Fixed "Regression: JS: wrong field-access codegen" - (`#5234 <https://github.com/nim-lang/Nim/issues/5234>`_) -- Fixed "fixes #5234" - (`#5240 <https://github.com/nim-lang/Nim/issues/5240>`_) -- Fixed "JS Codegen: duplicated fields in object constructor" - (`#5271 <https://github.com/nim-lang/Nim/issues/5271>`_) -- Fixed "RFC: improving JavaScript FFI" - (`#4873 <https://github.com/nim-lang/Nim/issues/4873>`_) -- Fixed "Wrong result type when using bitwise and" - (`#5216 <https://github.com/nim-lang/Nim/issues/5216>`_) -- Fixed "upcoming.asyncdispatch is prone to memory leaks" - (`#5290 <https://github.com/nim-lang/Nim/issues/5290>`_) -- Fixed "Using threadvars leads to crash on Windows when threads are created/destroyed" - (`#5301 <https://github.com/nim-lang/Nim/issues/5301>`_) -- Fixed "Type inferring templates do not work with non-ref types." - (`#4973 <https://github.com/nim-lang/Nim/issues/4973>`_) -- Fixed "Nimble package list no longer works on lib.html" - (`#5318 <https://github.com/nim-lang/Nim/issues/5318>`_) -- Fixed "Missing file name and line number in error message" - (`#4992 <https://github.com/nim-lang/Nim/issues/4992>`_) -- Fixed "ref type can't be converted to var parameter in VM" - (`#5327 <https://github.com/nim-lang/Nim/issues/5327>`_) -- Fixed "nimweb ignores the value of --parallelBuild" - (`#5328 <https://github.com/nim-lang/Nim/issues/5328>`_) -- Fixed "Cannot unregister/close AsyncEvent from within its handler" - (`#5331 <https://github.com/nim-lang/Nim/issues/5331>`_) -- Fixed "name collision with template instanciated generic inline function with inlined iterator specialization used from different modules" - (`#5285 <https://github.com/nim-lang/Nim/issues/5285>`_) -- Fixed "object in VM does not have value semantic" - (`#5269 <https://github.com/nim-lang/Nim/issues/5269>`_) -- Fixed "Unstable tuple destructuring behavior in Nim VM" - (`#5221 <https://github.com/nim-lang/Nim/issues/5221>`_) -- Fixed "nre module breaks os templates" - (`#4996 <https://github.com/nim-lang/Nim/issues/4996>`_) -- Fixed "Cannot implement distinct seq with setLen" - (`#5090 <https://github.com/nim-lang/Nim/issues/5090>`_) -- Fixed "await inside array/dict literal produces invalid code" - (`#5314 <https://github.com/nim-lang/Nim/issues/5314>`_) - -- Fixed "asyncdispatch.accept() can raise exception inside poll() instead of failing future on Windows" - (`#5279 <https://github.com/nim-lang/Nim/issues/5279>`_) -- Fixed "VM: A crash report should be more informative" - (`#5352 <https://github.com/nim-lang/Nim/issues/5352>`_) -- Fixed "IO routines are poor at handling errors" - (`#5349 <https://github.com/nim-lang/Nim/issues/5349>`_) -- Fixed "new import syntax doesn't work?" - (`#5185 <https://github.com/nim-lang/Nim/issues/5185>`_) -- Fixed "Seq of object literals skips unmentioned fields" - (`#5339 <https://github.com/nim-lang/Nim/issues/5339>`_) -- Fixed "``sym is not accessible`` in compile time" - (`#5354 <https://github.com/nim-lang/Nim/issues/5354>`_) -- Fixed "the matching is broken in re.nim" - (`#5382 <https://github.com/nim-lang/Nim/issues/5382>`_) -- Fixed "development branch breaks in my c wrapper" - (`#5392 <https://github.com/nim-lang/Nim/issues/5392>`_) -- Fixed "Bad codegen: toSeq + tuples + generics" - (`#5383 <https://github.com/nim-lang/Nim/issues/5383>`_) -- Fixed "Bad codegen: toSeq + tuples + generics" - (`#5383 <https://github.com/nim-lang/Nim/issues/5383>`_) -- Fixed "Codegen error when using container of containers" - (`#5402 <https://github.com/nim-lang/Nim/issues/5402>`_) -- Fixed "sizeof(RangeType) is not available in static context" - (`#5399 <https://github.com/nim-lang/Nim/issues/5399>`_) -- Fixed "Regression: ICE: expr: var not init ex_263713" - (`#5405 <https://github.com/nim-lang/Nim/issues/5405>`_) -- Fixed "Stack trace is wrong when assignment operator fails with template" - (`#5400 <https://github.com/nim-lang/Nim/issues/5400>`_) -- Fixed "SIGSEGV in compiler" - (`#5391 <https://github.com/nim-lang/Nim/issues/5391>`_) -- Fixed "Compiler regression with struct member names" - (`#5404 <https://github.com/nim-lang/Nim/issues/5404>`_) -- Fixed "Regression: compiler segfault" - (`#5419 <https://github.com/nim-lang/Nim/issues/5419>`_) -- Fixed "The compilation of jester routes is broken on devel" - (`#5417 <https://github.com/nim-lang/Nim/issues/5417>`_) -- Fixed "Non-generic return type produces "method is not a base"" - (`#5432 <https://github.com/nim-lang/Nim/issues/5432>`_) -- Fixed "Confusing error behavior when calling slice[T].random" - (`#5430 <https://github.com/nim-lang/Nim/issues/5430>`_) -- Fixed "Wrong method called" - (`#5439 <https://github.com/nim-lang/Nim/issues/5439>`_) -- Fixed "Attempt to document the strscans.scansp macro" - (`#5154 <https://github.com/nim-lang/Nim/issues/5154>`_) -- Fixed "[Regression] Invalid C code for _ symbol inside jester routes" - (`#5452 <https://github.com/nim-lang/Nim/issues/5452>`_) -- Fixed "StdLib base64 encodeInternal crashes with out of bound exception" - (`#5457 <https://github.com/nim-lang/Nim/issues/5457>`_) -- Fixed "Nim hangs forever in infinite loop in nre library" - (`#5444 <https://github.com/nim-lang/Nim/issues/5444>`_) - -- Fixed "Tester passes test although individual test in suite fails" - (`#5472 <https://github.com/nim-lang/Nim/issues/5472>`_) -- Fixed "terminal.nim documentation" - (`#5483 <https://github.com/nim-lang/Nim/issues/5483>`_) -- Fixed "Codegen error - expected identifier before ')' token (probably regression)" - (`#5481 <https://github.com/nim-lang/Nim/issues/5481>`_) -- Fixed "mixin not works inside generic proc generated by template" - (`#5478 <https://github.com/nim-lang/Nim/issues/5478>`_) -- Fixed "var not init (converter + template + macro)" - (`#5467 <https://github.com/nim-lang/Nim/issues/5467>`_) -- Fixed "`==` for OrderedTable should consider equal content but different size as equal." - (`#5487 <https://github.com/nim-lang/Nim/issues/5487>`_) -- Fixed "Fixed tests/tester.nim" - (`#45 <https://github.com/nim-lang/Nim/issues/45>`_) -- Fixed "template instanciation crashes compiler" - (`#5428 <https://github.com/nim-lang/Nim/issues/5428>`_) -- Fixed "Internal compiler error in handleGenericInvocation" - (`#5167 <https://github.com/nim-lang/Nim/issues/5167>`_) -- Fixed "compiler crash in forwarding template" - (`#5455 <https://github.com/nim-lang/Nim/issues/5455>`_) -- Fixed "Doc query re public/private + suggestion re deprecated" - (`#5529 <https://github.com/nim-lang/Nim/issues/5529>`_) -- Fixed "inheritance not work for generic object whose parent is parameterized" - (`#5264 <https://github.com/nim-lang/Nim/issues/5264>`_) -- Fixed "weird inheritance rule restriction" - (`#5231 <https://github.com/nim-lang/Nim/issues/5231>`_) -- Fixed "Enum with holes broken in JS" - (`#5062 <https://github.com/nim-lang/Nim/issues/5062>`_) -- Fixed "enum type and aliased enum type inequality when tested with operator `is` involving template" - (`#5360 <https://github.com/nim-lang/Nim/issues/5360>`_) -- Fixed "logging: problem with console logger caused by the latest changes in sysio" - (`#5546 <https://github.com/nim-lang/Nim/issues/5546>`_) -- Fixed "Crash if proc and caller doesn't define seq type - HEAD" - (`#4756 <https://github.com/nim-lang/Nim/issues/4756>`_) -- Fixed "`path` config option doesn't work when compilation is invoked from a different directory" - (`#5228 <https://github.com/nim-lang/Nim/issues/5228>`_) -- Fixed "segfaults module doesn't compile with C++ backend" - (`#5550 <https://github.com/nim-lang/Nim/issues/5550>`_) -- Fixed "Improve `joinThreads` for windows" - (`#4972 <https://github.com/nim-lang/Nim/issues/4972>`_) -- Fixed "Compiling in release mode prevents valid code execution." - (`#5296 <https://github.com/nim-lang/Nim/issues/5296>`_) -- Fixed "Forward declaration of generic procs or iterators doesn't work" - (`#4104 <https://github.com/nim-lang/Nim/issues/4104>`_) -- Fixed "cant create thread after join" - (`#4719 <https://github.com/nim-lang/Nim/issues/4719>`_) -- Fixed "can't compile with var name "near" and --threads:on" - (`#5598 <https://github.com/nim-lang/Nim/issues/5598>`_) -- Fixed "inconsistent behavior when calling parent's proc of generic object" - (`#5241 <https://github.com/nim-lang/Nim/issues/5241>`_) -- Fixed "The problem with import order of asyncdispatch and unittest modules" - (`#5597 <https://github.com/nim-lang/Nim/issues/5597>`_) -- Fixed "Generic code fails to compile in unexpected ways" - (`#976 <https://github.com/nim-lang/Nim/issues/976>`_) -- Fixed "Another 'User defined type class' issue" - (`#1128 <https://github.com/nim-lang/Nim/issues/1128>`_) -- Fixed "compiler fails to compile user defined typeclass" - (`#1147 <https://github.com/nim-lang/Nim/issues/1147>`_) -- Fixed "Type class membership testing doesn't work on instances of generic object types" - (`#1570 <https://github.com/nim-lang/Nim/issues/1570>`_) -- Fixed "Strange overload resolution behavior for procedures with typeclass arguments" - (`#1991 <https://github.com/nim-lang/Nim/issues/1991>`_) -- Fixed "The same UDTC can't constrain two type parameters in the same procedure" - (`#2018 <https://github.com/nim-lang/Nim/issues/2018>`_) -- Fixed "More trait/concept issues" - (`#2423 <https://github.com/nim-lang/Nim/issues/2423>`_) -- Fixed "Bugs with concepts?" - (`#2882 <https://github.com/nim-lang/Nim/issues/2882>`_) \ No newline at end of file |