Foundation
Foundation is Apple’s “base layer” framework — it provides date/time handling,
URL parsing, JSON encoding, data buffers, networking (URLSession / URLRequest /
URLError), filesystem access, and more. tswift measures Foundation coverage
through generated .swiftinterface inventories and per-type runtime registries.
Legend: ✅ Implemented · 🟡 Partial · ⬜ Missing · 🚫 Out of scope. Types marked 🛡️ elsewhere on this site were hardened by ground-truthing against the real Swift 6.3 Foundation (probe programs run on the Apple toolchain, outputs matched byte-for-byte in golden fixtures).
Member counts below are generated by python3 tools/framework-inventory/coverage.py --framework foundation --emit-json — nothing on this page is hand-typed.
399 implemented · 32 partial · 184 missing (615 total)
Data (35)
==funcImplementedadvancedfuncMissingappendfuncImplementedbase64EncodedDatafuncImplementedbase64EncodedStringfuncImplementedbytesvarMissingcopyBytesfuncMissingcountvarImplementedcustomMirrorvarMissingdebugDescriptionvarImplementeddescriptionvarImplementedencodefuncMissingendIndexvarImplementedenumerateBytesfuncMissinghashfuncMissinghashValuevarImplementedindexfuncImplementedindicesvarImplementedinitinitImplementedmakeIteratorfuncImplementedmutableBytesvarMissingmutableSpanvarMissingrangefuncImplementedregionsvarMissingreplaceSubrangefuncImplementedreserveCapacityfuncImplementedresetBytesfuncImplementedspanvarMissingstartIndexvarImplementedsubdatafuncImplementedsubscriptsubscriptMissingwithContiguousStorageIfAvailablefuncMissingwithUnsafeBytesfuncMissingwithUnsafeMutableBytesfuncMissingwritefuncImplemented
UUID (11)
<funcImplemented==funcImplementedcustomMirrorvarMissingdebugDescriptionvarImplementeddescriptionvarImplementedencodefuncMissinghashfuncMissinghashValuevarImplementedinitinitImplementeduuidvarImplementeduuidStringvarImplemented
IndexPath (24)
+funcImplemented+=funcImplemented<funcImplemented<=funcImplemented==funcImplemented>funcImplemented>=funcImplementedappendfuncImplementedappendingfuncImplementedcomparefuncImplementedcountvarImplementedcustomMirrorvarMissingdebugDescriptionvarImplementeddescriptionvarImplementeddropLastfuncImplementedencodefuncMissingendIndexvarImplementedhashfuncMissinghashValuevarImplementedindexfuncImplementedinitinitImplementedmakeIteratorfuncImplementedstartIndexvarImplementedsubscriptsubscriptImplemented
IndexSet (42)
<funcMissing<=funcMissing==funcImplemented>funcMissing>=funcMissingcontainsfuncImplementedcountfuncImplementedcustomMirrorvarMissingdebugDescriptionvarImplementeddescriptionvarImplementedencodefuncMissingendIndexvarMissingfilteredIndexSetfuncImplementedfirstvarImplementedformIndexfuncMissingformIntersectionfuncImplementedformSymmetricDifferencefuncPartialformUnionfuncImplementedhashfuncMissinghashValuevarImplementedindexfuncMissingindexRangefuncMissinginitinitImplementedinsertfuncImplementedintegerGreaterThanfuncImplementedintegerGreaterThanOrEqualTofuncImplementedintegerLessThanfuncImplementedintegerLessThanOrEqualTofuncImplementedintersectionfuncImplementedintersectsfuncImplementedisEmptyvarImplementedlastvarImplementedmakeIteratorfuncImplementedrangeViewfuncImplementedremovefuncImplementedremoveAllfuncImplementedshiftfuncImplementedstartIndexvarMissingsubscriptsubscriptMissingsymmetricDifferencefuncImplementedunionfuncImplementedupdatefuncImplemented
URL (81)
==funcImplementedabsoluteStringvarImplementedabsoluteURLvarImplementedappendfuncImplementedappendPathComponentfuncImplementedappendPathExtensionfuncImplementedappendingfuncImplementedappendingPathComponentfuncImplementedappendingPathExtensionfuncImplementedapplicationDirectoryvarMissingapplicationSupportDirectoryvarMissingassociativeListfuncMissingbaseURLvarImplementedbookmarkDatafuncMissingcachesDirectoryvarMissingcheckPromisedItemIsReachablefuncMissingcheckResourceIsReachablefuncMissingconsumingfuncMissingcurrentDirectoryfuncMissingcustomPlaygroundQuickLookvarMissingdataRepresentationvarMissingdebugDescriptionvarImplementeddeleteLastPathComponentfuncImplementeddeletePathExtensionfuncImplementeddeletingLastPathComponentfuncImplementeddeletingPathExtensionfuncImplementeddescriptionvarImplementeddesktopDirectoryvarMissingdocumentsDirectoryvarMissingdownloadsDirectoryvarMissingencodefuncMissingformatfuncMissingformattedfuncMissingfragmentfuncImplementedhasDirectoryPathvarImplementedhashfuncMissinghashValuevarImplementedhomeDirectoryfuncMissinghostfuncImplementedinitinitImplementedisFileURLvarImplementedlastPathComponentvarImplementedlibraryDirectoryvarMissinglinesvarMissinglistfuncMissingmoviesDirectoryvarMissingmusicDirectoryvarMissingparsefuncMissingparseStrategyvarMissingpasswordfuncImplementedpathfuncImplementedpathComponentsvarImplementedpathExtensionvarImplementedpicturesDirectoryvarMissingportfuncImplementedpromisedItemResourceValuesfuncMissingqueryfuncImplementedrelativePathvarImplementedrelativeStringvarImplementedremoveAllCachedResourceValuesfuncMissingremoveCachedResourceValuefuncMissingresolveSymlinksInPathfuncImplementedresolvingSymlinksInPathfuncImplementedresourceBytesvarMissingresourceValuesfuncMissingschemefuncImplementedsetResourceValuesfuncMissingsetTemporaryResourceValuefuncMissingsharedPublicDirectoryvarMissingstandardizefuncImplementedstandardizedvarImplementedstandardizedFileURLvarMissingstartAccessingSecurityScopedResourcefuncMissingstopAccessingSecurityScopedResourcefuncMissingtemporaryDirectoryvarMissingtextfuncMissingtrashDirectoryvarMissinguserfuncImplementeduserDirectoryvarMissingwithUnsafeFileSystemRepresentationfuncMissingwriteBookmarkDatafuncMissing
URLComponents (35)
==funcImplementedcustomMirrorvarMissingdebugDescriptionvarImplementeddescriptionvarImplementedencodefuncMissingencodedHostvarImplementedfragmentvarImplementedhashfuncMissinghashValuevarImplementedhostvarImplementedinitinitImplementedpasswordvarImplementedpathvarImplementedpercentEncodedFragmentvarImplementedpercentEncodedHostvarImplementedpercentEncodedPasswordvarImplementedpercentEncodedPathvarImplementedpercentEncodedQueryvarImplementedpercentEncodedQueryItemsvarImplementedpercentEncodedUservarImplementedportvarImplementedqueryvarImplementedqueryItemsvarImplementedrangeOfFragmentvarMissingrangeOfHostvarMissingrangeOfPasswordvarMissingrangeOfPathvarMissingrangeOfPortvarMissingrangeOfQueryvarMissingrangeOfSchemevarMissingrangeOfUservarMissingschemevarImplementedstringvarImplementedurlfuncImplementeduservarImplemented
URLQueryItem (8)
==funcImplementedcustomMirrorvarMissingdebugDescriptionvarMissingdescriptionvarImplementedhashfuncMissinghashValuevarImplementednamevarImplementedvaluevarImplemented
Date (87)
+funcImplemented+=funcImplemented-funcImplemented-=funcImplemented<funcImplemented==funcImplemented>funcImplementedabbreviatedvarImplementedaddTimeIntervalfuncImplementedaddingTimeIntervalfuncImplementedadvancedfuncImplementedattributedStylevarMissingcomparefuncImplementedconsumingfuncMissingconversationalfuncMissingconversationalDefaultDigitsfuncMissingconversationalTwoDigitsfuncMissingcustomMirrorvarMissingcustomPlaygroundQuickLookvarMissingdateSeparatorfuncMissingdateTimeSeparatorfuncMissingdayfuncImplementeddayOfYearfuncMissingdebugDescriptionvarImplementeddefaultDigitsfuncMissingdefaultDigitsNoAMPMvarMissingdescriptionfuncImplementeddiscreteInputfuncMissingdistancefuncImplementeddistantFutureletImplementeddistantPastletImplementedencodefuncMissingerafuncMissingexemplarLocationvarMissingextendedfuncMissingformatfuncImplementedformattedfuncImplementedfractionalfuncMissinggenericLocationvarMissinggenericNamefuncMissinghashfuncMissinghashValuevarImplementedhourfuncImplementedidentifierfuncMissinginitinitImplementedinputfuncMissingiso8601funcImplementedjulianModifiedfuncMissinglocalefuncMissinglocalizedGMTfuncMissingmillisecondsfuncMissingminutefuncImplementedmonthfuncImplementednarrowvarMissingnowvarPartialomittedletImplementedoneDigitvarMissingordinalOfDayInMonthvarMissingpaddedfuncMissingparsefuncMissingparseStrategyvarMissingquarterfuncMissingrelatedGregorianfuncMissingsecondfuncImplementedsecondFractionfuncMissingshortvarMissingspecificNamefuncMissingstandardfuncImplementedthreeDigitsvarMissingtimefuncMissingtimeIntervalBetween1970AndReferenceDateletImplementedtimeIntervalSincefuncImplementedtimeIntervalSince1970varImplementedtimeIntervalSinceNowvarPartialtimeIntervalSinceReferenceDatevarImplementedtimeSeparatorfuncMissingtimeZonefuncMissingtimeZoneSeparatorfuncMissingtwoDigitsfuncMissingtwoDigitsNoAMPMvarMissingweekfuncMissingweekOfMonthvarMissingweekOfYearfuncMissingweekdayfuncMissingwidevarMissingwith12sfuncMissingyearfuncImplemented
Calendar (55)
==funcImplementedamSymbolvarImplementedautoupdatingCurrentvarImplementedcomparefuncImplementedcomponentfuncImplementedcurrentvarImplementedcustomMirrorvarMissingdatefuncImplementeddateComponentsfuncImplementeddateIntervalfuncImplementeddateIntervalOfWeekendfuncImplementeddatesfuncMissingdebugDescriptionvarImplementeddescriptionvarImplementedencodefuncMissingenumerateDatesfuncMissingeraSymbolsvarImplementedfirstWeekdayvarImplementedhashfuncMissinghashValuevarImplementedidentifiervarImplementedinitinitImplementedisDatefuncImplementedisDateInTodayfuncPartialisDateInTomorrowfuncPartialisDateInWeekendfuncImplementedisDateInYesterdayfuncPartiallocalevarImplementedlongEraSymbolsvarImplementedmaximumRangefuncImplementedminimumDaysInFirstWeekvarImplementedminimumRangefuncImplementedmonthSymbolsvarImplementednextDatefuncImplementednextWeekendfuncImplementedordinalityfuncImplementedpmSymbolvarImplementedquarterSymbolsvarImplementedrangefuncImplementedshortMonthSymbolsvarImplementedshortQuarterSymbolsvarImplementedshortStandaloneMonthSymbolsvarPartialshortStandaloneQuarterSymbolsvarPartialshortStandaloneWeekdaySymbolsvarPartialshortWeekdaySymbolsvarImplementedstandaloneMonthSymbolsvarImplementedstandaloneQuarterSymbolsvarPartialstandaloneWeekdaySymbolsvarPartialstartOfDayfuncImplementedtimeZonevarImplementedveryShortMonthSymbolsvarImplementedveryShortStandaloneMonthSymbolsvarPartialveryShortStandaloneWeekdaySymbolsvarPartialveryShortWeekdaySymbolsvarImplementedweekdaySymbolsvarImplemented
DateComponents (41)
==funcImplementedcalendarvarImplementedconsumingfuncMissingcustomMirrorvarMissingdatevarImplementeddateSeparatorfuncMissingdateTimeSeparatorfuncMissingdayfuncImplementeddayOfYearvarImplementeddebugDescriptionvarImplementeddescriptionvarImplementedencodefuncMissingeravarImplementedformatfuncMissingformattedfuncMissinghashfuncMissinghashValuevarImplementedhourvarImplementedinitinitImplementedisLeapMonthvarImplementedisRepeatedDayvarImplementedisValidDatefuncImplementedminutevarImplementedmonthfuncImplementednanosecondvarImplementedparsefuncMissingparseStrategyvarMissingquartervarImplementedsecondvarImplementedsetValuefuncImplementedtimefuncMissingtimeSeparatorfuncMissingtimeZonefuncImplementedtimeZoneSeparatorfuncMissingvaluefuncImplementedweekOfMonthvarImplementedweekOfYearfuncImplementedweekdayvarImplementedweekdayOrdinalvarImplementedyearfuncImplementedyearForWeekOfYearvarImplemented
Decimal (59)
*funcImplemented*=funcImplemented+funcImplemented+=funcImplemented-funcImplemented-=funcImplemented/funcImplemented/=funcPartial<funcImplemented==funcImplementedaddfuncImplementedadvancedfuncImplementedconsumingfuncMissingdescriptionvarImplementeddistancefuncImplementeddividefuncImplementedencodefuncMissingexponentvarImplementedfloatingPointClassvarImplementedformTruncatingRemainderfuncMissingformattedfuncImplementedgreatestFiniteMagnitudeletImplementedhashfuncMissinghashValuevarImplementedinfinityvarMissinginitinitImplementedisCanonicalvarImplementedisEqualfuncImplementedisFinitevarImplementedisInfinitevarImplementedisLessfuncImplementedisLessThanOrEqualTofuncImplementedisNaNvarImplementedisNormalvarImplementedisSignMinusvarImplementedisSignalingvarPartialisSignalingNaNvarImplementedisSubnormalvarImplementedisTotallyOrderedfuncImplementedisZerovarImplementedleastFiniteMagnitudeletImplementedleastNonzeroMagnitudeletImplementedleastNormalMagnitudeletImplementedmagnitudevarImplementedmultiplyfuncImplementednanvarImplementednegatefuncImplementednextDownvarImplementednextUpvarImplementedparsefuncMissingparseStrategyvarMissingpiletImplementedquietNaNvarImplementedradixvarImplementedsignvarImplementedsignalingNaNvarMissingsignificandvarImplementedsubtractfuncImplementedulpvarImplemented
Measurement (20)
*funcImplemented+funcImplemented-funcImplemented/funcImplemented<funcImplemented==funcImplementedconvertfuncImplementedconvertedfuncImplementedcustomMirrorvarMissingdebugDescriptionvarImplementeddescriptionvarImplementedencodefuncImplementedformattedfuncMissinghashfuncMissinghashValuevarImplementedhidesScaleNamevarMissinginitinitImplementedsubscriptsubscriptMissingunitletImplementedvaluevarImplemented
JSONEncoder (8)
dataEncodingStrategyvarImplementeddateEncodingStrategyvarImplementedencodefuncImplementedinitinitImplementedkeyEncodingStrategyvarImplementednonConformingFloatEncodingStrategyvarImplementedoutputFormattingvarImplementeduserInfovarImplemented
JSONDecoder (9)
allowsJSON5varMissingassumesTopLevelDictionaryvarImplementeddataDecodingStrategyvarImplementeddateDecodingStrategyvarImplementeddecodefuncImplementedinitinitImplementedkeyDecodingStrategyvarImplementednonConformingFloatDecodingStrategyvarImplementeduserInfovarImplemented
PropertyListEncoder (4)
encodefuncImplementedinitinitImplementedoutputFormatvarImplementeduserInfovarImplemented
URLRequest (30)
==funcImplementedaddValuefuncImplementedallHTTPHeaderFieldsvarImplementedallowsCellularAccessvarImplementedallowsConstrainedNetworkAccessvarImplementedallowsExpensiveNetworkAccessvarImplementedallowsPersistentDNSvarImplementedallowsUltraConstrainedNetworkAccessvarImplementedassumesHTTP3CapablevarImplementedattributionvarImplementedcachePolicyvarImplementedcookiePartitionIdentifiervarImplementedcustomMirrorvarMissingdebugDescriptionvarImplementeddescriptionvarImplementedhashfuncMissinghashValuevarImplementedhttpBodyvarImplementedhttpBodyStreamvarMissinghttpMethodvarImplementedhttpShouldHandleCookiesvarImplementedhttpShouldUsePipeliningvarImplementedinitinitImplementedmainDocumentURLvarImplementednetworkServiceTypevarImplementedrequiresDNSSECValidationvarImplementedsetValuefuncImplementedtimeoutIntervalvarImplementedurlvarImplementedvaluefuncImplemented
URLError (58)
appTransportSecurityRequiresSecureConnectionvarImplementedbackgroundSessionInUseByAnotherProcessvarImplementedbackgroundSessionRequiresSharedContainervarImplementedbackgroundSessionWasDisconnectedvarImplementedbackgroundTaskCancelledReasonvarImplementedbadServerResponsevarPartialbadURLvarImplementedcallIsActivevarImplementedcancelledvarImplementedcannotCloseFilevarImplementedcannotConnectToHostvarPartialcannotCreateFilevarImplementedcannotDecodeContentDatavarPartialcannotDecodeRawDatavarPartialcannotFindHostvarImplementedcannotLoadFromNetworkvarImplementedcannotMoveFilevarImplementedcannotOpenFilevarImplementedcannotParseResponsevarPartialcannotRemoveFilevarImplementedcannotWriteToFilevarImplementedclientCertificateRejectedvarImplementedclientCertificateRequiredvarImplementeddataLengthExceedsMaximumvarImplementeddataNotAllowedvarPartialdnsLookupFailedvarPartialdownloadDecodingFailedMidStreamvarImplementeddownloadDecodingFailedToCompletevarImplementeddownloadTaskResumeDatavarImplementederrorDomainvarImplementedfailingURLvarPartialfailureURLPeerTrustvarImplementedfailureURLStringvarImplementedfileDoesNotExistvarImplementedfileIsDirectoryvarImplementedhashValuevarImplementedhttpTooManyRedirectsvarPartialinitinitImplementedinternationalRoamingOffvarImplementednetworkConnectionLostvarPartialnetworkUnavailableReasonvarImplementednoPermissionsToReadFilevarImplementednotConnectedToInternetvarImplementedredirectToNonExistentLocationvarImplementedrequestBodyStreamExhaustedvarImplementedresourceUnavailablevarPartialsecureConnectionFailedvarPartialserverCertificateHasBadDatevarImplementedserverCertificateHasUnknownRootvarImplementedserverCertificateNotYetValidvarImplementedserverCertificateUntrustedvarImplementedtimedOutvarImplementedunknownvarImplementedunsupportedURLvarPartialuploadTaskResumeDatavarImplementeduserAuthenticationRequiredvarPartialuserCancelledAuthenticationvarPartialzeroByteResourcevarPartial
URLSession (5)
bytesfuncMissingdatafuncImplementeddataTaskPublisherfuncMissingdownloadfuncMissinguploadfuncPartial
FileManager (3)
enumeratorfuncMissingreplaceItemAtfuncMissingreplaceItemAtURLfuncMissing
No members match your filters.
How it renders
flowchart LR
src["Swift source"]
interp["Interpreter\n+ tswift-foundation\nbuiltins"]
host["Host services\n(defaults / fs / network)"]
src --> interp --> host
style src fill:#1a0d2e,stroke:#a855f7,color:#eeeef5
style host fill:#0d2e1a,stroke:#34c759,color:#eeeef5
Out of scope
Platform- and device-specific APIs are intentionally excluded (see
frameworks/foundation/scope.toml): FileManager, FileHandle,
NSObject, Bundle, and friends. Remaining unimplemented
members are largely locale-dependent format styles, rangeOf* string-range
APIs, and resource/bookmark filesystem members.
A 2026-07 coverage pass (59.8% → 70.3% implemented) closed the mechanical gaps and re-confirmed, member by member, why the rest are intentionally out of scope rather than simply missing:
customMirror/ explicithash(into:)/encode(to:)across every type — noMirrorreflection subsystem in this runtime;Hashable/Encodableconformance is already exercised indirectly via==and theJSONEncoder/PropertyListEncodermachinery.Date/DateComponentsFormatStyle/ISO8601FormatStyle/ParseStrategysymbol-builder DSL (attributedStyle,conversational*,dateSeparator,era,genericLocation, chained.day()/.month()/.year()symbol builders,parse/parseStrategy, …) — a locale-aware, ICU-shaped formatting DSL; consistent with the existing Gregorian/UTC/en_US-only stance forCalendar/DateFormatter.URLfilesystem members (documentsDirectory/cachesDirectory/… well-known directories,bookmarkData, security-scoped resource access,resourceValues/setResourceValues) — need real filesystem/sandbox semantics this runtime doesn’t model.Dataraw-memory APIs (span/mutableSpan,withUnsafeBytes,withUnsafeMutableBytes,copyBytes,enumerateBytes) — no raw memory model.IndexSet.IndexCollectionconformance (startIndex/endIndex/index(after:)/formIndex/opaque-Indexsubscript/comparison) —for x in indexSetelement iteration already works, which covers real usage; the opaque-IndexAPI surface only calls itself. Tripwire: if a real need forindexSet[someIndex]-style access appears, modelIndexas a(range_ordinal, offset)pair.JSONDecoder.allowsJSON5— honoring the flag means writing a real JSON5 parser (comments, unquoted keys, single quotes, trailing commas); a flag that silently still parses strict JSON would be a semantic lie, so it’s tracked separately rather than stubbed.Decimal.infinity/.signalingNaN/formTruncatingRemainder— the first two contradict this runtime’s documented invariant thatDecimalhas no infinity representation;formTruncatingRemainderwas confirmed against real Apple swiftc 6.3.2 to be declared@available(*, unavailable, message: "Decimal does not yet fully adopt FloatingPoint.")— it isn’t callable from any real Swift program either, so implementing it here would diverge from Darwin, not converge with it.Calendar.enumerateDates/.dates— deferred (not skipped): they need inoutstop-flag write-back through closure invocation and a lazySequence<Date>return type respectively, neither of which exist in this runtime yet.
Hardening
Types marked 🛡️ were validated in dedicated hardening passes: small probe
programs were run on the real Apple Swift toolchain to capture
ground-truth outputs, then encoded as golden fixtures
(harden_foundation_*.swift, harden_json.swift). This process found and
fixed real divergences — ISO8601 leap-year/fractional-second validation,
standardized path edge cases, percent-encoding charset rules, Decimal
precision boundaries, and JSON strategy-enum API surface.
Roadmap
Next coverage pushes (daily-use weighted):
Calendar.dates/enumerateDatessequence APIs (needs closure stop-flag write-back + a lazySequence<Date>primitive)URLComponents.rangeOf*members (needsRange<String.Index>bridging)URLSessionbytes(for:)async streaming anddownloadTasksupport- Remaining
Data/URLmember gaps (byte-buffer and filesystem APIs, scoped down per the Out-of-scope notes above)
Locale-aware FormatStyle DSLs, filesystem/bookmark APIs, and reflection
(customMirror) are tracked as permanent out-of-scope items (see above),
not roadmap items.