From J Wiki
Jump to: navigation, search

J806 release of xx xxx 2017

Changes to the base system

The Windows J engine is updated to J8.06

New features:

  • u@n (where n is a noun) is now allowed, and executes u on the value of n, ignoring any arguments (equivalent to u@(n"_))
  • u :: n (where n is a noun) is now allowed, and gives the result n if u fails (equivalent to u :: (n"_))

Performance improvements (timings taken on 64-bit Windows):

  • (x -: y) coded to be a bit faster for boxed arrays
  • (x -:!.0 y) coded significantly faster on floating/complex arrays by avoiding code to replace -0 with +0
  • (x +/ . * y) coded using block tiling with BLAS micro kernels which take advantage of SIMD instructions (if supported by the user's CPU).
  • (x +/ . * y) executes on multi-cores (if OpenMP is available) to perform parallel calculations.
  • The i.-family has been recoded to use improved algorithms and AVX/NEON instructions
  • During x {:: y, any selection in which x is a numeric atom and y is a list of boxes is handled by special code
  • Arrays with a large number of boxes are greatly improved. Assigning such an array to a name no longer requires visiting every leaf.
  • x m} y and x , y operate in-place if possible when x and y are boxed (they have long been in-place for non-boxed types)
  • The no-change cases 0 }. y, 1 # y, and 0 |. y execute instantly
  • Nested dyadic ranks, for example x u"0 0"1 _ y or x u"0/ y, are handled with a single looping structure rather than a nested one that required copying the data twice
  • Monadic and dyadic ranks run a bit faster after a rewrite primarily intended as a bug fix
  • u"n, when u returns a boxed result, is a bit faster by saving one copying of the boxing

Changes to the Qt IDE

Changes to the Qt IDE Window Driver