docs / stdlib / ifx

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

BackendRegistry

cajeta.ifx.BackendRegistry — the ifx keystone: a registry + probe + dispatcher, the same pattern as the GPU backend dispatcher. Backends register themselves at load through the per-domain entry points; at launch the registry binds, per domain independently, the highest-priority() backend whose probe() reports it viable in the current environment (ties: first registered wins, deterministically). The window, input, and audio domains are registered and selected separately, and an always-present null floor (NullWindowBackend / NullInputBackend / NullAudioBackend) means selection never comes up empty. When only the floor is viable for the window domain, an opt-in headless request binds it silently; an interactive request fails loudly with IfxException rather than hand back a silent black screen. A CAJETA_IFX_WINDOW / _INPUT / _AUDIO env variable forces a registered backend by name; an unknown name is a loud launch error.

BackendRegistry reg = BackendRegistry.instance();
WindowBackend win = reg.selectWindow(true);            // headless: floor allowed
boolean rumble = reg.supportsInput(Feature.GamepadRumble);

Methods

Signature
static BackendRegistry instance() ⚑The shared process-wide registry, with the null floor auto-registered the first time it is touched
BackendRegistry()Construct an empty registry (the shared one comes from instance())
void registerWindow(WindowBackend backend)Register a window-domain backend (called by each backend at load)
void registerInput(InputBackend backend)Register an input-domain backend
void registerAudio(AudioBackend backend)Register an audio-domain backend
WindowBackend selectWindow(boolean headless) ⚑Bind the window backend: highest-priority() viable; headless opts into the null floor, an interactive request fails loudly on floor-only
InputBackend selectInput()Bind the input backend: highest-priority() viable, the null floor (empty devices) at worst
AudioBackend selectAudio()Bind the audio backend: highest-priority() viable, the silent null floor at worst
boolean supportsWindow(Feature feature)Does the backend the window domain would bind provide feature?
boolean supportsInput(Feature feature)Does the backend the input domain would bind provide feature?
boolean supportsAudio(Feature feature)Does the backend the audio domain would bind provide feature?

⚑ = @EntryPoint

See also

Source: docs/stdlib/ifx/BackendRegistry.md · 2 min read · 345 words