e027_version_0_15_0.rst 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. Version 0.15.0 released
  2. =======================
  3. .. container:: metadata
  4. Posted by Dominik Picheta and Andreas Rumpf on 30/09/2016
  5. We're happy to announce that the latest release of Nim, version 0.15.0, is now
  6. available!
  7. As always, you can grab the latest version from the
  8. `downloads page <http://nim-lang.org/download.html>`_.
  9. This release includes almost 180 bug fixes and improvements. To see a full list
  10. of changes, take a look at the detailed changelog
  11. `below <#changelog>`_.
  12. Some of the most significant changes in this release include: improvements to
  13. the documentation, addition of a new ``multisync`` macro, and a new
  14. ``HttpClient`` implementation.
  15. Documentation
  16. ~~~~~~~~~~~~~
  17. All pages in the documentation now contain a search box and a drop down to
  18. select how procedures should be sorted. This allows you to search for
  19. procedures, types, macros and more from any documentation page.
  20. .. raw::html
  21. <a href="../assets/news/images/0.15.0/doc_search.gif">
  22. <img src="../assets/news/images/0.15.0/doc_search.gif" alt="Doc search" style="width:100%"/>
  23. </a>
  24. Sorting the procedures by type shows a more natural table of contents. This
  25. should also help you to find procedures and other identifiers.
  26. .. raw::html
  27. <a href="../assets/news/images/0.15.0/doc_sort.gif">
  28. <img src="../assets/news/images/0.15.0/doc_sort.gif" alt="Doc sort" style="width:100%"/>
  29. </a>
  30. Multisync macro
  31. ~~~~~~~~~~~~~~~
  32. The ``multisync`` macro was implemented to enable you to define both
  33. synchronous and asynchronous IO procedures without having to duplicate a
  34. lot of code.
  35. As an example, consider the ``recvTwice`` procedure below:
  36. .. code-block:: nim
  37. proc recvTwice(socket: Socket | AsyncSocket): Future[string] {.multisync.} =
  38. result = ""
  39. result.add(await socket.recv(25))
  40. result.add(await socket.recv(20))
  41. The ``multisync`` macro will transform this procedure into the following:
  42. .. code-block:: nim
  43. proc recvTwice(socket: Socket): string =
  44. result = ""
  45. result.add(socket.recv(25))
  46. result.add(socket.recv(20))
  47. proc recvTwice(socket: AsyncSocket): Future[string] {.async.} =
  48. result = ""
  49. result.add(await socket.recv(25))
  50. result.add(await socket.recv(20))
  51. Allowing you to use ``recvTwice`` with both synchronous and asynchronous sockets.
  52. HttpClient
  53. ~~~~~~~~~~
  54. Many of the ``httpclient`` module's procedures have been deprecated in
  55. favour of a new implementation using the ``multisync`` macro. There are now
  56. two types: ``HttpClient`` and ``AsyncHttpClient``. Both of these implement the
  57. same procedures and functionality, the only difference is timeout support and
  58. whether they are blocking or not.
  59. See the `httpclient <http://nim-lang.org/docs/httpclient.html>`_ module
  60. documentation for more information.
  61. Changelog
  62. ~~~~~~~~~
  63. Changes affecting backwards compatibility
  64. -----------------------------------------
  65. - The ``json`` module now uses an ``OrderedTable`` rather than a ``Table``
  66. for JSON objects.
  67. - The ``split`` `(doc) <http://nim-lang.org/docs/strutils.html#split,string,set[char],int>`_
  68. procedure in the ``strutils`` module (with a delimiter of type
  69. ``set[char]``) no longer strips and splits characters out of the target string
  70. by the entire set of characters. Instead, it now behaves in a
  71. similar fashion to ``split`` with ``string`` and ``char``
  72. delimiters. Use ``splitWhitespace`` to get the old behaviour.
  73. - The command invocation syntax will soon apply to open brackets
  74. and curlies too. This means that code like ``a [i]`` will be
  75. interpreted as ``a([i])`` and not as ``a[i]`` anymore. Likewise
  76. ``f (a, b)`` means that the tuple ``(a, b)`` is passed to ``f``.
  77. The compiler produces a warning for ``a [i]``::
  78. Warning: a [b] will be parsed as command syntax; spacing is deprecated
  79. See `Issue #3898 <https://github.com/nim-lang/Nim/issues/3898>`_ for the
  80. relevant discussion.
  81. - Overloading the special operators ``.``, ``.()``, ``.=``, ``()`` now
  82. needs to be enabled via the ``{.experimental.}`` pragma.
  83. - ``immediate`` templates and macros are now deprecated.
  84. Use ``untyped`` `(doc) <http://nim-lang.org/docs/manual.html#templates-typed-vs-untyped-parameters>`_
  85. parameters instead.
  86. - The metatype ``expr`` is deprecated. Use ``untyped``
  87. `(doc) <http://nim-lang.org/docs/manual.html#templates-typed-vs-untyped-parameters>`_ instead.
  88. - The metatype ``stmt`` is deprecated. Use ``typed``
  89. `(doc) <http://nim-lang.org/docs/manual.html#templates-typed-vs-untyped-parameters>`_ instead.
  90. - The compiler is now more picky when it comes to ``tuple`` types. The
  91. following code used to compile, now it's rejected:
  92. .. code-block:: nim
  93. import tables
  94. var rocketaims = initOrderedTable[string, Table[tuple[k: int8, v: int8], int64]]()
  95. rocketaims["hi"] = {(-1.int8, 0.int8): 0.int64}.toTable()
  96. Instead be consistent in your tuple usage and use tuple names for named tuples:
  97. .. code-block:: nim
  98. import tables
  99. var rocketaims = initOrderedTable[string, Table[tuple[k: int8, v: int8], int64]]()
  100. rocketaims["hi"] = {(k: -1.int8, v: 0.int8): 0.int64}.toTable()
  101. - Now when you compile console applications for Windows, console output
  102. encoding is automatically set to UTF-8.
  103. - Unhandled exceptions in JavaScript are now thrown regardless of whether
  104. ``noUnhandledHandler`` is defined. But the stack traces should be much more
  105. readable now.
  106. - In JavaScript, the ``system.alert`` procedure has been deprecated.
  107. Use ``dom.alert`` instead.
  108. - De-deprecated ``re.nim`` because there is too much code using it
  109. and it got the basic API right.
  110. - The type of ``headers`` field in the ``AsyncHttpClient`` type
  111. `(doc) <http://nim-lang.org/docs/httpclient.html#AsyncHttpClient>`_
  112. has been changed
  113. from a string table to the specialised ``HttpHeaders`` type.
  114. - The ``httpclient.request``
  115. `(doc) <http://nim-lang.org/docs/httpclient.html#request,AsyncHttpClient,string,string,string>`_
  116. procedure which takes the ``httpMethod`` as a string
  117. value no longer requires it to be prefixed with ``"http"``
  118. (or similar).
  119. - Converting a ``HttpMethod``
  120. `(doc) <nim-lang.org/docs/httpcore.html#HttpMethod>`_
  121. value to a string using the ``$`` operator will
  122. give string values without the ``"Http"`` prefix now.
  123. - The ``Request``
  124. `(doc) <http://nim-lang.org/docs/asynchttpserver.html#Request>`_
  125. object defined in the ``asynchttpserver`` module now uses
  126. the ``HttpMethod`` type for the request method.
  127. Library Additions
  128. -----------------
  129. - Added ``readHeaderRow`` and ``rowEntry`` to the ``parsecsv``
  130. `(doc) <http://nim-lang.org/docs/parsecsv.html>`_ module
  131. to provide
  132. a lightweight alternative to python's ``csv.DictReader``.
  133. - Added ``setStdIoUnbuffered`` proc to the ``system`` module to enable
  134. unbuffered I/O.
  135. - Added ``center`` and ``rsplit`` to the ``strutils``
  136. `(doc) <http://nim-lang.org/docs/strutils.html>`_ module
  137. to provide similar Python functionality for Nim's strings.
  138. - Added ``isTitle``, ``title``, ``swapCase``, ``isUpper``, ``toUpper``,
  139. ``isLower``, ``toLower``, ``isAlpha``, ``isSpace``, and ``capitalize``
  140. to the ``unicode.nim``
  141. `(doc) <http://nim-lang.org/docs/unicode.html>`_ module
  142. to provide unicode aware case manipulation and case
  143. testing.
  144. - Added a new module ``strmisc``
  145. `(doc) <http://nim-lang.org/docs/strmisc.html>`_
  146. to hold uncommon string
  147. operations. Currently contains ``partition``, ``rpartition``
  148. and ``expandTabs``.
  149. - Split out ``walkFiles`` in the ``os``
  150. `(doc) <http://nim-lang.org/docs/os.html>`_ module to three separate procs
  151. in order to make a clear distinction of functionality. ``walkPattern`` iterates
  152. over both files and directories, while ``walkFiles`` now only iterates
  153. over files and ``walkDirs`` only iterates over directories.
  154. - Added a synchronous ``HttpClient`` in the ``httpclient``
  155. `(doc) <http://nim-lang.org/docs/httpclient.html>`_
  156. module. The old
  157. ``get``, ``post`` and similar procedures are now deprecated in favour of it.
  158. - Added a new macro called ``multisync`` allowing you to write procedures for
  159. synchronous and asynchronous sockets with no duplication.
  160. - The ``async`` macro will now complete ``FutureVar[T]`` parameters
  161. automatically unless they have been completed already.
  162. Tool Additions
  163. --------------
  164. - The documentation is now searchable and sortable by type.
  165. - Pragmas are now hidden by default in the documentation to reduce noise.
  166. - Edit links are now present in the documentation.
  167. Compiler Additions
  168. ------------------
  169. - The ``-d/--define`` flag can now optionally take a value to be used
  170. by code at compile time.
  171. `(doc) <http://nim-lang.org/docs/manual.html#implementation-specific-pragmas-compile-time-define-pragmas>`_
  172. Nimscript Additions
  173. -------------------
  174. - It's possible to enable and disable specific hints and warnings in
  175. Nimscript via the ``warning`` and ``hint`` procedures.
  176. - Nimscript exports a proc named ``patchFile`` which can be used to
  177. patch modules or include files for different Nimble packages, including
  178. the ``stdlib`` package.
  179. Language Additions
  180. ------------------
  181. - Added ``{.intdefine.}`` and ``{.strdefine.}`` macros to make use of
  182. (optional) compile time defines.
  183. `(doc) <http://nim-lang.org/docs/manual.html#implementation-specific-pragmas-compile-time-define-pragmas>`_
  184. - If the first statement is an ``import system`` statement then ``system``
  185. is not imported implicitly anymore. This allows for code like
  186. ``import system except echo`` or ``from system import nil``.
  187. Bugfixes
  188. --------
  189. The list below has been generated based on the commits in Nim's git
  190. repository. As such it lists only the issues which have been closed
  191. via a commit, for a full list see
  192. `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+>`_.
  193. - Fixed "RFC: should startsWith and endsWith work with characters?"
  194. (`#4252 <https://github.com/nim-lang/Nim/issues/4252>`_)
  195. - Fixed "Feature request: unbuffered I/O"
  196. (`#2146 <https://github.com/nim-lang/Nim/issues/2146>`_)
  197. - Fixed "clear() not implemented for CountTableRef"
  198. (`#4325 <https://github.com/nim-lang/Nim/issues/4325>`_)
  199. - Fixed "Cannot close file opened async"
  200. (`#4334 <https://github.com/nim-lang/Nim/issues/4334>`_)
  201. - Fixed "Feature Request: IDNA support"
  202. (`#3045 <https://github.com/nim-lang/Nim/issues/3045>`_)
  203. - Fixed "Async: wrong behavior of boolean operations on futures"
  204. (`#4333 <https://github.com/nim-lang/Nim/issues/4333>`_)
  205. - Fixed "os.walkFiles yields directories"
  206. (`#4280 <https://github.com/nim-lang/Nim/issues/4280>`_)
  207. - Fixed "Fix #4392 and progress on #4170"
  208. (`#4393 <https://github.com/nim-lang/Nim/issues/4393>`_)
  209. - Fixed "Await unable to wait futures from objects fields"
  210. (`#4390 <https://github.com/nim-lang/Nim/issues/4390>`_)
  211. - Fixed "TMP variable name generation should be more stable"
  212. (`#4364 <https://github.com/nim-lang/Nim/issues/4364>`_)
  213. - Fixed "nativesockets doesn't compile for Android 4.x (API v19 or older) because of gethostbyaddr"
  214. (`#4376 <https://github.com/nim-lang/Nim/issues/4376>`_)
  215. - Fixed "no generic parameters allowed for ref"
  216. (`#4395 <https://github.com/nim-lang/Nim/issues/4395>`_)
  217. - Fixed "split proc in strutils inconsistent for set[char]"
  218. (`#4305 <https://github.com/nim-lang/Nim/issues/4305>`_)
  219. - Fixed "Problem with sets in devel"
  220. (`#4412 <https://github.com/nim-lang/Nim/issues/4412>`_)
  221. - Fixed "Compiler crash when using seq[PNimrodNode] in macros"
  222. (`#537 <https://github.com/nim-lang/Nim/issues/537>`_)
  223. - Fixed "ospaths should be marked for nimscript use only"
  224. (`#4249 <https://github.com/nim-lang/Nim/issues/4249>`_)
  225. - Fixed "Repeated deepCopy() on a recursive data structure eventually crashes"
  226. (`#4340 <https://github.com/nim-lang/Nim/issues/4340>`_)
  227. - Fixed "Analyzing destructor"
  228. (`#4371 <https://github.com/nim-lang/Nim/issues/4371>`_)
  229. - Fixed "getType does not work anymore on a typedesc"
  230. (`#4462 <https://github.com/nim-lang/Nim/issues/4462>`_)
  231. - Fixed "Error in rendering empty JSON array"
  232. (`#4399 <https://github.com/nim-lang/Nim/issues/4399>`_)
  233. - Fixed "Segmentation fault when using async pragma on generic procs"
  234. (`#2377 <https://github.com/nim-lang/Nim/issues/2377>`_)
  235. - Fixed "Forwarding does not work for generics, | produces an implicit generic"
  236. (`#3055 <https://github.com/nim-lang/Nim/issues/3055>`_)
  237. - Fixed "Inside a macro, the length of the `seq` data inside a `queue` does not increase and crashes"
  238. (`#4422 <https://github.com/nim-lang/Nim/issues/4422>`_)
  239. - Fixed "compiler sigsegv while processing varargs"
  240. (`#4475 <https://github.com/nim-lang/Nim/issues/4475>`_)
  241. - Fixed "JS codegen - strings are assigned by reference"
  242. (`#4471 <https://github.com/nim-lang/Nim/issues/4471>`_)
  243. - Fixed "when statement doesn't verify syntax"
  244. (`#4301 <https://github.com/nim-lang/Nim/issues/4301>`_)
  245. - Fixed ".this pragma doesn't work with .async procs"
  246. (`#4358 <https://github.com/nim-lang/Nim/issues/4358>`_)
  247. - Fixed "type foo = range(...) crashes compiler"
  248. (`#4429 <https://github.com/nim-lang/Nim/issues/4429>`_)
  249. - Fixed "Compiler crash"
  250. (`#2730 <https://github.com/nim-lang/Nim/issues/2730>`_)
  251. - Fixed "Crash in compiler with static[int]"
  252. (`#3706 <https://github.com/nim-lang/Nim/issues/3706>`_)
  253. - Fixed "Bad error message "could not resolve""
  254. (`#3548 <https://github.com/nim-lang/Nim/issues/3548>`_)
  255. - Fixed "Roof operator on string in template crashes compiler (Error: unhandled exception: sons is not accessible [FieldError])"
  256. (`#3545 <https://github.com/nim-lang/Nim/issues/3545>`_)
  257. - Fixed "SIGSEGV during compilation with parallel block"
  258. (`#2758 <https://github.com/nim-lang/Nim/issues/2758>`_)
  259. - Fixed "Codegen error with template and implicit dereference"
  260. (`#4478 <https://github.com/nim-lang/Nim/issues/4478>`_)
  261. - Fixed "@ in importcpp should work with no-argument functions"
  262. (`#4496 <https://github.com/nim-lang/Nim/issues/4496>`_)
  263. - Fixed "Regression: findExe raises"
  264. (`#4497 <https://github.com/nim-lang/Nim/issues/4497>`_)
  265. - Fixed "Linking error - repeated symbols when splitting into modules"
  266. (`#4485 <https://github.com/nim-lang/Nim/issues/4485>`_)
  267. - Fixed "Error: method is not a base"
  268. (`#4428 <https://github.com/nim-lang/Nim/issues/4428>`_)
  269. - Fixed "Casting from function returning a tuple fails"
  270. (`#4345 <https://github.com/nim-lang/Nim/issues/4345>`_)
  271. - Fixed "clang error with default nil parameter"
  272. (`#4328 <https://github.com/nim-lang/Nim/issues/4328>`_)
  273. - Fixed "internal compiler error: openArrayLoc"
  274. (`#888 <https://github.com/nim-lang/Nim/issues/888>`_)
  275. - Fixed "Can't forward declare async procs"
  276. (`#1970 <https://github.com/nim-lang/Nim/issues/1970>`_)
  277. - Fixed "unittest.check and sequtils.allIt do not work together"
  278. (`#4494 <https://github.com/nim-lang/Nim/issues/4494>`_)
  279. - Fixed "httpclient package can't make SSL requests over an HTTP proxy"
  280. (`#4520 <https://github.com/nim-lang/Nim/issues/4520>`_)
  281. - Fixed "False positive warning "declared but not used" for enums."
  282. (`#4510 <https://github.com/nim-lang/Nim/issues/4510>`_)
  283. - Fixed "Explicit conversions not using converters"
  284. (`#4432 <https://github.com/nim-lang/Nim/issues/4432>`_)
  285. - Fixed "Unclear error message when importing"
  286. (`#4541 <https://github.com/nim-lang/Nim/issues/4541>`_)
  287. - Fixed "Change console encoding to UTF-8 by default"
  288. (`#4417 <https://github.com/nim-lang/Nim/issues/4417>`_)
  289. - Fixed "Typedesc ~= Generic notation does not work anymore!"
  290. (`#4534 <https://github.com/nim-lang/Nim/issues/4534>`_)
  291. - Fixed "unittest broken?"
  292. (`#4555 <https://github.com/nim-lang/Nim/issues/4555>`_)
  293. - Fixed "Operator "or" in converter types seems to crash the compiler."
  294. (`#4537 <https://github.com/nim-lang/Nim/issues/4537>`_)
  295. - Fixed "nimscript failed to compile/run -- Error: cannot 'importc' variable at compile time"
  296. (`#4561 <https://github.com/nim-lang/Nim/issues/4561>`_)
  297. - Fixed "Regression: identifier expected, but found ..."
  298. (`#4564 <https://github.com/nim-lang/Nim/issues/4564>`_)
  299. - Fixed "varargs with transformation that takes var argument creates invalid c code"
  300. (`#4545 <https://github.com/nim-lang/Nim/issues/4545>`_)
  301. - Fixed "Type mismatch when using empty tuple as generic parameter"
  302. (`#4550 <https://github.com/nim-lang/Nim/issues/4550>`_)
  303. - Fixed "strscans"
  304. (`#4562 <https://github.com/nim-lang/Nim/issues/4562>`_)
  305. - Fixed "getTypeImpl crashes (SIGSEGV) on variant types"
  306. (`#4526 <https://github.com/nim-lang/Nim/issues/4526>`_)
  307. - Fixed "Wrong result of sort in VM"
  308. (`#4065 <https://github.com/nim-lang/Nim/issues/4065>`_)
  309. - Fixed "I can't call the random[T](x: Slice[T]): T"
  310. (`#4353 <https://github.com/nim-lang/Nim/issues/4353>`_)
  311. - Fixed "invalid C code generated (function + block + empty tuple)"
  312. (`#4505 <https://github.com/nim-lang/Nim/issues/4505>`_)
  313. - Fixed "performance issue: const Table make a copy at runtime lookup."
  314. (`#4354 <https://github.com/nim-lang/Nim/issues/4354>`_)
  315. - Fixed "Compiler issue: libraries without absolute paths cannot be found correctly"
  316. (`#4568 <https://github.com/nim-lang/Nim/issues/4568>`_)
  317. - Fixed "Cannot use math.`^` with non-int types."
  318. (`#4574 <https://github.com/nim-lang/Nim/issues/4574>`_)
  319. - Fixed "C codegen fails when constructing an array using an object constructor."
  320. (`#4582 <https://github.com/nim-lang/Nim/issues/4582>`_)
  321. - Fixed "Visual Studio 10 unresolved external symbol _trunc(should we support VS2010?)"
  322. (`#4532 <https://github.com/nim-lang/Nim/issues/4532>`_)
  323. - Fixed "Cannot pass generic subtypes to proc for generic supertype"
  324. (`#4528 <https://github.com/nim-lang/Nim/issues/4528>`_)
  325. - Fixed "Lamda-lifting bug leading to crash."
  326. (`#4551 <https://github.com/nim-lang/Nim/issues/4551>`_)
  327. - Fixed "First-class iterators declared as inline are compiled at Nim side (no error message) and fail at C"
  328. (`#2094 <https://github.com/nim-lang/Nim/issues/2094>`_)
  329. - Fixed "VS2010-warning C4090 : 'function' : different 'const' qualifiers"
  330. (`#4590 <https://github.com/nim-lang/Nim/issues/4590>`_)
  331. - Fixed "Regression: type mismatch with generics"
  332. (`#4589 <https://github.com/nim-lang/Nim/issues/4589>`_)
  333. - Fixed "„can raise an unlisted exception“ when assigning nil as default value"
  334. (`#4593 <https://github.com/nim-lang/Nim/issues/4593>`_)
  335. - Fixed "upcoming asyncdispatch.closeSocket is not GC-safe"
  336. (`#4606 <https://github.com/nim-lang/Nim/issues/4606>`_)
  337. - Fixed "Visual Studio 10.0 compiler errors, 12.0 warning"
  338. (`#4459 <https://github.com/nim-lang/Nim/issues/4459>`_)
  339. - Fixed "Exception of net.newContext: result.extraInternalIndex == 0 [AssertionError]"
  340. (`#4406 <https://github.com/nim-lang/Nim/issues/4406>`_)
  341. - Fixed "error: redeclaration of 'result_115076' with no linkage"
  342. (`#3221 <https://github.com/nim-lang/Nim/issues/3221>`_)
  343. - Fixed "Compiler crashes on conversion from int to float at compile time"
  344. (`#4619 <https://github.com/nim-lang/Nim/issues/4619>`_)
  345. - Fixed "wrong number of arguments regression in devel"
  346. (`#4600 <https://github.com/nim-lang/Nim/issues/4600>`_)
  347. - Fixed "importc $ has broken error message (and is not documented)"
  348. (`#4579 <https://github.com/nim-lang/Nim/issues/4579>`_)
  349. - Fixed "Compiler segfaults on simple importcpp in js mode [regression]"
  350. (`#4632 <https://github.com/nim-lang/Nim/issues/4632>`_)
  351. - Fixed "Critical reference counting codegen problem"
  352. (`#4653 <https://github.com/nim-lang/Nim/issues/4653>`_)
  353. - Fixed "tables.nim needs lots of {.noSideEffect.}"
  354. (`#4254 <https://github.com/nim-lang/Nim/issues/4254>`_)
  355. - Fixed "Capture variable error when using ``=>`` macro"
  356. (`#4658 <https://github.com/nim-lang/Nim/issues/4658>`_)
  357. - Fixed "Enum from char: internal error getInt"
  358. (`#3606 <https://github.com/nim-lang/Nim/issues/3606>`_)
  359. - Fixed "Compiler crashes in debug mode (no error in release mode) with Natural discriminant in object variants"
  360. (`#2865 <https://github.com/nim-lang/Nim/issues/2865>`_)
  361. - Fixed "SIGSEGV when access field in const object variants"
  362. (`#4253 <https://github.com/nim-lang/Nim/issues/4253>`_)
  363. - Fixed "varargs cannot be used with template converter."
  364. (`#4292 <https://github.com/nim-lang/Nim/issues/4292>`_)
  365. - Fixed "Compiler crashes when borrowing $"
  366. (`#3928 <https://github.com/nim-lang/Nim/issues/3928>`_)
  367. - Fixed "internal error: genMagicExpr: mArrPut"
  368. (`#4491 <https://github.com/nim-lang/Nim/issues/4491>`_)
  369. - Fixed "Unhelpful error message on importc namespace collision"
  370. (`#4580 <https://github.com/nim-lang/Nim/issues/4580>`_)
  371. - Fixed "Problem with openarrays and slices"
  372. (`#4179 <https://github.com/nim-lang/Nim/issues/4179>`_)
  373. - Fixed "Removing lines from end of file then rebuilding does not rebuild [js only?]"
  374. (`#4656 <https://github.com/nim-lang/Nim/issues/4656>`_)
  375. - Fixed "getCurrentException and getCurrentExceptionMsg do not work with JS"
  376. (`#4635 <https://github.com/nim-lang/Nim/issues/4635>`_)
  377. - Fixed "generic proc parameter is not inferred if type parameter has specifier"
  378. (`#4672 <https://github.com/nim-lang/Nim/issues/4672>`_)
  379. - Fixed "Cannot instantiate generic parameter when it is parent type parameter"
  380. (`#4673 <https://github.com/nim-lang/Nim/issues/4673>`_)
  381. - Fixed "deepCopy doesn't work with inheritance after last commit"
  382. (`#4693 <https://github.com/nim-lang/Nim/issues/4693>`_)
  383. - Fixed "Multi-methods don't work when passing ref to a different thread"
  384. (`#4689 <https://github.com/nim-lang/Nim/issues/4689>`_)
  385. - Fixed "Infinite loop in effect analysis on generics"
  386. (`#4677 <https://github.com/nim-lang/Nim/issues/4677>`_)
  387. - Fixed "SIGSEGV when compiling NimYAML tests"
  388. (`#4699 <https://github.com/nim-lang/Nim/issues/4699>`_)
  389. - Fixed "Closing AsyncEvent now also unregisters it on non-Windows platforms"
  390. (`#4694 <https://github.com/nim-lang/Nim/issues/4694>`_)
  391. - Fixed "Don't update handle in upcoming/asyncdispatch poll() if it was closed"
  392. (`#4697 <https://github.com/nim-lang/Nim/issues/4697>`_)
  393. - Fixed "generated local variables declared outside block"
  394. (`#4721 <https://github.com/nim-lang/Nim/issues/4721>`_)
  395. - Fixed "Footer Documentation links, & Community link point to the wrong place under news entries"
  396. (`#4529 <https://github.com/nim-lang/Nim/issues/4529>`_)
  397. - Fixed "Jester's macro magic leads to incorrect C generation"
  398. (`#4088 <https://github.com/nim-lang/Nim/issues/4088>`_)
  399. - Fixed "cas bug in atomics.nim"
  400. (`#3279 <https://github.com/nim-lang/Nim/issues/3279>`_)
  401. - Fixed "nimgrep PEG not capturing the pattern 'A'"
  402. (`#4751 <https://github.com/nim-lang/Nim/issues/4751>`_)
  403. - Fixed "GC assert triggers when assigning TableRef threadvar"
  404. (`#4640 <https://github.com/nim-lang/Nim/issues/4640>`_)
  405. - Fixed ".this pragma conflicts with experimental ptr dereferencing when names conflict"
  406. (`#4671 <https://github.com/nim-lang/Nim/issues/4671>`_)
  407. - Fixed "Generic procs accepting var .importcpp type do not work [regression]"
  408. (`#4625 <https://github.com/nim-lang/Nim/issues/4625>`_)
  409. - Fixed "C Error on tuple assignment with array"
  410. (`#4626 <https://github.com/nim-lang/Nim/issues/4626>`_)
  411. - Fixed "module securehash not gcsafe"
  412. (`#4760 <https://github.com/nim-lang/Nim/issues/4760>`_)
  413. - Fixed "Nimble installation failed on Windows x86."
  414. (`#4764 <https://github.com/nim-lang/Nim/issues/4764>`_)
  415. - Fixed "Recent changes to marshal module break old marshalled data"
  416. (`#4779 <https://github.com/nim-lang/Nim/issues/4779>`_)
  417. - Fixed "tnewasyncudp.nim test loops forever"
  418. (`#4777 <https://github.com/nim-lang/Nim/issues/4777>`_)
  419. - Fixed "Wrong poll timeout behavior in asyncdispatch"
  420. (`#4262 <https://github.com/nim-lang/Nim/issues/4262>`_)
  421. - Fixed "Standalone await shouldn't read future"
  422. (`#4170 <https://github.com/nim-lang/Nim/issues/4170>`_)
  423. - Fixed "Regression: httpclient fails to compile without -d:ssl"
  424. (`#4797 <https://github.com/nim-lang/Nim/issues/4797>`_)
  425. - Fixed "C Error on declaring array of heritable objects with bitfields"
  426. (`#3567 <https://github.com/nim-lang/Nim/issues/3567>`_)
  427. - Fixed "Corruption when using Channels and Threads"
  428. (`#4776 <https://github.com/nim-lang/Nim/issues/4776>`_)
  429. - Fixed "Sometimes Channel tryRecv() erroneously reports no messages available on the first call on Windows"
  430. (`#4746 <https://github.com/nim-lang/Nim/issues/4746>`_)
  431. - Fixed "Improve error message of functions called without parenthesis"
  432. (`#4813 <https://github.com/nim-lang/Nim/issues/4813>`_)
  433. - Fixed "Docgen doesn't find doc comments in macro generated procs"
  434. (`#4803 <https://github.com/nim-lang/Nim/issues/4803>`_)
  435. - Fixed "asynchttpserver may consume unbounded memory reading headers"
  436. (`#3847 <https://github.com/nim-lang/Nim/issues/3847>`_)
  437. - Fixed "TLS connection to api.clashofclans.com hangs forever."
  438. (`#4587 <https://github.com/nim-lang/Nim/issues/4587>`_)