move Future[T] into its own module along with some basic accessors
mark all fields internal, exposing only read-only versions under the old names
introduce init/completed/etc as a way of creating a future (vs newFuture)
introduce LocationKind for SrcLoc access
don't expose FutureList unless future tracking is enabled
introduce chronosStrictFutureAccess which controls a number of additional Defect being raised when accessing Future fields in the wrong state - this will become true in a future version
In this version, Future[T] backwards compatibility code remains in asyncfutures2 meaning that if only chronos/futures is imported, only "new" API is available.
Future[T]
into its own module along with some basic accessorsinit
/completed
/etc as a way of creating a future (vs newFuture)LocationKind
forSrcLoc
accessFutureList
unless future tracking is enabledchronosStrictFutureAccess
which controls a number of additionalDefect
being raised when accessing Future fields in the wrong state - this will become true in a future versionIn this version,
Future[T]
backwards compatibility code remains inasyncfutures2
meaning that if onlychronos/futures
is imported, only "new" API is available.This branch is a refinement / less invasive / minimal version of https://github.com/status-im/nim-chronos/pull/373.