# Release notes for STACK 4.4.x

STACK version 4.4.0 was released in July 2022. This was a major rewrite of the PRT and CASText systems, with a focus on performance and limitations of the previous systems. This release has changed/tightened up some question authoring causing some problems with existing questions. For this reason we have written these dedicated release notes.

### Issue: [[ foreach ]] blocks over zero length lists.

[[ foreach ]] blocks over a list that happens to have length zero causes "text rendering error" if reference to the non-existent element is made, even though the loop is not run: e.g.

[[ foreach item="[]" ]]  {@item@}   [[/ foreach ]].


(Note without the {@item@} it runs fine.)

Solution Protect loop with an [[ if ]] block on the length of the list.

### Issue: Bad interaction between ordergreat and exdowncase

This is a more serious problem, see https://github.com/maths/moodle-qtype_stack/issues/887 for updates.

One solution is to test for exdowncase(sans)=exdowncase(tans) [not just tans].

### Issue: Automatically calculated numerical teachers answer might now include brackets

Automatically calculated numerical teachers answer might now include brackets: ( -(3/8)), which is a problem if the input forbade brackets!, causing Question Test failure.

Solution: Don't forbid input of brackets!

### Issue: when selecting function names from a list.

When using something like

func:rand([sin,cos,exp,ln]);
is(equal(func,ln));


now returns unknown. Used to return true/false.

Solution: First generate a random integer. Set func based on that, and test the value of the integer. (Not as neat!)

### Issue: MathJax

Mathjax no longer likes \begin{pmatrix}{@xx@}\\{@yy@}\end{pmatrix} in castext.

Solution: make sure there is a space between \\ and {@yy@}. (Better!) Define the vector to be a maxima object and display that instead.

### Issue: CAS text comments delineated with / ... / are rendered

Solution: Use [[ comment ]] ... [ [/ comment ]]

### Issue: Fatal error causing an exception and then displaying nothing.

Solution: "tans" PRT node entry ended with semicolon: Delete the semi-colon! We now have error trapping for this problem.

### Issue: taylor now returns a maxima taylor series object

taylor now returns a maxima taylor series object (as it should!) rather than a normal algebraic expression (as it did!) Solution use expand(taylor( ... ) ) to get a normal algebraic object. (May then also need to set powerdisp:true to get the usual ordering of terms)

This is one consequence of the single call to Maxima. Previously there was some string input/output which lost the data type information.

### Issue: rounding of numerical quantities.

The answer test AlgEquiv now does not think floats are equivalent, even though they look identical when displayed in decimal.

Solution: don't use the answer test AlgEquiv for floats, use a numerical answertest instead.

This is one consequence of the single call to Maxima. Previously there was some string input/output which created numerical rounding. This rounding no longer happens, causing the apparent problem. Examples are given in the documentation on numbers instead.