Loading...
# Linker Standard Library This is `lsl`, the Linker Standard Library. It is not intended as a complete replacement for `std`, but it is designed to provide collections, allocators, and basic utility functions in environments where there is not a libc. It is intended to be used by common code shared between `ld64`, `dyld`, and the `dyld_shared_cache_builder`. That means it needs to work in both single threaded memory constrained environments for `dyld`, and high memory aggressively multi-threaded environments for the other tools. It currently provides the following pieces of functionality: * Allocators ** `EphemeralAllocator`: A fast bump pointer allocator, intended for use with scoped operations ** `PersistentAllocator`: A best fit allocator intended for long lived allocations * SmartPointers ** `UniquePtr`: A pointer for object ownership and automatic memory reclamation ** `SharedPtr`: A reference counted pointer. All allocation from the provided allocators support implicit `shared_from_this` semantics * Collections ** `OrderedSet` ** `OrderedMultiSet` ** `OrderedMap` ** `OrderedMultiMap` ** `Vector` * Other Data Types: ** `UUID` * TODO: ** `WeakPtr` ** `UnorderedSet` ** `UnorderedMap` ** `String` ** Better documentation |