Skip to content

Backend API: Formally define the "state" of a future #667

@HenrikBengtsson

Description

@HenrikBengtsson

The state of a future is stored in the internal state field, which takes a character string. Supported values are:

  • "created" - the future has been created, but not yet not launched
  • "running" - the future has been launched, and is assumed to be running
  • "finished" - the future has been successfully evaluated ("resolved"); results may or may not have been collected

It is to be decided if:

  • "failed" - evaluation of the future failed
  • "interrupted" - evaluation of the future was interrupted

should also be added to the above list. They are really not needed, because they could be inferred if we collect the FutureResults object and inspect that.

In the past, this was mostly specific to the future package, but with the move to a more generic backend solution (e.g. lazy futures are vanilla Future objects until launched, make it possible to relaunch failed Future objects, etc.) we need to tighten this up and standardize it.

  • I'll start by adding internal validation to the still, internal field state, to make sure it only takes known values, e.g. by creating a $<-.Future method. (Added to future 1.32.0 [2023-03-07]).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Backend APIPart of the Future API that only backend package developers rely ondocumentation

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions