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
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
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
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
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
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
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
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
Bug fix: After duplicating a subcircuit, you could press an
arrow key to modify its facing, but the grab handles did not
Bug fix: When viewing a circuit from a loaded Logisim library,
you were allowed to modify components within the
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
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
Refactoring: Created a factory method for creating
JFileChoosers, in an attempt to work around IOExceptions when a
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
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
Bug fix: For the TTY component, the component was not
properly resized when the Rows or Columns attribute is
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
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)
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
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
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.
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
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
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
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
Bug fix: When a circuit is removed from the project while
a tool for adding subcircuits is selected, a different tool is
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
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
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
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
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