diff options
Diffstat (limited to 'changelog.md')
-rw-r--r-- | changelog.md | 105 |
1 files changed, 5 insertions, 100 deletions
diff --git a/changelog.md b/changelog.md index 3e498e7f8..8acd2120a 100644 --- a/changelog.md +++ b/changelog.md @@ -1,113 +1,18 @@ -# 1.2 - xxxx-xx-xx +# v2.x.x - yyyy-mm-dd -## Changes affecting backwards compatibility +## Changes affecting backward compatibility - -### Breaking changes in the standard library - -- `base64.encode` no longer supports `lineLen` and `newLine`. - Use `base64.encodeMIME` instead. -- `os.splitPath()` behavior synchronized with `os.splitFile()` to return "/" - as the dir component of "/root_sub_dir" instead of the empty string. -- `sequtils.zip` now returns a sequence of anonymous tuples i.e. those tuples - now do not have fields named "a" and "b". -- `strutils.formatFloat` with `precision = 0` has the same behavior in all - backends, and it is compatible with Python's behavior, - e.g. `formatFloat(3.14159, precision = 0)` is now `3`, not `3.`. -- Global variable `lc` has been removed from sugar.nim. -- `distinctBase` has been moved from sugar.nim to typetraits and now implemented as - compiler type trait instead of macro. `distinctBase` in sugar module is now deprecated. - -### Breaking changes in the compiler - -- Implicit conversions for `const` behave correctly now, meaning that code like - `const SOMECONST = 0.int; procThatTakesInt32(SOMECONST)` will be illegal now. - Simply write `const SOMECONST = 0` instead. - - - -## Library additions - -- `macros.newLit` now works for ref object types. -- `system.writeFile` has been overloaded to also support `openarray[byte]`. -- Added overloaded `strformat.fmt` macro that use specified characters as - delimiter instead of '{' and '}'. -- introduced new procs in `tables.nim`: `OrderedTable.pop`, `CountTable.del`, - `CountTable.pop`, `Table.pop` -- To `strtabs.nim`, added `StringTable.clear` overload that reuses the existing mode. -- Added `sugar.outplace` for turning in-place algorithms like `sort` and `shuffle` into - operations that work on a copy of the data and return the mutated copy. As the existing - `sorted` does. -- Added `sugar.collect` that does comprehension for seq/set/table collections. -- Added `sugar.capture` for capturing some local loop variables when creating a closure. - This is an enhanced version of `closureScope`. -- Added `typetraits.lenTuple` to get number of elements of a tuple/type tuple, - and `typetraits.get` to get the ith element of a type tuple. -- Added `typetraits.genericParams` to return a tuple of generic params from a generic instantiation -- Added `os.normalizePathEnd` for additional path sanitization. -- Added `times.fromUnixFloat,toUnixFloat`, subsecond resolution versions of `fromUnix`,`toUnixFloat`. -- Added `wrapnils` module for chains of field-access and indexing where the LHS can be nil. - This simplifies code by reducing need for if-else branches around intermediate maybe nil values. - Eg: `echo ?.n.typ.kind` -- Added `minIndex` and `maxIndex` to the `sequtils` module -- Added `os.isRelativeTo` to tell whether a path is relative to another -- Added `resetOutputFormatters` to `unittest` - -## Library changes - -- `asyncdispatch.drain` now properly takes into account `selector.hasPendingOperations` - and only returns once all pending async operations are guaranteed to have completed. -- `asyncdispatch.drain` now consistently uses the passed timeout value for all - iterations of the event loop, and not just the first iteration. - This is more consistent with the other asyncdispatch apis, and allows - `asyncdispatch.drain` to be more efficient. -- `base64.encode` and `base64.decode` was made faster by about 50%. -- `htmlgen` adds [MathML](https://wikipedia.org/wiki/MathML) support - (ISO 40314). -- `macros.eqIdent` is now invariant to export markers and backtick quotes. -- `htmlgen.html` allows `lang` on the `<html>` tag and common valid attributes. -- `macros.basename` and `basename=` got support for `PragmaExpr`, - so that an expression like `MyEnum {.pure.}` is handled correctly. -- `httpclient.maxredirects` changed from `int` to `Natural`, because negative values serve no purpose whatsoever. -- `httpclient.newHttpClient` and `httpclient.newAsyncHttpClient` added `headers` argument to set initial HTTP Headers, - instead of a hardcoded empty `newHttpHeader()`. - - -## Language additions - -- An `align` pragma can now be used for variables and object fields, similar - to the `alignas` declaration modifier in C/C++. - -- `=sink` type bound operator is now optional. Compiler can now use combination - of `=destroy` and `copyMem` to move objects efficiently. +## Standard library additions and changes ## Language changes -- Unsigned integer operators have been fixed to allow promotion of the first operand. -- Conversions to unsigned integers are unchecked at runtime, imitating earlier Nim - versions. The documentation was improved to acknowledge this special case. - See https://github.com/nim-lang/RFCs/issues/175 for more details. - - -### Tool changes - - -### Compiler changes +## Compiler changes -- JS target indent is all spaces, instead of mixed spaces and tabs, for - generated JavaScript. -- The Nim compiler now supports the ``--asm`` command option for easier - inspection of the produced assembler code. -- The Nim compiler now supports a new pragma called ``.localPassc`` to - pass specific compiler options to the C(++) backend for the C(++) file - that was produced from the current Nim module. +## Tool changes -## Bugfixes -- The `FD` variant of `selector.unregister` for `ioselector_epoll` and - `ioselector_select` now properly handle the `Event.User` select event type. |