123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- 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.
|