ladybird/Libraries/LibUnicode
Andreas Kling b23aa38546 AK: Adopt mimalloc v2 as main allocator
Use mimalloc for Ladybird-owned allocations without overriding malloc().
Route kmalloc(), kcalloc(), krealloc(), and kfree() through mimalloc,
and put the embedded Rust crates on the same allocator via a shared
shim in AK/kmalloc.cpp.

This also lets us drop kfree_sized(), since it no longer used its size
argument. StringData, Utf16StringData, JS object storage, Rust error
strings, and the CoreAudio playback helpers can all free their AK-backed
storage with plain kfree().

Sanitizer builds still use the system allocator. LeakSanitizer does not
reliably trace references stored in mimalloc-managed AK containers, so
static caches and other long-lived roots can look leaked. Pass the old
size into the Rust realloc shim so aligned fallback reallocations can
move posix_memalign-backed blocks safely.

Static builds still need a little linker help. macOS app binaries need
the Rust allocator entry points forced in from liblagom-ak.a, while
static ELF links can pull in identical allocator shim definitions from
multiple Rust staticlibs. Keep the Apple -u flags and allow those
duplicate shim symbols for LibJS and LibRegex links on Linux and BSD.
2026-04-08 09:57:53 +02:00
..
Calendars LibUnicode: Handle ICU vs ECMA-402 era formatting discrepancies 2026-03-13 14:43:45 -04:00
Rust AK: Adopt mimalloc v2 as main allocator 2026-04-08 09:57:53 +02:00
Calendar.cpp LibUnicode: Generate FFI bindings with cbindgen 2026-03-18 08:36:13 -04:00
Calendar.h LibUnicode: Use a calendar with icu4x glue to format lunisolar calendars 2026-03-12 17:29:59 -05:00
CharacterTypes.cpp LibUnicode: Avoid expensive path in canonicalize() for ASCII chars 2026-03-20 16:10:25 -05:00
CharacterTypes.h LibUnicode: Add Unicode case folding support for regex matching 2026-02-16 07:51:00 -05:00
CMakeLists.txt Meta: Make Rust FFI headers reproducible 2026-03-31 15:59:04 +02:00
Collator.cpp LibUnicode: Print error codes when calls to ICU fail 2026-02-21 16:55:36 -05:00
Collator.h LibJS+LibUnicode: Port Intl.Collator to UTF-16 strings 2025-07-24 10:39:52 +02:00
CurrencyCode.cpp Everywhere: Include HashMap only where it's actually used 2024-12-09 12:31:16 +01:00
CurrencyCode.h Everywhere: Include HashMap only where it's actually used 2024-12-09 12:31:16 +01:00
DateTimeFormat.cpp LibUnicode: Handle ICU vs ECMA-402 era formatting discrepancies 2026-03-13 14:43:45 -04:00
DateTimeFormat.h LibUnicode: Preserve original ICU pattern in CalendarPattern 2026-03-09 19:02:59 +01:00
DisplayNames.cpp LibJS+LibUnicode: Port Intl.DisplayNames to UTF-16 strings 2025-07-24 10:39:52 +02:00
DisplayNames.h LibJS+LibUnicode: Port Intl.DisplayNames to UTF-16 strings 2025-07-24 10:39:52 +02:00
DurationFormat.cpp LibJS+LibUnicode: Port Intl.DurationFormat to UTF-16 strings 2025-07-24 10:39:52 +02:00
DurationFormat.h LibJS+LibUnicode: Port Intl.DurationFormat to UTF-16 strings 2025-07-24 10:39:52 +02:00
Forward.h LibJS+LibUnicode: Migrate some Temporal calendar types to LibUnicode 2026-03-09 11:40:59 +01:00
ICU.cpp LibUnicode: Work around ICU bug over-canonicalizing "yes" keyword values 2026-03-14 08:17:03 -04:00
ICU.h LibUnicode: Work around ICU bug over-canonicalizing "yes" keyword values 2026-03-14 08:17:03 -04:00
IDNA.cpp Meta+LibUnicode+LibJS: Upgrade to ICU 76.1 2025-01-18 17:56:40 -05:00
IDNA.h LibUnicode: Support IgnorePunnycode option in ToAscii algorithm 2024-12-05 17:29:49 +01:00
ListFormat.cpp LibUnicode: Print error codes when calls to ICU fail 2026-02-21 16:55:36 -05:00
ListFormat.h LibJS+LibUnicode: Port Intl.ListFormat to UTF-16 strings 2025-07-24 10:39:52 +02:00
Locale.cpp LibUnicode: Work around ICU bug over-canonicalizing "yes" keyword values 2026-03-14 08:17:03 -04:00
Locale.h LibJS+LibUnicode: Add an API to loop over Unicode extensions of one type 2026-03-14 08:17:03 -04:00
Normalize.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Normalize.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
NumberFormat.cpp LibUnicode: Print error codes when calls to ICU fail 2026-02-21 16:55:36 -05:00
NumberFormat.h LibJS+LibUnicode: Support Intl.MathematicalValue in Intl.PluralRules 2026-02-06 12:19:46 -05:00
PartitionRange.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
PluralRules.cpp LibUnicode: Port Intl.PluralRules to UTF-16 strings 2025-07-24 10:39:52 +02:00
PluralRules.h LibUnicode: Port Intl.PluralRules to UTF-16 strings 2025-07-24 10:39:52 +02:00
RelativeTimeFormat.cpp LibUnicode: Print error codes when calls to ICU fail 2026-02-21 16:55:36 -05:00
RelativeTimeFormat.h LibJS+LibUnicode: Port Intl.RelativeTimeFormat to UTF-16 strings 2025-07-24 10:39:52 +02:00
Segmenter.cpp LibUnicode: Print error codes when calls to ICU fail 2026-02-21 16:55:36 -05:00
Segmenter.h LibUnicode+LibWeb: Add infrastructure for line segmentation using ICU 2026-02-14 16:23:18 -05:00
String.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
TimeZone.cpp LibJS+LibUnicode: Implement support for handling gaps in time zones 2026-03-09 11:40:59 +01:00
TimeZone.h LibUnicode: Add ability to find time zone transitions 2026-01-16 07:00:02 -05:00
UnicodeKeywords.cpp LibJS: Format "islamic" and "islamic-rgsa" calendars as "islamic-tbla" 2026-03-13 14:43:45 -04:00
UnicodeKeywords.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Utf16String.cpp AK+LibUnicode: Implement Unicode-aware UTF-16 case transformations 2025-07-25 18:16:22 +02:00