docs / stdlib

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)

codec

  1. 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. FiberLocal
  5. Lock
  6. Mutex
  7. RwLock
  8. Semaphore
  9. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. RecoverableException
  4. Throwable
  5. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. Blake3
  2. DefaultHasher
  3. Hash
  4. MD5
  5. Sha1
  6. Sha256
  7. SipHash
  8. 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. IpAddress
  2. Server
  3. ServerBuilder
  4. SocketAddress
  5. TcpListener
  6. TcpStream
  7. UdpSocket

io / net / dns

  1. Dns

io / net / tls

  1. TlsConnection
  2. TlsListener

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. Decompressor
  3. Encoder
  4. Schema
  5. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream

xpu / mesh

  1. MeshSimplifier

stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

One row per ownership-audit.md finding, reflecting the CURRENT source (the Unit 4 migration history lives in git). Checked by tools/ownership/audit_ownership.py --check-dispositions <this file>: a finding without a row, or a row without a finding, fails the run. Dispositions: conforming | migrate:<target> | exception:<reason>.

DispositionCount
conforming152
KindFileMethodTypeDispositionRationale
CAPTURE(#=)codec/json/JsonLinesWriter.cajetaJsonLinesWriterFileWriterconformingsink-shaped holder; #= store carries the caller’s lend/transfer choice (§2.3, §2.6 table)
CAPTURE(#=)collection/CacheNode.cajetaCacheNodeKconformingnode is the LRU sink; #= records the mode Cache.put tendered (plain key = borrow, map slot owns it)
CAPTURE(#=)collection/CacheNode.cajetaCacheNodeVconformingnode is the value’s home; #= records the title Cache.put transfers (§2.3)
CAPTURE(#=)collection/LinkedListNode.cajetaLinkedListNodeTconformingplain formal + #=, so the node owns only what the caller transferred (§2.3)
CAPTURE(#=)collection/RedBlackNode.cajetaRedBlackNodeKconformingtree node is the sink; #= keeps the caller’s mode per slot (§2.3)
CAPTURE(#=)collection/RedBlackNode.cajetaRedBlackNodeVconformingsame sink model, mode recorded not forced (§2.3)
CAPTURE(#=)collection/ltm/LtmBPlusTree.cajetaLtmBPlusTreeBufferEncoder<K>conformingsame migrated slot, buffer-encoder form
CAPTURE(#=)collection/ltm/LtmBPlusTree.cajetaLtmBPlusTreeBufferEncoder<V>conformingsame migrated slot, buffer-encoder form
CAPTURE(#=)collection/ltm/LtmBPlusTree.cajetaLtmBPlusTreeEncoder<K>conformingmigrated 4.2.2: #= slot records the caller’s lend/transfer choice (§2.3)
CAPTURE(#=)collection/ltm/LtmBPlusTree.cajetaLtmBPlusTreeEncoder<V>conformingsame migrated slot
CAPTURE(#=)collection/ltm/LtmPager.cajetaLtmPagerEncoder<K>conformingmigrated 4.2.2: pager’s #= encoder hold (§2.3)
CAPTURE(#=)collection/ltm/LtmPager.cajetaLtmPagerEncoder<V>conformingsame
CAPTURE(#=)collection/ltm/LtmPager.cajetasetBufferEncodersBufferEncoder<K>conformingmigrated 4.2.2: post-construction setter, same slot model
CAPTURE(#=)collection/ltm/LtmPager.cajetasetBufferEncodersBufferEncoder<V>conformingsame
CAPTURE(#=)concurrent/FiberLocalBox.cajetaFiberLocalBoxTconformingbox’s stated job is holding the binding value; caller chooses via #= (§2.3)
CAPTURE(#=)concurrent/Mutex.cajetaMutexTconformingMutex is documented as owning the protected data; heap Mutex(#v) vs (v) is the caller’s call (§2.3)
CAPTURE(#=)concurrent/RwLock.cajetaRwLockTconformingsame fused own-the-data shape as Mutex; ctor doc states both modes (§2.3)
CAPTURE(#=)concurrent/SelectResult.cajetaSelectResultTconformingresult pair is a value carrier; #= records the dequeued item’s tendered mode (§2.3)
CAPTURE(#=)io/file/FileEvent.cajetaFileEventPathconformingsame sink; renameTarget is null or a fresh watcher-produced path, caller’s choice
CAPTURE(#=)io/net/AsyncReader.cajetaAsyncReaderByteChannelconformingcapacity ctor, same shared-channel model
CAPTURE(#=)io/net/AsyncWriter.cajetaAsyncWriterByteChannelconformingcapacity ctor, same shared-channel model
CAPTURE(#=)io/net/ServerBuilder.cajetabindAddressSocketAddressconformingbuilder holds config until build(); callers meaningfully lend a held address or transfer a parsed temp
CAPTURE(#=)io/net/ServerBuilder.cajetamodelServerModelconformingsame sink-shaped config hold; ServerModel.sharedPool(n) temps transfer, held models lend
CAPTURE(#=)lang/Optional.cajetaOptionalTconformingsink-shaped wrapper; #= plus take() for the owned counterpart (§2.3)
CAPTURE(#=)lang/stream/ArrayStream.cajetaArrayStreamT[]conformingbuffer sink; documented as shared-not-copied with mode from the caller (§2.3)
CAPTURE(#=)math/Tensor.cajetaTensorStorage<T>conforming§2.3 sink — Tensor’s job is holding the buffer, #= records the title the factories surrender
CAPTURE(#=)math/TensorProtocol.cajetaTensorProtocolDTypeconformingsame ctor, dtype slot
CAPTURE(#=)math/TensorProtocol.cajetaTensorProtocolObjectconformingalready migrated (3.3.3): #= records lend-vs-transfer of the producer’s storage (§2.3)
CAPTURE(#=)math/optim/OptimResult.cajetaOptimResultTensor<float64>conformingresult carrier holds the solution tensor; #= sink model (§2.3)
CAPTURE(#=)nucleo/column/Column.cajetaColumnTensor<T>conformingbuffer-holding container; #= records the caller’s mode per slot (§2.3)
CAPTURE(#=)nucleo/column/MxColumn.cajetaMxColumnColumn<uint8>conformingdocumented mode-forwarding wrapper — both lent and owned packed columns are live (§2.3)
CAPTURE(#=)nucleo/column/NullableColumn.cajetaNullableColumnColumn<T>conformingtwo-buffer container; #= values slot carries the source’s mode (§2.3)
CAPTURE(#=)nucleo/column/NullableColumn.cajetaNullableColumnColumn<uint8>conformingsame sink, validity bitmap slot (§2.3)
CAPTURE(#=)nucleo/column/StringColumn.cajetaStringColumnColumn<int32>conformingoffsets buffer held by a buffer container, #= store (§2.3)
CAPTURE(#=)nucleo/column/StringColumn.cajetaStringColumnColumn<uint8>conformingutf8 data buffer, same sink slot (§2.3)
CAPTURE(#=)nucleo/frame/DynFrame.cajetasetSpatialStringconformingmigrated 4.2.2: #= mirrors addIndexed’s slot store (§2.3)
CAPTURE(#=)nucleo/transform/GradResult.cajetaGradResultGconformingrecord result-carrier whose job is holding the returned grads (§2.3)
CAPTURE(#=)nucleo/transform/GradResult.cajetaGradResultVconformingsame record carrier, forward-value slot (§2.3)
CAPTURE(#=)search/fuzzy/Match.cajetaMatchTconforming§2.3 sink-shaped carrier, #= carries whichever mode the value arrived in
CAPTURE(elem)collection/ArrayList.cajetaaddTconformingthe canonical §2.3 sink: plain formal, #= slot store, per-slot mode
CAPTURE(elem)collection/ArrayList.cajetainsertTconformingsame plain-formal #= store, shifts forward each slot’s bit (§2.3)
CAPTURE(elem)collection/ArrayList.cajetasetTconforming#= store with displaced release only when the old slot held title (§2.3)
CAPTURE(elem)collection/Heap.cajetapushTconformingplain formal, #= store, bits ride the sift-up swaps (§2.3)
CAPTURE(elem)math/Storage.cajetasetTconformingStorage is numeric tensor backing (primitive/boolean at every instantiation) — an element store is a bit copy, no title exists
CAPTURE(elem)nucleo/frame/DynFrame.cajetaaddIndexedStringconformingalready #= per element with the mode recorded in the slot (§2.3)
CONDITIONALcodec/json/JsonValue.cajetasetStringBorrowedJsonValueconformingthe SHARP variant added by 4.2.1: caller contract is uniform (source outlives value); the root branch only makes the bound unnecessary, never changes it — not the §2.6 shape
VIEW-RETURNcodec/json/JsonValue.cajetaarrayJsonArrayconformingrenamed from asArray per §2.7 (developer decision 2026-08-19, no aliases); pure interior read with lifetime doc
VIEW-RETURNcodec/json/JsonValue.cajetaobjectJsonObjectconformingrenamed from asObject, same §2.7 rationale
VIEW-RETURNbuildtool/plugin/ActionResult.cajetaerrorMessageStringconformingbody is a bare field read; caller copies to outlive the result (§2.2)
VIEW-RETURNbuildtool/plugin/ActionResult.cajetafindingsArrayList<Finding>conformingbare interior read of the owned list
VIEW-RETURNbuildtool/plugin/ActionResult.cajetaoutputsHashMap<String, String>conformingbare interior read of the owned map
VIEW-RETURNbuildtool/plugin/Finding.cajetafileStringconformingbare field read of a #-captured string
VIEW-RETURNbuildtool/plugin/Finding.cajetamessageStringconformingbare field read
VIEW-RETURNbuildtool/plugin/Finding.cajetaruleStringconformingbare field read
VIEW-RETURNcodec/json/JsonArray.cajetagetJsonValueconformingreturn this.data[i] — interior read only (§2.2)
VIEW-RETURNcodec/json/JsonObject.cajetagetJsonValueconformingdelegates to indexed lookup; returns interior element (§2.2)
VIEW-RETURNcodec/json/JsonObject.cajetavalueAtJsonValueconformingreturn this.values[i] — interior read only (§2.2)
VIEW-RETURNcollection/ArrayList.cajetagetTconformingbody is return this.data[i] — interior read only, always a borrow (§2.2)
VIEW-RETURNcollection/HashMap.cajetagetVconformingreturns this.slots[i].val plus a zero miss-default; no #= extraction (§2.2)
VIEW-RETURNcollection/Heap.cajetapeekTconformingreturn this.data[0] / zero default; interior read only (§2.2)
VIEW-RETURNcollection/ImmutableList.cajetagetTconforminginterior read of this.data[i] with a zero miss-default (§2.2)
VIEW-RETURNcollection/ImmutableMap.cajetagetVconformingSIMD probe then return this.valArr[ei] — read only (§2.2)
VIEW-RETURNcollection/ImmutableMap.cajetakeyAtKconformingdense-index interior read; ...At name reads as a view (§2.2, §2.7)
VIEW-RETURNcollection/ImmutableMap.cajetavalAtVconformingdense-index interior read (§2.2, §2.7)
VIEW-RETURNcollection/ImmutableSet.cajetagetTconformingreturn this.elements[i] with a zero miss-default (§2.2)
VIEW-RETURNcollection/graph/Digraph.cajetaengineIndexGraphconformingreturn this.core; doc already states “(borrow)” (§2.2, §2.7)
VIEW-RETURNerror/Throwable.cajetagetMessageStringconformingreturn this.message — interior read, ownership stays with the throwable (§2.2)
VIEW-RETURNifx/IfxInfo.cajetaaudioBackendNameStringconforming§2.2 — body is return this.audioName only
VIEW-RETURNifx/IfxInfo.cajetainputBackendNameStringconforming§2.2 — body is return this.inputName only
VIEW-RETURNifx/IfxInfo.cajetawindowBackendNameStringconforming§2.2 — body is return this.windowName only
VIEW-RETURNio/net/Headers.cajetanameAtStringconformingreturns this.keys[i] only; ...At reads as a view per §2.7
VIEW-RETURNio/net/Headers.cajetavalueAtStringconformingreturns this.values[i] only
VIEW-RETURNio/net/RecvResult.cajetagetFromSocketAddressconformingbare read of the address the result took title to
VIEW-RETURNio/net/SocketAddress.cajetagetIpIpAddressconformingbare field read
VIEW-RETURNio/net/uri/Uri.cajetagetFragmentStringconformingbare field read of a parsed component
VIEW-RETURNio/net/uri/Uri.cajetagetHostStringconformingbare field read
VIEW-RETURNio/net/uri/Uri.cajetagetPathStringconformingbare field read
VIEW-RETURNio/net/uri/Uri.cajetagetQueryStringconformingbare field read (raw, still percent-encoded)
VIEW-RETURNio/net/uri/Uri.cajetagetSchemeStringconformingbare field read
VIEW-RETURNio/net/uri/Uri.cajetagetUserinfoStringconformingbare field read
VIEW-RETURNlang/Optional.cajetagetTconformingreturn this.value after the present check; doc names it a borrow and points at take() for title (§2.2, §2.7)
VIEW-RETURNlang/Optional.cajetaorElseTconformingboth arms are borrows — interior read or the caller’s own plain fallback (§2.2)
VIEW-RETURNlang/Pair.cajetafirstKconformingreturn this.first; takeFirst() is the separate owning variant (§2.2, §2.5)
VIEW-RETURNlang/Pair.cajetasecondVconformingreturn this.second; takeSecond() is the owning counterpart (§2.2, §2.5)
VIEW-RETURNlang/stream/FilterStream.cajetaunwrapStream<?>conformingreturn this.source — interior read for the chain walker, no title (§2.2)
VIEW-RETURNlang/stream/FlatMapStream.cajetaunwrapStream<?>conformingreturn this.source, interior read only (§2.2)
VIEW-RETURNlang/stream/MapOrFallbackStream.cajetaunwrapStream<?>conformingreturn this.source, interior read only (§2.2)
VIEW-RETURNlang/stream/MapOrLogStream.cajetaunwrapStream<?>conformingreturn this.source, interior read only (§2.2)
VIEW-RETURNlang/stream/MapOrSkipStream.cajetaunwrapStream<?>conformingreturn this.source, interior read only (§2.2)
VIEW-RETURNlang/stream/MapStream.cajetaunwrapStream<?>conformingreturn this.source; the owning rebuild is the separate cloneChainOver (§2.2)
VIEW-RETURNlang/stream/PeekStream.cajetaunwrapStream<?>conformingreturn this.source, interior read only (§2.2)
VIEW-RETURNlang/stream/SkipStream.cajetaunwrapStream<?>conformingreturn this.source, interior read only (§2.2)
VIEW-RETURNlang/stream/TakeStream.cajetaunwrapStream<?>conformingreturn this.source, interior read only (§2.2)
VIEW-RETURNmath/Storage.cajetadeviceBufferKernelBuffer<T>conforming§2.2 — body is return this.dev only; name reads as an accessor, not a producer
VIEW-RETURNmath/Storage.cajetagetTconforming§2.2 — the canonical get(i) interior read (after a residency guard)
VIEW-RETURNmath/Tensor.cajetabaseTensor<T>conforming§2.2 — body is return this.baseTensor only
VIEW-RETURNmath/TensorProtocol.cajetabaseObjectconforming§2.2 — interior read, doc states the storage is borrowed
VIEW-RETURNmath/TensorProtocol.cajetadtypeDTypeconforming§2.2 — body is return this.dt only
VIEW-RETURNnucleo/frame/Agg.cajetaexprOfColF64conformingbody is a bare field read, always borrow (§2.2)
VIEW-RETURNnucleo/frame/Agg.cajetaiRefOfColI64conformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Agg.cajetaleftAggAggconformingbare field read of the child link (§2.2)
VIEW-RETURNnucleo/frame/Agg.cajetanextOfAggconformingbare field read of the chain link (§2.2)
VIEW-RETURNnucleo/frame/Agg.cajetaoutNameOfStringconformingbare field read; ...Of name reads as a view (§2.2, §2.7)
VIEW-RETURNnucleo/frame/Agg.cajetarightAggAggconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Agg.cajetastrRefOfColStrconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/ColF64.cajetaleftChildColF64conformingbare field read of the expression child (§2.2)
VIEW-RETURNnucleo/frame/ColF64.cajetanameStringconformingbare field read of the column name (§2.2)
VIEW-RETURNnucleo/frame/ColF64.cajetarightChildColF64conformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/ColI64.cajetanameStringconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/ColStr.cajetanameStringconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/DynFrame.cajetacolAtDynColconformingindexed read of the interior column array (§2.2)
VIEW-RETURNnucleo/frame/DynFrame.cajetaindexedAtStringconformingindexed interior read; ...At reads as a view (§2.2, §2.7)
VIEW-RETURNnucleo/frame/DynFrame.cajetanameAtStringconformingindexed interior read (§2.2)
VIEW-RETURNnucleo/frame/DynFrame.cajetaspatialXOfStringconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/DynFrame.cajetaspatialYOfStringconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetaaggsOfAggconformingbare field read of the aggregate chain head (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetachildOfPlanconformingbare field read of the input node (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetacolNameOfStringconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetajoinKeysOfSelconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetajoinOutOfDynFrameconformingbare field read of the cached join schema (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetakeysOfSelconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetameltIdAtStringconformingindexed interior read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetameltValAtStringconformingindexed interior read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetameltValNameOfStringconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetameltVarNameOfStringconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetapredOfPredconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetarightPlanOfPlanconformingbare field read of the right branch (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetarightSrcOfDynFrameconformingbare field read of the right scan snapshot (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetaselsOfSelconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Plan.cajetasortKeysOfSortKeyconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Pred.cajetaiOperandExprColI64conformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Pred.cajetaleftPredicatePredconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Pred.cajetaoperandExprColF64conformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Pred.cajetarightPredicatePredconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Pred.cajetastrOperandExprColStrconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Pred.cajetastrValueStringconformingbare field read of the literal operand (§2.2)
VIEW-RETURNnucleo/frame/Sel.cajetaexprOfColF64conformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Sel.cajetaiRefOfColI64conformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Sel.cajetanextOfSelconformingbare field read of the chain link (§2.2)
VIEW-RETURNnucleo/frame/Sel.cajetaoutNameOfStringconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Sel.cajetastrRefOfColStrconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/SortKey.cajetaexprOfColF64conformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/SortKey.cajetaiRefOfColI64conformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/SortKey.cajetanextOfSortKeyconformingbare field read of the chain link (§2.2)
VIEW-RETURNnucleo/frame/SortKey.cajetastrRefOfColStrconformingbare field read (§2.2)
VIEW-RETURNnucleo/frame/Table.cajetacollectTable<T>conformingreturns this or the interior cached handle — always a borrow, and the cache-on-force contract requires the handle keep title (§2.2)
VIEW-RETURNsearch/fuzzy/Match.cajetakeyStringconforming§2.2 — body is return this.key only; caller copies to outlive the match
VIEW-RETURNsearch/fuzzy/Match.cajetavalueTconforming§2.2 — body is return this.value only
VIEW-RETURNtime/DateTimeFormatter.cajetagetPatternStringconforming§2.2 — body is return this.pattern only
VIEW-RETURNtime/ZoneId.cajetagetIdStringconforming§2.2 — body is return this.id only
VIEW-RETURNxpu/PageCache.cajetaevictedKeyKconforming§2.2/§2.7 — interior read, and the doc states the validity bound
VIEW-RETURNxpu/PageCache.cajetagetOrDefaultVconforming§2.2 — returns either the caller’s own fallback or an interior slot read

Source: docs/stdlib/ownership-dispositions.md · 14 min read · 3133 words