Make improvements

- wcsstr() is now linearly complex
- strstr16() is now linearly complex
- strstr() is now vectorized on aarch64 (10x)
- strstr() now uses KMP on pathological cases
- memmem() is now vectorized on aarch64 (10x)
- memmem() now uses KMP on pathological cases
- Disable shared_ptr::owner_before until fixed
- Make iswlower(), iswupper() consistent with glibc
- Remove figure space from iswspace() implementation
- Include line and paragraph separator in iswcntrl()
- Use Musl wcwidth(), iswalpha(), iswpunct(), towlower(), towupper()
This commit is contained in:
Justine Tunney 2024-09-01 01:14:40 -07:00
parent e1528a71e2
commit 7c83f4abc8
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
67 changed files with 5602 additions and 5165 deletions

10
libc/str/kmp.h Normal file
View file

@ -0,0 +1,10 @@
#ifndef COSMOPOLITAN_LIBC_STR_KMP_H_
#define COSMOPOLITAN_LIBC_STR_KMP_H_
COSMOPOLITAN_C_START_
char *__memmem_kmp(const char *, size_t, const char *, size_t);
char16_t *__memmem_kmp16(const char16_t *, size_t, const char16_t *, size_t);
wchar_t *__memmem_kmp32(const wchar_t *, size_t, const wchar_t *, size_t);
COSMOPOLITAN_C_END_
#endif /* COSMOPOLITAN_LIBC_STR_KMP_H_ */