{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":139060886,"defaultBranch":"master","name":"qiskit-core","ownerLogin":"mtreinish","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2018-06-28T19:36:46.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2447371?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1717610641.0","currentOid":""},"activityList":{"items":[{"before":"f8581584c82a61451010487a0971fe34d5619a16","after":"26bc1aeb98a89d6dda5c3f61d008950a965cced0","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-07T20:02:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Make Qubit and Clbit newtype member public\n\nAs we start to use Qubit and Clbit for creating circuits from accelerate\nand other crates in the Qiskit workspace we need to be able to create\ninstances of them. However, the newtype member BitType was not public\nwhich prevented creating new Qubits. This commit fixes this by making it\npublic.","shortMessageHtmlLink":"Make Qubit and Clbit newtype member public"}},{"before":"7715744989c51478d8778091764679f2b873f384","after":"f8581584c82a61451010487a0971fe34d5619a16","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-07T19:28:24.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Simplify trait bounds for map_indices()\n\nThe map_indices() method previously specified both Iterator and\nExactSizeIterator for it's trait bounds, but Iterator is a supertrait of\nExactSizeIterator and we don't need to explicitly list both. This commit\nremoves the duplicate trait bound.","shortMessageHtmlLink":"Simplify trait bounds for map_indices()"}},{"before":"5ce3c87e35e97e490984a2d4c7532216f6ca3635","after":"7715744989c51478d8778091764679f2b873f384","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-07T18:45:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Fix doc typos\n\nCo-authored-by: Kevin Hartman ","shortMessageHtmlLink":"Fix doc typos"}},{"before":"ca6c938a4c8fa1cfb1c4a68e13592122068e691a","after":"023ab4223b77b38511abe40a714eb5bfc00cce3d","ref":"refs/heads/optimize-1q-more-rust","pushedAt":"2024-06-07T17:32:02.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Experiment to show optimize1qgates decomposition using rust gates\n\nThis is a partial implementation of using rust gates for optimize 1q\ngates decomposition. It's mostly a test of the ergonomics of working\nwith gate clases. For the most part this is fairly straightforward.\n\nThe one piece of concern I had was working with DAGOpNode, because of\nPyO3's subclassing in rust it makes it hard to use naturally as an input\nto a rust function.\n\nThe piece that's missing here is we need the compatibility interface for\nthe standalone synthesis routine. In that case this should be updated to\nreturn a circuit data object directly instead of a sequence and then\njust build the circuit directly from that.\n\nThe implementation of u1, u2, u3, and r gates should definitely be a\nseparate commit/PR. I just did this as a test and it's not realistic\nto consider this for a PR until after we have the gates in rust PR\nmerged anyway. Ideally we'd wait for the dag PR so the pass could be\na full path in rust. But that will have to wait for that to be ready.","shortMessageHtmlLink":"Experiment to show optimize1qgates decomposition using rust gates"}},{"before":"c9ac618e6afa508c78d6b42cd2559d88d633b9e2","after":"5ce3c87e35e97e490984a2d4c7532216f6ca3635","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-07T16:40:07.000Z","pushType":"push","commitsCount":11,"pusher":{"login":"jakelishman","name":"Jake Lishman","path":"/jakelishman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5968590?s=80&v=4"},"commit":{"message":"Merge remote-tracking branch 'ibm/main' into gates-in-rust","shortMessageHtmlLink":"Merge remote-tracking branch 'ibm/main' into gates-in-rust"}},{"before":"bb5c01cd6fc860b90b40d362b0f047558236c032","after":"ca6c938a4c8fa1cfb1c4a68e13592122068e691a","ref":"refs/heads/optimize-1q-more-rust","pushedAt":"2024-06-06T21:54:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Experiment to show optimize1qgates decomposition using rust gates\n\nThis is a partial implementation of using rust gates for optimize 1q\ngates decomposition. It's mostly a test of the ergonomics of working\nwith gate clases. For the most part this is fairly straightforward.\n\nThe one piece of concern I had was working with DAGOpNode, because of\nPyO3's subclassing in rust it makes it hard to use naturally as an input\nto a rust function.\n\nThe piece that's missing here is we need the compatibility interface for\nthe standalone synthesis routine. In that case this should be updated to\nreturn a circuit data object directly instead of a sequence and then\njust build the circuit directly from that.\n\nThe implementation of u1, u2, u3, and r gates should definitely be a\nseparate commit/PR. I just did this as a test and it's not realistic\nto consider this for a PR until after we have the gates in rust PR\nmerged anyway. Ideally we'd wait for the dag PR so the pass could be\na full path in rust. But that will have to wait for that to be ready.","shortMessageHtmlLink":"Experiment to show optimize1qgates decomposition using rust gates"}},{"before":"faac6552778621a56285a20d422baaf94c3e819b","after":"c9ac618e6afa508c78d6b42cd2559d88d633b9e2","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-06T21:28:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Simplify initialization of array of elements that are not Copy (#28)\n\n* Simplify initialization of array of elements that are not Copy\r\n\r\n* Only generate array when necessary","shortMessageHtmlLink":"Simplify initialization of array of elements that are not Copy (#28)"}},{"before":"1e3c06423718ef8e8bf1cd9e25b5383cc6b26a37","after":"faac6552778621a56285a20d422baaf94c3e819b","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-06T20:05:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Simplify complex64 creation in gate_matrix.rs\n\nThis just switches Complex64::new(re, im) to be c64(re, im) to reduce\nthe amount of typing. c64 needs to be defined inplace so it can be a\nconst fn.","shortMessageHtmlLink":"Simplify complex64 creation in gate_matrix.rs"}},{"before":"8cfa4d0b00e214c153c9a39c120475fe91f1776e","after":"1e3c06423718ef8e8bf1cd9e25b5383cc6b26a37","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-06T18:00:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Simplify Interface for building circuit of standard gates in rust","shortMessageHtmlLink":"Simplify Interface for building circuit of standard gates in rust"}},{"before":"0d59bd4d92861bc401b03ae1017c8e2381881938","after":"8cfa4d0b00e214c153c9a39c120475fe91f1776e","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-06T15:25:36.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jakelishman","name":"Jake Lishman","path":"/jakelishman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5968590?s=80&v=4"},"commit":{"message":"Encapsulate `GILOnceCell` initialisers to local logic","shortMessageHtmlLink":"Encapsulate GILOnceCell initialisers to local logic"}},{"before":null,"after":"04d358e7299aa6246d0851ac1a476ba7afad5349","ref":"refs/heads/fix-version-table","pushedAt":"2024-06-05T18:04:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Fix version table in qpy docs\n\nThe QPY docs included a format version table that matched up the Qiskit\nreleases to the supported QPY format versions for that release. However,\na typo resulted in it being treated as a comment instead of table this\ncommit fixes this and a small copy paste error in one of the versions\nlisted in the table.","shortMessageHtmlLink":"Fix version table in qpy docs"}},{"before":"5139411c1b670d1774196be22eba80469ec4a74e","after":"0d59bd4d92861bc401b03ae1017c8e2381881938","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-05T16:04:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Fix test failure caused by incorrect lint fix","shortMessageHtmlLink":"Fix test failure caused by incorrect lint fix"}},{"before":"39f1358932249ece0bdbb84085e3ce55acfa5583","after":"5139411c1b670d1774196be22eba80469ec4a74e","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-05T15:42:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Fix lint for real (we really need to use a py312 compatible version of pylint)","shortMessageHtmlLink":"Fix lint for real (we really need to use a py312 compatible version o…"}},{"before":"142d71b7a0941761b668875daa6ab1f68743438e","after":"39f1358932249ece0bdbb84085e3ce55acfa5583","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-05T15:09:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Fix lint","shortMessageHtmlLink":"Fix lint"}},{"before":"39be17b4d5ad2e40a89935d8d960f6d90cbeadd3","after":"142d71b7a0941761b668875daa6ab1f68743438e","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-05T14:36:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Temporarily use git for qasm3 import\n\nIn Qiskit/qiskit-qasm3-import#34 the issue we're hitting caused by\nqiskit-qasm3-import using the private circuit attributes removed in this\nPR was fixed. This commit temporarily moves to installing it from git so\nwe can fully run CI. When qiskit-qasm3-import is released we should\nrevert this commit.","shortMessageHtmlLink":"Temporarily use git for qasm3 import"}},{"before":"80651846d771cade8f64238eaee81baec5e773e9","after":"39be17b4d5ad2e40a89935d8d960f6d90cbeadd3","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-05T13:39:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Revert \"Skip validation on gate creation from rust\"\n\nThis reverts commit 2f81bde8bf32b06b4165048896eabdb36470814d. The\nvalidation skipping was unsound in some cases and could lead to invalid\ncircuit being generated. If we end up needing this as an optimization we\ncan remove this in the future in a follow-up PR that explores this in\nisolation.","shortMessageHtmlLink":"Revert \"Skip validation on gate creation from rust\""}},{"before":"0398e6a21df247b62df7434b9981c7896f2f70ae","after":"80651846d771cade8f64238eaee81baec5e773e9","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-04T21:54:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Simplify code around handling python errors in rust","shortMessageHtmlLink":"Simplify code around handling python errors in rust"}},{"before":"951dec248a41783dab616880ebd272b34a500d68","after":"0398e6a21df247b62df7434b9981c7896f2f70ae","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-04T21:37:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Eagerly construct rust python wrappers in .append()\n\nThis commit updates the Python code in QuantumCircuit.append() method\nto eagerly construct the rust wrapper objects for python defined circuit\noperations.","shortMessageHtmlLink":"Eagerly construct rust python wrappers in .append()"}},{"before":"1ac5d4a643d72e0a44f0c0ebab244f1375dfac9f","after":"951dec248a41783dab616880ebd272b34a500d68","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-04T19:27:27.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Merge branch 'main' into gates-in-rust","shortMessageHtmlLink":"Merge branch 'main' into gates-in-rust"}},{"before":"42d5a48770254881f124a27620619a0128db9b88","after":"1ac5d4a643d72e0a44f0c0ebab244f1375dfac9f","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-04T19:26:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Remove Option<> from params field in CircuitInstruction\n\nThis commit removes the Option<> from the params field in\nCircuitInstruction. There is no real distinction between an empty vec\nand None in this case, so the option just added another layer in the API\nthat we didn't need to deal with. Also depending on the memory alignment\nusing an Option might have ended up in a little extra memory usage\ntoo, so removing it removes that potential source of overhead.","shortMessageHtmlLink":"Remove Option<> from params field in CircuitInstruction"}},{"before":"a7061d5a62a188412b0b40a48f5fbdf815cb579b","after":"42d5a48770254881f124a27620619a0128db9b88","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-04T17:56:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Shrink memory usage for extra mutable instruction state\n\nThis commit changes how we store the extra mutable instruction state\n(condition, duration, unit, and label) for each `CircuitInstruction`\nand `PackedInstruction` in the circuit. Previously it was all stored\nas separate `Option` fields on the struct, which required at least\na pointer's width for each field which was wasted space the majority of\nthe time as using these fields are not common. To optimize the memory\nlayout of the struct this moves these attributes to a new struct which\nis put in an `Option>` which reduces it from 4 pointer widths\ndown to 1 per object. This comes from extra runtime cost from the extra\nlayer of pointer indirection but as this is the uncommon path this\ntradeoff is fine.","shortMessageHtmlLink":"Shrink memory usage for extra mutable instruction state"}},{"before":"29f278f04cfec8a9cbabd635879b2e10a89d6aed","after":"a7061d5a62a188412b0b40a48f5fbdf815cb579b","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-04T12:34:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Fix typos in docs\r\n\r\nThis commit fixes several docs typos that were caught during code review.\n\nCo-authored-by: Eli Arbel <46826214+eliarbel@users.noreply.github.com>","shortMessageHtmlLink":"Fix typos in docs"}},{"before":"9e2111625fd5078c92dcaa658255849d0a60b949","after":"29f278f04cfec8a9cbabd635879b2e10a89d6aed","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-03T22:30:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Fix map_ops test case with no caching case","shortMessageHtmlLink":"Fix map_ops test case with no caching case"}},{"before":"ed422761a6cfb91013b8921b4f97cc183e759140","after":"9e2111625fd5078c92dcaa658255849d0a60b949","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-03T21:45:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Fix QuantumCircuit.compose() performance regression\n\nThis commit fixes a performance regression in the compose() method. This\nwas caused by the checking for classical conditions in the method\nrequiring eagerly converting all standard gates to a Python object. This\nchanges the logic to do this only if we know we have a condition (which\nwe can determine Python side now).","shortMessageHtmlLink":"Fix QuantumCircuit.compose() performance regression"}},{"before":"2f81bde8bf32b06b4165048896eabdb36470814d","after":"ed422761a6cfb91013b8921b4f97cc183e759140","ref":"refs/heads/gates-in-rust","pushedAt":"2024-06-03T19:57:24.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Fix lint","shortMessageHtmlLink":"Fix lint"}},{"before":"9ed5e671e94e52875e757862f429841ca573adef","after":null,"ref":"refs/heads/fix-rustup-override","pushedAt":"2024-06-01T19:46:30.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"}},{"before":"3ea95de30d91590e870ea0c26276c01bfe64a0a8","after":"2f81bde8bf32b06b4165048896eabdb36470814d","ref":"refs/heads/gates-in-rust","pushedAt":"2024-05-31T19:38:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Skip validation on gate creation from rust","shortMessageHtmlLink":"Skip validation on gate creation from rust"}},{"before":"b35bdbd0ef6dfa0e9569309fcb68ccfd039ed29f","after":"3ea95de30d91590e870ea0c26276c01bfe64a0a8","ref":"refs/heads/gates-in-rust","pushedAt":"2024-05-31T10:59:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Add back validation of parameters on gate methods\n\nIn the previous commit a side effect of the accidental eager operation\ncreation was that the parameter input for gates were being validated by\nthat. By fixing that in the previous commit the validation of input\nparameters on the circuit methods was broken. This commit fixes that\noversight and adds back the validation.","shortMessageHtmlLink":"Add back validation of parameters on gate methods"}},{"before":"dc9e8f0400965f0df9004ca2401019fd0e1dac61","after":"b35bdbd0ef6dfa0e9569309fcb68ccfd039ed29f","ref":"refs/heads/gates-in-rust","pushedAt":"2024-05-30T21:29:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Performance tuning circuit construction\n\nThis commit fixes some performance issues with the addition of standard\ngates to a circuit. To workaround potential reference cycles in Python\nwhen calling rust we need to check the parameters of the operation. This\nwas causing our fast path for standard gates to access the `operation`\nattribute to get the parameters. This causes the gate to be eagerly\nconstructed on the getter. However, the reference cycle case can only\nhappen in situations without a standard gate, and the fast path for\nadding standard gates directly won't need to run this so a skip is added\nif we're adding a standard gate.","shortMessageHtmlLink":"Performance tuning circuit construction"}},{"before":"dfb02de7246c92425d2a6f765e128c09cb9e71dc","after":"dc9e8f0400965f0df9004ca2401019fd0e1dac61","ref":"refs/heads/gates-in-rust","pushedAt":"2024-05-29T21:31:38.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"mtreinish","name":"Matthew Treinish","path":"/mtreinish","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2447371?s=80&v=4"},"commit":{"message":"Merge remote-tracking branch 'origin/main' into gates-in-rust","shortMessageHtmlLink":"Merge remote-tracking branch 'origin/main' into gates-in-rust"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEX48lOwA","startCursor":null,"endCursor":null}},"title":"Activity · mtreinish/qiskit-core"}