{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":27890669,"defaultBranch":"master","name":"regex","ownerLogin":"rust-lang","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-12-11T20:39:09.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/5430905?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1711157140.0","currentOid":""},"activityList":{"items":[{"before":"9c139f4fa5c64a89075749cd5e57148c8eea8c22","after":"ddeb85eaa3bdf79d6306cc92a9d8bd89d839b5cd","ref":"refs/heads/master","pushedAt":"2024-05-08T15:08:50.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"cli/deps: update memmap2 to 0.9","shortMessageHtmlLink":"cli/deps: update memmap2 to 0.9"}},{"before":"b12a2761f91320bc8bf8246f88d2884a90034b5a","after":"9c139f4fa5c64a89075749cd5e57148c8eea8c22","ref":"refs/heads/master","pushedAt":"2024-05-06T23:55:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"syntax: simplify `Hir::dot` constructors\n\nThis also likely avoids a spurious alloc or two, although\r\nit assuredly doesn't matter in practice.","shortMessageHtmlLink":"syntax: simplify Hir::dot constructors"}},{"before":"4c565c8a636aa0e1e13dd801340ad6545fd256e9","after":"b12a2761f91320bc8bf8246f88d2884a90034b5a","ref":"refs/heads/master","pushedAt":"2024-04-22T14:21:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"syntax/utf8: avoid a spurious vector reallocation\n\nThis reworks `Utf8Sequences` logic in order to avoid allocating a\r\n0-sized vector and immediately reallocating it for the initial element.\r\nDirectly create the populated vector instead.\r\n\r\nI was looking at the memory usage patterns of [rolldown] through\r\nheaptrack, and this spot showed up as a potentially-spurious temporary\r\nallocation. The consumer side is [here][consumer side]. I do not have a\r\nspecific benchmark for this.\r\n\r\n[rolldown]: https://github.com/rolldown/rolldown\r\n[consumer side]: https://github.com/rolldown/rolldown/blob/ce36a195ed4e9ce7c446557cefff4750a2268e01/crates/rolldown/src/utils/extract_hash_pattern.rs#L12","shortMessageHtmlLink":"syntax/utf8: avoid a spurious vector reallocation"}},{"before":"66a3bca217881fe8eee9a5a898aea4ecb1eb5cf3","after":"4c565c8a636aa0e1e13dd801340ad6545fd256e9","ref":"refs/heads/master","pushedAt":"2024-04-18T12:25:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"doc: fix typos\n\nPR #1182","shortMessageHtmlLink":"doc: fix typos"}},{"before":"d895bd984537538240e175cc55bc010307210468","after":"66a3bca217881fe8eee9a5a898aea4ecb1eb5cf3","ref":"refs/heads/master","pushedAt":"2024-03-28T12:25:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"doc: remove repetitive words\n\nPR #1179","shortMessageHtmlLink":"doc: remove repetitive words"}},{"before":"f5d0b69b750369d535c3f200222132403b0d9bff","after":"d895bd984537538240e175cc55bc010307210468","ref":"refs/heads/master","pushedAt":"2024-03-26T17:30:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"regex-syntax-0.8.3","shortMessageHtmlLink":"regex-syntax-0.8.3"}},{"before":"aa2d8bd8be283471b17b4ab6faeae5b751553572","after":"f5d0b69b750369d535c3f200222132403b0d9bff","ref":"refs/heads/master","pushedAt":"2024-03-26T17:30:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"syntax: accept `{,n}` as an equivalent to `{0,n}`\n\nMost regular expression engines don't accept the `{,n}` syntax, but\r\nsome other do it (namely Python's `re` library). This introduces a new\r\nparser configuration option that enables the `{,n}` syntax.\r\n\r\nPR #1086","shortMessageHtmlLink":"syntax: accept {,n} as an equivalent to {0,n}"}},{"before":"088d7f3269665a11aabadd89335eb09316e9c785","after":"aa2d8bd8be283471b17b4ab6faeae5b751553572","ref":"refs/heads/master","pushedAt":"2024-03-23T01:25:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"1.10.4","shortMessageHtmlLink":"1.10.4"}},{"before":"4228136ff1f88c3650646dc15bf1fb9fabe7ae79","after":null,"ref":"refs/heads/ag/cow-guarantee","pushedAt":"2024-03-23T01:25:11.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"}},{"before":"a5ae35153a6ec61e64cb297155f7d91c11b629c7","after":"088d7f3269665a11aabadd89335eb09316e9c785","ref":"refs/heads/master","pushedAt":"2024-03-23T01:25:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"api: add Cow guarantee to replace API\n\nThis adds a guarantee to the API of the `replace`, `replace_all` and\n`replacen` routines that, when `Cow::Borrowed` is returned, it is\nguaranteed that it is equivalent to the `haystack` given.\n\nThe implementation has always matched this behavior, but this elevates\nthe implementation behavior to an API guarantee.\n\nThere do exists implementations where this guarantee might not be upheld\nin every case. For example, if the final result were the empty string,\nwe could return a `Cow::Borrowed`. Similarly, if the final result were a\nsubstring of `haystack`, then `Cow::Borrowed` could be returned in that\ncase too. In practice, these sorts of optimizations are tricky to do in\npractice, and seem like niche corner cases that aren't important to\noptimize.\n\nNevertheless, having this guarantee is useful because it can be used as\na signal that the original input remains unchanged. This came up in\ndiscussions with @quicknir on Discord. Namely, in cases where one is\ndoing a sequence of replacements and in most cases nothing is replaced,\nusing a `Cow` is nice to be able to avoid copying the haystack over and\nover again. But to get this to work right, you have to know whether a\n`Cow::Borrowed` matches the input or not. If it doesn't, then you'd need\nto transform it into an owned string. For example, this code tries to do\nreplacements on each of a sequence of `Cow` values, where the\ncommon case is no replacement:\n\n```rust\nuse std::borrow::Cow;\n\nuse regex::Regex;\n\nfn trim_strs(strs: &mut Vec>) {\n strs\n .iter_mut()\n .for_each(|s| moo(s, ®ex_replace));\n}\n\nfn moo Cow>(c: &mut Cow, f: F) {\n let result = f(&c);\n match result {\n Cow::Owned(s) => *c = Cow::Owned(s),\n Cow::Borrowed(s) => {\n *c = Cow::Borrowed(s);\n }\n }\n}\n\nfn regex_replace(s: &str) -> Cow {\n Regex::new(r\"does-not-matter\").unwrap().replace_all(s, \"whatever\")\n}\n```\n\nBut this doesn't pass `borrowck`. Instead, you could write `moo` like\nthis:\n\n```rust\nfn moo Cow>(c: &mut Cow, f: F) {\n let result = f(&c);\n match result {\n Cow::Owned(s) => *c = Cow::Owned(s),\n Cow::Borrowed(s) => {\n if !std::ptr::eq(s, &**c) {\n *c = Cow::Owned(s.to_owned())\n }\n }\n }\n}\n```\n\nBut the `std::ptr:eq` call here is a bit strange. Instead, after this PR\nand the new guarantee, one can write it like this:\n\n```rust\nfn moo Cow>(c: &mut Cow, f: F) {\n if let Cow::Owned(s) = f(&c) {\n *c = Cow::Owned(s);\n }\n}\n```","shortMessageHtmlLink":"api: add Cow guarantee to replace API"}},{"before":null,"after":"4228136ff1f88c3650646dc15bf1fb9fabe7ae79","ref":"refs/heads/ag/cow-guarantee","pushedAt":"2024-03-23T00:48:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"api: add Cow guarantee to replace API\n\nThis adds a guarantee to the API of the `replace`, `replace_all` and\n`replacen` routines that, when `Cow::Borrowed` is returned, it is\nguaranteed that it is equivalent to the `haystack` given.\n\nThe implementation has always matched this behavior, but this elevates\nthe implementation behavior to an API guarantee.\n\nThere do exists implementations where this guarantee might not be upheld\nin every case. For example, if the final result were the empty string,\nwe could return a `Cow::Borrowed`. Similarly, if the final result were a\nsubstring of `haystack`, then `Cow::Borrowed` could be returned in that\ncase too. In practice, these sorts of optimizations are tricky to do in\npractice, and seem like niche corner cases that aren't important to\noptimize.\n\nNevertheless, having this guarantee is useful because it can be used as\na signal that the original input remains unchanged. This came up in\ndiscussions with @quicknir on Discord. Namely, in cases where one is\ndoing a sequence of replacements and in most cases nothing is replaced,\nusing a `Cow` is nice to be able to avoid copying the haystack over and\nover again. But to get this to work right, you have to know whether a\n`Cow::Borrowed` matches the input or not. If it doesn't, then you'd need\nto transform it into an owned string. For example, this code tries to do\nreplacements on each of a sequence of `Cow` values, where the\ncommon case is no replacement:\n\n```rust\nuse std::borrow::Cow;\n\nuse regex::Regex;\n\nfn trim_strs(strs: &mut Vec>) {\n strs\n .iter_mut()\n .for_each(|s| moo(s, ®ex_replace));\n}\n\nfn moo Cow>(c: &mut Cow, f: F) {\n let result = f(&c);\n match result {\n Cow::Owned(s) => *c = Cow::Owned(s),\n Cow::Borrowed(s) => {\n *c = Cow::Borrowed(s);\n }\n }\n}\n\nfn regex_replace(s: &str) -> Cow {\n Regex::new(r\"does-not-matter\").unwrap().replace_all(s, \"whatever\")\n}\n```\n\nBut this doesn't pass `borrowck`. Instead, you could write `moo` like\nthis:\n\n```rust\nfn moo Cow>(c: &mut Cow, f: F) {\n let result = f(&c);\n match result {\n Cow::Owned(s) => *c = Cow::Owned(s),\n Cow::Borrowed(s) => {\n if !std::ptr::eq(s, &**c) {\n *c = Cow::Owned(s.to_owned())\n }\n }\n }\n}\n```\n\nBut the `std::ptr:eq` call here is a bit strange. Instead, after this PR\nand the new guarantee, one can write it like this:\n\n```rust\nfn moo Cow>(c: &mut Cow, f: F) {\n if let Cow::Owned(s) = f(&c) {\n *c = Cow::Owned(s);\n }\n}\n```","shortMessageHtmlLink":"api: add Cow guarantee to replace API"}},{"before":"9cf4a42a9361f42d9aa6afd1245c0e37dc0c8771","after":"a5ae35153a6ec61e64cb297155f7d91c11b629c7","ref":"refs/heads/master","pushedAt":"2024-03-04T12:49:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"regex-automata-0.4.6","shortMessageHtmlLink":"regex-automata-0.4.6"}},{"before":"da07b93d7f87318364bf7f0fb00b16cbd7b998fe","after":null,"ref":"refs/heads/ag/fix-reverse-unanchored-prefix","pushedAt":"2024-03-04T12:48:50.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"}},{"before":"10fe722a3fcfdc17068b21f3262189cc52227bb5","after":"9cf4a42a9361f42d9aa6afd1245c0e37dc0c8771","ref":"refs/heads/master","pushedAt":"2024-03-04T12:48:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"automata: fix bug where reverse NFA lacked an unanchored prefix\n\nPreviously, when compiling a Thompson NFA, we were omitting an\nunanchored prefix when the HIR contained a `^` in its prefix. We did\nthis because unanchored prefix in that case would never match because of\nthe requirement imposed by `^`.\n\nThe problem with that is it's incorrect when compiling a reverse\nautomaton. For example, in the case of building a reverse NFA for `^Qu`,\nwe should sitll include an unanchored prefix because the `^` in that\ncase has no conflict with it. It would be like if we omitted an\nunanchored prefix for `Qu$` in a forward NFA, which is obviously wrong.\n\nThe fix here is pretty simple: in the reverse case, check for `$` in the\nsuffix of the HIR rather than a `^` in the prefix.\n\nFixes #1169","shortMessageHtmlLink":"automata: fix bug where reverse NFA lacked an unanchored prefix"}},{"before":null,"after":"da07b93d7f87318364bf7f0fb00b16cbd7b998fe","ref":"refs/heads/ag/fix-reverse-unanchored-prefix","pushedAt":"2024-03-04T12:38:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"automata: fix bug where reverse NFA lacked an unanchored prefix\n\nPreviously, when compiling a Thompson NFA, we were omitting an\nunanchored prefix when the HIR contained a `^` in its prefix. We did\nthis because unanchored prefix in that case would never match because of\nthe requirement imposed by `^`.\n\nThe problem with that is it's incorrect when compiling a reverse\nautomaton. For example, in the case of building a reverse NFA for `^Qu`,\nwe should sitll include an unanchored prefix because the `^` in that\ncase has no conflict with it. It would be like if we omitted an\nunanchored prefix for `Qu$` in a forward NFA, which is obviously wrong.\n\nThe fix here is pretty simple: in the reverse case, check for `$` in the\nsuffix of the HIR rather than a `^` in the prefix.\n\nFixes #1169","shortMessageHtmlLink":"automata: fix bug where reverse NFA lacked an unanchored prefix"}},{"before":"d7f9347f2a8a7f4e7583c88876411da12a09b572","after":"10fe722a3fcfdc17068b21f3262189cc52227bb5","ref":"refs/heads/master","pushedAt":"2024-02-26T01:37:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"style: clean up some recent lint violations\n\nIt looks like `dead_code` got a little smarter, and more pervasively,\nsome new lint that detects superfluous imports found a bunch of them.","shortMessageHtmlLink":"style: clean up some recent lint violations"}},{"before":"658463bfe0c9d053ce991a5a45cd8062966e33ec","after":null,"ref":"refs/heads/ag/release-regex-automata","pushedAt":"2024-01-25T15:27:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"}},{"before":"07ef7f1550d59a548ee58631cf2bca263e67cb8e","after":"d7f9347f2a8a7f4e7583c88876411da12a09b572","ref":"refs/heads/master","pushedAt":"2024-01-25T15:27:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"regex-automata-0.4.5","shortMessageHtmlLink":"regex-automata-0.4.5"}},{"before":null,"after":"658463bfe0c9d053ce991a5a45cd8062966e33ec","ref":"refs/heads/ag/release-regex-automata","pushedAt":"2024-01-25T15:27:22.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"regex-automata-0.4.5","shortMessageHtmlLink":"regex-automata-0.4.5"}},{"before":"0c0990399270277832fbb5b91a1fa118e6f63dba","after":"07ef7f1550d59a548ee58631cf2bca263e67cb8e","ref":"refs/heads/master","pushedAt":"2024-01-25T15:25:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"automata: make additional prefileter metadata public\n\nThis commit exposes `is_fast` and also adds `max_needle_len`\r\nto a prefilter. This is useful for engines implemented outside\r\nof `regex-automata`.\r\n\r\nPR #1156","shortMessageHtmlLink":"automata: make additional prefileter metadata public"}},{"before":"fbd2537a58008c1045bc063b30a3e1f130742aac","after":"0c0990399270277832fbb5b91a1fa118e6f63dba","ref":"refs/heads/master","pushedAt":"2024-01-21T14:09:42.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"1.10.3","shortMessageHtmlLink":"1.10.3"}},{"before":"027eebd6fde307076603530c999afcfd271bb037","after":"fbd2537a58008c1045bc063b30a3e1f130742aac","ref":"refs/heads/master","pushedAt":"2024-01-21T14:07:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"safety: guard in Input::new against incorrect AsRef implementations\n\nBefore this commit, Input::new calls haystack.as_ref() twice, once to\nget the actual haystack slice and the second time to get its length. It\nmakes the assumption that the second call will return the same slice,\nbut malicious implementations of AsRef can return different slices\nand thus different lengths. This is important because there's unsafe\ncode relying on the Input's span being inbounds with respect to the\nhaystack, but if the second call to .as_ref() returns a bigger slice\nthis won't be true.\n\nFor example, this snippet causes Miri to report UB on an unchecked\nslice access in find_fwd_imp (though it will also panic sometime later\nwhen run normally, but at that point the UB already happened):\n\n use regex_automata::{Input, meta::{Builder, Config}};\n use std::cell::Cell;\n\n struct Bad(Cell);\n\n impl AsRef<[u8]> for Bad {\n fn as_ref(&self) -> &[u8] {\n if self.0.replace(false) {\n &[]\n } else {\n &[0; 1000]\n }\n }\n }\n\n let bad = Bad(Cell::new(true));\n let input = Input::new(&bad);\n let regex = Builder::new()\n // Not setting this causes some checked access to occur before\n // the unchecked ones, avoiding the UB\n .configure(Config::new().auto_prefilter(false))\n .build(\"a+\")\n .unwrap();\n regex.find(input);\n\nThis commit fixes the problem by just calling .as_ref() once and use\nthe length of the returned slice as the span's end value. A regression\ntest has also been added.\n\nCloses #1154","shortMessageHtmlLink":"safety: guard in Input::new against incorrect AsRef implementations"}},{"before":"006697e7afa31d5185204ae7b10ea39ecb4afab2","after":null,"ref":"refs/heads/ag/fix-default-features","pushedAt":"2024-01-10T14:02:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"}},{"before":"dc0a9d239cf34cda09cbdeffea3919b4c627836c","after":"027eebd6fde307076603530c999afcfd271bb037","ref":"refs/heads/master","pushedAt":"2024-01-10T14:02:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"cargo: set 'default-features = false' for memchr and aho-corasick\n\nI'm not sure how this one slipped by. Without this, I'd suppose that\nno-std support doesn't actually work? Or at least, one would have to\ndisable the use of both memchr and aho-corasick entirely, since they\ndepend on std by default. Not quite sure how to test this.\n\nFixes #1147","shortMessageHtmlLink":"cargo: set 'default-features = false' for memchr and aho-corasick"}},{"before":null,"after":"006697e7afa31d5185204ae7b10ea39ecb4afab2","ref":"refs/heads/ag/fix-default-features","pushedAt":"2024-01-10T13:23:08.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"cargo: set 'default-features = false' for memchr and aho-corasick\n\nI'm not sure how this one slipped by. Without this, I'd suppose that\nno-std support doesn't actually work? Or at least, one would have to\ndisable the use of both memchr and aho-corasick entirely, since they\ndepend on std by default. Not quite sure how to test this.\n\nFixes #1147","shortMessageHtmlLink":"cargo: set 'default-features = false' for memchr and aho-corasick"}},{"before":"a3d5975c35249b0f726078a19160f9269da64964","after":"dc0a9d239cf34cda09cbdeffea3919b4c627836c","ref":"refs/heads/master","pushedAt":"2023-12-29T01:40:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"ci: small clean-ups\n\nThe regex 1.10 release bumped the MSRV to Rust 1.65, so we no longer\nneed to pin to an older memchr release.\n\nWe also bump to `actions/checkout@v4`.","shortMessageHtmlLink":"ci: small clean-ups"}},{"before":"4f5992fa442bb469be7042454e6a1b74181dd9a5","after":"a3d5975c35249b0f726078a19160f9269da64964","ref":"refs/heads/master","pushedAt":"2023-12-20T17:22:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"doc: fix link in Index<&str> impl docs\n\nThis referenced `Captures::get`, but it should reference\r\n`Captures::name`. This was likely a transcription error\r\nfrom the docs for the `Index` impl.","shortMessageHtmlLink":"doc: fix link in Index<&str> impl docs"}},{"before":"a44f10523f12fbee2305371cb0bf57e72dff1abc","after":null,"ref":"refs/heads/ag/doc/captures","pushedAt":"2023-12-05T01:21:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"}},{"before":"837fd85e79fac2a4ea64030411b9a4a7b17dfa42","after":"4f5992fa442bb469be7042454e6a1b74181dd9a5","ref":"refs/heads/master","pushedAt":"2023-12-05T01:21:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"doc: tweak `Captures` documentation\n\nThis was suggested [on Discord](https://discord.com/channels/273534239310479360/1120175689124036669/1181401471720370237).","shortMessageHtmlLink":"doc: tweak Captures documentation"}},{"before":null,"after":"a44f10523f12fbee2305371cb0bf57e72dff1abc","ref":"refs/heads/ag/doc/captures","pushedAt":"2023-12-05T01:11:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"BurntSushi","name":"Andrew Gallant","path":"/BurntSushi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/456674?s=80&v=4"},"commit":{"message":"doc: tweak `Captures` documentation\n\nThis was suggested [on Discord](https://discord.com/channels/273534239310479360/1120175689124036669/1181401471720370237).","shortMessageHtmlLink":"doc: tweak Captures documentation"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERMO5AwA","startCursor":null,"endCursor":null}},"title":"Activity ยท rust-lang/regex"}