Changes in version 0.8.1 (2025-07-18) Modifications - removed test for plot3d() because of an error in Maxima calling gnuplot with an invalid argument, will be re-added with the next version of Maxima - The unit test for the engine now calls explicitly rim_global() to evaluate the parsed expressions from Maxima (added a note in the doc page as well) - changed the package startup message Changes in version 0.8.0 (2025-04-01) Modifications - fixed NOTE for assigment into globalenv() when checking package Minor - added REPL mode (maxima.repl()) Changes in version 0.7.1 Modifications - R6 class finalize() now private, as required by package - fixed failing example for maxima.load() under Fedora (#47) and added testing file Changes in version 0.7.0 (2024-10-18) Modification - fixes faulty parsing of matrices - re-factored printing method maxima.print and iprint, which now reliably detected whether called from interactive mode or from knitr engine, thus removed internal function engine_print() (Maxima S3 object now gained from_engine flag) - running code chunks interactively (from RStudio) now works as expected using the "interactive" Maxima connection object it's options accordingly - comment handling now works (both interactive and engine), fixed an infinite loop occurrence when sent command ended with a comment, comment-only lines of code inside code-chunks are now properly printed - empty lines in code chunks are now preserved as inputted - fixed engine test failure caused by different output code width settings and unneccessarily inserted linebreaks between code input and output Changes in version 0.6.4 (2023-08-24) Modification - new options max.attempts and sleep.seconds to control repeated testing for finished rendering of images - fixed issue #37 Changes in version 0.6.3 (2023-07-15) Modification - fixed error under Fedora 36+ caused by Maxima image inclusion, when the image file isn't guaranteed to exist when it's file path is returned from Maxima Changes in version 0.6.2 (2023-07-06) Modification - added more reliable detection for output document - Maxima knitr engine (fixes previous CRAN test failure for Fedora 36+). Changes in version 0.6.1 Modification - fixed bug from CRAN check failure on Fedora and R-devel Changes in version 0.6.0 (2023-04-03) Minor - added new function maxima.eval() that can either take a character string or an S3 object of class "maxima" (as returned from maxima.get()). In either case, the output result from Maxima (if not suppressed) is parsed into a R-expression and gets evaluated by this function. Objects returned from maxima.get() carry an attributed named "parsed" that is the unevaluted R-expression of the returned Maxima result. Parsing works for - unary and binary operators - named function calls - function definitions - lambda function calls - memoizing array function definition (those are currently simply parsed into "normal" functions) - arrays: creating and setting - matrices: creation, multiplication, transposition, inversion, determinants - lists - conditionals - added engine option output.var that can name a variable to capture parsed Maxima output into a named list. The names of this list are the output labels. Changes in version 0.5.3 Modification - user can specify custom path to Maxima executable by setting environment variable "RIM_MAXIMA_PATH" Changes in version 0.5.2 (2022-10-25) Modification - fixed tests to pass for Fedora 36 - built-in safeguards against infinite loops when Maxima couldn't be started or initialized (issue #29) - reading process ID and version number now using class MReader Changes in version 0.5.1 (2022-05-06) Modification - knitr-engine now supports chunk options echo, eval and include, a description can be found in the documentation page - fixed several issues related to changes with Maxima version 5.46.0 Changes in version 0.5.0 (2021-11-17) Minor - knitr-engine now supports plotting commands: plot2d(), plot3d(), draw(), draw2d(), draw3d() (and others that are based on those mentioned), depending on the output format (PDF or HTML), plots are saved as PDF or PNG respectively - Added inline output function to be used when knitting RMarkdown documents. - Restructured the return type of the get function: Instead of a character string, now a list is returned storing every output format of the result including both with and without reference labels. - Added a global option handling function maxima.options() and removed individual option setting functions maxima.setformat(), maxima.engine.format() and friends - Whether reference labels are printed or not when knitting a RMarkdown document can now be controlled by setting maxima.options(engine.label) Modification - Removed some unused utility functions from code - Removed unnecessary C++17 compiler flag - Improved documentation - Updated heuristics for catching warnings and errors - Improved typesetting of output labels when knitting RMarkdown documents - Improved warning/ error handling heuristics (fixing issue #20) Changes in version 0.4.1 (2021-07-01) Modification - fixed issue #16. code chunks that contain commands spanning multiple lines are now printed as-is (except for empty lines, which are removed) with the preceding input reference label - fixed the issue #17, caused by a socket-read-write-concurrency conflict which led to split lines read from Maxima and a failure to validate it's output. This is achieved now by an internal helper R6 class MReader that stashes away incomplete lines and completes it upon re-calling. - fixed reference manual that is generated by CRAN, but previously did not contain the package main functions - Improved description in DESCRIPTION of SystemRequirements - added exported function maxima.isInstalled() that is now used upon package attachment, where a message is signaled to install Maxima, if no installation was found. - added exported function maxima.version() which is now used upon package attachment, where a message is signaled when the installed version is lower than the version with which this package has been tested - Test file tests/testthat/test-engine.R: knitting test page now suppresses Warnings, which are subject of tests/testthat/test-warnings.R Changes in version 0.4.0 (2021-06-23) - added maxima.engine.format() function that can be used to change the output format of the knitr engine - fixed issue that arises when Maxima takes longer to start (which previously caused the interface to freeze) - added functions to record the version number of Maxima that is being used - renamed package to "rim" to avoid confusion with maxima's rmaxima - communication is now implemented using sockets and the processing is handles by two nested R6 classes - return type is now a S3 class of type maxima. There are two methods iprint() and oprint() for printing an maxima S3 object: printing the input command and output respectively, including reference labels. - removed external C++ library dependencies (now using sockets for communicating with Maxima) - knitr engine now prints output after each input line, it also prints the input reference label in front of the command Changes in version 0.0.0.9000 - removed dependency from boost (switched to libexecstream) - maxima.get() returns character vector with added attributes for reference labels, format and it's originating command - fixed Maxima error (message) forwarding to R - implement knitr-engine for maxima using this interface - Implement stop function to end maxima child process for debugging purposes - Handles asksign and similar feedback interruptions - Added interface to Maxima's apropos()-function - Fixed: If command terminates with \$ then this causes a segmentation fault, which kills the R process. The cause being that maxima returns immediately with the next input prompt - added roxygen2 documentation - fixed system.file call inside constructor to work with devtools::load_all() - Added a NEWS.md file to track changes to the package. - Add test files - implemented output display as tex (not yet user-friendly) - added initialization files - added function void loadModule(const std::string &s) - Removed boost::regex linking dependency - fixed pipe stream synchronization