← Back
Home › Systems › Operating systems and runtimes

compat-layer

open-source and commercial runtimes

Wine, Valve Proton (Steam Deck), CodeWeavers CrossOver, Apple Game Porting Toolkit

SystemTechniques · 6Primitives · 32 compat-layer Linking and relocationcompilers · medium: The linker merges object files, matches each undefined name to one definition, assigns addresses and patches every recorded reference (relocation); dynamic linking defers part of that to load time.›Stack unwindingcompilers · medium: Frame-pointer, DWARF CFI and compact unwinding of call stacksGraphics api translationgraphics · medium: Translate one GPU API's calls and shaders to another (D3D to Vulkan/Metal) with state mappingOs api reimplementationhardware-os · medium: Run foreign binaries by reimplementing another OS's API and loader on the host (compatibility layer)Audio mixing graphmedia · medium: DAG of voices, buses and effects rendered per block on the audio thread without locks or allocationDebug info (DWARF)compilers · medium: DWARF stores a tree of typed entries (DIEs), a line-number bytecode, unwind tables and location expressions that map machine state back to source; pick it for ELF/Mach-O debug builds.›Executable formats elf pecompilers · low: ELF, PE and Mach-O: sections, segments, symbol tables, relocations, dynamic loadingCalling conventions abicompilers · low: System V, Windows x64 and AAPCS64 ABIs: argument registers, stack frames, struct passing, FFISpirv binary formatcompilers · low: SPIR-V module structure: SSA instructions, decorations, structured control flow rulesSSA formcompilers · low: Give every variable exactly one definition, merging at joins with phi functions; def-use becomes explicit and optimizations turn sparse and cheap.›Futex-based mutexconcurrency · low: A mutex that is one atomic word in user space and enters the kernel (futex wait/wake) only under contention; how std and glibc locks work.›Shared memory ipcconcurrency · low: Shared memory rings and futex signalling between processesFont rasterizationgraphics · low: TrueType/CFF outline parsing and anti-aliased glyph rasterization with hinting/cachingGPU command buffersgraphics · low: Record GPU work as a flat list of commands on the CPU, submit it in batches, and reuse its memory through a ring of frames in flight guarded by fences.›Pipeline state cachinggraphics · low: Cache compiled shader pipelines across runs, precompile permutations, avoid hitchesCgroups and namespaceshardware-os · low: Linux namespaces limit what a process can see; cgroup v2 limits and accounts what it may use. Containers, sandboxes and job schedulers are built from the two.›Crash signal handlinghardware-os · low: Async-signal-safe crash handlers, alternate stacks and minidump captureDirty page trackinghardware-os · low: Write-protection or PML logs of modified guest/process pagesSystem call interfacehardware-os · low: The controlled gate between user code and the kernel: number and arguments in registers, a trap instruction, a validated handler, a result or error code.›Unix socket fd passinghardware-os · low: Pass file descriptors over Unix domain sockets with SCM_RIGHTS ancillary dataVirtual memory and the TLBhardware-os · low: How page tables and TLBs translate every address, what TLB reach means, and when 2 MiB or 1 GiB huge pages pay off on Linux.›String interningdata-structures · low: Store each distinct string once and refer to it by id+ 16 more primitives

Similar systems

Share the most building blocks with this one.