Logisim Changelog

What's new in Logisim 2.7.1

Apr 2, 2011
  • Feature: When errors are in a file being loaded, the file is still partially loaded and displayed. If multiple errors are found, each is displayed.
  • Feature: In Plexers library, added Select Location attribute to multiplexer, demultiplexer, and decoder.
  • Feature: If some components somehow manage to get "off the grid," they are relocated back onto the grid once they are moved.
  • Behavior change: With transistors and transmission gates, a floating value is passed through as floating regardless of the value of gate (including a floating or error gate value).
  • Behavior change: When clicking the currently viewed circuit, the circuit attributes are shown but no tool to add that circuit to itself is selected. This also happens with triple-clicking a circuit: The view is switched to the circuit, but the tool is not selected for adding instances to itself.
  • Bug fix: The combinational analysis "Product of Sums" option did not work when any variable other than the last one was to appear negated in any of the sums.
  • Bug fix: In the main editor window, when "Close" was selected from the Window menu, a dialog box popped up giving the Save/Discard/Cancel; but if Cancel was selected, the window was still closed (but without saving).
  • Bug fix: When "Reset Simulation" was selected while simulation was enabled, the reset values were not propagated through the circuit immediately.
  • Bug fix: Several types of exceptions could occur during simulation, particularly when poking the simulation while the simulation is busy. Many of these have been removed.
  • Bug fix: You could copy components from one project and paste them into another, even though the other project's libraries may not support the components being pasted.
  • Bug fix: Through starting to edit an attribute with a drop-down menu and then switching to view attributes for something else, the newly viewed attributes would actually change to the value of the previous edit.
  • Bug fix: When editing a circuit's appearances, labels would be given a color based on the fill color for rectangles/ovals/polygons rather than the color selected for text. This color was by default white, and so they appeared invisible.
  • Bug fix: When editing a circuit's appearance, changing between Border, Fill, Border & Fill didn't update attribute list (whether viewing attributes for a tool or for the current selection).
  • Bug fix: When editing a circuit's appearance and copying to the clipboard, the anchor's location and facing are stored to the clipboard if the selection includes the anchor.
  • Bug fix: In rare cases, loading files would show an error reading "Resetting to invalid mark." (This seems to have involved a non-ASCII character in exactly the wrong position.)
  • Bug fix: The Windows executable's application description was changed so "Open with" context menu gives proper application name.

New in Logisim 2.6.0 (Sep 27, 2010)

  • Feature: You can customize how a subcircuit component will be drawn, in place of the default rectangle-with-notch appearance earlier.
  • Feature: When the poke tool is selected, clicking a subcircuit will lead a magnifying glass to appear over the subcircuit, and double-clicking in the magnifying glass will enter the subcircuit's state.
  • Feature: Multiplexers, demultiplexers, decoders, and priority encoders all support 5 "Select Bits."
  • Feature: The Arithmetic library now includes a "Bit Adder" which computes the number of 1 bits in its input(s).
  • Feature: The I/O library's LED has an "Off Color" attribute.
  • Feature: The facing of a subcircuit can be changed after it is placed into a circuit.
  • Bug fix: After removing a circuit from the project, an Undo would place the removed circuit at the end of the project's list rather than back in its previous location.
  • Bug fix: When loading more than 4,096 memory entries into RAM or ROM, if the 4,096th entry (or a multiple of 4096 entries) was at the end of a line in the text file, all subsequent entries were ignored.
  • Bug fix: When the circuit is scaled using the zoom controls, tool tips would show up in the wrong location.
  • Bug fix: A "ConcurrentModificationException" was observed from the EventSourceWeakSupport class. It was changed to guarantee that it does not occur there.
  • Bug fix: Sometimes a diagonal line would appear across the layout when you selected a different component to be added.
  • Interface change: The menu shortcut for moving up in the state hierarchy is now MenuKey+Left, since MenuKey+Up is used for raising the selection (and MenuKey+Shift+Up for raising the selection to the top). Similarly, moving down the hierarchy is MenuKey+Right.
  • Interface change: When the grid is being shown and the zoom factor is 200% or more, each grid dot is actually a square of several pixels.
  • Interface change: The project toolbar is drawn slightly differently, with a darker "add" icon, and of course the added elements for selecting to edit the layout or the appearance. Behind the scenes, the icons are drawn differently - this will likely be most apparent under MacOS X, where it was fairly ugly before.
  • Interface change: Subcircuits are drawn (by default) with a slightly different notch to adapt to the quadratic Bezier curve supported by the customized appearance module.
  • Interface change: The explorer pane's magnifying glass is drawn with a hint of blue in its center.
  • Architectural change: Subcircuits are implemented using the newer logisim.instance API rather than the deprecated logisim.comp API.

New in Logisim 2.5.1 (Sep 9, 2010)

  • Feature: Added the "Get Project Statistics" menu item and the "-tty stats" command-line option.
  • Feature: The integrated help system now includes full-text search. Also, the most recent version of the JavaHelp library is packaged with Logisim.
  • Feature: Added Control Line Location to Controlled Buffer and Controlled Inverter, and added Gate Size attribute to the Controlled Inverter.
  • Feature: Increased the maximum number of inputs for gates to 32.
  • Feature: Added a third, larger Gate Size option to the multi-input logic gates, which may look better for very large numbers of inputs. What was called "Wide" before is now "Medium."
  • Feature: The color and font dialogs were modified so that their strings could more easily be translated. A Russian translation is included.
  • Interface change: The rectangular OR and NOR gates are drawn with the proper "≥1" label rather than ">0".
  • Interface change: The shaped OR, NOR, XOR, and XNOR gates are drawn slightly differently, using Java's GeneralPath class. As a result, the corners connect well and the "wings" for a large number of inputs don't get overly deep.
  • Bug fix: In 2.5.0, Logisim projects were opened assuming a UTF-8 encoding, and it refused to open files with invalid encoding. It now first attempts opening the file assuming UTF-8 encoding (since that is now the default save format); but if that fails, it attempts to open the file using the platform's default encoding.
  • Bug fix: An exception could occur when loading multiple libraries into a project, at least one of which is a Logisim file.
  • Bug fix: It was reported that a race condition could occur when opening many files. (Thanks to Joshua Cranmer of Georgia Tech for providing the report and suggesting changes to fix it.)
  • Bug fix: In previous versions, projects were saved using the platform's default encoding (even though the XML indicated it used UTF-8), leading files to be non-portable if they included non-ASCII characters. Now the file is always saved using UTF-8.
  • Bug fix: Using DIN 40700 gate shapes, the OR and NOR gates were drawn improperly for even numbers of inputs, and the NAND and NOR gates' output lines did not quite go as far as their input.
  • Bug fix: With the font dialog library, changes to the selected language would not be reflected until the program was restarted.
  • Bug fix: The documentation used the XHTML " />" idiom for childless elements like "
", but this confuses Java 5 systems (not Java 6) so that the ">" appears when viewing the pages in the integrated help system. All instances of this idiom were removed.
  • Internal modification: All references to the JDOM library were removed. Logisim now uses Java's integrated XML support instead.

New in Logisim 2.5.0 (Aug 30, 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 combinatorial 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.

New in Logisim 2.3.4 (Apr 5, 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.

New in Logisim 2.3.2 (Dec 8, 2009)

  • 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).

New in Logisim 2.3.1 (Sep 15, 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.

New in Logisim 2.3.0 (Jul 16, 2009)

  • 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.
  • OTHER
  • 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.

New in Logisim 2.1.7 (Jan 16, 2009)

  • Bug fix: The program offered the option to add random noise into gate delays, so when a latch gets into an oscillating state it will eventually reach a point where it is not oscillating. This was disabled by default, because it can also lead to erroneous computations with other circuits. Nonetheless, the random noise was added even when the option was disabled. (Thanks to stultuses who provided a circuit that led to the discovery of this bug.)
  • Bug fix: The simulator could get into a tight loop, effectively freezing Logisim, if a tick was pending while an oscillation is detected. Thanks to Christophe Jacquet for identifying the bug and suggesting a fix.
  • Bug fix: If the circuit currently being viewed was removed the projec, the circuit would continue to be displayed in the viewing window.
  • Feature: Added a "Step Simulation" menu item, which steps the simulation just a single step. Any points in the circuit affected by the step are indicated with blue circles. This feature can help with debugging circuits that have oscillations.
  • Feature: Added several faster options in the "Tick Frequency" submenu, going up to 1024 Hz.
  • Usability enhancement: When double-clicking a circuit in the explorer, Logisim would choose that as a tool and then display the circuit. The selected tool would continue to be that circuit, even though it was useless. The program now reverts to the previously selected tool.
  • Usability enhancement: When adding a subcircuit into a circuit, the displayed "ghost" now displays the notch indicating the subcircuit's orientation.
  • Documentation error: The first tutorial page described a XOR's output exactly wrong.