System/ReleaseNotes/J807

From J Wiki
Jump to: navigation, search

The j807 beta cycle started in mid Feb 2018. A j807 release is likely around the end 0f 2018.

For installation, see Installation/Beta.

Changes to the J engine

J807 beta-e

  • Cuts u;._2 _1 0 1 2 use virtual blocks and the new RA code. Generally faster, especially for homogeneous non-boxed results, and for u in the form <@f.

    x f;.0 y is now as fast for any f as it used to be for ];.0

  • x f;.0 y uses a virtual block whenever x has 1 column, regardless of the rank of y
  • New case added to the i.-family: x i. y where the rank of x is no less than the rank of y. Uses sequential search rather than hashing: about 2x faster, if there are few searches. Previous versions recognized this situation only when y had rank<2.

J807 beta-d

  • cd is changed to avoid troubles arising from virtual blocks
  • more primitives produce virtual blocks:
    • , y
    • x { y when x selects a contiguous section of y
    • x ($,) y when the atoms of y are not repeated and there is no fill
    • x $ y when the atoms of y are not repeated and there is no fill
  • Code for Result Assembly (RA) is being consolidated. This is the code that collects the results of execution on multiple cells into a single result array with framing fill. Versions of this code with differing levels of sophistication have been scattered around the JE. As primitives are modified to support virtual blocks, they are being upgraded to use the new common RA code. The new code for RA has the following features:
    • never executes a verb on a cell more than once (some of the former RA code restarted the whole execution of a primitive if a result did not match the shape/type/precision of the first result)
    • handles changes of precision without falling back to the code for dissimilar shapes
    • fills results of dissimilar shapes without copying fill to the entire result area first
    • creates boxed results as having recursive usecounts, which are more efficient
    • detects verbs that always produce an atomic box (<@f for example) and avoids boxing each individual result of f
    • allows relaxation of virtual-block restrictions when the result of the operation feeds into a primitive that immediately opens it (; y, > y, &.> (each), @> (every))
    • frees intermediate memory blocks as quickly as possible
  • New RA code is used in
    • [x] u"r y
    • [x] f@g y
    • [x] f&g y
      • the main RA loop for dyadics is quadruply-nested. Sequences of u"r, f&g, and f@g are consolidated where possible to minimize the number of RA operations required.
    • IRS support within the JE
    • [x] u;.3 y and [x] u;._3 y
  • [x] u;.3 y and [x] u;._3 y are completely rewritten to use virtual blocks for the subarrays. Much faster on general arguments.
    • incompatible change: Previously, if the number of columns of x was less than the rank of y, x was extended with columns that selected the axis in full and these added axes appeared in the shape of the result. Now the new axes do not appear in the result-shape.

J807 beta-b

  • Virtual blocks introduced, whereby the result of a block may reside within another block. The result must be copied to a real block if it is assigned to a name or put into a box.
  • Virtual blocks used in:
    • {. y
    • {: y
    • }. y
    • }: y
    • atom {. y
    • atom }. y
  • JGetR gets JDo formatted output. Used in new addons/api/python3.

J807 beta-a

  • reworked memory allocator
  • smaller header makes better use of cache lines
  • List of problems fixed from J8.06
  • Foreigns 9!:48 and 9!:49 (allow use of old names x. y. etc) removed

Changes to the base system

  • Update regex to PCRE2 with standard (not POSIX) interface. This also fixes multiline bugs that had been reported. Documentation at Regular Expressions.
  • Move most of the Help|User Manual to the wiki.

Changes to the Qt IDE

  • fix segfault on exit on some linux systems
  • add support for case-sensitive drives and folders in Windows, see Windows case-sensitive
  • add QWebChannel support for webview (full Qt 5.6 or later), see demo at Help|Studio|Showcase|webview
  • add load event for webview (full Qt 5.6 or later)
  • add wd 'sm profont {fontspec}' command to set proportional font
  • add TabWidth config option
  • add open image and pdf files from editor
  • add Form resize event
  • add menu item show|hide
  • improved textview, with zoom/line numbers/full screen/word wrap, see Ctrl+H in a textview window