MacSpice Changelog

What's new in MacSpice 3.3.0

Feb 14, 2024
  • Enhancements:
  • The front-end error/warning reporting code has been refactored. As a result, most commands in source files now include error/warning messages that identify the line responsible.
  • New location command for debugging scripts.
  • Improvements to the drawing and labelling of grids for graphs.
  • Performance of the fft() and ifft() functions.
  • Improvements to SVG and PostScript graphics drivers.
  • Improvements to the way the graph-plotting commands handle the 'all' wildcard. For example, plot all excludes the abscissa from the list of vectors displayed and plot all vs all triggers an error.
  • Improved behaviour when executable is invoked directly as a command line tool.
  • Improved hash() function quality for vectors with complex arguments. (Hashes of complex vectors will differ pre- and post-v3.3.0.)
  • Added support for parameters with string values, e.g.:
  • set foo = @modname[param]
  • set foo = @devname[param]
  • now work as expected. Also,
  • let bar = @modname[param]
  • let bar = @devname[param]
  • assign the hash value of the param string to bar.
  • Vectors:
  • faster look-up by name;
  • faster expression evaluation;
  • internal storage of complex vectors changed from 'interleaved' to 'split' format.
  • Incremental plotting (iplot) now uses:
  • the type of the scale for the x-grid;
  • the multiplot linestyle.
  • Bugs Fixed:
  • Syntax error in the output generated by the SVG hardcopy driver.
  • Missing final point on graphs when the number of points equalled polydegree+1.
  • Device and model parameters with names containing special characters "-+*/%~" were inaccessible using the @name[param] syntax.
  • Character '?' was not allowed in node, variable, etc. names.
  • Freezing during incremental plotting (iplot).
  • Memory issue when the set command was used after destroy all.
  • Fixed length buffers in mkfnode() and mksnode().
  • A number of minor memory leaks.
  • Regression: Data copy error in vec_mkfamily(). [Build 362]

New in MacSpice 3.2.8 (Jan 4, 2024)

  • Enhancements:
  • Improvements to the drawing and labelling of grids for graphs.
  • Improvements to the svg and postscript hardcopy drivers.
  • Bugs Fixed:
  • Syntax error in the output generated by the 'hcopydevtype = svg' driver.
  • Potential memory issue when 'set' is used to display variablesafter 'destroy all'.

New in MacSpice 3.2.7 (Dec 17, 2023)

  • Enhancements:
  • Improved behaviour when used with BBEdit as the helper-editor. Thanks to Rich Siegel (www.barebones.com) for assistance.
  • Improved scheme for auto-naming temporary files.
  • Updated 'const' plot date to match publication day of the CODATA values.
  • Bugs Fixed:
  • Regression: Missing messages when a single analysis reports multiple errors.
  • Unnecessary creation of 'default.profraw' logfile in release builds.

New in MacSpice 3.2.6 (Dec 2, 2023)

  • Enhancements:
  • Standard rules for names (§5.6.1) now apply to aliases.
  • New 'Move to Back' action added to Window menu.
  • Cursor-label code for graph windows refactored. Difference measurements now display the base point and extension lines.
  • All calls to sprintf() replaced.
  • Bugs Fixed:
  • Incorrect processing of tabs in strings pasted into the console.
  • Encoding of source files containing utf-8 characters not recognised.
  • Freezing of cursor-label for graph when the mouse was moved rapidly over label.
  • Cursor-labels missing when from printed graphs.
  • Regression: 'let' command would not modify vectors with 'invalid' names created by analyses, e.g. v(123).

New in MacSpice 3.2.5 (Oct 20, 2023)

  • Enhancements:
  • Naming rules for front-end variables, vectors, user-defined functions and labels. have been harmonised; valid names can contain alphanumeric '_.:' 7-bit ASCII character and any non-ASCII unicode character.
  • BSIM4 device model updated to version 4.8.2
  • Processor type added to output of 'version' command.
  • 'About...' window layout improved.
  • Accuracy of DIOtemp() for edge-cases improved by using expm1() and ln1p().
  • Accuracy of total noise calculation improved in extreme-cases.
  • The 'noise' and 'pz' analyses now trap non-existent nodes in their arguments.
  • Front-end variables:
  • support for nesting, i.e. lists as elements of lists;
  • support for multidimensional ranges, e.g. $foo[range1][range2].
  • improved error detection and messages.
  • Bugs Fixed:
  • FFT crash in Accelerate framework on ARM64 processors fixed by Apple so workaround removed.
  • Crash in 'noise' analysis when circuit matrix is singular.
  • Crash when 'stop' command used with invalid syntax.
  • Formatting issue when error messages contain a '%' character.
  • Display of encoded characters in the reports generated when 'echo' and/or 'debug' are set.
  • Potential buffer overrun in history substitution code.
  • Potential memset(3) issue in u8_toArrayOfu8().
  • False postive 'Syntax error:' when parsing commands with more than one vector argument, e.g.
  • plot (4;3;2;1;0) (0;1;2;3;4)^2 vs (0;1;2;3;4)

New in MacSpice 3.2.4 (Nov 26, 2022)

  • Bugs fixed:
  • Parameter parsing for the 'optimize' command.
  • Missing newline at the end of some messages when finding operating point.
  • Install workaround for crash in Accelerate FFT library for Apple silicon.

New in MacSpice 3.2.3 (Jun 23, 2022)

  • Enhancements:
  • Crash reporting system recognises '.ips' format crash logs generated by macOS Monterey.

New in MacSpice 3.2.2 (Mar 22, 2022)

  • Enhancements:
  • Improve continuity of diode equations in default (level 1) JFET model.
  • Add expm1(x) and ln1p(x) functions to command line interpreter to improve accuracy of expressions involving 'exp(x)−1' and 'ln(1+x)' respectively.
  • Add expm1(x) and ln1p(x) functions to repertoire of arbitrary source device.
  • Refactor operating-point code and make minor improvements to behaviour. Clarify the wording of some notes and warnings.
  • Minor changes to MOSFET level 2 device to improve convergence when nfs = 0.
  • Add warning when 'if' statement has an undefined boolean argument.
  • Bugs fixed:
  • Discontinuity associated with calculation of BJT model base charge.

New in MacSpice 3.2.1 (Jan 3, 2022)

  • Enhancements:
  • Universal binary runs natively on both Apple silicon and Intel-based Mac computers.
  • Customised layering behaviour of console window changed to conform with Apple's user interface guidelines.
  • Update copy/paste and drag-and-drop behaviour of graph windows.
  • 'File > Print...' prints just selected console text.
  • Improve behaviour of the 'aspice' command.
  • Minor improvements to formatting of some error messages.
  • Code refactored to eliminate use of deprecated APIs.
  • Self-update system updated.
  • Crash reporting system updated.
  • Enable use of EdDSA (ed25519) signatures for updates.
  • Bugs fixed:
  • Spurious 'internal error' when 'destroy' is applied to a non-existent plot.
  • Crash when evaluating 'print @{qmod}[type]'.
  • Expressions such as '@R1[temp]' are now insensitive to case.
  • Messages from 'optimize' command now obey 'nomoremode' setting.
  • Source specifications in the interactive versions of 'dc', 'noise', 'tf' now insensitive to case.
  • Text insertion point now uses foreground colour consistently.
  • Crash reporter dates are now human-readable.
  • Crash when AppleScript has a nil turn value.
  • Missing CPU and OS version information when checking for updates.
  • Inconsistencies in use of 'nomoremode' setting by messages and us of stderr vs stdout by warnings and notes.
  • Make graph cursor text visible in 'dark mode'.
  • Behaviour of AC and NOISE analyses in cases such as 'ac lin 10 1 1'.
  • Noise analysis fails to create integrated noise plot if fmin = fma.

New in MacSpice 3.1.25 (Dec 7, 2021)

  • Enhancements:
  • Minor improvements to formatting of some error messages.
  • Bugs fixed:
  • Spurious 'internal error' when 'destroy' is applied to a non-existent plot.
  • Crash when evaluating 'print @{qmod}[type]'
  • Crash on OS X versions earlier than 10.9

New in MacSpice 3.1.24 (Apr 12, 2020)

  • Enhancements:
  • Refinements to choice of linear grid tickmark positions by plot command.
  • Handles invalid values of 'xdelta' and 'ydelta' argument for plot command.
  • Add ':' to the list of characters that may appear in variable names so that expressions such as '$&v(vss:10:2)' work as expected.
  • Bugs fixed:
  • B-source identifies token responsible in syntax-error message.
  • Parsing of B-source expressions involving constants 'e' and 'pi'.
  • Re-enable 'nodesets' command.

New in MacSpice 3.1.23 (Mar 29, 2020)

  • Enhancements:
  • Improvements to tickmark choices for graphs with linear scales.
  • Bugs fixed:
  • Printing word lists now uses 'moremode'.

New in MacSpice 3.1.22 (Mar 3, 2020)

  • Enhancements:
  • New conj(x) command line interpreter function to calculate the complex conjugate of its argument.
  • The optimise command detects and reports more error conditions.
  • Refactor modulo '%' operator to use fmod().
  • Quartz_SetLinestyle() now traps errors.
  • Change text window scrolling code to work better on MacOS 10.14+
  • Bugs fixed:
  • Formatting of 'tabbed' rawfiles when vectors have mismatched lengths.
  • Crash in gather command when 'map' has more elements than 'dst'.
  • Crash in scatter command when 'src' is complex.
  • Helpbook behaviour in MacOS 10.14+.
  • Some invalid arguments cause rnd() to freeze.
  • Crash using plot with Quartz viewport when executable is invoked directly from a shell.

New in MacSpice 3.1.21 (Dec 10, 2018)

  • Enhancements:
  • Add 'multiplot' option to 'plot' command to allow pointplots and lineplots on the same graph.
  • Modify FFT-based routines to use vDSP where possible.
  • Improve error-reporting for some types of syntax error and the specificity of certain error messages.
  • Enable use of '/dev/null' as output file.
  • Fix dependence of dp in rusage values on numdgt.
  • Bugs fixed:
  • Plot style 'combplot' draws vertical lines to the x-axis instead.
  • Implement Spice 2 compatibility described in §4.4.2 of User Guide.
  • Paging of lines output from 'echo'.
  • Intermittent console redraw-lag.
  • Console window should be either behind all or infront of graph windows.
  • Stop allowing ']' to close '(' without when evaluating command line expressions.
  • Prevent 'compose' clobbering an existing vector.
  • Error trapping in fopenResolvingAliases()
  • Memory leak in FFT functions invoking vDSP.
  • displayWriteBuffer() now traps nil values for str.
  • Changes:
  • 32-bit binary removed from application bundle.

New in MacSpice 3.1.20 (Jul 31, 2018)

  • Enhancements:
  • Upgrade random number generator used throughout to SFMT19937 (SIMD oriented Fast Mersenne Twister).
  • Increase range of valid arguments for rnd() function to [0,253].
  • Double speed and halve peak memory used for FFTs (and IFFTs) of real vectors.
  • Bugs fixed:
  • Masked multiplier suffix in graph cursor label for some negative values.
  • Memory leak due to redundant console -init invocation.
  • Behaviour of 'repeat' loops nested inside blocks exited with 'continue 2'.
  • Startup crash on macOS versions prior to 10.10.

New in MacSpice 3.1.19 (Jul 22, 2018)

  • Enhancements:
  • New 'compose' command options to realise a random vector with elements drawn from user-specified cumulative distristribution function (CDF).
  • New cumsum() function. Calculates cummulative sums with extended precision.
  • New fftconv() function to convert between packed and complex format for fft() of a real vector.
  • Modify the 'scatter' and 'gather' commands so that values are added, instead of copied, to the result vector elements.
  • The '.include' directive now allows quoted filenames.
  • Update 'const' plot physical constants to their CODATA 2017 recommended values.
  • MacOS file aliases are now resolved when opened by commands and directives.
  • Improvements to speed and accuracy of the 'spec' command.
  • Improve the way inconsistent scales are detected and reported by interpolate() and other functions that share the interpolation code.
  • Allow variables 'ipolydegree' and 'dpolygree' to be set to '1'.
  • Remove redundant 'dims=[]' information from 'display' command output for one-dimensional vectors.
  • Update HelpBook to include link to tutorials.
  • Improve precision of the 'xlimit' and 'ylimit' modifiers to 'plot' command.
  • Bugs fixed:
  • Formatting of 'diff' command output.
  • Various minor issues associated with the 'compose' command.
  • Off-by-one error in rnd() function maximum warning message.
  • Vector v_link2 issue in 'scatter' and 'gather' commands.
  • Code clean-up addressing obscure data-races and potential thread-safety issues.
  • Memory Leak associated with using xcompress plot format.
  • Error message when assignments have no RHS, e.g. 'let x ='.
  • Sign of imag() part of real fft() and ifft() functions - consistency with conventions used in documentation.
  • Invoking 'Bring All to Front' whenever MacSpice is activated.
  • Issues with 'xindices' modifier to 'plot' command.
  • Crash when update unarchiving failed.
  • Lock-up when launching Help Viewer from the Help menu.(High Sierra issue.)

New in MacSpice 3.1.18 (Jan 27, 2018)

  • Enhancements:
  • Update to BSIM4.4.0.
  • Bugs fixed:
  • Crash in -updatePenSizeMenu reported with OS X 10.13.1
  • Crash when executing 'cd #' reported with OS X 10.13.2

New in MacSpice 3.1.17 (Jul 28, 2017)

  • Enhancements:
  • The 'File > New' template is now in the Application Folder and can be customised.
  • Improved handling of, and warnings for, closely separated breakpoints.
  • Improved performance when constructing symbol tables for large netlists.
  • Improved reporting of errors and their location.
  • Bugs fixed:
  • Uninitialised values in 'show c...'.
  • Disable dash-substitution and spelling-correction by the the console CLI.

New in MacSpice 3.1.16 (Jun 19, 2017)

  • Enhancements:
  • New command 'srandom' to control seed used for random number generation.
  • New average(array) function.
  • Improvements to code that associates error messages with line numbers and filenames.
  • Window activation behaviour when there are multiple graphs open.
  • Bugs fixed:
  • TRA model sometimes set breakpoints earlier than the current time.
  • Make cmd-. work like ctl-C under Sierra.
  • Calculation of output impedance tf analysis.
  • Sign conventions: for 'p' for Vsource instances and 'v' for Isource instances.
  • Memory leak when a graph window is closed.

New in MacSpice 3.1.15 (May 25, 2017)

  • Bugs fixed:
  • Sweep iteration limit (itl2) default value.
  • Crash when fft()/ifft() operates on a real vector.
  • Crash when 'plot v(1,2,3)' is used as a command.
  • Crash when 'unset numdgt' is used as a command.

New in MacSpice 3.1.14 (Apr 3, 2017)

  • Bugs fixed:
  • Correct sign of power dissipated by PNP transistors.
  • User-defined function definitions can sometimes be deleted inappropriately when a new fucntion is defined.
  • Workaround for Sierra bug that caused a crash when invalid scale values are entered into a print dialog panel.

New in MacSpice 3.1.13 (Oct 27, 2016)

  • Enhancements:
  • Support UTF8 characters in the title bar of graph windows.
  • The 'unset simvar' command now restores the simulator variable for the current task simvar to the default value specified in the User's Guide, instead of zero.
  • Bugs fixed:
  • Premature deletion of circuit state affecting information available with 'show' command. (Introduced in v3.1.11)

New in MacSpice 3.1.12 (Sep 1, 2016)

  • Enhancements:
  • Improve behavior when executable is used as command line tool.
  • Modify parsing of .options, etc. to be more tolerant of numerical values with trailing garbage, e.g. 'CJ=.2MF/M^2'.
  • Modify back-quote evaluation to use posix_spawn(2) instead of vfork(2).
  • Improve error reporting for 'alter', 'altermod' and various other commands.
  • Include error messages for continuation and .include lines in 'listing' display.
  • Add HiSIM2 mosfet device (version 2.8.0) as level 61.
  • Update BSIM4 device to version 4.8.0 of model.
  • Update BSIM4 SOI device to version 4.3.1 of model.
  • Update HiSIM-HV device model to version 2.2.0 of model.
  • Improve parsing of expressions involving the comma operator, e.g. 'let z = 1,2'.
  • Improve naming of temporary files to ensure uniqueness.
  • Add warning when 'tran' analysis does not specify a TMAX value larger than (TSTOP - TSTART)
  • Bugs fixed:
  • Crash when subcircuit definition is empty.
  • Crash when 'alter' is invoked with complex arguments.
  • Crash when 'tran' analysis TMAX value is smaller than (TSTOP - TSTART)
  • Crash when 'rspice' command is invoked.
  • Convert line-breaks in the 'news' file from CR to LF.
  • Back-quote evaluation can be interrupted with Command-., etc.
  • Unreliable detection of duplicate subcircuit instances.
  • Some small memory leaks.
  • Behavior of 'aspice' command.

New in MacSpice 3.1.11 (Apr 18, 2016)

  • Enhancements:
  • Improve the way interpolation handles NaN values.
  • Bugs fixed:
  • Crash when redirection has more than one argument.
  • Behavior of 'noprintscale' setting.

New in MacSpice 3.1.10 (Feb 26, 2016)

  • Enhancements:
  • Warning when subcircuit has empty definition.
  • Bugs fixed:
  • Crash when subcircuit has empty definition.
  • Self-update mechanism secured against MITM vulnerability.

New in MacSpice 3.1.9 (Jan 4, 2016)

  • Bug Fixes:
  • Compatibility with Bug-reporter-v04.
  • Crash when using 'compose' command create linear vectors.

New in MacSpice 3.1.8 (Dec 7, 2015)

  • Enhancements:
  • Improves appearance of plots of saw-tooth waveforms by limiting the mitre extent at joins.
  • Bug Fixes:
  • Text layout for 'About..' window.'.
  • Behaviour of 'xcompress' modifier for the 'plot' command.
  • Command 'gather' command copies all mapped values when the map vector is shorter than the source.
  • Command 'applescript' stores the return value(s) in the '-r' argument.

New in MacSpice 3.1.6 (Oct 6, 2015)

  • Bug Fixes:
  • Smoothing for graphs of vectors with many points.
  • Distortion analysis scales are correctly assigned log/lin scale types.
  • Distortion analysis evaluation of some partial derivatives.
  • Parsing of paths containing multibyte characters.

New in MacSpice 3.1.5 (Jul 16, 2015)

  • Enhancements:
  • Update const values to CODATA (2014) values.
  • Issue error message when '.ends' argument does not match open sub circuit definition.
  • Improved diagnostic messages when creating/populating application support directory fails.
  • Add www.macspice.com to NSExceptionDomains to overide ATS defaults for OS X 10.11.
  • Minor improvements to the crash reporter facility.
  • Bug Fixes:
  • Symbol positioning on pointplots improved.
  • Colour PostScript hardcopy pointplots now have coloured points.

New in MacSpice 3.1.4 (Jun 1, 2015)

  • Cured crash when invalid i/o redirection is appended to commands.

New in MacSpice 3.1.3 (May 18, 2015)

  • Enhancements:
  • Error message for invalid 'reshape' dimensions.
  • Crash reports include last front-end command.
  • Bug Fixes:
  • Process receives 'do script' AppleEvents without waiting for extra carriage returns.
  • An expression involving semicolons and multiple syntax errors no longer causes crashes.
  • Comparison for inequality with complex values is made correctly.

New in MacSpice 3f5 3.1.2 (Jan 27, 2015)

  • Enhancements: Improved behaviour when errors are detected during subcircuit expansion. [Build 303]
  • Bug Fixes: Corrected text positions for default hardcopy device (plot5).•Cured crash when a solitary '#' as a command.

New in MacSpice 3f5 3.1.1 (Dec 30, 2014)

  • Enhancements:
  • The 'hardcopy' command now has an option to emit SVG.
  • Bug Fixes:
  • Quartz driver now uses linestyle2 correctly when a single curve is being plotted.
  • Icon for help book updated.
  • Fixed leak in 'hardcopy' demand, which also now displays the final curve.
  • Traditional 'scalar' pole-zero analysis now creates scalars, not single-element vectors.

New in MacSpice 3f5 3.1.0 (Dec 15, 2014)

  • Enhancements:
  • Universal binary gives choice of 64- or 32-bit mode execution.
  • Refactored using Cocoa framework with separate threads for GUI and Spice engine.
  • Updated interface, including:
  • 'New' and 'Open Recent..' File menu items.
  • 'Format' menu for setting font and linewidth properties.
  • Preferences panel with settings that include:
  • default directory;
  • 'Repeat' or 'Accent Menu' behaviour when keys are held down;
  • console text and background colours;
  • graph background and anti-background colours;
  • external editor helper-application;
  • default folder;
  • enabling/controlling opening of HFS+ filepaths to assist with backwards compatability with MacSpice 2 scripts;
  • automatic checks for updates;
  • Improved graphs:
  • rendered with Quartz instead of QuickDraw;
  • simplified cursor modifiers;
  • new legend layout algorithm;
  • units displayed with axis labels;
  • line thickness factors and dash patterns used for various parts of graphs can be modified by setting the 'linestyleN' variables.
  • unicode symols (even those represented by composed character sequences) for the $pointchars variable used by 'pointplot' plots;
  • high-precision placement of symbols on pointplot graphs.
  • GUI:
  • Cocoa-style command-completion. (Type the ESC or F5 keys to use this.)
  • Console text and graphs now act as sources for drag-and-drop actions.
  • Added Reverse Graphs item to Window menu. This reverses the order of non-miniaturized graph windows, this is useful when the default most-recent0n-top order is inappropriate, e.g. when reviewing the results of scripts that produce several graphs.
  • Confirmation dialog to prevent accidental loss of work if MacSpice is asked to quit while a script is running or when there is unsaved data.
  • Add a "Don't sleep while processing" checkbox to the Preference Panel also define 'nosleep' variable. These allow control of whether OS X 'idle sleep' is deferred while scripts are running.
  • Improved AppleScript support.
  • Dragging files and folders to the console pastes their path.
  • Improved text systems, including
  • Unix-style filepaths instead of HFS+ paths.
  • Compatibility with the Unicode character-set and utf-8 encoding.
  • Improved simulation engine and command line interpreter, e.g.:
  • Improve handling of low- and no-memory error conditions.
  • Improve accuracy of rusage memory report.

New in MacSpice 3f5 2.10.37 (Sep 29, 2014)

  • Enhancements:
  • Vector types behave more consistently and their units, if any, are now shown by the 'let' and 'display' commands.
  • Vectors with angular types remember whether their units are degrees or radians.
  • Evaluation of tanh() function derivative for small arguments in B-source device.
  • Improved warning/error messages issued when conditional statement arguments have invalid values.
  • Bugs fixed:
  • The scale created by 'linearize' has valid dimensions.
  • Unsetting 'maxord' returns the default order to 2.

New in MacSpice 3f5 2.10.36 (Aug 26, 2014)

  • Enhancements:
  • New 'hybrid' vector type. Vectors of this type are created when when operators are applied to pairs of vectors with incompatible units, e.g. the result of adding a voltage to a current.
  • New 'scatter' and 'gather' commands for vector-processing.
  • Binary operators have improved performance and handle 'array' operands consistently.
  • Improved 'sortorder()' performance.
  • Improvements to the 'compose' command.
  • New 'pzmaxfreq' variable can be set to limit the range of frequencies searched by pole-zero analysis.
  • The pz analysis now has an argument 'vector' that puts the poles and zeros found into vector lists, instead of giving each its own scalar value.
  • Generalise the variable evaluation syntax so that '$?&foo' can be used to test whether the vector foo is available.
  • Minor improvement to appearance of 'print col' tables.
  • The output of the 'set', 'define' and 'display' commands has improved layout and formatting.
  • User defined functions evaluate their arguments in a more efficient manner.
  • Units are evaluated in more cases.
  • Improved memory management.
  • Some warning messages clarified.
  • Bugs fixed:
  • Correct selection of result type by semi-colon operator.
  • Assigning into a subrange does not change the type of the owner-vector.
  • The expression '3.14e-2p' should be evaluate to 3.14e-2 not 3.14e-15.
  • Assignment doesn't reshape LHS ...' warning prints the dimensions instead of the length.
  • Empty the hash-table for deleted symbols in a timely manner.
  • Memory leak when history substitution fails with an error.
  • Vectors created by analyses now have non-null dimensions.
  • Issues with 'print all' and 'let ALL = ...' when there were zero or one vectors in the active plot.
  • The integral() and deriv() functions return vectors with appropriate types.
  • Crash when user defined function evaluates complicated functions of vectors with scale-subrange modifiers.

New in MacSpice 3f5 2.10.35 (Jul 29, 2014)

  • Enhancements:
  • New frontend variable '$processor'.
  • Graph layout:
  • handling of cases whent there are more than four labels in the legend;
  • improved formatting of units and labels for axes.
  • Better detection of syntax errors in variable expressions.
  • Bugs fixed:
  • Evaluation of variable expressions of the form ${$foo}.
  • Mixed case vector names are not lower-cased for printing, etc.
  • Functions of vectors have a linear grid-type.
  • Stop Smith plots modifying the vectors being plotted.
  • Crash when '*' is the first character returned from a back-qupte evaluation'
  • The 'deftype' command overwriting the default 'temperature' definition.

New in MacSpice 3f5 2.10.33 (May 21, 2013)

  • Enhancements:
  • New 'assert condition' command to abort script execution unless the condition is true.
  • New qualifiers for 'end' statements have been implemented: 'end if', 'end while', etc.. These reduce the likelihood of programming errors by checking that blocks in scripts are well-formed.
  • Expression evaluation errors in scripts now include line location information.
  • The console window now moves behind all open graph windows when any one of these is selected. Graphs can now be reviewed and closed using command-W without needing mouse-clicks.
  • New warnings/errors, including for:
  • attempts to transpose a scalar or one-dimensional vector;
  • 'let x = y' when the dimensions of x and y differ;
  • calling maximum(), minimum() or sortorder() with complex arguments.
  • Bugs fixed:
  • Scripts with redirected input/output can now be interrupted with command-. or ctl-C.
  • Functions maximum(), minimum() and sortorder() fixed to reject complex arguments.
  • Stride error fixed in hash() on PPC architectures.
  • Fixed hash() command for vectors on PPC processors.
  • Eliminated initial (pointless) evaluation of 'dowhile' condition.
  • The 'interpolate()' function now handles array arguments and creates vectors that don't trigger 'inconsistent dimensions' warnings.

New in MacSpice 3f5 2.10.32 (May 9, 2013)

  • Enhancements:
  • Improve performance and consistency of 'and', 'or' and 'not' operators for expressions involving complex and/or NaN values.
  • New warnings for conditional statements (if/while/dowhile) with ambiguous values.
  • Modifiy relative precedence of the 'not' and ',' operators so that 'not 1 , not 2' is parsed as '(not 1),(not 2)' instead of 'not(1,not(2))'.
  • Bugs fixed:
  • Fixed crash affecting 2.10.31 when parsing certain types of invalid expressions.
  • Fixed incorrect evaluation of boolean expressions involving complex variables.
  • Complex values with both NaN and Inf parts are now interpreted as 'true' in logical expressions. [Build 264]

New in MacSpice 3f5 2.10.31 (Apr 29, 2013)

  • Enhancements:
  • New 'wrap()' function for phase to complement existing 'unwrap()' function.
  • New 'hash()' function.
  • New 'transpose()' function and improve performance of the existing 'transpose' command.
  • The parser is now better at deciding whether, for example, 'ne' is referring to the 'not equals' operator or a vector (unwisely) named 'ne'.
  • '.IC' and '.NODESET' statements inside subcircuit definitions are now expanded so they are interpreted as referring to the local nodes.
  • Enhance the 'maximum()', 'minimum()', mean() and sortorder() functions so they work correctly and consistently with matrix arguments.
  • The distinction between a scalar and a single-element vector is maintained in a more consistent fashion. e.g. 'vector(20)[12,12]' is a single element vector, whereas 'vector(20)[12]' is a scalar. (This makes some types of script simpler to write.)
  • The temporary memory required by the sortorder() function has been reduced.
  • Treat an attempt to 'unlet' a vector element as an error.' [Build 260]
  • Bugs fixed:
  • Improved behaviour of '.IC' statements when 'uic' is not specified for the tran analysis.
  • Fixed crash triggered the second time an analysis is run when the netlist contains an '.IC' statement referring to a non-existent node.
  • Fixed the 'rusage' command for cases when memory usage exceeds ~2GB.
  • Fixed crash caused when invalid syntax is used to specify a user-defined function.
  • Improve behaviour when warnings are issued during expression evaluation. [Build 260]
  • Fix backwards-compatibility issue by reverting to previous definitions for max() and min() macros. [Build 261]

New in MacSpice 3f5 2.10.30 (Feb 25, 2013)

  • Enhancements:
  • URC model modified so that K = 1.0 is an acceptable value for the proportionality constant.
  • Functions vector(1) and unitvec(1) now return a 1-element vector, not a scalar.
  • Transition to building with Xcode 4.6.
  • The 'define' command now works in a more intuitive way and has additional error detection and messages.
  • Modify values in the const plot to match CODATA 2010 recommendations.
  • Bugs fixed:
  • Crash when 'load' is used to load an invalid rawfile.
  • Crash when 'disto' analysis has invalid parameters.
  • Crash when 'numdgt' is unset after being assigned an invalid (string) type.
  • Crash when scriptspath is invalid in spinit.
  • Missing end-line for optimiser warning message.
  • Overhaul alias evaluation in attempt to fix obscure crash.

New in MacSpice 3f5 2.10.29 (Nov 28, 2011)

  • Enhancements:
  • Errors and warning messages generated by scripts now attempt to identify the location of the line that caused them.
  • Blocks with missing end statements now generate warning messages.
  • Vectors with one element are no longer automatically converted to scalars.
  • Command line interpreter now evaluates variables of the form ${foo}
  • Improve 'load' command so that invalid rawfiles are less likely to cause hangs/crashes.
  • Bugs fixed:
  • Modify behaviour of 'set' command so it creates a string variable in cases like 'set foo = "123 abc"'
  • Fixed a potential crash when expressions like {$foo} are evaluated if more than 1GB of memory is reserved.
  • Fix crash when 'plot' is followed by no arguments and two carriage returns.
  • Fix crash when an 'else' block is empty.
  • Fix crash in gr_pmsg() during iplot runs.

New in MacSpice 3f5 2.10.28 (Apr 26, 2011)

  • Enhancements:
  • Improved error messages if OP/DC-sweep fail to converge.
  • The polyfit function has been made more robust.
  • Detect and warn about ambiguous expressions like '-x^2'.
  • Improve accuracy of frequency points used for AC and noise analyses.
  • Changes to the 'history' variable now take place immediately.
  • Improve behaviour of 'plot' command when vectors have extreme or infinite values.
  • Bugs fixed:
  • Behaviour of the 'appendwrite' setting.
  • Crash when 'alter' is used to set real types to complex values.
  • Detect non-monatonic PWL at an earlier stage.
  • Fix potential crash in variable evaluation.
  • Modify code for CLI lexer so it uses the dynamicbuffs library.
  • Crash when accessing vector elements via an invalid range.

New in MacSpice 3f5 2.10.27 (Jan 2, 2011)

  • Enhancements:
  • Improvements to reporting of errors and warnings.
  • Using a vector as the condition for a while/dowhile/if statement will trigger a warning if some elements are zero and others are not.
  • Additional checks (number of function parameters) for independent voltage/current sources.
  • Detection of duplicate instances of subcircuits.
  • Improved parsing of resistor devices with missing values/models.
  • Improved autoscaling for graphs for various (commonly encountered) special cases.
  • Bugs fixed:
  • Cured crashes when:
  • backquoted commands return an error;
  • obscure syntax error in 'B' device function specification;
  • first hardcopy is 'hardcopy foo.ps sameplot';
  • 'tf' is the first analysis applied to a circuit containing '.nodeset' instructions;
  • independent source function has fewer than two parameters;
  • 'spec' command called with invalid frequency step.
  • Improved choice of axis limits near edge-cases for log graphs.
  • Improved automatic scale select for the y-axis of a graph so that only values within the xlimit range (if specified) are considered.
  • Fixed 'print' command display when argument contained a '%' symbol.
  • Fixed some small memory leaks.

New in MacSpice 3f5 2.10.26 (Sep 2, 2010)

  • Enhancements:
  • New frontend discrete Fourier transform functions fft() and ifft().
  • Most word-length and line-length restrictions are now removed.
  • Improved parameter range-check warnings for front-end functions.
  • Improved cost-function leak-detection in 'optimize' command.
  • Crash-reporter updated to work with OS X 10.6
  • Bugs fixed:
  • Build 222 refused to launch on OS X 10.4.11.
  • Reporting of errors when installing an update.
  • Restored values for optimize 'step' parameters to their 2.10.23 defaults.
  • Unitialized variables in several semiconductor models.
  • Memory leaks:
  • when an AC analysis was performed on a circuit constaining 'B' sources;
  • when blank lines were typed at the console.
  • A potential crash when blank lines were typed at the console.
  • Handling of '}' by frontend parser.

New in MacSpice 3f5 2.10.25 (May 10, 2010)

  • Bugs fixed:
  • Issue with 'sens' analyses affecting version 2.10.24 fixed.
  • Include statements in netlists now handle quoted spaces in filenames correctly.

New in MacSpice 3f5 2.10.24 (Apr 10, 2010)

  • Enhancements:
  • Dialogs to save windows as PICT files are now window-modal and accept long filenames.
  • Improvements to speed and accuracy of the spec command.
  • Additional helpful error detection and messages.
  • Improvements to handling of 'vs' when parsing 'plot' commands.
  • Improvements to the way sources set breakpoints and validate parameters.
  • Minor improvements to the op solution code.
  • Minor improvement fourier command.
  • Improvements to memory management performance.
  • Extra internal checks for memory integrity.
  • Bugs fixed:
  • Reporting of 'ib' by mos[236] devices.
  • The reset and fourier commands no longer leak memory.
  • fourier and linearize no longer give errors after a 'tran' has been interrupted.
  • Specification of PW = 0 in current/voltage sources of type 'pulse' is permitted.
  • Evaluation of '$foo[4-xxx]' now (correctly) returns an error.
  • Evaluation of 'foreach foo "$&K"' now strips the '"' characters.
  • Comb-plots with points outside grid area now display correctly.
  • MESFET model no longer ignores 'off' flag.
  • Calculation of not(z) corrected for case when z is complex.
  • Fixed null-dereferences in coupled transmission line (CPL) model.
  • Cured crash when a single ';' is typed at command line.
  • Cured rare crash when user defined function is re/undefined.
  • Cured rare start-up crash on multiprocessor machines.

New in MacSpice 3f5 2.10.23 (Feb 1, 2010)

  • Enhancements:
  • Upgrade BSIMSOI4 to versiom 4.3 (level=11).
  • Bugs fixed:
  • Vectors created by interpolate() now have units set to match those of the argument.
  • Fixed special case when log-grid failed to draw.
  • Install HiSIM_HV 1.2.0 Bugfix 05-Dec-2009.

New in MacSpice 3f5 2.10.22 (Nov 29, 2009)

  • Enhancements:
  • HiSIM_HV model updated to version 1.2.0 (level=62).
  • Improved convergence for some types of 'B' source devices.
  • Improved tick label format for linear graph axes when 'xdelta' and/or 'ydelta' are specified.
  • Spice-2 'poly' sources accept node names containing symbols like '+' and '-'.
  • New warning for netlist lines that are ignored because they have leading whitespace.
  • Bugs fixed:
  • Explicit 'save all' is not deleted by subsequent 'save' statements.
  • Evaluating '@v1[coeffs]' no longer crashes if 'coeffs' is an empty list.
  • Typing a single '$' at the command line no longer causes a freeze.

New in MacSpice 3f5 2.10.20 (Jul 14, 2009)

  • Enhancements:
  • Improvements to behaviour and layout of graphs with log axes.
  • An 'unwrap()' function for phase vectors.
  • Sophisticated consistency checks and warnings for groups of mutual inductors.
  • The 'unlet' command now accepts the 'all' wildcard unless the current plot is the 'const' plot.
  • Bugs fixed:
  • The 'xlog' and 'ylog' arguments for the 'plot' command are no longer mutually exclusive.
  • Syntax errors in '.noise' cards no longer cause a crash.
  • Functions such as length() no longer return a vector with invalid dimensions when given a multi-dimensional argument.
  • The 'compose' command now generates a uniform distribution on [0,1) instead of [0,2).
  • Cured crash when an RTF file with '.include' statements is accidentally used as source.

New in MacSpice 3f5 2.10.19 (May 22, 2009)

  • Enhancements:
  • Install model BSIMSOI version 4.1;
  • Improvements to the behaviour of the plot command ant its documentation documentation.
  • Bugs fixed:
  • Using 'alter' to change the value of a vector parameter more than once no longer causes a crash.
  • Corrected behaviour of polar plots.

New in MacSpice 3f5 2.10.18 (Apr 9, 2009)

  • The 'reshape' command now parses dimensions more tolerantly.
  • Rationalised handling of expressions like 'v(1a)' by the command-line interpreter.

New in MacSpice 3f5 2.10.17 (Mar 31, 2009)

  • Enhancements:
  • BSIM4 version is now 4.6.3.
  • Improved error/warning reporting for bad subcircuit definitions.
  • Self-update system displays the build number if necessary.
  • Bugs fixed:
  • Crash after .include failed to expand tilde expressions.
  • Crash due to font problems at launch.
  • Crash when plotting a complex vector with length shorter than other vectors being plotted.
  • Memory leak in subcircuit expansion code eliminated.

New in MacSpice 3f5 2.10.16 (Mar 2, 2009)

  • Improved detection of errors and warnings for:
  • Duplicate subcircuit definitions.
  • Subcircuit definitions with invalid (non-unique) external node names.
  • Duplicate model definitions.
  • Non-ascii characters in node, model and subcircuit names.
  • Cosmetic improvements to error message display and console paging mechanism.
  • Bugs fixed:
  • Model names can now include the characters '+' and '-'.
  • Unmatched brackets in netlists should no longer cause a crash.
  • Crash reporting mechanism modified to work with OS X 10.5.

New in MacSpice 3f5 2.10.15 (Feb 4, 2009)

  • Enhancements:
  • O(N2) algorithm used to set-up structures for saving analysis results replaced with O(N) method.
  • Pre-defined vectors in constant plot updated to CODATA (2006) recommended values.
  • Secure self-update mechanism by checking that the downloaded image has a valid DSA signature before proceeding with installation.
  • The way files are assigned creators and types has been improved.
  • Bugs fixed:
  • Cured leak when plot command prompts for missing arguments.
  • Cured crash when asciiplot is used to display a nearly constant value.
  • Corrected the value of the pre-defined value of 'e' in the constant plot. It is now correct to 16 significant figures, instead of 12.
  • Eliminated an undefined NSDocumentController/CFBundleTypeRole warning (OS X 10.5 only).

New in MacSpice 3f5 2.10.14 (Oct 7, 2008)

  • Graph cursors behave better.
  • AC Sensitivity analysis now positions grid points accurately and can resume after interruption.
  • Improved pole/zero analysis - negligible complex components are rounded to zero.
  • Vectors use memory more efficiently.
  • Better frontend performance when large numbers of vectors are in existence.
  • The big_endian/little_endian flag is now implemented for rawfiles written in batch mode.
  • Case-insensitive string comparisons are performed faster.
  • A warning is now issued when breakpoints are being ignored, e.g. because pulse rise-times are shorter than the value of MINBREAK.
  • var_free() and ctl_free() procedures re-coded to avoid potential stack overflow in extreme cases.
  • Improved display of mutual inductance parameters by 'show'.
  • Improved numerical stability of interpolate() frontend function.
  • Improved 'rusage' statistics for interrupted transient simulations.
  • Improved default behaviour of 'xd' and 'alpha' parameters for MOS3 devices.
  • 'shift' no longer causes a crash when it is given invalid arguments.
  • 'goto $foo' when $foo has no value no longer crashes.
  • Cured potential history list corruption when 'set history = 0' is used.
  • Cured some minor memory leaks occurring during:
  • conversion of circuit parameters to vectors;
  • destruction of parse nodes referring to user-defined functions;
  • tokenization of models with zero-length parameters.
  • AC sensitivity analysis now works with non-linear devices.
  • Correct evaluation of lists containing empty lists.
  • Variables 'numdgt' and 'rawprec' now unset at the first attempt.

New in MacSpice 3f5 2.10.13 (Aug 12, 2008)

  • Frontend 'hardcopy' command now generates working plot(5) code.
  • Various issues with the 'write' and 'load' commands.
  • Vector basename extraction now works as originally intended.
  • Print commands of the form 'print v(tran2.x)' now work correctly.

New in MacSpice 3f5 2.10.12 (Aug 4, 2008)

  • Enhancements: Frontend 'let' command is faster and manages memory more economically.
  • Bugs fixed: Frontend 'hardcopy' command now generates working plot(5) code.

New in MacSpice 3f5 2.10.11 (Jul 28, 2008)

  • Control structures now glob expressions during evaluation.
  • AC analyses no longer create frequency scales comprising complex values.
  • Improved statistical properties of random number generators used by rnd() and 'compose'.
  • Repairs to the interpolate() frontend function.
  • Reduce number of cases where 'Not enough space to perform Paste' errors may occur.
  • The distribution of numbers produced by rnd(n) is now uniform for values of n that are not powers of 2.

New in MacSpice 3f5 2.10.10 (Jul 22, 2008)

  • Cured crash in frontend function interpolate() which occurred when the old and new scales were of differing lengths.
  • Cured intermittent crash due to memory error when an attempt was made to 'alter' a non-existent entity.

New in MacSpice 3f5 2.10.09 (May 26, 2008)

  • Eliminated a potential cause of intermittent stalls and unexpected exits.
  • Removed buffer-overflow vulnerabilities in the console code.
  • No longer crashes when non-editable text is selected in console and certain non-ascii characters are typed.
  • Frontend function abs(-0) now returns 0 not -0.

New in MacSpice 3f5 2.10.08 (May 14, 2008)

  • Enhancements:
  • Improved accuracy of noise analysis in extreme circumstances.
  • Diagnostic messages made more informative, e.g. for missing models.
  • Filenames specified for i/o redirection are now quote-stripped.
  • Handling of invalid sourcefiles containing junk binary has been made more robust.
  • The plot keyword 'vs' inhibits flyback-line removal in graphs.
  • Minor improvements to implementation of TXL/CPL devices.
  • Bugs fixed:
  • Crash reporter dialog now transmits data more reliably.
  • Number of repeat-loop iterations is now evaluated immediately before loop is run, not when the script is parsed.
  • Several potential crashes when large random binary files are used as source have been fixed.
  • HParamBlockRec structures used in __close() are now explicitly zeroed.
  • Nodesets used with a non-default filename now works as expected.
  • Potential crash when adding filename to new circuit struture fixed.
  • When frontend evaluates conditional statements it no longer causes intermittent memory corruption.
  • Command completion now works with plots produced by the 'spec' analysis.
  • Destroying plots but leaving graphs open no longer crashes.
  • The command 'compose x values (1,2) 3' no longer crashes.

New in MacSpice 3f5 2.10.06 (Mar 14, 2008)

  • CPL/TXL transmission line models with errors now behave better.
  • Improvements to self-update facility.
  • Improvements to crash reporting facility.
  • Minor improvements to website documentation.
  • 'Altermod' no longer sometimes tries to change wrong parameter.

New in MacSpice 3f5 2.10.05 (Mar 3, 2008)

  • Improved scaling and behaviour of linear graph axes.
  • Matching of device names and model names is now insensitive to case.
  • Most devices now use the instance temperature when calculating noise.
  • Minor improvements to website documentation.
  • Variable 'numdgt' can now be set on the .options line.
  • Behaviour of TNOM in mos6 devices is now correct.
  • Informative error messages are now given (instead of crashing) when mos3 read-only parameters are written.
  • Reading certain obscure mos1 parameter values before running an analysis no longer causes a crash.

New in MacSpice 3f5 2.10.04 (Feb 11, 2008)

  • Enhancements:
  • TXL lossy transmission line device (from KSpice).
  • Detection of, and one-click reporting for, recent crash logs.
  • Improved manner in which gmin is applied to mos{1,2,3,6} devices when Vbd = 0 and/or Vbs = 0.
  • Linear graphs behave better in extreme circumstances and/or when xdelta/ydelta are specified.
  • AC analyses now work with very narrow frequency ranges, and can be interupted/resumed.
  • Bugs fixed:
  • Crash when netlist line starts with letter 'p'.
  • Missing value for 'ifail' in optimizer failure report.
  • Incorrect 'minimum system version' value in package plist.
  • Type of vectors sufixed with #i1 or #i2 should be 'current'.
  • Problem using 'load; to create vectors introduced in version 2.10.01.
  • Graphs sometimes need resizing before colours are correct.
  • Ticks on linear graphs created with xdelta/ydelta keywords are labelled wrongly.