Release Notes J9.6

From J Wiki
Jump to navigation Jump to search

>> << Pri JfC LJ Phr Dic Voc !: Rel NuVoc wd Help 


Work on J9.6 started in November 2023. J9.6.0-beta1 was released 20240102.

Request for Comments

Proposed addition of .. for comment delimiter and ... for line continuation

  • The J word .., when not further inflected, is equivalent to NB., starting a comment that ends at the next end-of-line (LF).
  • The J word ..., when not further inflected, is equivalent to NB., starting a comment that ends at the next end-of-line (LF), and the following line is appended as J words in place of the ....


Example:

  vec =. i. #y  .. index vector of length #y
  adj =. +/   ... add the weighted values
         vec * y   ..  weight each element of y by its position

Comment on the proposal

Changes to the J engine

Summary of Changes to the J Language in the release

  • New datatype floating16 for double-double floating-point values
  • New datatypes integer2 and integer4 for 2-byte and 4-byte integer values
  • New primitive verb x c. y converts noun y to the type given by x. x is the desired type/precision, and is the value 3!:0 (aka datatype) will return if applied to the result of c.
  • New foreign 9!:33 y controls number of retries for elliptic-curve factoring
  • New locative form: name__nn, where nn is a negative integer, looks up name starting in the namespace shown in the debug stack (dbstk''). nn of _1 refers to the topmost frame (the newest suspended frame), _2 to its caller, etc.
  • Enhanced foreign x 5!:5 y gives only the selected valence of explicit definitions
  • I.^:_1 y defined to return a list of the frequencies of the atoms of y
  • 18!:4 removed except as documentation. The cover functions cocurrent and coclass perform the same function they always did, but the underlying 18!:4 itself, which had a quirky definition, can no longer be used directly.


J9.6.0-beta9 (unreleased)

  • 18!:4 removed except as documentation. The cover functions cocurrent and coclass perform the same function they always did, but the underlying 18!:4 itself, which had a quirky definition, can no longer be used directly.
  • Execution of named functions rewritten, simpler & faster
  • If you delete the implied locale, the implied locale is set to z (previously you were left with no implied locale and no path)

J9.6.0-beta8 (the current beta)

  • Warning message given if 18!:4 is used. 18!:4 will be removed from beta9.
  • Improvements to the debugger and its interaction with Jqt and JHS, contributed by Marcin Żołek

J9.6.0-beta7

  • Beta users should install this beta before installing later betas. This will update libraries that are used in later betas

J9.6.0-beta6 withdrawn

J9.6.0-beta5

  • I.^:_1 y defined to return a list of the frequencies of the atoms of y
  • execution of explicit definitions rewritten: faster, leaner

J9.6.0-beta4

  • 55 T. threadpool# deletes a thread from the specified threadpool
  • Undefined sentences, such as NB watch out, display the 'noun result was required' message. This can be controlled using 9!:55
  • Anonymous explicit definitions are now given a place in the debug stack. Example: myverb =: {{ x + y }}"0
  • 13!:13 (dbstk) includes only the active valence of the text of the executing entity

J9.6.0-beta3

  • Compensated summation now gives infinite result rather than NaN error where possible
  • m!:n (that is, the function that creates the derived verb) rewritten, a little faster and less memory
  • Enhanced foreign x 5!:5 y gives only the selected valence of explicit definitions

J9.6.0-beta2

  • The special forms ((q i.]) { p"_) y and (q&i. { p"_) y are no longer recognized. They are superseded by (p {~ q i. ]) y
  • (p {~ q i. ]) y runs inplace if possible
  • Virtual arguments to a task are realized in the task rather than in the caller, where possible
  • x , y faster and better when one argument is empty
  • fixed-precision datatypes given higher conversion priority than J native numbers
  • 256-bit code for +/ y and +/@:*"1 y when y is floating16
  • Fast support for +/ y, +/\ y, and +/\. y when y is integer2 or integer4
  • q: y on extended integer y now tries multiple random elliptic curves instead of just one. The default number is 3 but can be changed by 9!:33 y
  • New locative form: name__nn, where nn is a negative integer, looks up name starting in the namespace shown in the debug stack (dbstk''). nn of _1 refers to the topmost frame (the newest suspended frame), _2 to its caller, etc.
  • New feature: postmortem debugging allows you to inspect the situation after a sentence failed while debugging wasn't turned on.
  • screen display of a tacit verb uses default formatting instead of maximum precision

J9.6.0-beta1

  • New datatype floating16 for double-double floating-point values
  • New datatypes integer2 and integer4 for 2-byte and 4-byte integer values
  • New primitive verb x c. y converts noun y to the type given by x. x is the desired type/precision, and is the value 3!:0 (aka datatype) will return if applied to the result of c.

Changes to the base system

Changes to the Qt IDE


>> << Pri JfC LJ Phr Dic Voc !: Rel NuVoc wd Help S