Skip to content

Release Version-26.07.1

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Jul 17:37
· 405 commits to main since this release
Version-26.07.1

This release contains an unusually large batch of improvements -- many of them
developed with substantial help from the AI assistants Claude and
Fable: dark mode for the whole Windows user interface, native
Windows-on-Arm builds, numerous speedups, and a large number of bug and
stability fixes.

  • On Windows, switching to dark mode now also darkens the native user
    interface (menus, toolbars, sidebars, dialogs), not just the worksheet.
    wxWidgets can only enable this during application startup, so the saved
    appearance is now applied before the main window is created. (Toggling the
    appearance while wxMaxima is running may still need a restart to fully
    re-theme the native controls -- a Windows limitation.)

  • Native Windows-on-Arm (ARM64) builds: each release now includes a
    self-contained portable ZIP for ARM64 Windows, built natively with the
    clang-aarch64 toolchain. Unzip it and run wxmaxima.exe -- no installer and
    no separate runtime needed.

  • The worksheet diff viewer now shows changes inside a folded (collapsed)
    section instead of silently ignoring them: the cell alignment used to walk
    only the visible top-level cells, so two worksheets that differed solely
    inside a fold looked identical in the diff. Folded content is now expanded
    in the diff view and highlighted like any other change.

  • Typing "(" at the horizontal cursor opens a new code cell containing "()"
    with the caret between the parens again, like "[", "{" and """ do. A
    refactor had left the caret in front of the opening paren instead.

  • On builds with accessibility support (e.g. Windows) the configuration
    dialog gained an "Accessibility" tab: Maxima's output can now be announced
    to screen readers either as maths in linear text form (the default) or as
    MathML (wrapped in a complete namespaced document), for screen
    readers that can speak MathML.

  • Speedup: "Replace All" no longer schedules a re-layout of the whole
    worksheet - only the cells that actually contained the search text are
    re-laid-out.

  • Speedup: scrolling to a cell whose position isn't known yet (and the
    caret-visibility check) now schedules a re-layout targeted at that cell
    instead of one spanning the whole worksheet.

  • The statistics sidebar now grows its scrollable height to its wrapped
    button rows, like the other sidebars: when the sidebar was narrow, the
    buttons below the fold could neither be shown nor scrolled to.

  • The POT file for translators now also includes the translatable strings
    from the source subdirectories (cells, sidebars, wizards, ...): the
    extraction glob was flat and silently dropped them.

  • Evaluating a cell whose input is commented out entirely now removes the
    cell's stale output. Previously such a cell was skipped silently while a
    multi-cell evaluation advanced past it, keeping output that no longer
    matches the input.

  • LDB mode: after answering an ldb> prompt (or clicking elsewhere), the next
    prompt's input line could no longer be reached - clicking into it did
    nothing and keystrokes opened a new worksheet cell instead. The LDB prompt
    now engages the full question machinery, so clicking into the cell that
    holds the prompt reopens its input line, and pressing Enter falls back to
    the prompt's answer even if the cursor wandered off it. The pending prompt
    is also cleaned up when the Lisp process ends.

  • File name arguments (openr(), read_matrix(), load(), demo(), ...) now
    autocomplete bash-style: the popup lists the directory the partial name
    points into, typing narrows the list and Backspace widens it again, and
    choosing a directory descends into it and keeps completing there. Several
    edge cases (the editor's auto-added closing quote, a spurious leading "/" at
    the top level, and completion in a still-unsaved worksheet) were fixed too.

  • Fixed a layout bug where the width of parenthesized content was
    underestimated: in partially-broken nested parenthesis/fraction/subscript
    constructs, cells inside a fraction could be drawn at the full font size
    while the surrounding parenthesis used the reduced-size extents. Composite
    cells now always re-lay-out their children at the right font size, and each
    cell remembers (and drawing verifies) the font size it was laid out with.

  • Fixed a hang when a worksheet contained an image that could not be rendered
    (a broken or empty <img>): querying the size of the not-yet-rendered
    bitmap tripped a wxWidgets assertion. Found by the layout/paint fuzzer.

  • Fixed an assertion/crash when cutting or copying cells while the bitmap or
    SVG clipboard flavor was enabled: the off-screen renderer that draws the
    copied cells no longer trips the configuration teardown check.

  • Repaired the lisp mode.

  • Repaired the maxima debugger mode

  • Repaired the SBCL debugger (LDB) mode

  • Status bar pictograms for lisp and debugger modes

  • Many Speedups

  • A complete stability review using a Fable-Class AI

  • Speedup: merely moving the mouse across the worksheet no longer repaints the
    whole visible worksheet at up to full frame rate. On GTK the worksheet now
    uses classic scrollbars by default (the overlay ones forced full-window
    repaints; a configuration option brings them back), the paint routine
    redraws each damaged rectangle separately, and needless idle re-layouts of
    the sidebars, status bar and performance monitor were removed. New
    "Worksheet repaints" / "Full-window repaints" counters in the performance
    monitor make such regressions easy to spot.

  • Refactored the code into smaller, individually testable classes

  • Added automatic tests for most recurring bugs

  • More counters in the performance monitor

  • Corrupt or hostile .wxmx files now fail cleanly instead of hanging: a damaged
    archive no longer wedges a batch run in an endless "Save As" loop, absurd
    watch-variable or active-cell counts no longer drive near-endless loops, and
    an over-large content.xml is read only up to a sane limit (a
    decompression-bomb guard). Guarded by a new corrupt_wxmx_smoke test. The
    .wxmx document-version check is now parsed locale-independently.

  • Fixed: when Maxima asks a question the input cell for the answer appeared
    above the question instead of below it.

  • Restarting Maxima no longer spawns a new gnuplot process to probe which
    graphics terminals gnuplot supports: if the restarted Maxima reports the
    same gnuplot as before, the answer from the first probe is reused.

  • Stability: a failing save no longer risks stacking one "Saving failed!"
    dialog per autosave interval (the autosave timer restarted before the modal
    dialog was dismissed); the message is now shown once, after the handler that
    detected it has finished.

  • Reading gnuplot's terminal-list reply and cached
    gnuplot source/data files can no longer loop forever on a stream that
    reports a read error instead of an end-of-file.

  • Better prevention of leaked maxima processes

  • Automatic line wrapping is now enabled for code cells

  • Fixed: typing near the right edge of a wrapping text cell scrolled the
    worksheet sideways for no reason: the caret entered the horizontal
    scroll-into-view zone just before every automatic line wrap.

  • Better authentication of maxima

  • Animation frame rates are now floating-point.

  • Windows: on shutdown wxMaxima suppresses the OS hard-error message boxes ("this
    application could not be started"

  • several configuration-dialog settings were silently not saved when pressing OK

  • The diff viewer now highlights, inside each changed cell, the exact words
    the matching cell of the other file doesn't contain (word-level inline
    diff

  • Changing a cell's type (Cell -> Convert to code/text/section/...) can now be
    undone.

  • The Microsoft Edge WebView2 loader license is now included in the third-party
    notices only on Windows builds that actually use it, i.e. built with webview
    support - not on Linux/Mac, nor on a Windows build with webview disabled.

  • Bugfix: the "how long did layout take" log message printed a meaningless
    near-zero duration, and the time-sliced layout of the off-screen part of a huge
    worksheet was not actually time-limited.

  • Code deduplication.

  • Corrected the line wrapping position

  • The diff viewer's panes can be scrolled as soon as they open, instead of only
    after the window is resized.

  • The "return to the cell that is being evaluated" toolbar button now lights up
    when the evaluated cell is scrolled out of view, even when the text cursor is
    not inside it (previously it only reacted to the cell that held the cursor).

  • Windows: a batch-mode run (wxmaxima --batch, typically started from a
    script) could appear to hang for seconds to minutes before its window
    opened

  • Fixed a mangled maxima user directory when maxima is compiled with GCL
    (as Debian's and Ubuntu's maxima packages are) match.

  • Fixed find-next getting stuck when a match was found in an input prompt

  • Fixed broken equation-image links in HTML exports using the "bitmap" equation
    format

  • Added an export safety-net regression test (test_WorksheetExport) covering
    HTML (all equation formats), LaTeX, .mac and .wxm export.

  • Fixed math cells with subscripts, parenthesis or lists keeping stale spacing

  • Added a layout-idempotency regression test: after zoom and canvas-size changes the converged layout must be identical to laying the same content out from scratch.

  • Configuration changes that alter how text is displayed (e.g. drawing a multiplication dot instead of an asterisk) take effect on the next redraw again instead of requiring the cells to be rebuilt.

  • The build now autodetects whether the wxWidgets webview and qa components are actually usable instead of failing to configure on installations whose wx-config advertises components that were never built. WXM_DISABLE_WEBVIEW/WXM_DISABLE_QA are still honored to force-disable them.

  • Fixed a crash in builds without webview support: requesting help on a topic (e.g. Maxima's ?? command) with exactly one matching topic name accessed the topic list out of bounds - and showed the wrong topic when there were several.

  • The help pane is now opened once per help request instead of once per matching topic name.

  • Accessibility: screen readers now actually see the worksheet's contents.

  • Accessibility: the symbol/Greek-letter/math sidebar buttons are now announced as named push buttons (by their description, e.g. "Greek small letter alpha") instead of anonymous panels.

  • The Unicode characters sidebar can now be used from the keyboard

  • Fixed copying/cutting a freshly drag-and-dropped image turning it into an "Image data had zero length" error: the copy no longer reads the image before its background load has finished.

  • Fixed copying/cutting a range of cells losing every cell that follows an image, a page break, or a code cell with the "send known answers" flag: those cells' clipboard data was missing a separator, so the following cells were swallowed on paste.

  • Windows: wxMaxima now repairs its own .wxmx/.wxm/.mac file association on startup, so updating to a new install location no longer makes Windows "forget" which program opens .wxmx files.

  • Windows: a new Help menu item registers wxMaxima as the tool TortoiseSVN and TortoiseGit use to compare .wxmx files.

  • Added a regression test guarding the worksheet's line-wrapping (line-breaking) layout pass.

Link to all changes: Version-26.07.0...Version-26.07.1

Windows installer

This installer does only contain WxMaxima. You will need a Maxima installation too and will need to configure the path to Maxima in WxMaxima.

Maybe Windows will warn you, that "This program is not commonly downloaded and could harm your computer."

The reason may be, that the installer was not often downloaded and it is not signed. My code signing cert is expired.

If you want to do an unattended installation (e.g. if you plan to install WxMaxima on many computers in a school, university or company), this installer (and uninstaller) understands the command line switch "/S" (for 'silent install').

Remark

The Windows installer was changed on 2026-07-26, the automatically compiled version did not work.

Wolfgang Dautermann