TYCHO Search

Search documentation

    ↑ ↓ to move · Enter to open · Esc to close

    Odin core parity

    Target: capability parity with Odin's core package tree, adapted to Tycho's value semantics and implicit arenas. Not line-for-line, not API-for-API. Odin's vendor/ tree is a separate ecosystem and out of scope.

    Reference: Odin dev-2026-11a (core is 40 packages, 1,433 files, ~609k lines). The current Tycho corelib is 89 packages, ~26.5k lines, 1306 locked public functions.

    Status values:

    Matrix

    Odin coreStatusTycho todayPlan
    bufiocoveredcore:bufio in-memory reader/writer plus core:scannernone
    bytescoveredimmutable bytes plus mutable core:buffernone
    cnon-goalextern fn FFI plus internal *_shim.c filesnone
    compresscoveredgzip/zlib, raw DEFLATE, LZ4, xz, bzip2, PPMd7/PPMd8, PKZIP Shrink/Reduce/Implode, Deflate64 (ZIP method 9), shoco, BCJ2, delta, BCJ for x86/ARM/ARM Thumb/ARM64/PowerPC/SPARC/IA64/RISC-V, and swap2/swap4none
    containercoveredDeque/Queue, PriorityQueue, BitArray, Lru, ordered Treap/Avl/RbTree, HandleMap, SmallArray, Xar, topo_sortintrusive containers need references (non-goal)
    cryptocoveredOpenSSL shims: ChaCha20-Poly1305 and AES-GCM AEAD, AES-CTR, AES-CBC, RSA PKCS#1 v1.5, ECDSA P-256, Ed25519, X25519, ML-DSA, ML-KEM, SHA-256/512, SHA-3/SHAKE, BLAKE2, HMAC-SHA256/512, PBKDF2, HKDF, Argon2id, CSPRNG; ASN.1 DER/BER and X.509 in their own packagesnone
    debugcoveredassert, trace, enabled, stack_trace; runtime traps and tycho-debug btPE introspection is platform-specific tooling
    diffcovereddiff.lines and diff.unified (LCS, bounded fallback)none
    dynlibcoveredopen, symbol, close_lib over dlopen/LoadLibrary, typed invocation of C function pointers (call_i32_0..call_ptr_1), and C-to-Tycho callbacks for named scalar/ptr functions (apply_i32_i32). Closures and function variables are not accepted as C callbacksnone
    encodingcoveredbase64, base32, hex, json, csv, uuid, pem, ini, varint, endian, xml, cbor, asn1, entity, hxanone
    flagscoveredcli.parse/parse_spec and cli.flagnone
    fmtcoveredformat_int, format_float, pad_left/pad_right plus str/f-stringsnone
    hashcoveredFNV-1a 32/64, djb2, sdbm, CRC16/32/64, Adler-32, Murmur3 and xxHash 32/64none
    imagecoveredPNG encode/decode, baseline JPEG encode/decode, BNG decode/encode, raster BMP/QOI/TGA/PPM/PGM/PBMnone
    iocoveredfile read/write/append/copy/stat/dirs, checked variants, stdin/stdout, line readerno generic Reader/Writer interface; concrete values are the design
    logcoveredleveled logger, stderr/file choice, new/linenone
    mathcoveredmath, fmath (trig/exp/log/hypot), decimal, bignum, rand, linalg, complex, fixed, ease, noise, bitsnone
    memnon-goalimplicit arenas; no public allocator APInone — explicit allocators, virtual memory and TLSF are a different memory model
    nbiocoverednbio.poll over poll(2)/WSAPoll; CompletionLoop with epoll (Linux), kqueue (BSD/macOS) and IOCP (Windows), including posted completions and fd readiness. epoll and IOCP are runtime-tested here; kqueue is implemented but has no BSD host in this treenone
    netcoveredTCP/UDP, timeouts, TLS, HTTP/HTTPD; DNS resolve plus MX/TXT/SRV parsing, UDP querying and TCP fallback; socket options; POSIX Unix sockets; interfaces; IPv4/IPv6/endpoint parse and format; prefix network/containmentnone
    odinnon-goalTycho has its own compiler packagesnone
    oscoveredprocess execution, environment, cwd/chdir, pid/ppid, hostname, home/temp/cache/config/data dirs, temp files/dirs, user name, pipes/fd I/O, chmod/umask, uid/gid, io.walkprocess signals live in core:signal
    pathcoveredPOSIX path plus Windows lexical filepath (clean/join/volume/base/dir/ext/stem)native path opening still goes through io
    profcoveredmanual Span timing and report, deterministic sample_spans, and Spall trace encode_trace/decode_tracenone
    reflectnon-goalcompile-time typeof, generics, size_of$; no runtime type metadatakeep runtime reflection out unless metadata is added deliberately
    relativenon-goalno references by decisionnone
    rexcodenon-goalOdin's RISC-V toolchain, not a library capabilitynone
    simdnon-goallanguage vector[N]T arithmetic is the SIMD surface; architecture intrinsics are codegen, not a library packagenone
    slicenon-goal[T] is the slice; no separate heap-slice typenone
    sortcoveredsort with generic orderingnone
    strconvcovereddecimal/base 2..36 parse and format, fixed float, widths via fmt, format_g17, builtin strnone
    stringscoveredcase, trim, split, fields, find, replace, pad, reverse, escapes, parsingadd a builder if measured concatenation cost demands it
    synccoveredC11 atomics (int/bool/pointer), Mutex, RwLock, Cond, Semaphore, WaitGroup, Once, Barrier, recursive mutex; channels are language builtinsticket mutex (not a capability gap)
    sysnon-goallibc and shims are the portability boundarynone
    terminalcoveredANSI escapes, tty/size, raw mode, byte read, key decoding, cursor_query/cursor_position with DSR parsing, and non-console Windows tty fallbacksnone
    testingcoveredT, check, eq, report, subtest/merge, bench, report_benchnone
    textcoveredstrings, utf8, utf16, char, regex, textmatch (including %b, %f and non-greedy -), edit, scanner, table, glob, GNU MO and Qt .qm i18n, and locale datanone
    threadcoveredlanguage spawn/wait (one OS thread per task), channels, parallel for; thread.id/yield_now/cpus, synchronous thread.run, and 32-slot per-thread local_set/local_getnone
    timecoveredmonotonic stopwatch, unix time, sleep, civil date, ISO/CLF parse and format, local offset, IANA TZif zones via core:tz including the POSIX footer and leap-second recordsnone
    unicodecoveredutf8, utf16, full case mapping/folding, titlecase mapping, UAX #15 normalization, UAX #29 grapheme/word segmentation, UCD general-category/script/block/emoji classificationnone

    What parity does not mean

    Platform targets

    Odin's core also carries platform targets: core/sys/android (45 files, ~4k lines) and core/sys/darwin (122 files, ~48k lines), with Android/Darwin branches in os, net, log, sync, thread and time.

    TargetStatusEvidence / gap
    Linux x86-64supportedfull make ci, release archive
    Windows x86-64supportedmingw build + Wine smoke, release archive
    macOS arm64supporteddarwin-arm64 make ci, release archive
    AndroidsupportedNDK r28c cross-compile + qemu-user runtime: make android-check is green for 84 corelib tests on x86_64 and aarch64 at API 34. The host emulator 37.2.12 segfaults on this Fedora kernel, so runtime evidence is qemu-user with bionic, not the emulator. JNI/asset-manager/APK bindings are not part of corelib parity
    iOSsupportedXcode 27.2 iOS Simulator: make ios-check is green for 81 corelib tests; the same emitted C also builds for the arm64 device SDK (platform 2). No signed physical-device run. core/sys/darwin raw bindings are not part of corelib parity

    supported in this table means the corelib target gate is green. For Android and iOS that is not an end-user platform claim: no APK, Xcode project, JNI or asset-manager binding, or signed-device run ships.

    Android and iOS are separate target gates: make android-check on Linux with the NDK/qemu-user, make ios-check on macOS with Xcode and a simulator runtime. os.platform() and the is_android/is_ios predicates are exercised by both.

    Residual partials

    None. Every row above is either covered or an explicit non-goal.

    Sequence

    1. Parity matrix — done; this page is the record.
    2. Foundations — done: core:container and core:sync with atomics.
    3. Platform — done: environment, cwd, identities, cache/config/data dirs, io.walk, path.relative, Unix sockets, interface enumeration.
    4. Data and text — done: Base32, varint, endian, PEM, INI, UTF-16, edit, XML, CBOR, ASN.1, scanner, fmt, bufio, diff, entity decoding, full Unicode case mapping/folding, UAX #15 normalization, UAX #29 grapheme/word segmentation, Qt .qm catalogs, locale data and native Lua %b/%f/non-greedy patterns.
    5. Crypto — done: SHA-3/SHAKE, BLAKE2, HMAC-SHA512, HKDF, AES-GCM/CTR/CBC, RSA, ECDSA, Ed25519, X25519, ML-DSA, ML-KEM, Argon2id and X.509.
    6. Formats and media — done: TGA, Netpbm PPM/PGM/PBM, LZ4, baseline JPEG encode/decode and BNG joined PNG/BMP/QOI/HXA.
    7. Runtime and diagnostics — done: debug, prof spans plus deterministic sampling and Spall trace output, terminal including cursor queries, dynlib including C function-pointer invocation and named C-to-Tycho callbacks, nbio.poll plus epoll/kqueue/IOCP completion loops, thread raw task threads and TLS; raw SIMD intrinsics stay a non-goal because vector[N]T is the language surface.
    8. Continuous gates — every package lands with corelib/test/<pkg>, docs/reference/corelib.md entries, and a deliberate surface.lock update. make check-fast per change; full CI at milestones. The new byte-decoding codecs are fuzzed by make fuzz-newcomers under ASan+UBSan.