New in version 2.5.2: Added support for displaying multiple instances of an object, with different parameters, on the same library page. This lets xcircuit conveniently handle multiple gates in a single package, such as 7400-series chips, for purposes of PCB netlisting.
New in version 2.5.1: Added support for numerical parameters. The object comparison routines have been cleaned up to prevent propagating appended underscores (a real bugaboo), and the XCircuit copyright has been recast to GPL (it's about time).
New in version 2.4.0: Should be mostly transparent to the end user. Fine rotations of +/- 1 degree are allowed; the behavior of some menu options (delete, unselect, copy, edit rotate) was changed to be consistent with others. Other internal changes should hopefully (?) overcome problems with unreadable X resources and timeout conflicts with the X server.
New in version 2.3.6: Filename filtering in the file list window. Flag added to pin label properties to allow a pin label to be seen outside of the object. "Edit-in-place" capability added (shows objects in the hierarchy above the edit object).
New in version 2.3.5: Some bug fixes to the netlist code, and more extensions of the Python interpreter interface. Improved handling of backup (crash) files, including saving a backup after x number of changes as well as after a lengthy (10-minute) timeout, saving library object changes in the crash file, and recovering separate multiple-page files without destroying the original file and page names. Added a method to track unsaved changes and prompt before exit.
New in version 2.3.4: Autoconf rewritten for Mac OS/X (Darwin) compile. Netlist output from xcircuit directly into Python is possible, but Python scripts to interpret the mess that comes out are not finished. Revision 2 fixed some errors with drawing modes introduced by the expanded key binding functionality, and improves the crash file mechanism (in particular, so that it is impossible to load a non-crash file when prompted for recovery, and the temporary file name is replaced by the original file name).
The change from 2.3.3 to 2.3.5 reflects a number of bug fixes and a slew of enhancements. Most of the enhancements are extensions of the Python interface, although the significant enhancement which prompted the change to subversion 2.3.5 was the handling of temporary files and checking for unsaved changes before exiting.
Changes from 2.3.2 to 2.3.3 include corrections to netlist compilation in PCB format. In addition, the library parts list has been updated to a style which facilitates PCB netlisting for board-level components such as resistors, capacitors, inductors, and such. The syntax for "info labels" has been expanded to include parameters with default string "?" being parsed as equivalent to "%i". Device index numbers generated by "%i" are now numbered relative to the component type, not simply incremented for each component found in the object.
A major change is the switch from "imake" to GNU "automake" for the compile sequence. Autoconf is good for dealing with system-dependent things. The use of ghostscript as a rendering engine, the use of XPM (which is not standard on many systems), and the use of Python (which goes through changes about as rapidly as xcircuit, so it keeps changing versions) means that what once used to be a simple "xmkmf; make" process now requires significant amounts of staring at the Imakefile and figuring out just what exactly is on your system. The GNU make requires the alternate sequence of "./configure; make" which is supposed to find things like Python and XPM on the system and build the Makefile accordingly. It may take a few versions to get the details ironed out; meanwhile, the Imakefile is still in the distribution as a backup.
The change from minor version 2 to minor version 3 was prompted by a change in the output syntax for labels in conjunction with changes mentioned below. Problems arising from compatibility issues between 2.3 and earlier versions were ironed out between the original 2.3 release and 2.3.2.
The netlisting routines have been thoroughly overhauled and tested against "torture test" schematics. Most changes in this version are structural (that is, transparent to the end-user), but some changes to the way labels are done will be noticeable, including the addition of tab stops and tab forward/backward, the timely demise of the embedded backspace character (effectively rendered obsolete by the use of backward-tabbing), and better reporting of embedded non-printable characters when editing a label string.
The switch to linked-lists for internally describing the structure of label strings should make versions since 2.2.3 compile on some systems (most notably recent versions of RedHat) which parse pointer arithmetic strangely and caused crashes when dealing with parameterized objects in earlier versions. More testing in conjunction with the tutorial section on schematic capture and PCB led to bug fixes in code dealing with parameters. Current version 2.3.2 is probably fairly close to a new stable release.
New in 2.2.1 and 2.2.2 are assignable key and mouse button bindings. The command-line scripting language functions "bind" and "unbind" (available both in Python and the original xcircuit scripting language) allow complete reassignment of key and button macros, so users can maintain some level of compatibility with other commonly-used CAD tools.
Version 2.2.0 is the first distribution in which the schematic capture system is considered stable and (as far as now known) error-free. There have been some changes made between versions 2.1 and 2.2, so those users who have not updated should do so. Some of the newer features have been exercised only marginally, and the adventurous are forewarned to use caution and save often.
In addition to the schematic capture, Xcircuit has a number of new features, foremost among them the capability to pass parameters to objects. Currently, only string parameters can be created/removed/edited, but later I will be adding support for integer parameters (such as the position of points and lines, or the position/rotation/justification of text).
Because the schematic capture system is somewhat more difficult to use than the drawing part of the program, there is a second tutorial, the Schematic Capture Tutorial. This teaches the basics of SPICE, sim, and pcb netlist generation: Use of parameterized strings, pin and information labels, schematics vs. symbols, and multi-page files.
Version 2.5.3 fixes an unintended ``feature'' of the renderer, so that now changes made in the output dialog box (page scale and orientation) will not alter the position of the xcircuit part of the file relative to the background. Comments made about not changing the output scale from 1.0 no longer apply (January 30, 2002).
If you are interested in being an xcircuit developer, please contact me, and you can be added to the developer's list on SourceForge.
Currently, the CVS repository is set up on SourceForge, but the web page and download area are still at bach.ece.jhu.edu. This state may remain for a while.
If you have portability problems (or preferably solutions!) please send me e-mail.
These problems appear to have been related to use of deprecated X11 calls, and it appears that this has been fixed the right way since version 2.3.something. Some other strange bugs like sudden screen blanking were related and have also been fixed. The perennial problem of black-on-black menus has been corrected by switching to a different method of resource management, and the X defaults file is no longer necessary (it remains in the installation but does not install in the root filesystem under the X11R6 app-defaults directory).
Back to the xcircuit home page. . .
email: tim@bach.ece.jhu.edu