Logisim 2.2.0 to 2.4.0 release history

Most recent releases
2.5.0 to 2.6.2
2.2.0 to 2.4.0
2.1.0 to 2.1.8
2.0.0 to 2.0.6
2.0 Beta 1 to 2.0.0
0.3 to 1.09c

Version 2.4.0 (30 July 2010)

  • Feature: Added a Russian translation of the internal strings, contributed by Ilia Lilov, a student at Moscow State University of Printing Arts.

  • Feature: Added the "-tty" and "-sub" command-line options to provide basic support for scripted verification.

  • Behavioral change: The AND/OR/NAND/NOR gates now have a very different behavior when any inputs are error or floating: They are short-circuited, so that 0 AND X is 0 (and 1 OR X is 1). Inputs are ignored only if they are unconnected and the user has not selected the "Error for undefined inputs" option (in the Simulate tab under Project > Options). Also, if all inputs are left unconnected, the output is the error output.

    (This is meant to address oscillation problems when building a simple latch with two NAND or NOR gates. Thanks very much to Brandon Whitehead, a teaching assistant at Georgia Tech University, who worked hard to identify the problem and experiment with ways to address it.)

  • Behavioral change: Similarly, for XOR/XNOR/Even Parity/Odd Parity, inputs are ignored only if they are unconnected and the user has not selected the "Error for undefined inputs" option (in the Simulate tab under Project > Options). Also, if all inputs are left unconnected, the output is the error output.

  • Performance enhancement: The code for drawing the grid should be much faster on some platforms. It now creates an internal image for a block including several grid dots, and it paints that block so multiple dots are drawn at once.

  • Performance enhancement: The code for drawing the canvas is build so it is used much less frequently.

  • Bug fix: The language selected from the Logisim Preferences was not preserved between executions of the program.

  • Bug fix: In the Simulate menu, the 2048 and 4096 Hz tick frequency options did not work at all. Now they do (if your computer is fast enough and your circuit is simple enough that it can be managed!).

  • Bug fix: In combinational analysis, the "minimized" sum-of-products expression would erroneously choose terms that included more variables than necessary. While Logisim doesn't guarantee that the expression is truly optimal, it now is a bit smarter about looking for terms with as few variables as possible.

  • Bug fix: The Logging module would not work properly when the user selected an element that lies nested two or more levels deep within subcircuits.

  • Bug fix: When drawing the shaped versions of OR/NOR/XOR/XNOR gates facing south or west, the legs would be colored in the reverse order of their inputs.

  • Documentation fix: Many very minor fixes contributed by Ilia Lilov.

Version 2.3.5 (30 May 2010)

  • Bug fix: With the Edit Tool, if you selected a wire by clicking it and then dese lected it, then tried to add a new wire, it would actually add from the point wh ere the wire was selected.

  • Feature: With the Edit Tool, pressing backspace when nothing is in the selection will undo the most recent wiring action.

  • Feature: Added two more tick frequency options: 2048 and 4096 Hz.

Version 2.3.4 (1 Apr 2010)

  • Bug fix: Adding the Hex Digit Display component would cause an exception each time the circuit was redrawn, effectively disabling Logisim from usability.

  • Bug fix: Adding a component to the toolbar from a library other than Base or Gates and then saving would cause an exception, failing to save the project.

  • Bug fix: Single-clicking with the Wiring Tool and then moving the mouse would display ghost wires, as if clicking again would add the wires, but clicking again would simply start the ghost wires from another location. Now, the single-clicking the Wiring Tool still starts the ghost wires, but single-clicking again adds those drawn wires and then goes back to not drawing wires.

Version 2.3.3 (16 Mar 2010)

  • New feature: Circuits can have labels attached to them, which are drawn each time it is used as a subcircuit.

  • New feature: You can rename a circuit by editing its "Circuit Name" attribute (which was previously read-only).

  • Deleted feature: Because a circuit can be renamed through its attribute, the "Rename Circuit" item is dropped from the Project menu, the project toolbar, and the explorer's pop-up menu for circuits.

  • New feature: The Input/Output library's LED and 7-Segment Display components have an attribute configuring them to light when input is 0 (low).

  • New feature: The Memory library's Counter has a new "Action On Overflow" attribute for configuring what happens when the counter reaches its maximum (minimum if decrementing). The choices are to wrap around (what it did previously), to remain at the current value, to load the next value from the Data input, or to continue counting.

  • Bug fix: When changing the name of the viewed circuit, the window's title bar did not change to reflect the new circuit name.

  • Bug fix: After duplicating a subcircuit, you could press an arrow key to modify its facing, but the grab handles did not move accordingly.

  • Bug fix: When viewing a circuit from a loaded Logisim library, you were allowed to modify components within the circuit.

  • Bug fix: Changed the Memory library's Counter so its "Maximum Value" attribute is represented in hexadecimal. Previously, it would not accept negative values for this input, which led to problems with 32-bit counters.

  • Bug fix: The Memory library's Random Generator component was not at all random in the low-order bits. This new version, which shifts out those low-order bits, has been tested more thoroughly.

  • Bug fix: For the Memory library's Counter, the tool tip on the "Load" input referenced an "Enable" input, which is actually named the "Count" input.

  • Bug fix: Using the "Revert All To Template" button in the Project > Options... window would remove the Edit Tool from the toolbar, even if it existed in the template.

  • Bug fix: When the Combinational Analysis module generates a circuit, it inserts constants appropriately so that all inputs are defined for all gates. This way, the constructed circuit works correctly even when "Error for undefined inputs" is selected in the Project Options window.

  • Bug fix: Attributes for the Edit Tool and Select Tool were saved into the project file, though they were unimportant to reloading the project since these tools' attributes are simply based on the current selection.

  • Refactoring: Created a factory method for creating JFileChoosers, in an attempt to work around IOExceptions when a JFileChooser opens.

Version 2.3.2 (23 Nov 2009)

(All modifications in this release are based on patches submitted by Kevin Walsh of Cornell University. Thanks for the suggestions and patches! And don't blame him if they don't work: I made significant modifications to several patches, so it's probably my fault if they're broken.)

  • Feature: When drawing diagonally while adding wires, an L shape is formed, so two wires are added instead of just one. The direction of the first leg of the L is determined by the initial direction of the mouse's movement.

  • Feature: When zooming far out, the grid becomes dense and very dark. The grid is now drawn in light gray when the grid is very dense (but with every 5th row/column of grid points drawn in darker gray).

  • Bug fix: On some platforms, the canvas would gray out when a component was selected for addition, and it would not clear except for the component's location until the component was inserted.

  • Bug fix: In zooming in or out, the scroll bars were not recomputed based on the new zoom distance.

  • Bug fix: In zooming in or out, the location within the canvas would be lost.

  • Bug fix: On some platforms, the grid would not appear because of a technicality for how Logisim was trying to paint a single pixel (using drawLine rather than fillRect).

Version 2.3.1 (27 Jul 2009)

  • Bug fix: When modifying the attributes of an existing component so that additional ports appear (such as with a Priority Encoder), some of the component's old ports would sometimes persist, conflicting with the new ports.

  • Bug fix: Altered the Edit Tool so that when a wire is selected, dragging starting at it moves the wire rather than starts a new wire. One would need to deselect the wire in order to add a new wire.

  • Bug fix: If the user initiated the poke of a component and then removed the component before the poke was finished, an artifact of the poke would remain (such as the ball of the joystick or the red box for a register).

  • Bug fix: The Counter, Shift Register, and Random components would ignore their Trigger attribute, instead always using the default of Rising Edge.

  • Bug fix: The Random component would display out-of-range numbers when the Data Bits attribute is not a multiple of 4. (For instance, it might display "C" even though Data Bits is 3.)

  • Bug fix: For the TTY component, the component was not properly resized when the Rows or Columns attribute is changed.

  • Bug fix: If a component was deleted while the Edit Tool was hovering over one of the component's wiring points, the green wiring circle would remain even though a click would initiate a selection operation.

  • Bug fix: When the "Stretch wires when moving components" preference was selected, and a component was attached to something and also to a wire, and the component was moved along the wire, the connection to the component was lost.

  • Bug fix: When modifying an all-floating value to an all-floating value with a different bit width (such as when altering a component's bit width), an attached Probe would not update.

  • Bug fix: When the Label tool has been given text in one of its attributes, the text would not be redrawn properly as the mouse moves around the canvas.

Version 2.3.0 (3 Jul 2009)

Tool behavior

  • Feature: The selection tool and wiring tool are combined into a single "Edit Tool" where the behavior is identified by whether the mouse location is likely to be a starting point for a wire.

  • Feature: Added "Duplicate" to the Edit menu, which creates a copy of whatever is currently selected. It's like doing copy-then-paste, except it doesn't change the contents of the clipboard. The MenuKey-D shortcut executes this; also, when the Edit Tool is active, the Insert key executes this.

  • Feature: After adding an individual component, the program switches immediately to the Edit Tool with the just-added component selected. This is because after adding a component, the user will more often want to add wires or move things around than add additional copies of the component; however, the new Duplicate menu item (available with Insert or MenuKey-D) easily allows the user to continue making copies.

  • Feature: The automatic-switching behavior after adding new components can be turned off via the new Tools tab in the Preferences window. Also, the "Show Ghosts" configuration item has been moved from the project options window to the Tool tab in the application preferences window.

  • Feature: With the Edit Tool or Select Tool, attributes shared by all selected components are displayed, and changes to any value affects all selected components at once.

Built-in libraries

  • Feature: All built-in libraries (except Legacy) are now loaded by default. To accommodate this, the libraries were changed so that the Java classes implementing each individual component are not loaded until the user actually tries to place a component into the circuit. This reduces the damage to the startup speed.

  • Feature: New components have been added into the Plexers library (Priority Encoder), Arithmetic library (Shifter), and the Memory library (Counter, Shift Register, and Random - the last for iterating through a pseudorandom sequence).

  • Feature: The basic gates in Logisim have always ignored any floating inputs, to accommodate leaving some inputs unconnected. In reality, though, an unconnected or floating input leads to unpredictable gate behavior. The project options window now has an option allowing you to configure the gates to have an error output in such a situation.

  • Feature: The XOR and XNOR gates have an attribute allowing a user to configure how the gate will behave given three or more inputs: It can be on if exactly one of the inputs is one (the default, and the only option in previous versions of Logisim), or it can be on if an odd number of the inputs is 1.

  • Feature: The RAM component has an attribute allowing the user to select among three different interfaces for transferring data: the default one, which uses a single data port for both loading and storing data; an asynchronous alternative, where there is no clock input with storing (but still a single data line); and one that includes separate lines for the data associated with a store and with a load.

  • Feature: The Memory library's flip-flop and register components can now have labels associated with them. Also, these components include an Enable pin which, when zero, leads any clock triggers to be ignored.

  • Feature: There were several components that included attributes that could only be changed before the component was added into the circuit. Most of these attributes can now be changed. Affected components include the splitter (facing and fan-out attributes), the various gates in the Gates library (facing, size, and number of inputs), and the components of the plexers library (facing and number of select bits).

  • Bug fix: In changing an input pin from a three-state to a two-state pin, any floating values held by the pin are silently changed to zeroes in order to coerce the pin into a two-state pin.


  • API Change: A new package (com.cburch.logisim.instance) provides an API that dramatically simplifies the development of JAR libraries. The built-in Arithmetic, Plexers, Memory, and I/O libraries have been refactored to use it. (This reduced the number of lines in these libraries by about 19%! That's before adding the new components.)

  • Feature: Added the capacity to export PNG and JPEG files in addition to GIFs. The menu option Export As GIF... is renamed to Export Image....

  • Feature: For color attributes, the program uses ColorPicker by Jeremy Wood (https://colorchooser.dev.java.net/) rather than the clumsier JColorChooser - which also didn't allow configuring colors' opacity.

  • Feature: For font attributes, the program uses JFontChooser by Christos Bohoris (http://www.connectina.com/components/fontchooser.html) rather than the clumsier component that I had developed. One major benefit of this dialog is that it allows you to choose among all font families supported by your platform.

  • Bug fix: With multiple windows open, if a tool for adding a component was selected in one of the windows, that window would come on top as soon as the mouse moved over that window's canvas.

  • Bug fix: When a circuit is removed from the project while a tool for adding subcircuits is selected, a different tool is selected.

  • Bug fix: If, while viewing the state of a subcircuit, the parent circuit (or grandparent...) is deleted, then the viewed state is "detached" from that parent.

Version 2.2.0 (20 May 2009)

  • Feature: The I/O built-in library now contains components corresponding to a joystick, a keyboard, a hex-digit display, a LED matrix, and a dumb terminal (TTY).

  • Feature: In the Memory built-in library, the flip-flops and registers can be configured to change on negative edges or on high or low levels. (The T and JK flip-flops cannot be level-triggered.)

  • Feature: Added Move Circuit Up and Move Circuit Down options into the Project menu.

  • Feature: Added a toolbar above the explorer pane, allowing easy access to adding, renaming, moving, and deleting a circuit.

  • Feature: Added a view configuration bar below the attribute panel, allowing easy changes to the zoom factor and the show-grid option.

  • Feature: With the poke tool, when you click a wire segment, all connected wires are drawn in thick lines, so you can easily see where the wire leads.

  • Bug fix: A user could edit a circuit name in the Attribute Panel, but this had no effect. This attribute is now read-only.

  • Bug fix: When a JAR file was loaded, the file was never closed due to a shortcoming in the built-in libraries.

  • Bug fix: The icons corresponding to the existing components in the I/O built-in library did not have the appropriate transparency masks.

  • Bug fix: In rare circumstances, poking a component to change its value while the program was also busy with propagating signals through the circuit would lead to an exception. These are now significantly reduced.