Oscillation errors

One situation where the propagation algorithm does make a difference comes up when you create a circuit that will oscillate.

This circuit is currently in a stable condition. But if you change the input to 1, the circuit will effectively enter an infinite loop. After a while, Logisim will simply give up and show a dialog box telling you so.
It will display the values it has at the time it gives up. These values will look wrong - perhaps the NOT gate will have a 1 input and a 1 output.

Logisim does not identify oscillation correctly; instead, it simply gives up after a certain number of iterations of trying to propagate values. As a result, a very large circuit may not actually oscillate, but Logisim could conceivably give up before all the values propagate through the circuit. As the program's author, I believe the value is set high enough that this is so unlikely as to be not worth trying to be more sophisticated about it; I have myself built substantial circuits without coming close to running into troubles. But if you run into problems with Logisim terminating propagation prematurely, I encourage you to contact me, and I will be happy to repair the problem.

Next: Shortcomings.