Batch optimisation that speeds up the string processing section of the stackjson_stringify function, see Issue #1152. Previous quadratic growth is occurring due to the character-level traversal in the underlying implementation of Maxima simplode, which is used in the previous version of this function.
The optimisation is implemented in stackstrings.mac and works by breaking the string up into batches of length 64 (function argument limit in Maxima using GCL Lisp), and applying sconcat to the batches. This is now a 64-length batch-level traversal, as opposed to character-level.
Further details on the experiments and results comparing the prior version with the batch optimisation are included in the docs here.
Note also there is an edit to the stacksortable.js library which fixes an issue with the parsons block, fixing the list after pressing "submit and finish". I think I forgot to switch branches ...
stackjson_stringify
function, see Issue #1152. Previous quadratic growth is occurring due to the character-level traversal in the underlying implementation of Maximasimplode
, which is used in the previous version of this function.sconcat
to the batches. This is now a 64-length batch-level traversal, as opposed to character-level.stacksortable.js
library which fixes an issue with the parsons block, fixing the list after pressing "submit and finish". I think I forgot to switch branches ...