{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":74106774,"defaultBranch":"master","name":"hashes","ownerLogin":"RustCrypto","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-11-18T07:40:17.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/22351541?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1724760771.0","currentOid":""},"activityList":{"items":[{"before":"92142ba248abedbc8fffd0ed6665f1947a7daa8d","after":null,"ref":"refs/heads/sha2/opaque_load","pushedAt":"2024-08-27T12:12:51.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"}},{"before":"b2312fa6965159803b06bb8eb38209f5e7fdeb39","after":"9a2bb2590a6a6bf829965835c9825191e81f1e1a","ref":"refs/heads/master","pushedAt":"2024-08-27T12:12:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"sha2: move `opaque_load` to the utils module (#618)","shortMessageHtmlLink":"sha2: move opaque_load to the utils module (#618)"}},{"before":null,"after":"92142ba248abedbc8fffd0ed6665f1947a7daa8d","ref":"refs/heads/sha2/opaque_load","pushedAt":"2024-08-27T12:09:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"sha2: move `opaque_load` to the utils module","shortMessageHtmlLink":"sha2: move opaque_load to the utils module"}},{"before":"88bae593de260053edd6ca1c52184dc859432699","after":null,"ref":"refs/heads/sha2/riscv_unaligned","pushedAt":"2024-08-27T09:56:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"}},{"before":"b5c99d342e475d81bafb02ca305a622f552e9241","after":"b2312fa6965159803b06bb8eb38209f5e7fdeb39","ref":"refs/heads/master","pushedAt":"2024-08-27T09:56:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"sha2: improve RISC-V Zknh backends (#617)\n\nAnnoyingly, RISC-V is really inconvenient when we have to deal with\r\nmisaligned loads/stores. LLVM by default generates very [inefficient\r\ncode](https://rust.godbolt.org/z/3Yaj4fq5o) which loads every byte\r\nseparately and combines them into a 32/64 bit integer. The `ld`\r\ninstruction \"may\" support misaligned loads and for Linux user-space it's\r\neven\r\n[guaranteed](https://www.kernel.org/doc/html/v6.10/arch/riscv/uabi.html#misaligned-accesses),\r\nbut it can be (and IIUC often in practice is) \"extremely slow\", so we\r\nshould not rely on it while writing performant code.\r\n\r\nAfter asking around, it looks like this mess is here to stay, so we have\r\nno choice but to work around it. To do that this PR introduces two\r\nseparate paths for loading block data: aligned and misaligned. The\r\naligned path should be the most common one. In the misaligned path we\r\nhave to rely on inline assembly since we have to load some bits outside\r\nof the block.\r\n\r\nAdditionally, this PR makes inlining in the `riscv-zknh` backend less\r\naggressive, which makes generated binary code 3-4 times smaller at the\r\ncost of one additional branch.\r\n\r\nGenerated assembly for RV64:\r\n- SHA-256, unrolled: https://rust.godbolt.org/z/GxPM8PE3P (2278 bytes)\r\n- SHA-256, compact: https://rust.godbolt.org/z/4KWrcve9E (538 bytes)\r\n- SHA-512, unrolled: https://rust.godbolt.org/z/Th8ro8Tbo (2278 bytes)\r\n- SHA-512: compact: https://rust.godbolt.org/z/dqrv48ax3 (530 bytes)","shortMessageHtmlLink":"sha2: improve RISC-V Zknh backends (#617)"}},{"before":"1dec071608858ababa56d1042f248e3699de1141","after":"88bae593de260053edd6ca1c52184dc859432699","ref":"refs/heads/sha2/riscv_unaligned","pushedAt":"2024-08-27T09:32:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"fix","shortMessageHtmlLink":"fix"}},{"before":"8386abc8cae255f0f0e7c46fe783f9fd6fc72a8e","after":"1dec071608858ababa56d1042f248e3699de1141","ref":"refs/heads/sha2/riscv_unaligned","pushedAt":"2024-08-27T09:28:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Expose only `load_block` from the util modules","shortMessageHtmlLink":"Expose only load_block from the util modules"}},{"before":"87c8b8779a2df01b4f5ee73ff486bde86b0952ec","after":"8386abc8cae255f0f0e7c46fe783f9fd6fc72a8e","ref":"refs/heads/sha2/riscv_unaligned","pushedAt":"2024-08-26T17:57:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"fix opaque load","shortMessageHtmlLink":"fix opaque load"}},{"before":"5ad4f5859445f180c616b02c6220fd4767d7de03","after":"87c8b8779a2df01b4f5ee73ff486bde86b0952ec","ref":"refs/heads/sha2/riscv_unaligned","pushedAt":"2024-08-26T17:47:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"fix opaque load","shortMessageHtmlLink":"fix opaque load"}},{"before":"2326f77b27b32e6c58bd0afa047be9b759b2aa2e","after":"5ad4f5859445f180c616b02c6220fd4767d7de03","ref":"refs/heads/sha2/riscv_unaligned","pushedAt":"2024-08-26T17:07:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Use asm!-based opaque load instead of volatile read","shortMessageHtmlLink":"Use asm!-based opaque load instead of volatile read"}},{"before":"18db6234c1d72808ee5a616271622444b7b19b5e","after":"2326f77b27b32e6c58bd0afa047be9b759b2aa2e","ref":"refs/heads/sha2/riscv_unaligned","pushedAt":"2024-08-26T16:55:15.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"fix CI","shortMessageHtmlLink":"fix CI"}},{"before":"8fb3a994310ed70580e33fb37b5c96132151e261","after":"18db6234c1d72808ee5a616271622444b7b19b5e","ref":"refs/heads/sha2/riscv_unaligned","pushedAt":"2024-08-26T16:30:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"relax target feature requirements","shortMessageHtmlLink":"relax target feature requirements"}},{"before":null,"after":"8fb3a994310ed70580e33fb37b5c96132151e261","ref":"refs/heads/sha2/riscv_unaligned","pushedAt":"2024-08-26T16:27:46.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Use less aggressive inlining in the riscv-zknh backend","shortMessageHtmlLink":"Use less aggressive inlining in the riscv-zknh backend"}},{"before":"cd60602b8cae88633644b53c975ceb0822d2f65c","after":null,"ref":"refs/heads/rm_doc_cfg","pushedAt":"2024-08-23T14:14:40.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"}},{"before":"bca5389861cbaa9c94fbb01cf1753a26f595f36e","after":"b5c99d342e475d81bafb02ca305a622f552e9241","ref":"refs/heads/master","pushedAt":"2024-08-23T14:14:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Remove remaining uses of `doc(cfg(..))` (#616)","shortMessageHtmlLink":"Remove remaining uses of doc(cfg(..)) (#616)"}},{"before":null,"after":"cd60602b8cae88633644b53c975ceb0822d2f65c","ref":"refs/heads/rm_doc_cfg","pushedAt":"2024-08-23T13:44:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Remove remaining uses of `doc(cfg(..))`","shortMessageHtmlLink":"Remove remaining uses of doc(cfg(..))"}},{"before":"990e807b412f2fe3781d4e9ee3f3cf06578759e5","after":null,"ref":"refs/heads/sha2/soft_feature","pushedAt":"2024-08-23T13:37:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"}},{"before":"03e1d29d1fdd7bb56e5cdec0d4a1331d0db24903","after":"bca5389861cbaa9c94fbb01cf1753a26f595f36e","ref":"refs/heads/master","pushedAt":"2024-08-23T13:37:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"sha2: replace `soft` crate feature with configuration flag (#615)\n\nTo force use of the software backend users now have to use\r\n`RUSTFLAGS='--cfg sha2_backend=\"soft\"'`.","shortMessageHtmlLink":"sha2: replace soft crate feature with configuration flag (#615)"}},{"before":"61edda02cb4028624c15d13c402ed1228fcb6307","after":"990e807b412f2fe3781d4e9ee3f3cf06578759e5","ref":"refs/heads/sha2/soft_feature","pushedAt":"2024-08-23T13:34:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Tweak CI config","shortMessageHtmlLink":"Tweak CI config"}},{"before":"3ba5630c9dbe7b1a162eb601870f9f402139c0bb","after":"61edda02cb4028624c15d13c402ed1228fcb6307","ref":"refs/heads/sha2/soft_feature","pushedAt":"2024-08-23T13:33:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Fix RV64 CI job","shortMessageHtmlLink":"Fix RV64 CI job"}},{"before":"b286ffad3cb4a45a9641897aff5ba54305224fd9","after":"3ba5630c9dbe7b1a162eb601870f9f402139c0bb","ref":"refs/heads/sha2/soft_feature","pushedAt":"2024-08-23T13:32:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"fix CI","shortMessageHtmlLink":"fix CI"}},{"before":null,"after":"b286ffad3cb4a45a9641897aff5ba54305224fd9","ref":"refs/heads/sha2/soft_feature","pushedAt":"2024-08-23T13:28:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"sha2: replace `soft` crate feature with configuration flag","shortMessageHtmlLink":"sha2: replace soft crate feature with configuration flag"}},{"before":"a414a1c22ec230bc3a358fe2fee14a8bd5944fc2","after":null,"ref":"refs/heads/sha2/riscv-zknh","pushedAt":"2024-08-23T13:02:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"}},{"before":"13cc6c861b7b423bf1aa8f5ca491ab7ededa51f4","after":"03e1d29d1fdd7bb56e5cdec0d4a1331d0db24903","ref":"refs/heads/master","pushedAt":"2024-08-23T13:02:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"sha2: RISC-V scalar crypto extension support (#614)\n\nThe support is Nightly-only and requires to enable the `sha2_backend`\r\nconfiguration flag with a value equal to `riscv-zknh` or `riscv-zknh-compact`.\r\n\r\nThe resulting assembly and binary size of the `compress` function (not\r\ncounting the `K32` and `K64` statics):\r\n- SHA-256, unrolled: https://rust.godbolt.org/z/177bqKd3h (5280 bytes)\r\n- SHA-256, compact: https://rust.godbolt.org/z/Kzx59bsdP (1308 bytes)\r\n- SHA-512, unrolled: https://rust.godbolt.org/z/ExqqrfE1r (7964 bytes)\r\n- SHA-512: compact: https://rust.godbolt.org/z/z41v6d4do (2852 bytes)","shortMessageHtmlLink":"sha2: RISC-V scalar crypto extension support (#614)"}},{"before":"8347f7130a24ea0ddfede8b0f3315763971d4fe2","after":"a414a1c22ec230bc3a358fe2fee14a8bd5944fc2","ref":"refs/heads/sha2/riscv-zknh","pushedAt":"2024-08-21T17:00:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"fix Clippy lints","shortMessageHtmlLink":"fix Clippy lints"}},{"before":"55538b5ed1ecf8169734d10dd9f6bf7ffb1479b0","after":"8347f7130a24ea0ddfede8b0f3315763971d4fe2","ref":"refs/heads/sha2/riscv-zknh","pushedAt":"2024-08-21T16:29:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Add helper functions for block conversion","shortMessageHtmlLink":"Add helper functions for block conversion"}},{"before":"14158e96d7723727bbe51e1368561c5250a2de79","after":"55538b5ed1ecf8169734d10dd9f6bf7ffb1479b0","ref":"refs/heads/sha2/riscv-zknh","pushedAt":"2024-08-21T14:54:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Add compilation error for zknh on non-RISC-V targets","shortMessageHtmlLink":"Add compilation error for zknh on non-RISC-V targets"}},{"before":"b2636354d9074fdbe4f7c2164a443a45583d6a28","after":"14158e96d7723727bbe51e1368561c5250a2de79","ref":"refs/heads/sha2/riscv-zknh","pushedAt":"2024-08-21T14:43:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Add compact versions","shortMessageHtmlLink":"Add compact versions"}},{"before":"b37cfa0df8056e0eb5c263884177bec0fe6063d7","after":"b2636354d9074fdbe4f7c2164a443a45583d6a28","ref":"refs/heads/sha2/riscv-zknh","pushedAt":"2024-08-21T14:23:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"},"commit":{"message":"Replace macros with fns","shortMessageHtmlLink":"Replace macros with fns"}},{"before":"796592ae57e18d390d1093350049d4bd6bd828f9","after":null,"ref":"refs/heads/sha1/fix_cfg","pushedAt":"2024-08-21T11:38:36.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"newpavlov","name":"Artyom Pavlov","path":"/newpavlov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/329626?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEpVIQLgA","startCursor":null,"endCursor":null}},"title":"Activity ยท RustCrypto/hashes"}