Nim/changelog.md
zah e3037a2f33 Support code hot reloading for JavaScript projects (#7362)
* Support code hot reloading for JavaScript projects

* Add some missing JavaScript symbols and APIs

* fix the Travis build

* (review changes) remove the js type from the standard library as it doesn't follow NEP-1

* more additions to the DOM module

* Follow NEP-1 in jsffi; spell 'hot code reloading' correctly

* introduce a jscore module

* Document jscore module.

* readded js type

* Remove the '$' operator that doesn't behave
2018-04-13 19:08:43 +02:00

2.7 KiB

v0.X.X - XX/XX/2018

Changes affecting backwards compatibility

  • The stdlib module future has been renamed to sugar.
  • macros.callsite is now deprecated. Since the introduction of varargs parameters this became unnecessary.
  • Anonymous tuples with a single element can now be written as (1,) with a trailing comma. The underlying AST is nnkTupleConst(newLit 1) for this example. nnkTupleConstr is a new node kind your macros need to be able to deal with!

Breaking changes in the standard library

  • re.split for empty regular expressions now yields every character in the string which is what other programming languages chose to do.

  • The returned tuple of system.instantiationInfo now has a third field containing the column of the instantiation.

  • ``cookies.setCookie` no longer assumes UTC for the expiration date.

Breaking changes in the compiler

Library additions

  • re.split now also supports the maxsplit parameter for consistency with strutils.split.
  • Added system.toOpenArray in order to support zero-copy slicing operations. This is currently not yet available for the JavaScript target.
  • Added getCurrentDir, findExe, cpDir and mvDir procs to nimscript.

Library changes

  • macros.astGenRepr, macros.lispRepr and macros.treeRepr now escapes the content of string literals consistently.
  • macros.NimSym and macros.NimIdent is now deprecated in favor of the more general NimNode.

Language additions

  • Dot calls combined with explicit generic instantiations can now be written as x.y[:z]. x.y[:z] that is transformed into y[z](x) in the parser.
  • func is now an alias for proc {.noSideEffect.}.

Language changes

  • The importcpp pragma now allows importing the listed fields of generic C++ types. Support for numeric parameters have also been added through the use of static[T] types. (#6415)

  • Native C++ exceptions can now be imported with importcpp pragma. Imported exceptions can be raised and caught just like Nim exceptions. More details in language manual.

Tool changes

  • jsondoc2 has been renamed jsondoc, similar to how doc2 was renamed doc. The old jsondoc can still be invoked with jsondoc0.

Compiler changes

  • The VM's instruction count limit was raised to 1 billion instructions in order to support more complex computations at compile-time.

  • Support for hot code reloading has been implemented for the JavaScript target. To use it, compile your code with --hotReloading:on and use a helper library such as LiveReload or BrowserSync.

  • Added macros.getProjectPath and ospaths.putEnv procs to Nim's virtual machine.

Bugfixes