diff options
-rw-r--r-- | changelog.md | 644 | ||||
-rw-r--r-- | lib/system.nim | 2 |
2 files changed, 2 insertions, 644 deletions
diff --git a/changelog.md b/changelog.md index 3dab051d4..a26972372 100644 --- a/changelog.md +++ b/changelog.md @@ -1,663 +1,21 @@ -## v0.18.0 - 01/03/2018 +## v0.X.X - XX/XX/2018 ### Changes affecting backwards compatibility #### Breaking changes in the standard library -- The ``[]`` proc for strings now raises an ``IndexError`` exception when - the specified slice is out of bounds. See issue - [#6223](https://github.com/nim-lang/Nim/issues/6223) for more details. - You can use ``substr(str, start, finish)`` to get the old behaviour back, - see [this commit](https://github.com/nim-lang/nimbot/commit/98cc031a27ea89947daa7f0bb536bcf86462941f) for an example. - -- ``strutils.split`` and ``strutils.rsplit`` with an empty string and a - separator now returns that empty string. - See issue [#4377](https://github.com/nim-lang/Nim/issues/4377). - -- Arrays of char cannot be converted to ``cstring`` anymore, pointers to - arrays of char can! This means ``$`` for arrays can finally exist - in ``system.nim`` and do the right thing. This means ``$myArrayOfChar`` changed - its behaviour! Compile with ``-d:nimNoArrayToString`` to see where to fix your - code. - -- `reExtended` is no longer default for the `re` constructor in the `re` - module. - -- The behavior of ``$`` has been changed for all standard library collections. The - collection-to-string implementations now perform proper quoting and escaping of - strings and chars. - -- `newAsyncSocket` taking an `AsyncFD` now runs `setBlocking(false)` on the - fd. - -- ``mod`` and bitwise ``and`` do not produce ``range`` subtypes anymore. This - turned out to be more harmful than helpful and the language is simpler - without this special typing rule. - -- ``formatFloat``/``formatBiggestFloat`` now support formatting floats with zero - precision digits. The previous ``precision = 0`` behavior (default formatting) - is now available via ``precision = -1``. - -- Moved from stdlib into Nimble packages: - - [``basic2d``](https://github.com/nim-lang/basic2d) - _deprecated: use ``glm``, ``arraymancer``, ``neo``, or another package instead_ - - [``basic3d``](https://github.com/nim-lang/basic3d) - _deprecated: use ``glm``, ``arraymancer``, ``neo``, or another package instead_ - - [``gentabs``](https://github.com/lcrees/gentabs) - - [``libuv``](https://github.com/lcrees/libuv) - - [``numeric``](https://github.com/lcrees/polynumeric) - - [``poly``](https://github.com/lcrees/polynumeric) - - [``pdcurses``](https://github.com/lcrees/pdcurses) - - [``romans``](https://github.com/lcrees/romans) - - [``libsvm``](https://github.com/nim-lang/libsvm_legacy) - - [``joyent_http_parser``](https://github.com/nim-lang/joyent_http_parser) - -- Proc [toCountTable](https://nim-lang.org/docs/tables.html#toCountTable,openArray[A]) - now produces a `CountTable` with values correspoding to the number of occurrences - of the key in the input. It used to produce a table with all values set to `1`. - - Counting occurrences in a sequence used to be: - - ```nim - let mySeq = @[1, 2, 1, 3, 1, 4] - var myCounter = initCountTable[int]() - - for item in mySeq: - myCounter.inc item - ``` - - Now, you can simply do: - - ```nim - let - mySeq = @[1, 2, 1, 3, 1, 4] - myCounter = mySeq.toCountTable() - ``` - -- If you use ``--dynlibOverride:ssl`` with OpenSSL 1.0.x, you now have to - define ``openssl10`` symbol (``-d:openssl10``). By default OpenSSL 1.1.x is - assumed. - -- ``newNativeSocket`` is now named ``createNativeSocket``. - -- ``newAsyncNativeSocket`` is now named ``createAsyncNativeSocket`` - and it no longer raises an OS error but returns an ``osInvalidSocket`` when - creation fails. - -- The ``securehash`` module is now deprecated. Instead import ``std / sha1``. - -- The ``readPasswordFromStdin`` proc has been moved from the ``rdstdin`` - to the ``terminal`` module, thus it does not depend on linenoise anymore. - #### Breaking changes in the compiler -- ``\n`` is now only the single line feed character like in most - other programming languages. The new platform specific newline escape sequence is - written as ``\p``. This change only affects the Windows platform. - -- The overloading rules changed slightly so that constrained generics are - preferred over unconstrained generics. (Bug #6526) - -- We changed how array accesses "from backwards" like ``a[^1]`` or ``a[0..^1]`` are - implemented. These are now implemented purely in ``system.nim`` without compiler - support. There is a new "heterogenous" slice type ``system.HSlice`` that takes 2 - generic parameters which can be ``BackwardsIndex`` indices. ``BackwardsIndex`` is - produced by ``system.^``. - This means if you overload ``[]`` or ``[]=`` you need to ensure they also work - with ``system.BackwardsIndex`` (if applicable for the accessors). - -- The parsing rules of ``if`` expressions were changed so that multiple - statements are allowed in the branches. We found few code examples that - now fail because of this change, but here is one: - -```nim -t[ti] = if exp_negative: '-' else: '+'; inc(ti) -``` - -This now needs to be written as: - -```nim -t[ti] = (if exp_negative: '-' else: '+'); inc(ti) -``` - -- The experimental overloading of the dot ``.`` operators now take - an ``untyped``` parameter as the field name, it used to be - a ``static[string]``. You can use ``when defined(nimNewDot)`` to make - your code work with both old and new Nim versions. - See [special-operators](https://nim-lang.org/docs/manual.html#special-operators) - for more information. - -- ``yield`` (or ``await`` which is mapped to ``yield``) never worked reliably - in an array, seq or object constructor and is now prevented at compile-time. - ### Library additions -- **Added ``sequtils.mapLiterals`` for easier construction of array and tuple literals.** - -- Added ``system.runnableExamples`` to make examples in Nim's documentation easier - to write and test. The examples are tested as the last step of - ``nim doc``. - -- Implemented ``getIoHandler`` proc in the ``asyncdispatch`` module that allows - you to retrieve the underlying IO Completion Port or ``Selector[AsyncData]`` - object in the specified dispatcher. - -- For string formatting / interpolation a new module - called [strformat](https://nim-lang.org/docs/strformat.html) has been added - to the stdlib. - -- The `ReadyKey` type in the selectors module now contains an ``errorCode`` - field to help distinguish between ``Event.Error`` events. - -- Implemented an `accept` proc that works on a `SocketHandle` in - ``nativesockets``. - -- Added ``algorithm.rotateLeft``. - -- Added ``typetraits.$`` as an alias for ``typetraits.name``. - -- Added ``system.getStackTraceEntries`` that allows you to access the stack - trace in a structured manner without string parsing. - -- Added ``parseutils.parseSaturatedNatural``. - -- Added ``macros.unpackVarargs``. - -- Added support for asynchronous programming for the JavaScript backend using - the `asyncjs` module. - -- Added true color support for some terminals. Example: -```nim -import colors, terminal - -const Nim = "Efficient and expressive programming." - -var - fg = colYellow - bg = colBlue - int = 1.0 - -enableTrueColors() - -for i in 1..15: - styledEcho bgColor, bg, fgColor, fg, Nim, resetStyle - int -= 0.01 - fg = intensity(fg, int) - -setForegroundColor colRed -setBackgroundColor colGreen -styledEcho "Red on Green.", resetStyle -``` - ### Library changes -- ``echo`` now works with strings that contain ``\0`` (the binary zero is not - shown) and ``nil`` strings are equal to empty strings. - -- JSON: Deprecated `getBVal`, `getFNum`, and `getNum` in favour of - `getBool`, `getFloat`, `getBiggestInt`. A new `getInt` procedure was also - added. - -- ``rationals.toRational`` now uses an algorithm based on continued fractions. - This means its results are more precise and it can't run into an infinite loop - anymore. - -- ``os.getEnv`` now takes an optional ``default`` parameter that tells ``getEnv`` - what to return if the environment variable does not exist. - -- The ``random`` procs in ``random.nim`` have all been deprecated. Instead use - the new ``rand`` procs. The module now exports the state of the random - number generator as type ``Rand`` so multiple threads can easily use their - own random number generators that do not require locking. For more information - about this rename see issue [#6934](https://github.com/nim-lang/Nim/issues/6934) - -- ``writeStackTrace`` is now proclaimed to have no IO effect (even though it does) - so that it is more useful for debugging purposes. - -- ``db_mysql`` module: ``DbConn`` is now a ``distinct`` type that doesn't expose the - details of the underlying ``PMySQL`` type. - -- ``parseopt2`` is now deprecated, use ``parseopt`` instead. - ### Language additions -- It is now possible to forward declare object types so that mutually - recursive types can be created across module boundaries. See - [package level objects](https://nim-lang.org/docs/manual.html#package-level-objects) - for more information. - -- Added support for casting between integers of same bitsize in VM (compile time and nimscript). - This allows to, among other things, reinterpret signed integers as unsigned. - -- Custom pragmas are now supported using pragma ``pragma``, please see language - manual for details. - -- Standard library modules can now also be imported via the ``std`` pseudo-directory. - This is useful in order to distinguish between standard library and nimble package - imports: - - ```nim - import std / [strutils, os, osproc] - import someNimblePackage / [strutils, os] - ``` - ### Language changes -- The **unary** ``<`` is now deprecated, for ``.. <`` use ``..<`` for other usages - use the ``pred`` proc. - -- Bodies of ``for`` loops now get their own scope: - -```nim -# now compiles: -for i in 0..4: - let i = i + 1 - echo i -``` - -- To make Nim even more robust the system iterators ``..`` and ``countup`` - now only accept a single generic type ``T``. This means the following code - doesn't die with an "out of range" error anymore: - -```nim -var b = 5.Natural -var a = -5 -for i in a..b: - echo i -``` - -- ``atomic`` and ``generic`` are no longer keywords in Nim. ``generic`` used to be - an alias for ``concept``, ``atomic`` was not used for anything. - -- The memory manager now uses a variant of the TLSF algorithm that has much - better memory fragmentation behaviour. According - to [http://www.gii.upv.es/tlsf/](http://www.gii.upv.es/tlsf/) the maximum - fragmentation measured is lower than 25%. As a nice bonus ``alloc`` and - ``dealloc`` became O(1) operations. - -- The compiler is now more consistent in its treatment of ambiguous symbols: - Types that shadow procs and vice versa are marked as ambiguous (bug #6693). - -- codegenDecl pragma now works for the JavaScript backend. It returns an empty - string for function return type placeholders. - -- Extra semantic checks for procs with noreturn pragma: return type is not allowed, - statements after call to noreturn procs are no longer allowed. - -- Noreturn proc calls and raising exceptions branches are now skipped during common type - deduction in ``if`` and ``case`` expressions. The following code snippets now compile: - ```nim - import strutils - let str = "Y" - let a = case str: - of "Y": true - of "N": false - else: raise newException(ValueError, "Invalid boolean") - let b = case str: - of nil, "": raise newException(ValueError, "Invalid boolean") - elif str.startsWith("Y"): true - elif str.startsWith("N"): false - else: false - let c = if str == "Y": true - elif str == "N": false - else: - echo "invalid bool" - quit("this is the end") - ``` - -- Pragmas now support call syntax, for example: ``{.exportc"myname".}`` and - ``{.exportc("myname").}`` - -- The ``deprecated`` pragma now supports a user-definable warning message for procs. - - ```nim - proc bar {.deprecated: "use foo instead".} = - return - - bar() - ``` - ### Tool changes -- The ``nim doc`` command is now an alias for ``nim doc2``, the second version of - the documentation generator. The old version 1 can still be accessed - via the new ``nim doc0`` command. - -- Nim's ``rst2html`` command now supports the testing of code snippets via an RST - extension that we called ``:test:``:: - - ```rst - .. code-block:: nim - :test: - # shows how the 'if' statement works - if true: echo "yes" - ``` - ### Compiler changes ### Bugfixes - -- Fixed "ReraiseError when using try/except within finally block" - ([#5871](https://github.com/nim-lang/Nim/issues/5871)) -- Fixed "Range type inference leads to counter-intuitive behvaiour" - ([#5854](https://github.com/nim-lang/Nim/issues/5854)) -- Fixed "JSON % operator can fail in extern procs with dynamic types" - ([#6385](https://github.com/nim-lang/Nim/issues/6385)) -- Fixed ""intVal is not accessible" in VM" - ([#6083](https://github.com/nim-lang/Nim/issues/6083)) -- Fixed "Add excl for OrderedSet" - ([#2467](https://github.com/nim-lang/Nim/issues/2467)) -- Fixed "newSeqOfCap actually doesn't reserve memory" - ([#6403](https://github.com/nim-lang/Nim/issues/6403)) -- Fixed "[Regression] Nim segfaults" - ([#6435](https://github.com/nim-lang/Nim/issues/6435)) -- Fixed "Seq assignment is slower than expected" - ([#6433](https://github.com/nim-lang/Nim/issues/6433)) -- Fixed "json module issues with empty dicts and lists" - ([#6438](https://github.com/nim-lang/Nim/issues/6438)) -- Fixed "mingw installed via finish.exe fails to link if Nim located in path with whitespace" - ([#6452](https://github.com/nim-lang/Nim/issues/6452)) -- Fixed "unittest.check does not perform short-circuit evaluation" - ([#5784](https://github.com/nim-lang/Nim/issues/5784)) -- Fixed "Error while concatenating an array of chars." - ([#5861](https://github.com/nim-lang/Nim/issues/5861)) -- Fixed "range initialization: [ProveInit] hint: Cannot prove that" - ([#6474](https://github.com/nim-lang/Nim/issues/6474)) -- Fixed "scanf can call procs with side-effects multiple times" - ([#6487](https://github.com/nim-lang/Nim/issues/6487)) -- Fixed "gcsafe detection problem" - ([#5620](https://github.com/nim-lang/Nim/issues/5620)) -- Fixed "C++ codegen: `mitems` generates invalid code." - ([#4910](https://github.com/nim-lang/Nim/issues/4910)) -- Fixed "strange runtime behavior on macOS" - ([#6496](https://github.com/nim-lang/Nim/issues/6496)) -- Fixed "stdtmpl: invalid indentation after a line ending in question mark" - ([#5070](https://github.com/nim-lang/Nim/issues/5070)) -- Fixed "Windows: NAN troubles on c backend" - ([#6511](https://github.com/nim-lang/Nim/issues/6511)) -- Fixed "lib/nim/system/cellsets.nim(33, 31) Error: type mismatch while attempting to compile for 16bit CPUs" - ([#3558](https://github.com/nim-lang/Nim/issues/3558)) -- Fixed "Can't compile dynlib with ``-d:useNimRtl`` and ``--threads:on``" - ([#5143](https://github.com/nim-lang/Nim/issues/5143)) -- Fixed "var s = @[0,1,2,...] can generate thousand of single assignments in C code" - ([#5007](https://github.com/nim-lang/Nim/issues/5007)) -- Fixed "`echo` discards everything after a null character" - ([#1137](https://github.com/nim-lang/Nim/issues/1137)) -- Fixed "Turn off reExtended by default" - ([#5627](https://github.com/nim-lang/Nim/issues/5627)) -- Fixed "Bad Links in docs/backends.html" - ([#5914](https://github.com/nim-lang/Nim/issues/5914)) -- Fixed "Index out of bounds error in db_postgres when executing non parameter-substituted queries containing "?"" - ([#6571](https://github.com/nim-lang/Nim/issues/6571)) -- Fixed "Please add pipe2 support to posix stdlib" - ([#6553](https://github.com/nim-lang/Nim/issues/6553)) -- Fixed "Return semantics vary depending on return style" - ([#6422](https://github.com/nim-lang/Nim/issues/6422)) -- Fixed "parsecsv.open reports SIGSEGV when calling 'open' on missing file" - ([#6148](https://github.com/nim-lang/Nim/issues/6148)) -- Fixed "VCC: Nim generates non-compilable code for system.nim" - ([#6606](https://github.com/nim-lang/Nim/issues/6606)) -- Fixed "Generic subtype matches worse than a generic" - ([#6526](https://github.com/nim-lang/Nim/issues/6526)) -- Fixed "formatFloat inconsistent scientific notation" - ([#6589](https://github.com/nim-lang/Nim/issues/6589)) -- Fixed "Generated c code calls function twice" - ([#6292](https://github.com/nim-lang/Nim/issues/6292)) -- Fixed "Range type inference leads to counter-intuitive behvaiour" - ([#5854](https://github.com/nim-lang/Nim/issues/5854)) -- Fixed "New backward indexing is too limited" - ([#6631](https://github.com/nim-lang/Nim/issues/6631)) -- Fixed "Table usage in a macro (SIGSEGV: Illegal storage access.)" - ([#1860](https://github.com/nim-lang/Nim/issues/1860)) -- Fixed "Incorrect deprecation error" - ([#6634](https://github.com/nim-lang/Nim/issues/6634)) -- Fixed "Wrong indices in arrays not starting with 0" - ([#6675](https://github.com/nim-lang/Nim/issues/6675)) -- Fixed "if expressions" - ([#6609](https://github.com/nim-lang/Nim/issues/6609)) -- Fixed "BackwardsIndex: converter + `[]` + unrelated type[^1]: lib/system.nim(3536, 3) Error" - ([#6692](https://github.com/nim-lang/Nim/issues/6692)) -- Fixed "BackwardsIndex: converter + `[]` + unrelated type[^1]: lib/system.nim(3536, 3) Error" - ([#6692](https://github.com/nim-lang/Nim/issues/6692)) -- Fixed "js backend 0.17.3: array bounds check for non zero based arrays is buggy" - ([#6532](https://github.com/nim-lang/Nim/issues/6532)) -- Fixed "HttpClient's new API doesn't work through a proxy for https URLs" - ([#6685](https://github.com/nim-lang/Nim/issues/6685)) -- Fixed "isServing isn't declared and isn't compiling" - ([#6707](https://github.com/nim-lang/Nim/issues/6707)) -- Fixed "[Regression] value out of range" - ([#6710](https://github.com/nim-lang/Nim/issues/6710)) - -- Fixed "Error when using `multisync` macro" - ([#6708](https://github.com/nim-lang/Nim/issues/6708)) - -- Fixed "formatFloat inconsistent scientific notation" - ([#6589](https://github.com/nim-lang/Nim/issues/6589)) -- Fixed "Using : (constructor arguments) for passing values to functions with default arguments causes a compiler crash." - ([#6765](https://github.com/nim-lang/Nim/issues/6765)) -- Fixed "In-place object initialization leads to vcc incompatible code" - ([#6757](https://github.com/nim-lang/Nim/issues/6757)) -- Fixed "Improve parseCookies doc" - ([#5721](https://github.com/nim-lang/Nim/issues/5721)) -- Fixed "Parser regression with nested do notation inside conditional" - ([#6166](https://github.com/nim-lang/Nim/issues/6166)) -- Fixed "Request for better error message" - ([#6776](https://github.com/nim-lang/Nim/issues/6776)) -- Fixed "Testament tester does not execute test with `exitcode` only" - ([#6775](https://github.com/nim-lang/Nim/issues/6775)) -- Fixed "JS integer division off by one" - ([#6753](https://github.com/nim-lang/Nim/issues/6753)) -- Fixed "Regression: cannot prove not nil" - ([#5781](https://github.com/nim-lang/Nim/issues/5781)) -- Fixed "SIGSEGV: Illegal storage access. (Attempt to read from nil?) in generic proc" - ([#6073](https://github.com/nim-lang/Nim/issues/6073)) -- Fixed "Request for better error message" - ([#6776](https://github.com/nim-lang/Nim/issues/6776)) -- Fixed "Nim #head: sorting via reference hangs compiler" - ([#6724](https://github.com/nim-lang/Nim/issues/6724)) -- Fixed "Cannot cast pointer to char in cpp" - ([#5979](https://github.com/nim-lang/Nim/issues/5979)) -- Fixed "asynchttpserver replies with several errors on single request" - ([#6386](https://github.com/nim-lang/Nim/issues/6386)) -- Fixed "object variants superclass trigger bad codegen" - ([#5521](https://github.com/nim-lang/Nim/issues/5521)) -- Fixed "JS integer division off by one" - ([#6753](https://github.com/nim-lang/Nim/issues/6753)) -- Fixed "js backend compiler crash with tables indexed by certain types" - ([#6568](https://github.com/nim-lang/Nim/issues/6568)) -- Fixed "Jsgen bug with is" - ([#6445](https://github.com/nim-lang/Nim/issues/6445)) -- Fixed "Subrange definition with ..<" - ([#6788](https://github.com/nim-lang/Nim/issues/6788)) -- Fixed "fields not initialized: array with enum index type as object field." - ([#6682](https://github.com/nim-lang/Nim/issues/6682)) -- Fixed "Can not delete data in table when table's data type is kind of "not nil"" - ([#6555](https://github.com/nim-lang/Nim/issues/6555)) -- Fixed "tables.nim: Cannot prove that 'n' is initialized" - ([#6121](https://github.com/nim-lang/Nim/issues/6121)) -- Fixed "issues with 'not nil' applied to a closure proc" - ([#6489](https://github.com/nim-lang/Nim/issues/6489)) -- Fixed "`not nil` not working in some cases" - ([#4686](https://github.com/nim-lang/Nim/issues/4686)) -- Fixed "Cannot prove '@[v]' is not nil" - ([#3993](https://github.com/nim-lang/Nim/issues/3993)) - -- Fixed "Feature: support TCP_NODELAY in net.sockets" - ([#6795](https://github.com/nim-lang/Nim/issues/6795)) -- Fixed "Code that makes the compiler throw an error message and then hangs" - ([#6820](https://github.com/nim-lang/Nim/issues/6820)) -- Fixed "Code that makes the compiler throw an error message and then hangs" - ([#6820](https://github.com/nim-lang/Nim/issues/6820)) -- Fixed "Inconsistent behavior with sequence and string slicing" - ([#6223](https://github.com/nim-lang/Nim/issues/6223)) -- Fixed "Wrong behavior of "split" (proc and iterator)" - ([#4377](https://github.com/nim-lang/Nim/issues/4377)) -- Fixed "[Documentation] Invalid module name: [foo, bar]" - ([#6831](https://github.com/nim-lang/Nim/issues/6831)) -- Fixed "The destructor is not called for temporary objects" - ([#4214](https://github.com/nim-lang/Nim/issues/4214)) -- Fixed "Destructors does not work with implicit items iterator in for loop" - ([#985](https://github.com/nim-lang/Nim/issues/985)) -- Fixed "Error in template when using the type of the parameter inside it" - ([#6756](https://github.com/nim-lang/Nim/issues/6756)) -- Fixed "should json.to() respect parent attributes?" - ([#5856](https://github.com/nim-lang/Nim/issues/5856)) -- Fixed "json 'to' macro can not marshalize into tuples" - ([#6095](https://github.com/nim-lang/Nim/issues/6095)) -- Fixed "json.to fails with seq[T]" - ([#6604](https://github.com/nim-lang/Nim/issues/6604)) -- Fixed "json.to() is not worth using compared to marshal.to[T]" - ([#5848](https://github.com/nim-lang/Nim/issues/5848)) -- Fixed "Memory not being released in time, running out of memory" - ([#6031](https://github.com/nim-lang/Nim/issues/6031)) -- Fixed "[Regression] Bad C codegen for generic code" - ([#6889](https://github.com/nim-lang/Nim/issues/6889)) -- Fixed "rollingFileLogger deletes file on every start." - ([#6264](https://github.com/nim-lang/Nim/issues/6264)) -- Fixed "Remove/deprecate securehash module." - ([#6033](https://github.com/nim-lang/Nim/issues/6033)) -- Fixed "[bug or not] object construction for seq[T] failed without space after colon" - ([#5999](https://github.com/nim-lang/Nim/issues/5999)) -- Fixed "issues with the random module" - ([#4726](https://github.com/nim-lang/Nim/issues/4726)) -- Fixed "Reassigning local var to seq of objects results in nil element in Object's seq field" - ([#668](https://github.com/nim-lang/Nim/issues/668)) -- Fixed "Compilation error with "newseq[string]"" - ([#6726](https://github.com/nim-lang/Nim/issues/6726)) -- Fixed "await inside array/dict literal produces invalid code - Part 2" - ([#6626](https://github.com/nim-lang/Nim/issues/6626)) -- Fixed "terminal.eraseline() gives OverflowError on Windows" - ([#6931](https://github.com/nim-lang/Nim/issues/6931)) -- Fixed "[Regression] `sequtils.any` conflicts with `system.any`" - ([#6932](https://github.com/nim-lang/Nim/issues/6932)) -- Fixed "C++ codegen: `mitems` generates invalid code." - ([#4910](https://github.com/nim-lang/Nim/issues/4910)) -- Fixed "seq.mitems produces invalid cpp codegen" - ([#6892](https://github.com/nim-lang/Nim/issues/6892)) -- Fixed "Concepts regression" - ([#6108](https://github.com/nim-lang/Nim/issues/6108)) -- Fixed "Generic iterable concept with array crashes compiler" - ([#6277](https://github.com/nim-lang/Nim/issues/6277)) -- Fixed "C code generation "‘a’ is a pointer; did you mean to use ‘->’?"" - ([#6462](https://github.com/nim-lang/Nim/issues/6462)) -- Fixed "`--NimblePath` fails if a `-` in path which is not followed by a number" - ([#6949](https://github.com/nim-lang/Nim/issues/6949)) -- Fixed ""not registered in the selector" in asyncfile.close() for something that clearly was registered" - ([#6906](https://github.com/nim-lang/Nim/issues/6906)) -- Fixed "strange frexp behavior" - ([#6353](https://github.com/nim-lang/Nim/issues/6353)) - -- Fixed "noreturn branches of case statements shouldn't contribute to type" - ([#6885](https://github.com/nim-lang/Nim/issues/6885)) -- Fixed "Type inference for 'if' statements changed" - ([#6980](https://github.com/nim-lang/Nim/issues/6980)) -- Fixed "newest asyncdispatch recursion" - ([#6100](https://github.com/nim-lang/Nim/issues/6100)) -- Fixed "Ambiguous identifier between set type and proc" - ([#6965](https://github.com/nim-lang/Nim/issues/6965)) - -- Fixed "Inconsistent behavior with sequence and string slicing" - ([#6223](https://github.com/nim-lang/Nim/issues/6223)) - -- Fixed "Unsupported OpenSSL library imported dynamically" - ([#5000](https://github.com/nim-lang/Nim/issues/5000)) -- Fixed "`nim check` segfaults" - ([#6972](https://github.com/nim-lang/Nim/issues/6972)) -- Fixed "GC deadlock" - ([#6988](https://github.com/nim-lang/Nim/issues/6988)) -- Fixed "Create a seq without memory initialization" - ([#6401](https://github.com/nim-lang/Nim/issues/6401)) -- Fixed "Fix bug for getch on Windows while using the arrow keys" - ([#6966](https://github.com/nim-lang/Nim/issues/6966)) -- Fixed "runnableExamples doesn't work in templates" - ([#7018](https://github.com/nim-lang/Nim/issues/7018)) -- Fixed "runnableExamples doesn't work with untyped statement blocks" - ([#7019](https://github.com/nim-lang/Nim/issues/7019)) - -- Fixed "Critical bug in parseBiggestFloat" - ([#7060](https://github.com/nim-lang/Nim/issues/7060)) -- Fixed "[RFC] strformat.% should be gone" - ([#7078](https://github.com/nim-lang/Nim/issues/7078)) -- Fixed "compiler crash on simple macro" - ([#7093](https://github.com/nim-lang/Nim/issues/7093)) -- Fixed "Make newlines sane again" - ([#7089](https://github.com/nim-lang/Nim/issues/7089)) -- Fixed "JS - Unicode enum string representation issue" - ([#6741](https://github.com/nim-lang/Nim/issues/6741)) -- Fixed "Strange behaviour of 0.17.3 (working ok in 0.17.2)" - ([#6989](https://github.com/nim-lang/Nim/issues/6989)) -- Fixed "Strange behaviour of 0.17.3 (working ok in 0.17.2)" - ([#6989](https://github.com/nim-lang/Nim/issues/6989)) -- Fixed "Compiler crash: try expression with infix as" - ([#7116](https://github.com/nim-lang/Nim/issues/7116)) -- Fixed "nimsuggest crash" - ([#7140](https://github.com/nim-lang/Nim/issues/7140)) -- Fixed "[RFC] Reintroduce readChar" - ([#7072](https://github.com/nim-lang/Nim/issues/7072)) -- Fixed "Copyright line needs updating" - ([#7129](https://github.com/nim-lang/Nim/issues/7129)) -- Fixed "-0.0 doesn't result in negative zero in VM" - ([#7079](https://github.com/nim-lang/Nim/issues/7079)) -- Fixed "Windows large filesize" - ([#7121](https://github.com/nim-lang/Nim/issues/7121)) -- Fixed "Securehash is not parsimonious with MD5 and other hash modules" - ([#6961](https://github.com/nim-lang/Nim/issues/6961)) -- Fixed "os.findExe() shouldn't look in current directory on posix, unless exe has a /" - ([#6939](https://github.com/nim-lang/Nim/issues/6939)) -- Fixed "`compiles(...)` with `fatal` pragma causes compiler to exit early" - ([#7080](https://github.com/nim-lang/Nim/issues/7080)) -- Fixed "NPE when compile macro that returns concrete value" - ([#5450](https://github.com/nim-lang/Nim/issues/5450)) -- Fixed "Using a variable of type `int | float` causes internal compiler error" - ([#6946](https://github.com/nim-lang/Nim/issues/6946)) -- Fixed "Unsigned integers could not be used as array indexes." - ([#7153](https://github.com/nim-lang/Nim/issues/7153)) -- Fixed "countdown with uint causes underflow" - ([#4220](https://github.com/nim-lang/Nim/issues/4220)) -- Fixed "Inconsistent method call syntax" - ([#7200](https://github.com/nim-lang/Nim/issues/7200)) -- Fixed "Impossible to create an empty const array" - ([#6853](https://github.com/nim-lang/Nim/issues/6853)) -- Fixed "Strange UINT handling" - ([#3985](https://github.com/nim-lang/Nim/issues/3985)) -- Fixed "Bad codegen when passing arg that is part of return value destination" - ([#6960](https://github.com/nim-lang/Nim/issues/6960)) -- Fixed "No info about gcsafety in error message when global var is accessed in async proc" - ([#6186](https://github.com/nim-lang/Nim/issues/6186)) -- Fixed "Resolving package vs. local import ambiguities" - ([#2819](https://github.com/nim-lang/Nim/issues/2819)) -- Fixed "Internal error with type() operator" - ([#3711](https://github.com/nim-lang/Nim/issues/3711)) -- Fixed "newAsyncSocket should raise an OS error plus other inconsistencies" - ([#4995](https://github.com/nim-lang/Nim/issues/4995)) -- Fixed "mapLiterals fails with negative values" - ([#7215](https://github.com/nim-lang/Nim/issues/7215)) -- Fixed "fmWrite doesn't truncate file with openAsync, unlike open()" - ([#5531](https://github.com/nim-lang/Nim/issues/5531)) -- Fixed "Move libsvm to an external nimble module" - ([#5786](https://github.com/nim-lang/Nim/issues/5786)) -- Fixed "Prevent acceptAddr gotcha with newSocket" - ([#7227](https://github.com/nim-lang/Nim/issues/7227)) -- Fixed "strtabs.getOrDefault is inconsistent with tables.getOrDefault" - ([#4265](https://github.com/nim-lang/Nim/issues/4265)) - -- Fixed "Code falling through into exception handler when no exception thrown." - ([#7232](https://github.com/nim-lang/Nim/issues/7232)) -- Fixed "the new generic inference rules are broken" - ([#7247](https://github.com/nim-lang/Nim/issues/7247)) -- Fixed "Odd `..<` regression" - ([#6992](https://github.com/nim-lang/Nim/issues/6992)) -- Fixed "Different proc type inferred from default parameter" - ([#4659](https://github.com/nim-lang/Nim/issues/4659)) -- Fixed "Different proc type inferred from default parameter" - ([#4659](https://github.com/nim-lang/Nim/issues/4659)) -- Fixed "Testament sometimes ignores test failures" - ([#7236](https://github.com/nim-lang/Nim/issues/7236)) -- Fixed "New Allocator Fails On >=4GB Requests" - ([#7120](https://github.com/nim-lang/Nim/issues/7120)) -- Fixed "User pragmas hide effect specifications from sempass2" - ([#7216](https://github.com/nim-lang/Nim/issues/7216)) -- Fixed "C++: SIGABRT instead of IndexError for out-of-bounds" - ([#6512](https://github.com/nim-lang/Nim/issues/6512)) -- Fixed "An uncaught exception in cpp mode doesn't show the exception name/msg" - ([#6431](https://github.com/nim-lang/Nim/issues/6431)) \ No newline at end of file diff --git a/lib/system.nim b/lib/system.nim index 9b00ff145..886ef3c37 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1961,7 +1961,7 @@ const NimMinor* {.intdefine.}: int = 18 ## is the minor number of Nim's version. - NimPatch* {.intdefine.}: int = 0 + NimPatch* {.intdefine.}: int = 1 ## is the patch number of Nim's version. NimVersion*: string = $NimMajor & "." & $NimMinor & "." & $NimPatch |