v2.0 - April 2017
Strilanc
released this
30 Apr 03:32
·
153 commits
to master
since this release
Breaking changes from v1 to v2:
- Changed spherical coordinate system to match physics conventions
- Off is upward, On is downward
- Z up/down, Y left/right, X toward/away
- Theta ranges from 0 (up) to 180 (down)
- Phi=0 points toward user, Phi=90 points rightward
- Swapped the Off/On symbols for both the X-controls and Y-controls
- X-On is a circled plus (matches the NOT gate, since they interchange)
- X-Off is a circled-minus
- Y-On is a circled cross
- Y-Off is a circled slash
- Serialized ids did not change; old circuits will load correctly
Notable User Changes:
- Bug fixes:
- Fixed reversed-input gates not reversing
- Fixed input gates not drawing control lines into custom circuit gates
- Fixed drawing control lines to custom identity operations
- Fixed permute-wire drawings not fully erasing covered wires
- Fixed bad URLs being created for custom gates with '%' or '&' in their names
- Toolbox changes
- Hid exp(iUt) gates
- Hid 16'th-root gates
- Hid shift-cycling gates
- Moved all X/Y/Z gates to top
- Added parametrized X/Y/Z gates
- Added comparison gates
- Added multiplication gates
- Added 'set default input' gates
- Added modular arithmetic gates and Input R
- Added interleave gates
- Appearance:
- Bottom toolbox has a fourth row
- Input gates shaded gray
- Bit-rotate gates show a rearranged-wire symbol
- Bit-permutating gates show the wire re-arranging even when controlled
- Increment/Decrement gates now show "+1" and "-1" instead of "++" and "--"
- Sample gate shows an extra decimal ket in its tooltip text
- Added 'Shor Period Finding' example
- Added version indicator
- Gates no longer show a 'resizable' symbol
- Phase gradient gates now show "e^iπ%" instead of incorrect "Z^#"
Notable Dev Changes:
- Improved startup time
- Added mutation-based GateBuilder and used it instead of replacement-based Gate.with methods
- All resizable gates now give matrix functions instead of spending time making matrices
- Avoided creating webgl context twice
- Switched shaderFromBitPermutation from Seq to a raw loop
- Support for multi-line gate symbols
- Support for clickable gate buttons
- Separated gate effect properties into 'actual' (for simulating) and 'known' (for drawing/testing)
- Commented the Gate class
- Extracted unit-tested methods from control-line-drawing code
- Added 'knownPermutation' gate effect, and added tests for validating actual effect against permutation
- Added ketInputGateShaderCode/ketInputGateArgs, unifying how gates get inputs
- Added serialized 'param' property to gates