Logisim release history to version 2.0.0

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.0.0 (31 Oct 2005)

  • Feature: Components have "tool tips" that display when the mouse hovers over them. For subcircuits, hovering over a pin will display the label for the corresponding pin in the subcircuit layout (if it has one). Also, several built-in components use this feature, including all components in the Plexers and Memory libraries, as well as the Splitter. This feature can be turned off via the Canvas tab of the project options.

  • Feature: Added a Reset Simulation item to the Simulate menu to clear all information about the data within a circuit.

  • Feature: Windows executable released to provide better integration with that platform. (This uses the launch4j program.)

  • Feature: Poking a wire also displays the base-10 two's-complement interpretation of the value.

  • Bug fix: If you opened a file into the initial window immediately after startup, any changes to its project options would have no effect on the window.

  • Bug fix: Adding a tool to the toolbar shared the same attributes as the original tool, rather than having a separate attributes as intended. Also, the icons for tools newly added to the toolbar did not update immediately with changes to attributes (for tools, like Pin and Splitter, whose icons reflect some attribute values).

  • Bug fix: The Simulate menu's Simulation Enabled menu item check did not update properly when the simulation halted due to oscillation.

Version 2.0 Beta 24 (24 Oct 2005)

  • Feature: Wrote reference pages for all components in the built-in libraries. A new item in the Help menu is a shortcut to this reference.

  • Bug fix: The wiring tool was intended to repair wires that overlap stub wires, such as those on an OR gate or a Controlled Buffer, but this feature was not working.

  • Bug fix: A selection consisting only of text labels was mistakenly snapped to the grid.

  • Bug fix: The Memory library's RAM component did not work with 32-bit data (all data would be set permanently to zero). Also, it did not load 32-bit data properly from an image file. And requests to clear memory from the popup menu did not work when the first byte of memory was already zero. (Thanks to Tom Parks of Colgate University for discovering all of these bugs, as well as the Adder bug below, and for suggesting fixes to them.)

  • Bug fix: The Arithmetic library's Adder component did not properly compute its carry output when adding 32-bit data together.

  • Bug fix: The Divider component would sometimes output a negative remainder, due to Java's handling of division. The remainder is now always computed to be between 0 and 1 less than the divisor. The quotient is the integer such that the quotient times the divisor, plus the remainder, yields the dividend. In other words, the Divider component essentially performs unsigned division.

  • Bug fix: The Plexers library's Multiplexer component's included a Tristate? attribute even though it had no effects on the component. This attribute was removed.

  • Minor change: Renamed the Base library's Text component to Label.

  • Minor change: Replaced the "Tristate?" attribute of the Base library's Pin and the Plexers library's Demultiplexer and Decoder to "Three-state?" instead to be consistent with common usage (and to comply with a trademark on the former word).

  • Minor change: Reordered the pin component's attributes so that the Output? attribute appears earlier in the list and the Three-state? and Pull Behavior attributes appear together.

  • Minor change: Renamed the Data Width attribute on multiplexers and demultiplexers to Data Bits instead, so that the attribute name is consistent with the Select Bits attribute.

Version 2.0 Beta 23 (16 Oct 2005)

  • Bug fix: Attempts to change the Value attribute of a Constant component (in Gates library) would result in an exception, with no change to the value. A similar bug existed with the High/Low duration attributes of a Clock component (in Base library). This bug may have affected other components' attributes as well.

  • Bug fix: The images for tools in the beginner's tutorial were badly referenced.

Version 2.0 Beta 22 (12 Oct 2005)

  • Feature: Cleaned up configuration interface by adding a window for editing application preferences (accessible via the File menu or Logisim menu, depending on whether you use a Macintosh or not) and a window for editing project options (accessible via the Project menu). This replaces the Options menu and the pop-up menus for configuring the toolbar.

  • Feature: User's Guide completed, edited, and updated for new version. All screen shots updated to reflect minor changes to the interface and to take less disk space.

  • Feature: Added divider, negator, comparator to Arithmetic library.
  • Feature: Added an asynchronous preset input to the flip-flop components. (The left input on the bottom is the preset input, the right input is the clear input.)

  • Bug fix: Re-selecting a tool displays its attributes (if not already showing).

  • Bug "fix": Added a Close button to the splash screen to reduce severity of problem that when opening files specified on the command line, dialog boxes appear beneath the splash screen on some systems.

Version 2.0 Beta 21 (25 July 2005)

  • Bug fix: The "Revert To Defaults" option (now named "Revert To Template") would lead to errors when saving file.

  • Bug fix: With Revert To Template, the attributes associated with tools were not restored.

  • Bug fix: Changes to attributes of tools in the explorer pane were not immediately reflected in their icons, for attributes that affect icons.

  • Feature: Added Select Template... option into the Options menu. Also, added page into documentation explaining templates.

Version 2.0 Beta 20 (19 July 2005)

  • Maintenance change: Increased speed and memory performance. Logisim is still CPU- and memory-hungry, but quite a bit less so.

  • Feature: Added a "Data Bit Width" attribute to the RAM component so that it can store word lengths other than 8-bit bytes.

  • Feature: Added a multiplier component to the arithmetic library.

  • Feature: Revamped the "About" graphic that is also used in the splash screen to reduce the memory usage inherent in loading a large image. (While I was at it, I animated the simulation.)

  • API change: Refactored the code surrounding the storage of attribute values, since the previous technique used was unnecessarily memory-intensive.

Version 2.0 Beta 19 (14 July 2005)

The changes to this version are almost entirely minor, but cumulatively, this is a substantial revision. Because of the number of changes, they are listed in categories.

Window interface

  • Feature: Remembers the current state of each circuit when you switch to viewing another circuit in the same project, so that when you go back to view the original circuit, the old state appears again.

  • Feature: Added a Project menu, largely duplicating what was in the explorer pane's pop-up menus. (Some users deemed these pop-up menus unintuitive.)

  • Feature: Allows you to rearrange the ordering of circuits within a file via the explorer pane.

  • Feature: You can delete a circuit by selecting it in the explorer window and pressing the backspace key.

  • Bug fix: Removing the currently viewed circuit did not change the view to another circuit.

  • API update: Added the ComponentState interface to accomodate remembering state when viewing a different circuit. The revised Increment example library (namely, its CounterState class) reflects this.

File management

  • Feature: Addresses the case where you are working with multiple projects, some used as libraries as others: As soon as one project is saved, the changes are propagated to other projects using it as a library.

  • Feature: Added a menu option in the explorer pane to reload a library from disk. (This is not extremely useful due to the previous item, but it can be useful, particularly if you are developing your own JAR library.)

  • Feature: Prevents saving a file which would lead to a circular reference among libraries (if two files are mutually libraries of each other, for example).

  • Bug fix: The ".circ" extension to loaded Logisim libraries is no longer displayed.

  • Bug fix: Opening files that already were open would simply display the window, without reading from disk. Now, the file is reloaded, although if there are unsaved changes, Logisim prompts the user about whether to lose those changes or create a new window.

  • Bug fix: Libraries could be unloaded if they contained components that weren't used in the circuit but were in the toolbar.


  • Feature: Prevents the addition of multiple components at the same location - or, more precisely, prevents adding components who have outputs at the same location.

  • Feature: Most error messages from tools are displayed within the canvas rather than through a dialog box that the user must click to close.

  • Feature: Pressing Command-1 will select the first tool, Command-2 the second, etc. (The key combined with "1" depends on the platform - it is Control on many platforms.)

  • Feature: As you drag to shorten a wire using the wiring tool, it displays a visual hint (by drawing white over the wire rather than black).

Built-in components

  • Feature: Pins can deal with any number of bits up to 32. (Previously, they could only handle less 8 bits, or a multiple of 8 bits.)

  • Feature: Pins on a subcircuit can pull the values they receive up, down, or leave the values unchanged.

  • Feature: The RAM component's select input is now "pull-up", so that if left unconnected, it defaults to a 1. Similarly, the output enable input is also "pull-up." The net effect that if all of the lower inputs are left unconnected, the RAM component behaves like ROM (except that the data must be manually loaded).

  • Bug fix: A RAM component with fewer than sixteen bytes caused run-time errors. Also, the RAM component's state did not properly update when the number of address bits were changed.

Version 2.0 Beta 18 (11 July 2005)

  • Feature: A wire drawn across any connecting points of any components in the circuit will now be split by that connecting point. (Previously, wires would only be split by other wires' endpoints.)

  • Bug fix: Current selection was lost when user saved file.

  • Bug fix: Moving large groups of wires sometimes left "copies" behind. The code underlying adding wires to a circuit was completely rewritten.

  • Bug fix: Most selection manipulations, including moving the selection and cut/copy/paste/clear, did not undo to previous state properly (particularly with regards to restoring the wires).

  • Bug fix: As of Beta 15, the selection handles drawn around wires were rather ugly, drawing four handles rather than two. They now draw two again.

  • Bug fix: Canvas resizes immediately when window resized.

  • Bug fix: With Select Tool, shift-click toggles items into/out of selection. (It was control-click, but that's now mapped by default to the Menu Tool in order to facilitate one-button mice.)

Version 2.0 Beta 17 (6 July 2005)

  • Feature: Added the Combinational Analysis module, which permits conversion between combinational circuits drawn in Logisim, truth tables, Boolean expressions, and minimized sum-of-products expressions. (This new feature is quite a large addition, making Logisim's code base 23% bigger than the previous one.)

Version 2.0 Beta 16 (29 June 2005)

This is the first open-source release of version 2.0.

  • Feature: Added support for importing third-party libraries of components developed in Java.

  • Feature: Added documentation of the above feature, including the com.cburch.incr library illustrating it, as well as documentation relating to internationalization.

  • Feature: Pasting now does not immediately drop all the components into the circuit; instead, they are drawn as ghosts until it is dragged into its intended place or a new selection is made.

  • Bug fix: Relative pathnames did not always work as intended. Also, changed the design to use relative pathnames only for files that are at most one directory away (i.e., same directory, parent directory, or child directory).

  • Maintenance change: Refactored much of the structure in the process of cleaning up the API so that it could be used in developing JARs (and so I wouldn't be quite so embarrassed if somebody read any of the source code).

Version 2.0 Beta 15 (10 June 2005)

  • Feature: Added support for multiple windows, with a different project open in each window, all displayed in the new Window menu.

  • Feature: Program has features allowing it to integrate well with Mac OS X (most particularly with the Macintosh menu style), including a distribution that supports customized Logisim icons for the application and for project documents.

  • Feature: Added support for a standard Logisim ``.circ'' extension on filenames.

  • Maintenance change: Changed references to Web pages to the new Web address, and placed all source code into com.cburch hierarchy.

Version 2.0 Beta 14 (13 May 2005)

  • Feature: Register component generalized to handle up to 32 bits.

  • Bug fix: Changing attributes of splitter after placed in circuit would lead to width incompatibility messages.

Version 2.0 Beta 13 (12 May 2005)

  • Feature: Clock component now added, with a Simulate menu for controlling it.

  • Feature: Navigate into a subcircuit's state within a larger circuit by choosing the View option in its popup menu; navigate out using the Simulate menu.

  • Feature: Oscillating circuit automatically halts simulation.

  • Feature: Splash screen is prettier.

Version 2.0 Beta 12 (11 May 2005)

  • Feature: Logisim v1.0 files can be loaded through the Open menu item. The new Legacy library includes components whose v2.0 equivalents are not compatible.

  • Feature: References to library files are saved using relative pathnames.

  • Feature: The NOT gate has an option for being narrow.

  • Bug fix: The New menu option creates a file with an appropriate toolbar.

  • Bug fix: The file dialog boxes remember the current directory.

  • Bug fix: Saving a file in the middle of editing text would not save changed text.

Version 2.0 Beta 11 (10 May 2005)

  • Feature: Added Plexers library with Multiplexer, Demultiplexer, and Decoder components.

  • Feature: Added Arithmetic library with Adder and Subtractor components.

  • Feature: Changed splitter's appearance for large fanouts so that it can support a fanout of up to 32.

  • Feature: Oscillation errors are drawn within the canvas rather than with a dialog box.

  • Maintenance Change: Rewrote the propagation engine to provide for future enhancements. Testing indicates that it still works correctly.

Version 2.0 Beta 10 (9 May 2005)

  • Bug fix: Moving a subcircuit could lead to what was mistakenly identified as an "oscillation error."

Version 2.0 Beta 9 (9 May 2005)

  • Bug fix: Deleting a wire going into an input drawn blue leads to that input being drawn gray.

  • Bug fix: A moved flip-flop did not automatically re-propagate its state upon dropping.

  • Bug fix: The wire-repairing feature would mistakenly "repair" wires that almost reach a component.

  • Bug fix: Changing a pin's Facing attribute did not update the location of pins on the rectangles representing that component.

  • Bug fix: Multi-bit AND gate would give wrong value when the first input was unspecified.

  • Bug fix: The RAM component did not reliably clear properly, particularly after loading a memory image.

  • Bug fix: For the RAM component, attempts to type an address would end up rounding each hex digit down to a multiple of 4.

  • Feature: On-line documentation included.

  • Feature: Draws a halo around the component whose attributes are currently being viewed.

  • Feature: Made control-clicking equivalent to right-clicking to support a one-button mouse better.

  • Feature: Wires drawn past a splitter wire are silently repaired (as already done with OR/NOR/XOR/XNOR gates and Controlled Buffers/Inverters).

  • Feature: Added a progress bar to track the booting process. The majority of bootup time is being spent in code that I can't control much: Sun's approach to running Java is pretty efficient once it gets started, but slow startup is hard to avoid.

  • Feature: Using the text tool displays the edited component's attributes.

Version 2.0 Beta 8 (7 May 2005)

  • Bug fix: XOR, Even Parity, Odd Parity gates would emit values even when all inputs were unspecified.

  • Feature: Printing output is more polished (temporary circuit state not shown, unused legs on OR/NOR/XOR shaped gates are excluded, etc.)

  • Feature: Printer View option added to Options menu.

  • Feature: Export As GIF option added to File menu.

  • Feature: Wiring Tool automatically repairs wires drawn through the legs of XOR/NOR gates and Controlled Buffers/Inverters. (It already did this for OR gates.)

  • Feature: XNOR gate added to Gates library.

  • Feature: Poking flip-flops toggles their state (which is now displayed inside the flip-flop).

  • Feature: Flip-flops have a pin for asynchronously clearing.

  • Feature: Tools have hand-drawn icons.

Version 2.0 Beta 7 (5 May 2005)

  • Bug fix: Dragging a four-way wire intersection would disconnect into two wires.

  • Bug fix: Added to the toolbar, the splitter tool's attribute set would not update properly.

  • Bug fix: With the wiring tool, you could shorten a wire to zero pixels; now, this removes the wire.

  • Bug fix: The initial file selected in the Save dialog could be a recently loaded Logisim library.

  • Feature: The splitter bit attributes include hints of the direction in which wires are numbered.

  • Feature: Splitter bit attributes are editable after being placed in circuit.

  • Feature: Tools in toolbar and explorer pane have tooltips.

Version 2.0 Beta 6 (5 May 2005)

  • Bug fix: The propagation engine would sometimes ignore values emitted by components.

Version 2.0 Beta 5 (4 May 2005)

This was available for only about an hour before I discovered the bug that led to Beta 6.

  • Bug fix: When several wires were dragged with the select tool, they did not reconnect on dropping.

  • Bug fix: Width conflicts between components meeting at a point were not identified.

  • Bug fix: The value output by a one-bit constant component could behave in unexpected ways.

  • Bug fix: Project title (in title bar and explorer pane) did not track the name of file opened.

  • Bug fix: The Mouse Mappings dialog only worked the first time it was opened.

  • Bug fix: A change in circuit name would not immediately appear in the explorer pane.

  • Bug fix: The splitter tool icon was drawn in the opposite direction of the current direction attribute.

  • Feature: All current width conflicts are identified for a circuit - not just the first one found.

  • Feature: XOR, Odd-Parity, and Even-Parity gates treat unspecified inputs as FALSE

  • Feature: The selection is emptied when the user selects a new tool (unless the Select Tool is permanently mapped to a mouse button).

  • Feature: Double-clicking a circuit name in the explorer pane changes the circuit viewed in the canvas.

  • Feature: Exiting the program or changing files displays a more standard Save/Discard/Cancel dialog box.

Version 2.0 Beta 4 (4 May 2005)

Again, a special thanks to the students of UC/Berkeley's CS61C who made many of the suggestions for this revision.

  • Bug fix: A subcircuit nested within a larger circuit could not be moved.

  • Bug fix: Changing a subcircuit pin's width could lead to freezing when opening a supercircuit already containing it.

  • Bug fix: Switching the attribute set displayed while an attribute's combo box was open could lead to endless exceptions.

  • Feature: Input and output pins are now visually distinct (output pins are circles/rounded rectangles). Constants' appearance was also changed to allow for rounded output pins.
  • Feature: Most attributes, including pin and gate bit widths, are editable after a component is created. The remaining exceptions are gate size, the number of gate inputs, and the main splitter attributes.

Version 2.0 Beta 3 (1 May 2005)

A special thanks to the students of UC/Berkeley's CS61C who made many of the suggestions for this revision.

  • Bug fix: The program could not save a project that imported other Logisim files.

  • Bug fix: Wires did not properly merge when a wire was moved or removed using the Select tool.

  • Bug fix: Multi-bit constant values were improperly saved (as decimal rather than hex).

  • Bug fix: Undoing the deletion of items using the Select Tool did not work.

  • Feature: Clicking a component with the Poke Tool or the Select tool also shows the attributes for that component.

  • Feature: Clicking a wire with the Poke Tool shows that wire's current value.

  • Feature: The attributes for a subcircuit include the subcircuit's name.

  • Minor feature: The wiring tool now shows a ghost.

  • Minor feature: The color associated with a ``1'' is not quite so irritatingly bright.

Version 2.0 Beta 2 (18 Apr 2005)

  • Feature: Added Clear, Load, and Save options to the RAM component's menu.

  • Bug fix: Select tool did not permit moving text components up or to the left.

Version 2.0 Beta 1 (11 Apr 2005)

This is a complete rewrite from scratch, more than doubling the size of the program. The list of notable new features is too long to include on this page.