Release Notes J9.6
< System | ReleaseNotes
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
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-beta6 (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.
J9.6.0-beta5 (the current beta)
- 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.