System/ReleaseNotes/J903

From J Wiki
Jump to: navigation, search

J903 beta development started in Dec 2020, and 903-beta-a was released 21 Dec 2020.

Changes to the J engine

Summary of Changes to the J Language in the release

  • New foreigns 9!:4 and 9!:5 support Nameref Caching, a way of avoiding name-lookup overhead especially useful when you have many locatives or long search paths.
  • New foreign u 4!:8 (adverb) produces a cached reference to u
  • Old foreigns 2!:2 and 2!:3 are removed from the language
  • +/!.0 y performs compensated summation (addition with improved accuracy)
  • x +/@:*"1!.0 y performs the computation at twice the precision of floats

unreleased work in progress

  • fix blunder in assert.: sentence no longer executed if 0=9!:34''
  • cached namerefs expose some of the value's characteristics to combining modifiers: IRS and immediate-opening

J903 beta-e (the current beta)

  • +/ y, <./ y , and >./ y for floating-point y with rank >1 rewritten to use less cache bandwidth, >2x faster
  • +/!.0 y performs compensated summation (addition with improved accuracy)
  • x +/@:*"1!.0 y performs the computation at twice the precision of floats

J903 beta-d

  • x ]\ y, x [\ y, and x ,\ y return a virtual result when x<0 and there is no shard
  • f/ y faster on boolean arrays of rank >1 when f is a primitive logical operation
  • +/ y rewritten for boolean y, faster
  • special code for x f/@:g y with atomic f & g rewritten. Most special cases removed, as they are no longer faster than the normal code. Special code is used only when g cannot be executed in place.
  • New foreigns 9!:4 and 9!:5 support nameref caching, a way of avoiding name-lookup overhead especially useful when you have many locatives or long search paths. Put ". :: 1:'9!:5(1)' at the top of your script to see if you can use the feature.
  • New foreign u 4!:8 (adverb) produces a cached reference to u
  • Old foreigns 2!:2 and 2!:3 are removed from the language
  • |. y executes in place where possible
  • u"n is identical to u when n equals the ranks of u. If you need to generate a compound, use u"v.
  • in for_xyz. loops, a virtual block is used for xyz, and xyz_index cannot be modified inside the loop
  • Code for atomic/"1 y when 1-cells of y have length 2 rewritten

J903 beta-c withdrawn

J903 beta-b withdrawn

J903 beta-a

Changes to the base system

Changes to the Qt IDE